[{"data":1,"prerenderedAt":1928},["ShallowReactive",2],{"navigation":3,"\u002Fdocs\u002Fgetting-started\u002Fconfiguration":143,"\u002Fdocs\u002Fgetting-started\u002Fconfiguration-surround":1925},[4],{"title":5,"path":6,"stem":7,"children":8,"page":32},"Docs","\u002Fdocs","docs",[9,33,58,79,112,117],{"title":10,"path":11,"stem":12,"children":13,"page":32},"Getting Started","\u002Fdocs\u002Fgetting-started","docs\u002Fgetting-started",[14,18,23,28],{"title":10,"path":15,"stem":16,"order":17},"\u002Fdocs\u002Fgetting-started\u002F_dir","docs\u002Fgetting-started\u002F_dir",1,{"title":19,"path":20,"stem":21,"order":22},"Configuration Reference","\u002Fdocs\u002Fgetting-started\u002Fconfiguration","docs\u002Fgetting-started\u002Fconfiguration",2,{"title":24,"path":25,"stem":26,"order":27},"Deployment Guide","\u002Fdocs\u002Fgetting-started\u002Fdeployment","docs\u002Fgetting-started\u002Fdeployment",3,{"title":29,"path":30,"stem":31,"order":17},"Quick Start","\u002Fdocs\u002Fgetting-started\u002Fquick-start","docs\u002Fgetting-started\u002Fquick-start",false,{"title":34,"path":35,"stem":36,"children":37,"page":32},"Guides","\u002Fdocs\u002Fguides","docs\u002Fguides",[38,41,45,49,54],{"title":34,"path":39,"stem":40,"order":22},"\u002Fdocs\u002Fguides\u002F_dir","docs\u002Fguides\u002F_dir",{"title":42,"path":43,"stem":44,"order":22},"Notifications","\u002Fdocs\u002Fguides\u002Fnotifications","docs\u002Fguides\u002Fnotifications",{"title":46,"path":47,"stem":48,"order":17},"Scoring Algorithm","\u002Fdocs\u002Fguides\u002Fscoring","docs\u002Fguides\u002Fscoring",{"title":50,"path":51,"stem":52,"order":53},"Sunset Mode","\u002Fdocs\u002Fguides\u002Fsunset-mode","docs\u002Fguides\u002Fsunset-mode",4,{"title":55,"path":56,"stem":57,"order":27},"Troubleshooting","\u002Fdocs\u002Fguides\u002Ftroubleshooting","docs\u002Fguides\u002Ftroubleshooting",{"title":59,"path":60,"stem":61,"children":62,"page":32},"Project","\u002Fdocs\u002Fproject","docs\u002Fproject",[63,67,71,75],{"title":59,"path":64,"stem":65,"order":66},"\u002Fdocs\u002Fproject\u002F_dir","docs\u002Fproject\u002F_dir",6,{"title":68,"path":69,"stem":70,"order":27},"Changelog","\u002Fdocs\u002Fproject\u002Fchangelog","docs\u002Fproject\u002Fchangelog",{"title":72,"path":73,"stem":74,"order":17},"Contributing","\u002Fdocs\u002Fproject\u002Fcontributing","docs\u002Fproject\u002Fcontributing",{"title":76,"path":77,"stem":78,"order":22},"Contributors","\u002Fdocs\u002Fproject\u002Fcontributors","docs\u002Fproject\u002Fcontributors",{"title":80,"path":81,"stem":82,"children":83,"page":32},"Reference","\u002Fdocs\u002Freference","docs\u002Freference",[84,87,108],{"title":80,"path":85,"stem":86,"order":27},"\u002Fdocs\u002Freference\u002F_dir","docs\u002Freference\u002F_dir",{"title":88,"path":89,"stem":90,"children":91,"page":32},"Api","\u002Fdocs\u002Freference\u002Fapi","docs\u002Freference\u002Fapi",[92,96,100,104],{"title":93,"path":94,"stem":95,"order":22},"API Reference","\u002Fdocs\u002Freference\u002Fapi\u002F_dir","docs\u002Freference\u002Fapi\u002F_dir",{"title":97,"path":98,"stem":99,"order":22},"API Examples","\u002Fdocs\u002Freference\u002Fapi\u002Fexamples","docs\u002Freference\u002Fapi\u002Fexamples",{"title":101,"path":102,"stem":103,"order":53},"API Versioning & Stability Guarantees","\u002Fdocs\u002Freference\u002Fapi\u002Fversioning","docs\u002Freference\u002Fapi\u002Fversioning",{"title":105,"path":106,"stem":107,"order":27},"Common Workflows","\u002Fdocs\u002Freference\u002Fapi\u002Fworkflows","docs\u002Freference\u002Fapi\u002Fworkflows",{"title":109,"path":110,"stem":111,"order":17},"Architecture","\u002Fdocs\u002Freference\u002Farchitecture","docs\u002Freference\u002Farchitecture",{"title":113,"path":114,"stem":115,"order":116},"Release Workflow","\u002Fdocs\u002Freleasing","docs\u002Freleasing",5,{"title":118,"path":119,"stem":120,"children":121,"order":17},"Security Policy","\u002Fdocs\u002Fsecurity","docs\u002Fsecurity\u002Findex",[122,123,127,131,134,137,140],{"title":118,"path":119,"stem":120,"order":17},{"title":124,"path":125,"stem":126,"order":53},"Security","\u002Fdocs\u002Fsecurity\u002F_dir","docs\u002Fsecurity\u002F_dir",{"title":128,"path":129,"stem":130,"order":22},"OWASP ZAP API Scan — Baseline Report","\u002Fdocs\u002Fsecurity\u002Fzap-baseline-20260310","docs\u002Fsecurity\u002Fzap-baseline-20260310",{"title":128,"path":132,"stem":133,"order":27},"\u002Fdocs\u002Fsecurity\u002Fzap-baseline-20260316","docs\u002Fsecurity\u002Fzap-baseline-20260316",{"title":128,"path":135,"stem":136,"order":53},"\u002Fdocs\u002Fsecurity\u002Fzap-baseline-20260323","docs\u002Fsecurity\u002Fzap-baseline-20260323",{"title":128,"path":138,"stem":139,"order":116},"\u002Fdocs\u002Fsecurity\u002Fzap-baseline-20260324","docs\u002Fsecurity\u002Fzap-baseline-20260324",{"title":128,"path":141,"stem":142},"\u002Fdocs\u002Fsecurity\u002Fzap-baseline-20260406","docs\u002Fsecurity\u002Fzap-baseline-20260406",{"id":144,"title":19,"body":145,"description":151,"extension":1919,"links":1920,"meta":1921,"navigation":1922,"path":20,"seo":1923,"stem":21,"__hash__":1924},"docs\u002Fdocs\u002Fgetting-started\u002Fconfiguration.md",{"type":146,"value":147,"toc":1892},"minimark",[148,152,157,268,272,359,370,374,414,418,421,476,480,833,837,844,876,882,889,893,896,920,926,930,933,963,973,978,1011,1015,1018,1023,1077,1089,1093,1116,1120,1127,1208,1211,1215,1221,1225,1236,1256,1260,1275,1280,1286,1290,1299,1306,1310,1319,1325,1328,1332,1339,1346,1350,1360,1364,1494,1497,1503,1613,1617,1661,1665,1747,1751,1779,1790,1794,1888],[149,150,151],"p",{},"Capacitarr is configured entirely through environment variables. All variables are optional — sensible defaults are used when a variable is not set.",[153,154,156],"h2",{"id":155},"general","General",[158,159,160,179],"table",{},[161,162,163],"thead",{},[164,165,166,170,173,176],"tr",{},[167,168,169],"th",{},"Variable",[167,171,172],{},"Default",[167,174,175],{},"Required",[167,177,178],{},"Description",[180,181,182,202,226,243],"tbody",{},[164,183,184,191,196,199],{},[185,186,187],"td",{},[188,189,190],"code",{},"PORT",[185,192,193],{},[188,194,195],{},"2187",[185,197,198],{},"No",[185,200,201],{},"HTTP listen port for the Capacitarr server.",[164,203,204,209,214,216],{},[185,205,206],{},[188,207,208],{},"BASE_URL",[185,210,211],{},[188,212,213],{},"\u002F",[185,215,198],{},[185,217,218,219,221,222,225],{},"Base URL path for reverse proxy subdirectory deployments. Must start and end with ",[188,220,213],{},". Example: ",[188,223,224],{},"\u002Fcapacitarr\u002F",".",[164,227,228,233,238,240],{},[185,229,230],{},[188,231,232],{},"DB_PATH",[185,234,235],{},[188,236,237],{},"\u002Fconfig\u002Fcapacitarr.db",[185,239,198],{},[185,241,242],{},"File path for the SQLite database. The directory must exist and be writable.",[164,244,245,250,255,257],{},[185,246,247],{},[188,248,249],{},"DEBUG",[185,251,252],{},[188,253,254],{},"false",[185,256,198],{},[185,258,259,260,263,264,267],{},"Enable debug logging. Set to ",[188,261,262],{},"true"," for verbose output. In debug mode, CORS defaults to ",[188,265,266],{},"*"," (allow all origins) and a static JWT secret is used.",[153,269,271],{"id":270},"authentication","Authentication",[158,273,274,286],{},[161,275,276],{},[164,277,278,280,282,284],{},[167,279,169],{},[167,281,172],{},[167,283,175],{},[167,285,178],{},[180,287,288,307,330],{},[164,289,290,295,301,304],{},[185,291,292],{},[188,293,294],{},"JWT_SECRET",[185,296,297],{},[298,299,300],"em",{},"(auto-generated)",[185,302,303],{},"Recommended",[185,305,306],{},"Secret key for signing JWT authentication tokens. If not set, a random secret is generated at startup — sessions will not persist across container restarts. Set this for stable sessions.",[164,308,309,314,318,320],{},[185,310,311],{},[188,312,313],{},"SECURE_COOKIES",[185,315,316],{},[188,317,254],{},[185,319,198],{},[185,321,322,323,325,326,329],{},"Set to ",[188,324,262],{}," when serving Capacitarr over HTTPS. Marks authentication cookies with the ",[188,327,328],{},"Secure"," flag so they are only sent over encrypted connections.",[164,331,332,337,342,344],{},[185,333,334],{},[188,335,336],{},"AUTH_HEADER",[185,338,339],{},[298,340,341],{},"(none)",[185,343,198],{},[185,345,346,347,350,351,354,355,358],{},"Trusted reverse proxy authentication header name. When set, Capacitarr trusts this header for authentication instead of requiring JWT login. Common values: ",[188,348,349],{},"Remote-User"," (Authelia), ",[188,352,353],{},"X-authentik-username"," (Authentik), ",[188,356,357],{},"X-WEBAUTH-USER"," (Organizr).",[149,360,361,362,364,365,369],{},"!!! warning \"AUTH_HEADER Security\"\nOnly enable ",[188,363,336],{}," when Capacitarr is ",[366,367,368],"strong",{},"exclusively"," accessible through your reverse proxy. If the server is directly reachable, any client can forge this header and bypass authentication entirely.",[153,371,373],{"id":372},"cors","CORS",[158,375,376,388],{},[161,377,378],{},[164,379,380,382,384,386],{},[167,381,169],{},[167,383,172],{},[167,385,175],{},[167,387,178],{},[180,389,390],{},[164,391,392,397,401,403],{},[185,393,394],{},[188,395,396],{},"CORS_ORIGINS",[185,398,399],{},[298,400,341],{},[185,402,198],{},[185,404,405,406,409,410,413],{},"Comma-separated list of allowed CORS origins. Example: ",[188,407,408],{},"http:\u002F\u002Flocalhost:3000,https:\u002F\u002Fapp.example.com",". When not set: same-origin only (unless ",[188,411,412],{},"DEBUG=true",", which allows all origins).",[153,415,417],{"id":416},"docker","Docker",[149,419,420],{},"These variables are handled by the container entrypoint script, not the Go backend.",[158,422,423,435],{},[161,424,425],{},[164,426,427,429,431,433],{},[167,428,169],{},[167,430,172],{},[167,432,175],{},[167,434,178],{},[180,436,437,458],{},[164,438,439,444,449,451],{},[185,440,441],{},[188,442,443],{},"PUID",[185,445,446],{},[188,447,448],{},"1000",[185,450,198],{},[185,452,453,454,457],{},"User ID for the container process. Used to set file ownership on the ",[188,455,456],{},"\u002Fconfig"," volume.",[164,459,460,465,469,471],{},[185,461,462],{},[188,463,464],{},"PGID",[185,466,467],{},[188,468,448],{},[185,470,198],{},[185,472,473,474,457],{},"Group ID for the container process. Used to set file ownership on the ",[188,475,456],{},[153,477,479],{"id":478},"example-docker-compose","Example: Docker Compose",[481,482,487],"pre",{"className":483,"code":484,"language":485,"meta":486,"style":486},"language-yaml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","services:\n  capacitarr:\n    image: ghentstarshadow\u002Fcapacitarr:stable\n    container_name: capacitarr\n    ports:\n      - \"2187:2187\"\n    environment:\n      - PUID=1000\n      - PGID=1000\n      - JWT_SECRET=change-me-to-a-random-string\n      - SECURE_COOKIES=true\n      - DEBUG=false\n    volumes:\n      - capacitarr-config:\u002Fconfig\n    healthcheck:\n      test: [\"CMD\", \"wget\", \"-qO\", \"\u002Fdev\u002Fnull\", \"http:\u002F\u002Flocalhost:2187\u002Fapi\u002Fv1\u002Fhealth\"]\n      interval: 30s\n      timeout: 5s\n      start_period: 15s\n      retries: 3\n    security_opt:\n      - no-new-privileges:true\n    cap_drop:\n      - ALL\n    cap_add:\n      - CHOWN\n      - DAC_OVERRIDE\n      - SETUID\n      - SETGID\n    restart: unless-stopped\n\nvolumes:\n  capacitarr-config:\n","yaml","",[188,488,489,501,508,520,530,537,551,559,567,575,583,591,599,607,615,623,682,693,704,715,727,735,743,751,759,767,775,783,791,799,810,817,825],{"__ignoreMap":486},[490,491,493,497],"span",{"class":492,"line":17},"line",[490,494,496],{"class":495},"swJcz","services",[490,498,500],{"class":499},"sMK4o",":\n",[490,502,503,506],{"class":492,"line":22},[490,504,505],{"class":495},"  capacitarr",[490,507,500],{"class":499},[490,509,510,513,516],{"class":492,"line":27},[490,511,512],{"class":495},"    image",[490,514,515],{"class":499},":",[490,517,519],{"class":518},"sfazB"," ghentstarshadow\u002Fcapacitarr:stable\n",[490,521,522,525,527],{"class":492,"line":53},[490,523,524],{"class":495},"    container_name",[490,526,515],{"class":499},[490,528,529],{"class":518}," capacitarr\n",[490,531,532,535],{"class":492,"line":116},[490,533,534],{"class":495},"    ports",[490,536,500],{"class":499},[490,538,539,542,545,548],{"class":492,"line":66},[490,540,541],{"class":499},"      -",[490,543,544],{"class":499}," \"",[490,546,547],{"class":518},"2187:2187",[490,549,550],{"class":499},"\"\n",[490,552,554,557],{"class":492,"line":553},7,[490,555,556],{"class":495},"    environment",[490,558,500],{"class":499},[490,560,562,564],{"class":492,"line":561},8,[490,563,541],{"class":499},[490,565,566],{"class":518}," PUID=1000\n",[490,568,570,572],{"class":492,"line":569},9,[490,571,541],{"class":499},[490,573,574],{"class":518}," PGID=1000\n",[490,576,578,580],{"class":492,"line":577},10,[490,579,541],{"class":499},[490,581,582],{"class":518}," JWT_SECRET=change-me-to-a-random-string\n",[490,584,586,588],{"class":492,"line":585},11,[490,587,541],{"class":499},[490,589,590],{"class":518}," SECURE_COOKIES=true\n",[490,592,594,596],{"class":492,"line":593},12,[490,595,541],{"class":499},[490,597,598],{"class":518}," DEBUG=false\n",[490,600,602,605],{"class":492,"line":601},13,[490,603,604],{"class":495},"    volumes",[490,606,500],{"class":499},[490,608,610,612],{"class":492,"line":609},14,[490,611,541],{"class":499},[490,613,614],{"class":518}," capacitarr-config:\u002Fconfig\n",[490,616,618,621],{"class":492,"line":617},15,[490,619,620],{"class":495},"    healthcheck",[490,622,500],{"class":499},[490,624,626,629,631,634,637,640,642,645,647,650,652,654,656,659,661,663,665,668,670,672,674,677,679],{"class":492,"line":625},16,[490,627,628],{"class":495},"      test",[490,630,515],{"class":499},[490,632,633],{"class":499}," [",[490,635,636],{"class":499},"\"",[490,638,639],{"class":518},"CMD",[490,641,636],{"class":499},[490,643,644],{"class":499},",",[490,646,544],{"class":499},[490,648,649],{"class":518},"wget",[490,651,636],{"class":499},[490,653,644],{"class":499},[490,655,544],{"class":499},[490,657,658],{"class":518},"-qO",[490,660,636],{"class":499},[490,662,644],{"class":499},[490,664,544],{"class":499},[490,666,667],{"class":518},"\u002Fdev\u002Fnull",[490,669,636],{"class":499},[490,671,644],{"class":499},[490,673,544],{"class":499},[490,675,676],{"class":518},"http:\u002F\u002Flocalhost:2187\u002Fapi\u002Fv1\u002Fhealth",[490,678,636],{"class":499},[490,680,681],{"class":499},"]\n",[490,683,685,688,690],{"class":492,"line":684},17,[490,686,687],{"class":495},"      interval",[490,689,515],{"class":499},[490,691,692],{"class":518}," 30s\n",[490,694,696,699,701],{"class":492,"line":695},18,[490,697,698],{"class":495},"      timeout",[490,700,515],{"class":499},[490,702,703],{"class":518}," 5s\n",[490,705,707,710,712],{"class":492,"line":706},19,[490,708,709],{"class":495},"      start_period",[490,711,515],{"class":499},[490,713,714],{"class":518}," 15s\n",[490,716,718,721,723],{"class":492,"line":717},20,[490,719,720],{"class":495},"      retries",[490,722,515],{"class":499},[490,724,726],{"class":725},"sbssI"," 3\n",[490,728,730,733],{"class":492,"line":729},21,[490,731,732],{"class":495},"    security_opt",[490,734,500],{"class":499},[490,736,738,740],{"class":492,"line":737},22,[490,739,541],{"class":499},[490,741,742],{"class":518}," no-new-privileges:true\n",[490,744,746,749],{"class":492,"line":745},23,[490,747,748],{"class":495},"    cap_drop",[490,750,500],{"class":499},[490,752,754,756],{"class":492,"line":753},24,[490,755,541],{"class":499},[490,757,758],{"class":518}," ALL\n",[490,760,762,765],{"class":492,"line":761},25,[490,763,764],{"class":495},"    cap_add",[490,766,500],{"class":499},[490,768,770,772],{"class":492,"line":769},26,[490,771,541],{"class":499},[490,773,774],{"class":518}," CHOWN\n",[490,776,778,780],{"class":492,"line":777},27,[490,779,541],{"class":499},[490,781,782],{"class":518}," DAC_OVERRIDE\n",[490,784,786,788],{"class":492,"line":785},28,[490,787,541],{"class":499},[490,789,790],{"class":518}," SETUID\n",[490,792,794,796],{"class":492,"line":793},29,[490,795,541],{"class":499},[490,797,798],{"class":518}," SETGID\n",[490,800,802,805,807],{"class":492,"line":801},30,[490,803,804],{"class":495},"    restart",[490,806,515],{"class":499},[490,808,809],{"class":518}," unless-stopped\n",[490,811,813],{"class":492,"line":812},31,[490,814,816],{"emptyLinePlaceholder":815},true,"\n",[490,818,820,823],{"class":492,"line":819},32,[490,821,822],{"class":495},"volumes",[490,824,500],{"class":499},[490,826,828,831],{"class":492,"line":827},33,[490,829,830],{"class":495},"  capacitarr-config",[490,832,500],{"class":499},[153,834,836],{"id":835},"example-subdirectory-deployment","Example: Subdirectory Deployment",[149,838,839,840,843],{},"When running behind a reverse proxy at a subdirectory (e.g., ",[188,841,842],{},"https:\u002F\u002Fexample.com\u002Fcapacitarr\u002F","):",[481,845,847],{"className":483,"code":846,"language":485,"meta":486,"style":486},"environment:\n  - BASE_URL=\u002Fcapacitarr\u002F\n  - JWT_SECRET=change-me-to-a-random-string\n  - SECURE_COOKIES=true\n",[188,848,849,856,864,870],{"__ignoreMap":486},[490,850,851,854],{"class":492,"line":17},[490,852,853],{"class":495},"environment",[490,855,500],{"class":499},[490,857,858,861],{"class":492,"line":22},[490,859,860],{"class":499},"  -",[490,862,863],{"class":518}," BASE_URL=\u002Fcapacitarr\u002F\n",[490,865,866,868],{"class":492,"line":27},[490,867,860],{"class":499},[490,869,582],{"class":518},[490,871,872,874],{"class":492,"line":53},[490,873,860],{"class":499},[490,875,590],{"class":518},[149,877,878,879,881],{},"Only ",[188,880,208],{}," is needed — the frontend HTML is automatically rewritten at startup to use the correct asset paths, API base URL, and Vue Router base path.",[149,883,884,885,888],{},"See the ",[886,887,24],"a",{"href":25}," for full reverse proxy configuration examples.",[153,890,892],{"id":891},"example-proxy-authentication","Example: Proxy Authentication",[149,894,895],{},"When using Authelia, Authentik, or Organizr for authentication:",[481,897,899],{"className":483,"code":898,"language":485,"meta":486,"style":486},"environment:\n  - AUTH_HEADER=Remote-User\n  - JWT_SECRET=change-me-to-a-random-string\n",[188,900,901,907,914],{"__ignoreMap":486},[490,902,903,905],{"class":492,"line":17},[490,904,853],{"class":495},[490,906,500],{"class":499},[490,908,909,911],{"class":492,"line":22},[490,910,860],{"class":499},[490,912,913],{"class":518}," AUTH_HEADER=Remote-User\n",[490,915,916,918],{"class":492,"line":27},[490,917,860],{"class":499},[490,919,582],{"class":518},[149,921,884,922,925],{},[886,923,24],{"href":924},"\u002Fdocs\u002Fgetting-started\u002Fdeployment#proxy-authentication-authelia--authentik--organizr"," for details on proxy authentication setup.",[153,927,929],{"id":928},"data-backup","Data & Backup",[149,931,932],{},"All persistent data is stored in a single SQLite database file:",[158,934,935,947],{},[161,936,937],{},[164,938,939,942,945],{},[167,940,941],{},"File",[167,943,944],{},"Default Path",[167,946,178],{},[180,948,949],{},[164,950,951,956,960],{},[185,952,953],{},[188,954,955],{},"capacitarr.db",[185,957,958],{},[188,959,237],{},[185,961,962],{},"All application data: integrations, rules, preferences, audit logs, engine stats, disk groups, notification channels, and authentication credentials.",[149,964,965,966,968,969,972],{},"The ",[188,967,456],{}," directory (mapped via Docker volumes) is the ",[366,970,971],{},"only directory that needs to be backed up",". No other files or directories contain user data.",[974,975,977],"h3",{"id":976},"backup-recommendations","Backup Recommendations",[979,980,981,991,1005],"ul",{},[982,983,984,987,988],"li",{},[366,985,986],{},"Stop the container"," before copying the database to ensure consistency: ",[188,989,990],{},"docker compose stop && cp \u002Fpath\u002Fto\u002Fvolume\u002Fcapacitarr.db backup.db && docker compose start",[982,992,993,994,1004],{},"Alternatively, use ",[886,995,999,1000,1003],{"href":996,"rel":997},"https:\u002F\u002Fwww.sqlite.org\u002Fcli.html#special_commands_to_sqlite3_dot_commands_",[998],"nofollow","SQLite's ",[188,1001,1002],{},".backup"," command"," for online backups.",[982,1006,1007,1008,1010],{},"The database path can be customized via the ",[188,1009,232],{}," environment variable.",[974,1012,1014],{"id":1013},"settings-export-import","Settings Export & Import",[149,1016,1017],{},"Capacitarr provides a built-in settings export\u002Fimport feature that lets you back up and restore your configuration without dealing with raw database files.",[1019,1020,1022],"h4",{"id":1021},"exporting-settings","Exporting Settings",[1024,1025,1026,1036,1070],"ol",{},[982,1027,1028,1029,1032,1033],{},"Navigate to ",[366,1030,1031],{},"Settings"," → ",[366,1034,1035],{},"Backup & Restore",[982,1037,1038,1039],{},"Select which sections to include in the export:\n",[979,1040,1041,1047,1053,1059,1065],{},[982,1042,1043,1046],{},[366,1044,1045],{},"Preferences"," — Scoring weights, execution mode, tiebreaker method",[982,1048,1049,1052],{},[366,1050,1051],{},"Rules"," — All custom protection rules",[982,1054,1055,1058],{},[366,1056,1057],{},"Integrations"," — Integration names, types, URLs, and enabled status",[982,1060,1061,1064],{},[366,1062,1063],{},"Disk Groups"," — Mount paths and threshold\u002Ftarget percentages",[982,1066,1067,1069],{},[366,1068,42],{}," — Channel names, types, event subscriptions, and Apprise tags",[982,1071,1072,1073,1076],{},"Click ",[366,1074,1075],{},"Export"," to download a JSON file",[1078,1079,1080],"blockquote",{},[149,1081,1082,1085,1086,1088],{},[366,1083,1084],{},"Tip:"," A ",[366,1087,1035],{}," shortcut on the Scoring Engine page navigates to Settings with the Rules section pre-selected, making rules-only backups a single click.",[1019,1090,1092],{"id":1091},"importing-settings","Importing Settings",[1024,1094,1095,1101,1104,1107,1110],{},[982,1096,1028,1097,1032,1099],{},[366,1098,1031],{},[366,1100,1035],{},[982,1102,1103],{},"Upload a previously exported JSON file",[982,1105,1106],{},"Review the import preview showing which sections are available",[982,1108,1109],{},"Select which sections to import (you can choose a subset)",[982,1111,1072,1112,1115],{},[366,1113,1114],{},"Import"," to apply the settings",[1019,1117,1119],{"id":1118},"whats-included-and-excluded","What's Included and Excluded",[149,1121,1122,1123,1126],{},"For security, ",[366,1124,1125],{},"sensitive credentials are always stripped"," from exports:",[158,1128,1129,1142],{},[161,1130,1131],{},[164,1132,1133,1136,1139],{},[167,1134,1135],{},"Section",[167,1137,1138],{},"Included",[167,1140,1141],{},"Excluded",[180,1143,1144,1156,1168,1182,1194],{},[164,1145,1146,1150,1153],{},[185,1147,1148],{},[366,1149,1045],{},[185,1151,1152],{},"All scoring weights, execution mode, tiebreaker",[185,1154,1155],{},"Internal IDs, timestamps",[164,1157,1158,1162,1165],{},[185,1159,1160],{},[366,1161,1051],{},[185,1163,1164],{},"Field, operator, value, effect, enabled, integration reference",[185,1166,1167],{},"Internal IDs",[164,1169,1170,1174,1177],{},[185,1171,1172],{},[366,1173,1057],{},[185,1175,1176],{},"Name, type, URL, enabled status",[185,1178,1179],{},[366,1180,1181],{},"API keys",[164,1183,1184,1188,1191],{},[185,1185,1186],{},[366,1187,1063],{},[185,1189,1190],{},"Mount path, threshold %, target %",[185,1192,1193],{},"Transient disk usage data",[164,1195,1196,1200,1203],{},[185,1197,1198],{},[366,1199,42],{},[185,1201,1202],{},"Name, type, enabled, subscriptions, Apprise tags",[185,1204,1205],{},[366,1206,1207],{},"Webhook URLs",[149,1209,1210],{},"After importing integrations or notification channels, you will need to re-enter API keys and webhook URLs manually.",[1019,1212,1214],{"id":1213},"rules-only-backup","Rules-Only Backup",[149,1216,1217,1218,1220],{},"To back up just your custom rules, select only the ",[366,1219,1051],{}," section during export. This produces a portable JSON file containing all your protection rules that can be imported into another Capacitarr instance. Integration references use human-readable names instead of IDs for cross-instance compatibility.",[153,1222,1224],{"id":1223},"approval-queue","Approval Queue",[149,1226,1227,1228,1231,1232,1235],{},"When the engine mode is set to ",[366,1229,1230],{},"Approval",", items that meet deletion criteria are placed in the ",[188,1233,1234],{},"approval_queue"," table instead of being deleted automatically. A user must explicitly approve each item before deletion proceeds.",[149,1237,1238,1239,1032,1242,1245,1246,1249,1250,1032,1252,1255],{},"The approval queue is a separate table from the audit log. Items flow through a state machine: ",[188,1240,1241],{},"pending",[188,1243,1244],{},"approved"," → deleted (moved to ",[188,1247,1248],{},"audit_log","), or ",[188,1251,1241],{},[188,1253,1254],{},"rejected"," (snoozed).",[974,1257,1259],{"id":1258},"deletions-disabled-safety-guard","Deletions-Disabled Safety Guard",[149,1261,1262,1263,1266,1267,1270,1271,1274],{},"When ",[366,1264,1265],{},"Deletions Enabled"," is turned off in ",[366,1268,1269],{},"Settings → Advanced",", approving items from the approval queue is blocked. The approve action returns a ",[188,1272,1273],{},"409 Conflict"," error:",[1078,1276,1277],{},[149,1278,1279],{},"Deletions are currently disabled in settings. Enable deletions before approving items.",[149,1281,1282,1283,1285],{},"Re-enable ",[366,1284,1265],{}," in Advanced settings before approving queued items. This prevents accidental approvals while the system is in a safe\u002Fpaused state.",[974,1287,1289],{"id":1288},"orphan-recovery","Orphan Recovery",[149,1291,1292,1293,1295,1296,1298],{},"If the container restarts while items are in the ",[366,1294,1244],{}," (processing) state — meaning they were approved but not yet deleted — those items are automatically reverted to ",[366,1297,1241],{}," on startup. They reappear in the approval queue so no items are silently lost.",[149,1300,1301,1302,1305],{},"This recovery also runs at the start of each engine poll cycle as an additional safety measure. The ",[188,1303,1304],{},"approval_orphans_recovered"," activity event is published when orphans are detected and recovered.",[974,1307,1309],{"id":1308},"automatic-queue-clearing","Automatic Queue Clearing",[149,1311,1312,1313,1315,1316,1318],{},"When disk usage drops below the configured threshold, the approval queue is automatically cleared of all ",[366,1314,1241],{}," and ",[366,1317,1254],{}," (snoozed) items. This ensures the queue only contains current, actionable deletion candidates — stale items from a previous threshold breach are removed rather than left for manual cleanup.",[149,1320,1321,1322,1324],{},"Items that have already been ",[366,1323,1244],{}," and are actively being processed for deletion are preserved and will complete normally.",[149,1326,1327],{},"When the threshold is breached again on a subsequent engine run, the scoring engine re-evaluates all media and populates the queue with fresh candidates based on current disk usage and media metadata.",[153,1329,1331],{"id":1330},"real-time-updates-sse","Real-Time Updates (SSE)",[149,1333,1334,1335,1338],{},"Capacitarr uses Server-Sent Events (SSE) to push real-time updates to all connected browser tabs. The SSE endpoint is ",[188,1336,1337],{},"GET \u002Fapi\u002Fv1\u002Fevents"," (authenticated).",[149,1340,1341,1342,1345],{},"When running behind a reverse proxy, ensure the proxy does not buffer responses for the SSE endpoint. See the ",[886,1343,24],{"href":1344},"\u002Fdocs\u002Fgetting-started\u002Fdeployment#sse-server-sent-events-proxy-configuration"," for proxy-specific configuration.",[153,1347,1349],{"id":1348},"application-preferences","Application Preferences",[149,1351,1352,1353,1315,1356,1359],{},"Beyond environment variables, Capacitarr has application-level preferences managed through the Settings UI or the ",[188,1354,1355],{},"GET\u002FPUT \u002Fpreferences",[188,1357,1358],{},"PATCH \u002Fpreferences\u002F*"," API endpoints. These are stored in the database and can be changed at runtime.",[974,1361,1363],{"id":1362},"engine-mode","Engine & Mode",[158,1365,1366,1377],{},[161,1367,1368],{},[164,1369,1370,1373,1375],{},[167,1371,1372],{},"Setting",[167,1374,172],{},[167,1376,178],{},[180,1378,1379,1406,1435,1449,1464,1479],{},[164,1380,1381,1386,1391],{},[185,1382,1383],{},[188,1384,1385],{},"defaultDiskGroupMode",[185,1387,1388],{},[188,1389,1390],{},"dry-run",[185,1392,1393,1394,1396,1397,1396,1400,1396,1403],{},"Default execution mode for new disk groups: ",[188,1395,1390],{},", ",[188,1398,1399],{},"approval",[188,1401,1402],{},"auto",[188,1404,1405],{},"sunset",[164,1407,1408,1413,1418],{},[185,1409,1410],{},[188,1411,1412],{},"tiebreakerMethod",[185,1414,1415],{},[188,1416,1417],{},"size_desc",[185,1419,1420,1421,1396,1423,1396,1426,1396,1429,1396,1432],{},"Tiebreaker when deletion scores are equal: ",[188,1422,1417],{},[188,1424,1425],{},"size_asc",[188,1427,1428],{},"name_asc",[188,1430,1431],{},"oldest_first",[188,1433,1434],{},"newest_first",[164,1436,1437,1442,1446],{},[185,1438,1439],{},[188,1440,1441],{},"deletionsEnabled",[185,1443,1444],{},[188,1445,262],{},[185,1447,1448],{},"Safety guard — actual file deletions only occur when true. When false, all deletions are simulated.",[164,1450,1451,1456,1461],{},[185,1452,1453],{},[188,1454,1455],{},"snoozeDurationHours",[185,1457,1458],{},[188,1459,1460],{},"24",[185,1462,1463],{},"Hours to snooze rejected approval queue items (1-720)",[164,1465,1466,1471,1476],{},[185,1467,1468],{},[188,1469,1470],{},"deletionQueueDelaySeconds",[185,1472,1473],{},[188,1474,1475],{},"30",[185,1477,1478],{},"Grace period in seconds before processing queued deletions (10-300)",[164,1480,1481,1486,1491],{},[185,1482,1483],{},[188,1484,1485],{},"pollIntervalSeconds",[185,1487,1488],{},[188,1489,1490],{},"300",[185,1492,1493],{},"Engine poll interval in seconds (minimum 60)",[974,1495,50],{"id":1496},"sunset-mode",[149,1498,884,1499,1502],{},[886,1500,1501],{"href":51},"Sunset Mode Guide"," for full documentation.",[158,1504,1505,1515],{},[161,1506,1507],{},[164,1508,1509,1511,1513],{},[167,1510,1372],{},[167,1512,172],{},[167,1514,178],{},[180,1516,1517,1531,1546,1561,1584,1598],{},[164,1518,1519,1524,1528],{},[185,1520,1521],{},[188,1522,1523],{},"sunsetDays",[185,1525,1526],{},[188,1527,1475],{},[185,1529,1530],{},"Countdown duration in days before sunset items are deleted (7-90)",[164,1532,1533,1538,1543],{},[185,1534,1535],{},[188,1536,1537],{},"sunsetLabel",[185,1539,1540],{},[188,1541,1542],{},"capacitarr-sunset",[185,1544,1545],{},"Label\u002Ftag applied to media server items in the sunset queue",[164,1547,1548,1553,1558],{},[185,1549,1550],{},[188,1551,1552],{},"savedLabel",[185,1554,1555],{},[188,1556,1557],{},"capacitarr-saved",[185,1559,1560],{},"Label\u002Ftag applied to items saved by popular demand",[164,1562,1563,1568,1573],{},[185,1564,1565],{},[188,1566,1567],{},"posterOverlayStyle",[185,1569,1570],{},[188,1571,1572],{},"countdown",[185,1574,1575,1576,1396,1579,1396,1581],{},"Poster overlay style: ",[188,1577,1578],{},"off",[188,1580,1572],{},[188,1582,1583],{},"simple",[164,1585,1586,1591,1595],{},[185,1587,1588],{},[188,1589,1590],{},"sunsetRescoreEnabled",[185,1592,1593],{},[188,1594,262],{},[185,1596,1597],{},"Enable daily re-scoring of sunset queue items",[164,1599,1600,1605,1610],{},[185,1601,1602],{},[188,1603,1604],{},"savedDurationDays",[185,1606,1607],{},[188,1608,1609],{},"7",[185,1611,1612],{},"Days the \"Saved by popular demand\" marker persists (3-30)",[974,1614,1616],{"id":1615},"content-analytics","Content Analytics",[158,1618,1619,1629],{},[161,1620,1621],{},[164,1622,1623,1625,1627],{},[167,1624,1372],{},[167,1626,172],{},[167,1628,178],{},[180,1630,1631,1646],{},[164,1632,1633,1638,1643],{},[185,1634,1635],{},[188,1636,1637],{},"deadContentMinDays",[185,1639,1640],{},[188,1641,1642],{},"90",[185,1644,1645],{},"Minimum days in library for media to appear in dead content analytics (30-365)",[164,1647,1648,1653,1658],{},[185,1649,1650],{},[188,1651,1652],{},"staleContentDays",[185,1654,1655],{},[188,1656,1657],{},"180",[185,1659,1660],{},"Days since last watch for media to appear in stale content analytics (60-365)",[974,1662,1664],{"id":1663},"data-management","Data Management",[158,1666,1667,1677],{},[161,1668,1669],{},[164,1670,1671,1673,1675],{},[167,1672,1372],{},[167,1674,172],{},[167,1676,178],{},[180,1678,1679,1705,1719,1733],{},[164,1680,1681,1686,1691],{},[185,1682,1683],{},[188,1684,1685],{},"logLevel",[185,1687,1688],{},[188,1689,1690],{},"info",[185,1692,1693,1694,1396,1697,1396,1699,1396,1702],{},"Log level: ",[188,1695,1696],{},"debug",[188,1698,1690],{},[188,1700,1701],{},"warn",[188,1703,1704],{},"error",[164,1706,1707,1712,1716],{},[185,1708,1709],{},[188,1710,1711],{},"auditLogRetentionDays",[185,1713,1714],{},[188,1715,1475],{},[185,1717,1718],{},"Days to keep audit log entries (0 = indefinite)",[164,1720,1721,1726,1730],{},[185,1722,1723],{},[188,1724,1725],{},"backupRetentionDays",[185,1727,1728],{},[188,1729,1609],{},[185,1731,1732],{},"Days to keep automatic database backups (3, 7, 14, 30)",[164,1734,1735,1740,1744],{},[185,1736,1737],{},[188,1738,1739],{},"checkForUpdates",[185,1741,1742],{},[188,1743,262],{},[185,1745,1746],{},"Enable outbound update check to GitHub (cached 6 hours)",[974,1748,1750],{"id":1749},"disk-group-grace-period","Disk Group Grace Period",[158,1752,1753,1763],{},[161,1754,1755],{},[164,1756,1757,1759,1761],{},[167,1758,1372],{},[167,1760,172],{},[167,1762,178],{},[180,1764,1765],{},[164,1766,1767,1772,1776],{},[185,1768,1769],{},[188,1770,1771],{},"diskGroupGracePeriodDays",[185,1773,1774],{},[188,1775,1609],{},[185,1777,1778],{},"Days before stale disk groups are permanently removed (0 = immediate)",[149,1780,1781,1782,1785,1786,1789],{},"Disk groups not reported by any integration are marked ",[366,1783,1784],{},"stale"," rather than deleted immediately. This protects against accidental data loss when integrations are temporarily disabled or unreachable. Stale groups retain all configuration (thresholds, mode, overrides) and are automatically restored when the mount path reappears. Set to ",[188,1787,1788],{},"0"," to restore the legacy immediate-deletion behavior.",[974,1791,1793],{"id":1792},"data-retention","Data Retention",[158,1795,1796,1809],{},[161,1797,1798],{},[164,1799,1800,1803,1806],{},[167,1801,1802],{},"Data",[167,1804,1805],{},"Retention",[167,1807,1808],{},"Configuration",[180,1810,1811,1822,1835,1846,1857,1867,1878],{},[164,1812,1813,1816,1819],{},[185,1814,1815],{},"Activity events",[185,1817,1818],{},"7 days",[185,1820,1821],{},"Fixed (not configurable)",[164,1823,1824,1827,1830],{},[185,1825,1826],{},"Audit log entries",[185,1828,1829],{},"Configurable",[185,1831,1832,1834],{},[188,1833,1711],{}," preference",[164,1836,1837,1840,1843],{},[185,1838,1839],{},"Engine run stats",[185,1841,1842],{},"Last 1000 rows",[185,1844,1845],{},"Fixed",[164,1847,1848,1851,1854],{},[185,1849,1850],{},"Metrics (raw)",[185,1852,1853],{},"2 hours",[185,1855,1856],{},"Fixed — rolled up to hourly",[164,1858,1859,1862,1864],{},[185,1860,1861],{},"Metrics (hourly)",[185,1863,1818],{},[185,1865,1866],{},"Fixed — rolled up to daily",[164,1868,1869,1872,1875],{},[185,1870,1871],{},"Metrics (daily)",[185,1873,1874],{},"30 days",[185,1876,1877],{},"Fixed — rolled up to weekly",[164,1879,1880,1883,1886],{},[185,1881,1882],{},"Metrics (weekly)",[185,1884,1885],{},"1 year",[185,1887,1845],{},[1889,1890,1891],"style",{},"html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":486,"searchDepth":17,"depth":22,"links":1893},[1894,1895,1896,1897,1898,1899,1900,1901,1905,1910,1911],{"id":155,"depth":22,"text":156},{"id":270,"depth":22,"text":271},{"id":372,"depth":22,"text":373},{"id":416,"depth":22,"text":417},{"id":478,"depth":22,"text":479},{"id":835,"depth":22,"text":836},{"id":891,"depth":22,"text":892},{"id":928,"depth":22,"text":929,"children":1902},[1903,1904],{"id":976,"depth":27,"text":977},{"id":1013,"depth":27,"text":1014},{"id":1223,"depth":22,"text":1224,"children":1906},[1907,1908,1909],{"id":1258,"depth":27,"text":1259},{"id":1288,"depth":27,"text":1289},{"id":1308,"depth":27,"text":1309},{"id":1330,"depth":22,"text":1331},{"id":1348,"depth":22,"text":1349,"children":1912},[1913,1914,1915,1916,1917,1918],{"id":1362,"depth":27,"text":1363},{"id":1496,"depth":27,"text":50},{"id":1615,"depth":27,"text":1616},{"id":1663,"depth":27,"text":1664},{"id":1749,"depth":27,"text":1750},{"id":1792,"depth":27,"text":1793},"md",null,{},{"order":22},{"title":19,"description":151},"ncWFSDeNmSMvEBAS4_1wUsHsLNaYlQgFK7P2ItFlDqs",[1926,1927],{"title":10,"path":15,"stem":16,"description":1920,"order":17,"children":-1},{"title":24,"path":25,"stem":26,"description":486,"order":27,"children":-1},1776649613243]