[{"data":1,"prerenderedAt":1946},["ShallowReactive",2],{"navigation_docs_en":3,"-en-serveex-files-file-browser-quantum-":377,"-en-serveex-files-file-browser-quantum--surround":1941},[4,16,94,262,271,332],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":15},"About","i-noto-star","\u002Fen\u002Fabout","en\u002F1.about",[10],{"title":11,"path":12,"stem":13,"icon":14},"Welcome","\u002Fen\u002Fabout\u002Fwelcome","en\u002F1.about\u002F1.welcome","i-lucide-home",false,{"title":17,"icon":18,"path":19,"stem":20,"children":21,"page":15},"General","i-noto-open-book","\u002Fen\u002Fgeneral","en\u002F2.general",[22,26,44,58,76],{"title":17,"path":23,"stem":24,"icon":25},"\u002Fen\u002Fgeneral\u002Fsummary","en\u002F2.general\u002F1.summary","i-lucide-bookmark",{"title":27,"icon":28,"path":29,"stem":30,"children":31,"page":15},"Networking","i-lucide-network","\u002Fen\u002Fgeneral\u002Fnetworking","en\u002F2.general\u002F2.networking",[32,36,40],{"title":33,"path":34,"stem":35},"NAT & DHCP","\u002Fen\u002Fgeneral\u002Fnetworking\u002Fnat","en\u002F2.general\u002F2.networking\u002F1.nat",{"title":37,"path":38,"stem":39},"DNS Zone","\u002Fen\u002Fgeneral\u002Fnetworking\u002Fdns","en\u002F2.general\u002F2.networking\u002F2.dns",{"title":41,"path":42,"stem":43},"Samba","\u002Fen\u002Fgeneral\u002Fnetworking\u002Fsamba","en\u002F2.general\u002F2.networking\u002F3.samba",{"title":45,"icon":46,"path":47,"stem":48,"children":49,"page":15},"Storage","i-lucide-hard-drive","\u002Fen\u002Fgeneral\u002Fstorage","en\u002F2.general\u002F3.storage",[50,54],{"title":51,"path":52,"stem":53},"RAID","\u002Fen\u002Fgeneral\u002Fstorage\u002Fraid","en\u002F2.general\u002F3.storage\u002F1.raid",{"title":55,"path":56,"stem":57},"ZFS","\u002Fen\u002Fgeneral\u002Fstorage\u002Fzfs","en\u002F2.general\u002F3.storage\u002F2.zfs",{"title":59,"icon":60,"path":61,"stem":62,"children":63,"page":15},"Hardware","i-lucide-server","\u002Fen\u002Fgeneral\u002Fhardware","en\u002F2.general\u002F4.hardware",[64,68,72],{"title":65,"path":66,"stem":67},"The Basics","\u002Fen\u002Fgeneral\u002Fhardware\u002Fbasics","en\u002F2.general\u002F4.hardware\u002F1.basics",{"title":69,"path":70,"stem":71},"Network","\u002Fen\u002Fgeneral\u002Fhardware\u002Fnetwork","en\u002F2.general\u002F4.hardware\u002F2.network",{"title":73,"path":74,"stem":75},"The ProloNAS","\u002Fen\u002Fgeneral\u002Fhardware\u002Fprolonas","en\u002F2.general\u002F4.hardware\u002F3.prolonas",{"title":77,"icon":78,"path":79,"stem":80,"children":81,"page":15},"Linux tips for dummies","i-lucide-terminal","\u002Fen\u002Fgeneral\u002Flinux","en\u002F2.general\u002F5.linux",[82,86,90],{"title":83,"path":84,"stem":85},"Command line basics","\u002Fen\u002Fgeneral\u002Flinux\u002Fcli-basics","en\u002F2.general\u002F5.linux\u002F1.cli-basics",{"title":87,"path":88,"stem":89},"Folders and partitions","\u002Fen\u002Fgeneral\u002Flinux\u002Ffilesystem","en\u002F2.general\u002F5.linux\u002F2.filesystem",{"title":91,"path":92,"stem":93},"Handy CLI tools","\u002Fen\u002Fgeneral\u002Flinux\u002Fhandy-tools","en\u002F2.general\u002F5.linux\u002F3.handy-tools",{"title":95,"icon":96,"path":97,"stem":98,"children":99,"page":15},"Serveex","i-noto-microscope","\u002Fen\u002Fserveex","en\u002F3.serveex",[100,104,126,144,170,188,202,216,234,248],{"title":101,"path":102,"stem":103,"icon":25},"Introduction","\u002Fen\u002Fserveex\u002Fintroduction","en\u002F3.serveex\u002F1.introduction",{"title":105,"icon":106,"path":107,"stem":108,"children":109,"page":15},"Server core","i-lucide-server-cog","\u002Fen\u002Fserveex\u002Fcore","en\u002F3.serveex\u002F2.core",[110,114,118,122],{"title":111,"path":112,"stem":113},"Debian 13","\u002Fen\u002Fserveex\u002Fcore\u002Finstallation","en\u002F3.serveex\u002F2.core\u002F1.installation",{"title":115,"path":116,"stem":117},"Docker","\u002Fen\u002Fserveex\u002Fcore\u002Fdocker","en\u002F3.serveex\u002F2.core\u002F2.docker",{"title":119,"path":120,"stem":121},"Wireguard","\u002Fen\u002Fserveex\u002Fcore\u002Fwireguard","en\u002F3.serveex\u002F2.core\u002F3.wireguard",{"title":123,"path":124,"stem":125},"SWAG","\u002Fen\u002Fserveex\u002Fcore\u002Fswag","en\u002F3.serveex\u002F2.core\u002F4.swag",{"title":127,"icon":128,"path":129,"stem":130,"children":131,"page":15},"Security","i-lucide-shield","\u002Fen\u002Fserveex\u002Fsecurity","en\u002F3.serveex\u002F3.security",[132,136,140],{"title":133,"path":134,"stem":135},"Cloudflare Zero Trust","\u002Fen\u002Fserveex\u002Fsecurity\u002Fcloudflare","en\u002F3.serveex\u002F3.security\u002F2.cloudflare",{"title":137,"path":138,"stem":139},"TinyAuth","\u002Fen\u002Fserveex\u002Fsecurity\u002Ftinyauth","en\u002F3.serveex\u002F3.security\u002F3.tinyauth",{"title":141,"path":142,"stem":143},"Pocket ID","\u002Fen\u002Fserveex\u002Fsecurity\u002Fpocket-id","en\u002F3.serveex\u002F3.security\u002F4.pocket-id",{"title":145,"icon":146,"path":147,"stem":148,"children":149,"page":15},"Monitoring","i-lucide-chart-no-axes-column","\u002Fen\u002Fserveex\u002Fmonitoring","en\u002F3.serveex\u002F4.monitoring",[150,154,158,162,166],{"title":151,"path":152,"stem":153},"Uptime-Kuma","\u002Fen\u002Fserveex\u002Fmonitoring\u002Fuptime-kuma","en\u002F3.serveex\u002F4.monitoring\u002F1.uptime-kuma",{"title":155,"path":156,"stem":157},"Dozzle","\u002Fen\u002Fserveex\u002Fmonitoring\u002Fdozzle","en\u002F3.serveex\u002F4.monitoring\u002F2.dozzle",{"title":159,"path":160,"stem":161},"Speedtest Tracker","\u002Fen\u002Fserveex\u002Fmonitoring\u002Fspeedtest-tracker","en\u002F3.serveex\u002F4.monitoring\u002F3.speedtest-tracker",{"title":163,"path":164,"stem":165},"Beszel","\u002Fen\u002Fserveex\u002Fmonitoring\u002Fbeszel","en\u002F3.serveex\u002F4.monitoring\u002F4.beszel",{"title":167,"path":168,"stem":169},"UpSnap","\u002Fen\u002Fserveex\u002Fmonitoring\u002Fupsnap","en\u002F3.serveex\u002F4.monitoring\u002F5.upsnap",{"title":171,"icon":172,"path":173,"stem":174,"children":175,"page":15},"Media & Seedbox","i-lucide-list-video","\u002Fen\u002Fserveex\u002Fmedia","en\u002F3.serveex\u002F5.media",[176,180,184],{"title":177,"path":178,"stem":179},"Jellyfin","\u002Fen\u002Fserveex\u002Fmedia\u002Fjellyfin","en\u002F3.serveex\u002F5.media\u002F1.jellyfin",{"title":181,"path":182,"stem":183},"Qbittorrent","\u002Fen\u002Fserveex\u002Fmedia\u002Fqbittorrent","en\u002F3.serveex\u002F5.media\u002F2.qbittorrent",{"title":185,"path":186,"stem":187},"Automation","\u002Fen\u002Fserveex\u002Fmedia\u002Fservarr","en\u002F3.serveex\u002F5.media\u002F3.servarr",{"title":189,"icon":190,"path":191,"stem":192,"children":193,"page":15},"Cloud Drive & Photos","i-lucide-cloud-upload","\u002Fen\u002Fserveex\u002Fcloud","en\u002F3.serveex\u002F6.cloud",[194,198],{"title":195,"path":196,"stem":197},"Immich","\u002Fen\u002Fserveex\u002Fcloud\u002Fimmich","en\u002F3.serveex\u002F6.cloud\u002F1.immich",{"title":199,"path":200,"stem":201},"Nextcloud","\u002Fen\u002Fserveex\u002Fcloud\u002Fnextcloud","en\u002F3.serveex\u002F6.cloud\u002F2.nextcloud",{"title":203,"icon":204,"path":205,"stem":206,"children":207,"page":15},"File & share","i-lucide-folder-tree","\u002Fen\u002Fserveex\u002Ffiles","en\u002F3.serveex\u002F7.files",[208,212],{"title":209,"path":210,"stem":211},"File Browser Quantum","\u002Fen\u002Fserveex\u002Ffiles\u002Ffile-browser-quantum","en\u002F3.serveex\u002F7.files\u002F1.file-browser-quantum",{"title":213,"path":214,"stem":215},"Pingvin","\u002Fen\u002Fserveex\u002Ffiles\u002Fpingvin","en\u002F3.serveex\u002F7.files\u002F2.pingvin",{"title":217,"icon":218,"path":219,"stem":220,"children":221,"page":15},"Developpement","i-lucide-code-xml","\u002Fen\u002Fserveex\u002Fdevelopment","en\u002F3.serveex\u002F8.development",[222,226,230],{"title":223,"path":224,"stem":225},"Code-Server","\u002Fen\u002Fserveex\u002Fdevelopment\u002Fcode-server","en\u002F3.serveex\u002F8.development\u002F1.code-server",{"title":227,"path":228,"stem":229},"Forgejo","\u002Fen\u002Fserveex\u002Fdevelopment\u002Fforgejo","en\u002F3.serveex\u002F8.development\u002F2.forgejo",{"title":231,"path":232,"stem":233},"IT Tools","\u002Fen\u002Fserveex\u002Fdevelopment\u002Fit-tools","en\u002F3.serveex\u002F8.development\u002F3.it-tools",{"title":235,"icon":236,"path":237,"stem":238,"children":239,"page":15},"Useful Apps","i-lucide-award","\u002Fen\u002Fserveex\u002Fapps","en\u002F3.serveex\u002F9.apps",[240,244],{"title":241,"path":242,"stem":243},"Adguard Home","\u002Fen\u002Fserveex\u002Fapps\u002Fadguard","en\u002F3.serveex\u002F9.apps\u002F1.adguard",{"title":245,"path":246,"stem":247},"Vaultwarden","\u002Fen\u002Fserveex\u002Fapps\u002Fvaultwarden","en\u002F3.serveex\u002F9.apps\u002F2.vaultwarden",{"title":249,"icon":250,"path":251,"stem":252,"children":253,"page":15},"Advanced","i-lucide-flask-conical","\u002Fen\u002Fserveex\u002Fadvanced","en\u002F3.serveex\u002F91.advanced",[254,258],{"title":255,"path":256,"stem":257},"Authentik","\u002Fen\u002Fserveex\u002Fadvanced\u002Fauthentik","en\u002F3.serveex\u002F91.advanced\u002F1.authentik",{"title":259,"path":260,"stem":261},"Arcane","\u002Fen\u002Fserveex\u002Fadvanced\u002Farcane","en\u002F3.serveex\u002F91.advanced\u002F2.arcane",{"title":263,"icon":264,"path":265,"stem":266,"children":267,"page":15},"Stockeex","i-noto-computer-disk","\u002Fen\u002Fstockeex","en\u002F4.stockeex",[268],{"title":101,"path":269,"stem":270,"icon":25},"\u002Fen\u002Fstockeex\u002Fintroduction","en\u002F4.stockeex\u002F1.introduction",{"title":272,"icon":273,"path":274,"stem":275,"children":276,"page":15},"My nonsense","i-noto-test-tube","\u002Fen\u002Fnonsense","en\u002F5.nonsense",[277,280,302],{"title":272,"path":278,"stem":279,"icon":25},"\u002Fen\u002Fnonsense\u002Fsummary","en\u002F5.nonsense\u002F1.summary",{"title":281,"icon":282,"path":283,"stem":284,"children":285,"page":15},"Python","i-lucide-file-code-2","\u002Fen\u002Fnonsense\u002Fpython","en\u002F5.nonsense\u002F2.python",[286,290,294,298],{"title":287,"path":288,"stem":289},"Nvidia Stock Bot","\u002Fen\u002Fnonsense\u002Fpython\u002Fnvidia-stock-bot","en\u002F5.nonsense\u002F2.python\u002F1.nvidia-stock-bot",{"title":291,"path":292,"stem":293},"Adguard CIDRE","\u002Fen\u002Fnonsense\u002Fpython\u002Fadguard-cidre","en\u002F5.nonsense\u002F2.python\u002F2.adguard-cidre",{"title":295,"path":296,"stem":297},"Lumeex","\u002Fen\u002Fnonsense\u002Fpython\u002Flumeex","en\u002F5.nonsense\u002F2.python\u002F3.lumeex",{"title":299,"path":300,"stem":301},"Instameex","\u002Fen\u002Fnonsense\u002Fpython\u002Finstameex","en\u002F5.nonsense\u002F2.python\u002F4.instameex",{"title":303,"icon":304,"path":305,"stem":306,"children":307,"page":15},"Bash","i-lucide-file-terminal","\u002Fen\u002Fnonsense\u002Fbash","en\u002F5.nonsense\u002F3.bash",[308,312,316,320,324,328],{"title":309,"path":310,"stem":311},"Servarr corrector","\u002Fen\u002Fnonsense\u002Fbash\u002Fservarr-duplicates","en\u002F5.nonsense\u002F3.bash\u002F1.servarr-duplicates",{"title":313,"path":314,"stem":315},"LUKS Backup","\u002Fen\u002Fnonsense\u002Fbash\u002Fluks-backup","en\u002F5.nonsense\u002F3.bash\u002F2.luks-backup",{"title":317,"path":318,"stem":319},"Socat Proxy","\u002Fen\u002Fnonsense\u002Fbash\u002Fsocat-proxy","en\u002F5.nonsense\u002F3.bash\u002F3.socat-proxy",{"title":321,"path":322,"stem":323},"HotDisk","\u002Fen\u002Fnonsense\u002Fbash\u002Fhotdisk","en\u002F5.nonsense\u002F3.bash\u002F4.hotdisk",{"title":325,"path":326,"stem":327},"Backrest Docker Stop","\u002Fen\u002Fnonsense\u002Fbash\u002Fbackrest-docker-stop","en\u002F5.nonsense\u002F3.bash\u002F5.backrest-docker-stop",{"title":329,"path":330,"stem":331},"rm Confirmation Guard","\u002Fen\u002Fnonsense\u002Fbash\u002Frm-confirmation","en\u002F5.nonsense\u002F3.bash\u002F6.rm-confirmation",{"title":333,"icon":334,"path":335,"stem":336,"children":337,"page":15},"Recycled","i-noto-recycling-symbol","\u002Fen\u002Frecycled","en\u002F6.recycled",[338,341,355],{"title":333,"path":339,"stem":340,"icon":25},"\u002Fen\u002Frecycled\u002Fsummary","en\u002F6.recycled\u002F1.summary",{"title":342,"icon":343,"path":344,"stem":345,"children":346,"page":15},"Deprecated","i-lucide-trash-2","\u002Fen\u002Frecycled\u002Fdeprecated","en\u002F6.recycled\u002F2.deprecated",[347,351],{"title":348,"path":349,"stem":350},"Wireguard 14","\u002Fen\u002Frecycled\u002Fdeprecated\u002Fwireguard-14","en\u002F6.recycled\u002F2.deprecated\u002F1.wireguard-14",{"title":352,"path":353,"stem":354},"File Browser","\u002Fen\u002Frecycled\u002Fdeprecated\u002Ffile-browser","en\u002F6.recycled\u002F2.deprecated\u002F2.file-browser",{"title":356,"icon":357,"path":358,"stem":359,"children":360,"page":15},"Alternatives","i-lucide-arrow-left-right","\u002Fen\u002Frecycled\u002Falternatives","en\u002F6.recycled\u002F3.alternatives",[361,365,369,373],{"title":362,"path":363,"stem":364},"Plex","\u002Fen\u002Frecycled\u002Falternatives\u002Fplex","en\u002F6.recycled\u002F3.alternatives\u002F1.plex",{"title":366,"path":367,"stem":368},"Qbittorrent for Plex","\u002Fen\u002Frecycled\u002Falternatives\u002Fqbittorrent-for-plex","en\u002F6.recycled\u002F3.alternatives\u002F2.qbittorrent for plex",{"title":370,"path":371,"stem":372},"Servarr for Plex","\u002Fen\u002Frecycled\u002Falternatives\u002Fservarr-for-plex","en\u002F6.recycled\u002F3.alternatives\u002F3.servarr for plex",{"title":374,"path":375,"stem":376},"Gitea","\u002Fen\u002Frecycled\u002Falternatives\u002Fgitea","en\u002F6.recycled\u002F3.alternatives\u002F4.gitea",{"id":378,"title":209,"body":379,"contributors":1933,"description":1935,"extension":1936,"hideCopyPage":15,"hideHeader":15,"hideToc":15,"links":1937,"meta":1938,"navigation":789,"path":210,"seo":1939,"stem":211,"__hash__":1940},"docs_en\u002Fen\u002F3.serveex\u002F7.files\u002F1.file-browser-quantum.md",{"type":380,"value":381,"toc":1920},"minimark",[382,390,409,416,421,425,822,829,833,849,852,888,1393,1396,1400,1413,1863,1879,1916],[383,384],"ellipsis",{"blur":385,"left":386,"top":387,"width":388,"z-index":389},"140px","0px","10rem","40rem","60",[391,392,393,399,400,403,404,408],"p",{},[394,395,209],"a",{"href":396,"rel":397},"https:\u002F\u002Fgithub.com\u002Fgtsteffaniak\u002Ffilebrowser",[398],"nofollow"," is a community fork of ",[394,401,352],{"href":402},"\u002Frecycled\u002Fdeprecated\u002Ffile-browser",", rewritten for better performance (indexed search, lower memory use) and configured through a single ",[405,406,407],"code",{},"config.yaml"," file instead of a database-only setup.",[391,410,411],{},[412,413],"img",{"alt":414,"src":415},"file-browser-quantum","\u002Fimg\u002Fserveex\u002Ffilebrowser-quantum.png",[417,418,420],"h2",{"id":419},"installation","Installation",[422,423],"file-tree",{":tree":424},"{\"\u002F\":[{\"srv\":[{\"docker\":[{\"filebrowser-quantum\":[\"compose.yaml\",{\"data\":[\"config.yaml\",\"filebrowser.sqlite\"]}]}]}]}]}",[426,427,429,434,437,467,473,488,495,594,610,614,625,726,744,804,818],"steps",{"level":428},"3",[430,431,433],"h3",{"id":432},"create-the-config-file","Create the config file",[391,435,436],{},"Create the data folder:",[438,439,445],"pre",{"className":440,"code":441,"filename":442,"language":443,"meta":444,"style":444},"language-bash shiki shiki-themes github-dark material-theme github-dark","sudo mkdir -p \u002Fsrv\u002Fdocker\u002Ffilebrowser-quantum\u002Fdata\n","Terminal","bash","",[405,446,447],{"__ignoreMap":444},[448,449,452,456,460,464],"span",{"class":450,"line":451},"line",1,[448,453,455],{"class":454},"sEgDM","sudo",[448,457,459],{"class":458},"s11XM"," mkdir",[448,461,463],{"class":462},"sJWha"," -p",[448,465,466],{"class":458}," \u002Fsrv\u002Fdocker\u002Ffilebrowser-quantum\u002Fdata\n",[391,468,469,470,472],{},"Create the ",[405,471,407],{}," file:",[438,474,476],{"className":440,"code":475,"filename":442,"language":443,"meta":444,"style":444},"sudo nano \u002Fsrv\u002Fdocker\u002Ffilebrowser-quantum\u002Fdata\u002Fconfig.yaml\n",[405,477,478],{"__ignoreMap":444},[448,479,480,482,485],{"class":450,"line":451},[448,481,455],{"class":454},[448,483,484],{"class":458}," nano",[448,486,487],{"class":458}," \u002Fsrv\u002Fdocker\u002Ffilebrowser-quantum\u002Fdata\u002Fconfig.yaml\n",[391,489,490,491,494],{},"Paste the following, adding one ",[405,492,493],{},"sources"," entry per folder you want to browse:",[438,496,500],{"className":497,"code":498,"filename":407,"language":499,"meta":444,"style":444},"language-yaml shiki shiki-themes github-dark material-theme github-dark","server:\n  cacheDir: \u002Fhome\u002Ffilebrowser\u002Fdata\u002Ftmp\n  sources:\n    - path: \u002Fsrv\u002Fdocker\n      config:\n        defaultEnabled: true\n    - path: \u002Fmedia\n      config:\n        defaultEnabled: true\n","yaml",[405,501,502,512,524,532,546,554,566,578,585],{"__ignoreMap":444},[448,503,504,508],{"class":450,"line":451},[448,505,507],{"class":506},"sRuoG","server",[448,509,511],{"class":510},"s8jd1",":\n",[448,513,515,518,521],{"class":450,"line":514},2,[448,516,517],{"class":506},"  cacheDir",[448,519,520],{"class":510},":",[448,522,523],{"class":458}," \u002Fhome\u002Ffilebrowser\u002Fdata\u002Ftmp\n",[448,525,527,530],{"class":450,"line":526},3,[448,528,529],{"class":506},"  sources",[448,531,511],{"class":510},[448,533,535,538,541,543],{"class":450,"line":534},4,[448,536,537],{"class":510},"    -",[448,539,540],{"class":506}," path",[448,542,520],{"class":510},[448,544,545],{"class":458}," \u002Fsrv\u002Fdocker\n",[448,547,549,552],{"class":450,"line":548},5,[448,550,551],{"class":506},"      config",[448,553,511],{"class":510},[448,555,557,560,562],{"class":450,"line":556},6,[448,558,559],{"class":506},"        defaultEnabled",[448,561,520],{"class":510},[448,563,565],{"class":564},"s08Ry"," true\n",[448,567,569,571,573,575],{"class":450,"line":568},7,[448,570,537],{"class":510},[448,572,540],{"class":506},[448,574,520],{"class":510},[448,576,577],{"class":458}," \u002Fmedia\n",[448,579,581,583],{"class":450,"line":580},8,[448,582,551],{"class":506},[448,584,511],{"class":510},[448,586,588,590,592],{"class":450,"line":587},9,[448,589,559],{"class":506},[448,591,520],{"class":510},[448,593,565],{"class":564},[391,595,596,597,601,602,605,606,609],{},"Press ",[598,599],"kbd",{"value":600},"Ctrl+O",", then ",[598,603],{"value":604},"Enter"," to save, and ",[598,607],{"value":608},"Ctrl+X"," to exit.",[430,611,613],{"id":612},"deploy-the-stack","Deploy the stack",[391,615,616,617,620,621,624],{},"Open Dockge, click on ",[405,618,619],{},"compose",", name the stack ",[405,622,623],{},"filebrowser-quantum",", then copy and paste the following:",[438,626,629],{"className":497,"code":627,"filename":628,"language":499,"meta":444,"style":444},"---\nservices:\n  filebrowser-quantum:\n    container_name: filebrowser-quantum\n    image: gtstef\u002Ffilebrowser:beta\n    restart: unless-stopped\n    volumes:\n      - \u002Fsrv\u002Fdocker:\u002Fsrv\u002Fdocker\n      - \u002Fmedia:\u002Fmedia\n      - \u002Fsrv\u002Fdocker\u002Ffilebrowser-quantum\u002Fdata:\u002Fhome\u002Ffilebrowser\u002Fdata\n    ports:\n      - 8020:80\n","compose.yaml",[405,630,631,636,643,650,660,670,680,687,695,702,710,718],{"__ignoreMap":444},[448,632,633],{"class":450,"line":451},[448,634,635],{"class":454},"---\n",[448,637,638,641],{"class":450,"line":514},[448,639,640],{"class":506},"services",[448,642,511],{"class":510},[448,644,645,648],{"class":450,"line":526},[448,646,647],{"class":506},"  filebrowser-quantum",[448,649,511],{"class":510},[448,651,652,655,657],{"class":450,"line":534},[448,653,654],{"class":506},"    container_name",[448,656,520],{"class":510},[448,658,659],{"class":458}," filebrowser-quantum\n",[448,661,662,665,667],{"class":450,"line":548},[448,663,664],{"class":506},"    image",[448,666,520],{"class":510},[448,668,669],{"class":458}," gtstef\u002Ffilebrowser:beta\n",[448,671,672,675,677],{"class":450,"line":556},[448,673,674],{"class":506},"    restart",[448,676,520],{"class":510},[448,678,679],{"class":458}," unless-stopped\n",[448,681,682,685],{"class":450,"line":568},[448,683,684],{"class":506},"    volumes",[448,686,511],{"class":510},[448,688,689,692],{"class":450,"line":580},[448,690,691],{"class":510},"      -",[448,693,694],{"class":458}," \u002Fsrv\u002Fdocker:\u002Fsrv\u002Fdocker\n",[448,696,697,699],{"class":450,"line":587},[448,698,691],{"class":510},[448,700,701],{"class":458}," \u002Fmedia:\u002Fmedia\n",[448,703,705,707],{"class":450,"line":704},10,[448,706,691],{"class":510},[448,708,709],{"class":458}," \u002Fsrv\u002Fdocker\u002Ffilebrowser-quantum\u002Fdata:\u002Fhome\u002Ffilebrowser\u002Fdata\n",[448,711,713,716],{"class":450,"line":712},11,[448,714,715],{"class":506},"    ports",[448,717,511],{"class":510},[448,719,721,723],{"class":450,"line":720},12,[448,722,691],{"class":510},[448,724,725],{"class":458}," 8020:80\n",[727,728,729,730,732,733,735,736,739,740,743],"note",{},"Mount every folder you listed under ",[405,731,493],{}," in ",[405,734,407],{}," at the same path inside the container (here ",[405,737,738],{},"\u002Fsrv\u002Fdocker"," and ",[405,741,742],{},"\u002Fmedia","), otherwise File Browser Quantum won't find them.",[745,746,747,755],"tip",{"icon":444},[391,748,749,750,754],{},"✨ ",[751,752,753],"strong",{},"Tip:"," Add the watchtower label to automate updates.",[438,756,758],{"className":497,"code":757,"filename":628,"language":499,"meta":444,"style":444},"services:\n  filebrowser-quantum:\n    #...\n    labels:\n\n      - com.centurylinklabs.watchtower.enable=true\n```\n",[405,759,760,766,772,778,785,791,798],{"__ignoreMap":444},[448,761,762,764],{"class":450,"line":451},[448,763,640],{"class":506},[448,765,511],{"class":510},[448,767,768,770],{"class":450,"line":514},[448,769,647],{"class":506},[448,771,511],{"class":510},[448,773,774],{"class":450,"line":526},[448,775,777],{"class":776},"sDvJj","    #...\n",[448,779,780,783],{"class":450,"line":534},[448,781,782],{"class":506},"    labels",[448,784,511],{"class":510},[448,786,787],{"class":450,"line":548},[448,788,790],{"emptyLinePlaceholder":789},true,"\n",[448,792,793,795],{"class":450,"line":556},[448,794,691],{"class":510},[448,796,797],{"class":458}," com.centurylinklabs.watchtower.enable=true\n",[448,799,800],{"class":450,"line":568},[448,801,803],{"class":802},"slcoZ","```\n",[391,805,806,807,810,811,814,815,817],{},"Deploy the container and go to ",[405,808,809],{},"http:\u002F\u002Fyourserverip:8020",". Log in with the default ",[405,812,813],{},"admin"," \u002F ",[405,816,813],{}," credentials, then immediately change the password in your profile settings.",[430,819,821],{"id":820},"done","Done !",[823,824,825,828],"caution",{},[751,826,827],{},"If it doesn't work:"," check your firewall rules.",[417,830,832],{"id":831},"exposing-file-browser-quantum-with-swag","Exposing File Browser Quantum with Swag",[834,835,836,837,840,841,844,845,848],"warning",{},"File Browser Quantum does not support multi-factor authentication. Exposing it publicly could put your systems at risk. Only do this if you're using a secure authentication solution like ",[394,838,137],{"href":839},"\u002Fserveex\u002Fsecurity\u002Ftinyauth"," or ",[394,842,255],{"href":843},"\u002Fserveex\u002Fadvanced\u002Fauthentik\u002F",". Otherwise, don't expose it with SWAG. Use a VPN like ",[394,846,119],{"href":847},"\u002Fserveex\u002Fcore\u002Fwireguard"," instead.",[391,850,851],{},"You may want to access File Browser Quantum remotely from all your devices. To do that, we'll expose it through Swag.",[727,853,854,855,858,859,862,863,867,868,871,872,875,876,879,880,882,883,887],{"icon":444},"📋 ",[751,856,857],{},"Pre-requisite:"," We assume you've already created a subdomain like ",[405,860,861],{},"fbq.yourdomain.com"," in your ",[394,864,866],{"href":865},"\u002Fgeneral\u002Fnetworking\u002Fdns","DNS zone"," pointing to ",[405,869,870],{},"yourdomain.com"," with a ",[405,873,874],{},"CNAME",". Unless you're using Cloudflare Zero Trust, we also assume you've already forwarded port ",[405,877,878],{},"443"," on your router to port ",[405,881,878],{}," on your server using ",[394,884,886],{"href":885},"\u002Fgeneral\u002Fnetworking\u002Fnat","NAT rules",".",[426,889,890,894,897,1016,1027,1030,1034,1040,1054,1057,1382,1390],{"level":428},[430,891,893],{"id":892},"add-file-browser-quantums-network-to-swag","Add File Browser Quantum's network to SWAG",[391,895,896],{},"In Dockge, go to the SWAG stack and edit the compose file to add File Browser Quantum's network:",[438,898,900],{"className":497,"code":899,"filename":628,"language":499,"meta":444,"style":444},"---\nservices:\n  swag:\n     container_name: # ...\n      # ... \n     networks:                          # Connects the container to the custom network \n      # ...           \n      - filebrowser-quantum             # Name of the network declared in the stack\n    \nnetworks:                               # Defines the custom network\n  # ...\n  filebrowser-quantum:                  # Name of the network declared in the stack\n    name: filebrowser-quantum_default   # Actual name of the external network\n    external: true                      # Specifies it's an external network\n",[405,901,902,906,912,919,929,934,944,949,959,964,974,979,988,1002],{"__ignoreMap":444},[448,903,904],{"class":450,"line":451},[448,905,635],{"class":454},[448,907,908,910],{"class":450,"line":514},[448,909,640],{"class":506},[448,911,511],{"class":510},[448,913,914,917],{"class":450,"line":526},[448,915,916],{"class":506},"  swag",[448,918,511],{"class":510},[448,920,921,924,926],{"class":450,"line":534},[448,922,923],{"class":506},"     container_name",[448,925,520],{"class":510},[448,927,928],{"class":776}," # ...\n",[448,930,931],{"class":450,"line":548},[448,932,933],{"class":776},"      # ... \n",[448,935,936,939,941],{"class":450,"line":556},[448,937,938],{"class":506},"     networks",[448,940,520],{"class":510},[448,942,943],{"class":776},"                          # Connects the container to the custom network \n",[448,945,946],{"class":450,"line":568},[448,947,948],{"class":776},"      # ...           \n",[448,950,951,953,956],{"class":450,"line":580},[448,952,691],{"class":510},[448,954,955],{"class":458}," filebrowser-quantum",[448,957,958],{"class":776},"             # Name of the network declared in the stack\n",[448,960,961],{"class":450,"line":587},[448,962,963],{"class":802},"    \n",[448,965,966,969,971],{"class":450,"line":704},[448,967,968],{"class":506},"networks",[448,970,520],{"class":510},[448,972,973],{"class":776},"                               # Defines the custom network\n",[448,975,976],{"class":450,"line":712},[448,977,978],{"class":776},"  # ...\n",[448,980,981,983,985],{"class":450,"line":720},[448,982,647],{"class":506},[448,984,520],{"class":510},[448,986,987],{"class":776},"                  # Name of the network declared in the stack\n",[448,989,991,994,996,999],{"class":450,"line":990},13,[448,992,993],{"class":506},"    name",[448,995,520],{"class":510},[448,997,998],{"class":458}," filebrowser-quantum_default",[448,1000,1001],{"class":776},"   # Actual name of the external network\n",[448,1003,1005,1008,1010,1013],{"class":450,"line":1004},14,[448,1006,1007],{"class":506},"    external",[448,1009,520],{"class":510},[448,1011,1012],{"class":564}," true",[448,1014,1015],{"class":776},"                      # Specifies it's an external network\n",[727,1017,1018,1019,1022,1023,887],{},"Here, we assume the network name for File Browser Quantum is ",[405,1020,1021],{},"filebrowser-quantum_default",". You can confirm the connection is working by accessing the SWAG dashboard at ",[394,1024,1025],{"href":1025,"rel":1026},"http:\u002F\u002Fyourserverip:81",[398],[391,1028,1029],{},"Restart the stack by clicking \"deploy\" and wait for SWAG to fully initialize.",[430,1031,1033],{"id":1032},"create-the-subdomainconf-file","Create the subdomain.conf file",[391,1035,1036,1037,887],{},"In the Swag folders, create the file ",[405,1038,1039],{},"fbq.subdomain.conf",[438,1041,1043],{"className":440,"code":1042,"filename":442,"language":443,"meta":444,"style":444},"sudo nano \u002Fsrv\u002Fdocker\u002Fswag\u002Fconfig\u002Fnginx\u002Fproxy-confs\u002Ffbq.subdomain.conf\n",[405,1044,1045],{"__ignoreMap":444},[448,1046,1047,1049,1051],{"class":450,"line":451},[448,1048,455],{"class":454},[448,1050,484],{"class":458},[448,1052,1053],{"class":458}," \u002Fsrv\u002Fdocker\u002Fswag\u002Fconfig\u002Fnginx\u002Fproxy-confs\u002Ffbq.subdomain.conf\n",[391,1055,1056],{},"And paste the following configuration:",[438,1058,1062],{"className":1059,"code":1060,"filename":1039,"language":1061,"meta":444,"style":444},"language-nginx shiki shiki-themes github-dark material-theme github-dark","## Version 2023\u002F12\u002F19\n\nserver {\n    listen 443 ssl;\n    listen [::]:443 ssl;\n\n    server_name fbq.*;\n\n    include \u002Fconfig\u002Fnginx\u002Fssl.conf;\n\n    client_max_body_size 0;\n\n    # enable for ldap auth (requires ldap-location.conf in the location block)\n    #include \u002Fconfig\u002Fnginx\u002Fldap-server.conf;\n\n    # enable for Authelia (requires authelia-location.conf in the location block)\n    #include \u002Fconfig\u002Fnginx\u002Fauthelia-server.conf;\n\n    # enable for Authentik (requires authentik-location.conf in the location block)\n    #include \u002Fconfig\u002Fnginx\u002Fauthentik-server.conf;\n\n    location \u002F {\n        # enable the next two lines for http auth\n        #auth_basic \"Restricted\";\n        #auth_basic_user_file \u002Fconfig\u002Fnginx\u002F.htpasswd;\n\n        # enable for ldap auth (requires ldap-server.conf in the server block)\n        #include \u002Fconfig\u002Fnginx\u002Fldap-location.conf;\n\n        # enable for Authelia (requires authelia-server.conf in the server block)\n        #include \u002Fconfig\u002Fnginx\u002Fauthelia-location.conf;\n\n        # enable for Authentik (requires authentik-server.conf in the server block)\n        #include \u002Fconfig\u002Fnginx\u002Fauthentik-location.conf;\n\n        include \u002Fconfig\u002Fnginx\u002Fproxy.conf;\n        include \u002Fconfig\u002Fnginx\u002Fresolver.conf;\n        set $upstream_app filebrowser-quantum;\n        set $upstream_port 80;\n        set $upstream_proto http;\n        proxy_pass $upstream_proto:\u002F\u002F$upstream_app:$upstream_port;\n    }\n}\n","nginx",[405,1063,1064,1069,1073,1081,1096,1105,1109,1119,1123,1133,1137,1147,1151,1156,1161,1166,1172,1178,1183,1189,1195,1200,1211,1217,1223,1229,1234,1240,1246,1251,1257,1263,1268,1274,1280,1285,1296,1306,1320,1335,1347,1370,1376],{"__ignoreMap":444},[448,1065,1066],{"class":450,"line":451},[448,1067,1068],{"class":776},"## Version 2023\u002F12\u002F19\n",[448,1070,1071],{"class":450,"line":514},[448,1072,790],{"emptyLinePlaceholder":789},[448,1074,1075,1078],{"class":450,"line":526},[448,1076,507],{"class":1077},"sAoO4",[448,1079,1080],{"class":802}," {\n",[448,1082,1083,1087,1090,1093],{"class":450,"line":534},[448,1084,1086],{"class":1085},"sJPTy","    listen ",[448,1088,878],{"class":1089},"swwWl",[448,1091,1092],{"class":802}," ssl",[448,1094,1095],{"class":510},";\n",[448,1097,1098,1100,1103],{"class":450,"line":548},[448,1099,1086],{"class":1085},[448,1101,1102],{"class":802},"[::]:443 ssl",[448,1104,1095],{"class":510},[448,1106,1107],{"class":450,"line":556},[448,1108,790],{"emptyLinePlaceholder":789},[448,1110,1111,1114,1117],{"class":450,"line":568},[448,1112,1113],{"class":1085},"    server_name ",[448,1115,1116],{"class":802},"fbq.*",[448,1118,1095],{"class":510},[448,1120,1121],{"class":450,"line":580},[448,1122,790],{"emptyLinePlaceholder":789},[448,1124,1125,1128,1131],{"class":450,"line":587},[448,1126,1127],{"class":1085},"    include ",[448,1129,1130],{"class":802},"\u002Fconfig\u002Fnginx\u002Fssl.conf",[448,1132,1095],{"class":510},[448,1134,1135],{"class":450,"line":704},[448,1136,790],{"emptyLinePlaceholder":789},[448,1138,1139,1142,1145],{"class":450,"line":712},[448,1140,1141],{"class":1085},"    client_max_body_size ",[448,1143,1144],{"class":1089},"0",[448,1146,1095],{"class":510},[448,1148,1149],{"class":450,"line":720},[448,1150,790],{"emptyLinePlaceholder":789},[448,1152,1153],{"class":450,"line":990},[448,1154,1155],{"class":776},"    # enable for ldap auth (requires ldap-location.conf in the location block)\n",[448,1157,1158],{"class":450,"line":1004},[448,1159,1160],{"class":776},"    #include \u002Fconfig\u002Fnginx\u002Fldap-server.conf;\n",[448,1162,1164],{"class":450,"line":1163},15,[448,1165,790],{"emptyLinePlaceholder":789},[448,1167,1169],{"class":450,"line":1168},16,[448,1170,1171],{"class":776},"    # enable for Authelia (requires authelia-location.conf in the location block)\n",[448,1173,1175],{"class":450,"line":1174},17,[448,1176,1177],{"class":776},"    #include \u002Fconfig\u002Fnginx\u002Fauthelia-server.conf;\n",[448,1179,1181],{"class":450,"line":1180},18,[448,1182,790],{"emptyLinePlaceholder":789},[448,1184,1186],{"class":450,"line":1185},19,[448,1187,1188],{"class":776},"    # enable for Authentik (requires authentik-location.conf in the location block)\n",[448,1190,1192],{"class":450,"line":1191},20,[448,1193,1194],{"class":776},"    #include \u002Fconfig\u002Fnginx\u002Fauthentik-server.conf;\n",[448,1196,1198],{"class":450,"line":1197},21,[448,1199,790],{"emptyLinePlaceholder":789},[448,1201,1203,1206,1208],{"class":450,"line":1202},22,[448,1204,1205],{"class":1077},"    location",[448,1207,814],{"class":454},[448,1209,1210],{"class":802},"{\n",[448,1212,1214],{"class":450,"line":1213},23,[448,1215,1216],{"class":776},"        # enable the next two lines for http auth\n",[448,1218,1220],{"class":450,"line":1219},24,[448,1221,1222],{"class":776},"        #auth_basic \"Restricted\";\n",[448,1224,1226],{"class":450,"line":1225},25,[448,1227,1228],{"class":776},"        #auth_basic_user_file \u002Fconfig\u002Fnginx\u002F.htpasswd;\n",[448,1230,1232],{"class":450,"line":1231},26,[448,1233,790],{"emptyLinePlaceholder":789},[448,1235,1237],{"class":450,"line":1236},27,[448,1238,1239],{"class":776},"        # enable for ldap auth (requires ldap-server.conf in the server block)\n",[448,1241,1243],{"class":450,"line":1242},28,[448,1244,1245],{"class":776},"        #include \u002Fconfig\u002Fnginx\u002Fldap-location.conf;\n",[448,1247,1249],{"class":450,"line":1248},29,[448,1250,790],{"emptyLinePlaceholder":789},[448,1252,1254],{"class":450,"line":1253},30,[448,1255,1256],{"class":776},"        # enable for Authelia (requires authelia-server.conf in the server block)\n",[448,1258,1260],{"class":450,"line":1259},31,[448,1261,1262],{"class":776},"        #include \u002Fconfig\u002Fnginx\u002Fauthelia-location.conf;\n",[448,1264,1266],{"class":450,"line":1265},32,[448,1267,790],{"emptyLinePlaceholder":789},[448,1269,1271],{"class":450,"line":1270},33,[448,1272,1273],{"class":776},"        # enable for Authentik (requires authentik-server.conf in the server block)\n",[448,1275,1277],{"class":450,"line":1276},34,[448,1278,1279],{"class":776},"        #include \u002Fconfig\u002Fnginx\u002Fauthentik-location.conf;\n",[448,1281,1283],{"class":450,"line":1282},35,[448,1284,790],{"emptyLinePlaceholder":789},[448,1286,1288,1291,1294],{"class":450,"line":1287},36,[448,1289,1290],{"class":1085},"        include ",[448,1292,1293],{"class":802},"\u002Fconfig\u002Fnginx\u002Fproxy.conf",[448,1295,1095],{"class":510},[448,1297,1299,1301,1304],{"class":450,"line":1298},37,[448,1300,1290],{"class":1085},[448,1302,1303],{"class":802},"\u002Fconfig\u002Fnginx\u002Fresolver.conf",[448,1305,1095],{"class":510},[448,1307,1309,1312,1315,1318],{"class":450,"line":1308},38,[448,1310,1311],{"class":1085},"        set ",[448,1313,1314],{"class":510},"$",[448,1316,1317],{"class":802},"upstream_app filebrowser-quantum",[448,1319,1095],{"class":510},[448,1321,1323,1325,1327,1330,1333],{"class":450,"line":1322},39,[448,1324,1311],{"class":1085},[448,1326,1314],{"class":510},[448,1328,1329],{"class":802},"upstream_port ",[448,1331,1332],{"class":1089},"80",[448,1334,1095],{"class":510},[448,1336,1338,1340,1342,1345],{"class":450,"line":1337},40,[448,1339,1311],{"class":1085},[448,1341,1314],{"class":510},[448,1343,1344],{"class":802},"upstream_proto http",[448,1346,1095],{"class":510},[448,1348,1350,1353,1355,1358,1360,1363,1365,1368],{"class":450,"line":1349},41,[448,1351,1352],{"class":1085},"        proxy_pass ",[448,1354,1314],{"class":510},[448,1356,1357],{"class":802},"upstream_proto:\u002F\u002F",[448,1359,1314],{"class":510},[448,1361,1362],{"class":802},"upstream_app:",[448,1364,1314],{"class":510},[448,1366,1367],{"class":802},"upstream_port",[448,1369,1095],{"class":510},[448,1371,1373],{"class":450,"line":1372},42,[448,1374,1375],{"class":802},"    }\n",[448,1377,1379],{"class":450,"line":1378},43,[448,1380,1381],{"class":802},"}\n",[391,1383,596,1384,601,1386,605,1388,609],{},[598,1385],{"value":600},[598,1387],{"value":604},[598,1389],{"value":608},[430,1391,821],{"id":1392},"done-1",[391,1394,1395],{},"That's it! File Browser Quantum is now exposed.",[417,1397,1399],{"id":1398},"protecting-file-browser-quantum-with-tinyauth","Protecting File Browser Quantum with TinyAuth",[391,1401,1402,1403,1405,1406,1408,1409,520],{},"Add ",[394,1404,137],{"href":839},"'s forward-auth check directly to ",[405,1407,1039],{},", the same way as ",[394,1410,1412],{"href":1411},"\u002Fserveex\u002Fsecurity\u002Ftinyauth#protecting-an-app-via-reverse-proxy","the TinyAuth guide",[438,1414,1417],{"className":1059,"code":1415,"filename":1039,"highlights":1416,"language":1061,"meta":444,"style":444},"## Version 2023\u002F12\u002F19\n\nserver {\n    listen 443 ssl;\n    listen [::]:443 ssl;\n\n    server_name fbq.*;\n\n    include \u002Fconfig\u002Fnginx\u002Fssl.conf;\n\n    client_max_body_size 0;\n\n    # enable for ldap auth (requires ldap-location.conf in the location block)\n    #include \u002Fconfig\u002Fnginx\u002Fldap-server.conf;\n\n    # enable for Authelia (requires authelia-location.conf in the location block)\n    #include \u002Fconfig\u002Fnginx\u002Fauthelia-server.conf;\n\n    # enable for Authentik (requires authentik-location.conf in the location block)\n    #include \u002Fconfig\u002Fnginx\u002Fauthentik-server.conf;\n\n    location \u002Ftinyauth {\n        internal;\n        proxy_pass http:\u002F\u002Ftinyauth:3000\u002Fapi\u002Fauth\u002Fnginx;\n        proxy_pass_request_body off;\n        proxy_set_header Content-Length \"\";\n        proxy_set_header X-Forwarded-Proto $scheme;\n        proxy_set_header X-Forwarded-Host $http_host;\n        proxy_set_header X-Forwarded-Uri $request_uri;\n    }\n\n    location @tinyauth_login {\n        return 302 https:\u002F\u002Ftinyauth.mydomain.com\u002Flogin?redirect_uri=$scheme:\u002F\u002F$http_host$request_uri;\n    }\n\n    location \u002F {\n        auth_request \u002Ftinyauth;\n        error_page 401 = @tinyauth_login;\n\n        # enable the next two lines for http auth\n        #auth_basic \"Restricted\";\n        #auth_basic_user_file \u002Fconfig\u002Fnginx\u002F.htpasswd;\n\n        # enable for ldap auth (requires ldap-server.conf in the server block)\n        #include \u002Fconfig\u002Fnginx\u002Fldap-location.conf;\n\n        # enable for Authelia (requires authelia-server.conf in the server block)\n        #include \u002Fconfig\u002Fnginx\u002Fauthelia-location.conf;\n\n        # enable for Authentik (requires authentik-server.conf in the server block)\n        #include \u002Fconfig\u002Fnginx\u002Fauthentik-location.conf;\n\n        include \u002Fconfig\u002Fnginx\u002Fproxy.conf;\n        include \u002Fconfig\u002Fnginx\u002Fresolver.conf;\n        set $upstream_app filebrowser-quantum;\n        set $upstream_port 80;\n        set $upstream_proto http;\n        proxy_pass $upstream_proto:\u002F\u002F$upstream_app:$upstream_port;\n    }\n}\n",[1202,1213,1219,1225,1231,1236,1242,1248,1253,1259,1265,1270,1276,1298,1308],[405,1418,1419,1423,1427,1433,1443,1451,1455,1463,1467,1475,1479,1487,1491,1495,1499,1503,1507,1511,1515,1519,1523,1527,1538,1546,1556,1568,1582,1597,1612,1627,1632,1637,1647,1674,1679,1683,1691,1702,1716,1720,1724,1728,1732,1736,1741,1746,1751,1756,1761,1766,1771,1776,1781,1790,1799,1810,1823,1834,1853,1858],{"__ignoreMap":444},[448,1420,1421],{"class":450,"line":451},[448,1422,1068],{"class":776},[448,1424,1425],{"class":450,"line":514},[448,1426,790],{"emptyLinePlaceholder":789},[448,1428,1429,1431],{"class":450,"line":526},[448,1430,507],{"class":1077},[448,1432,1080],{"class":802},[448,1434,1435,1437,1439,1441],{"class":450,"line":534},[448,1436,1086],{"class":1085},[448,1438,878],{"class":1089},[448,1440,1092],{"class":802},[448,1442,1095],{"class":510},[448,1444,1445,1447,1449],{"class":450,"line":548},[448,1446,1086],{"class":1085},[448,1448,1102],{"class":802},[448,1450,1095],{"class":510},[448,1452,1453],{"class":450,"line":556},[448,1454,790],{"emptyLinePlaceholder":789},[448,1456,1457,1459,1461],{"class":450,"line":568},[448,1458,1113],{"class":1085},[448,1460,1116],{"class":802},[448,1462,1095],{"class":510},[448,1464,1465],{"class":450,"line":580},[448,1466,790],{"emptyLinePlaceholder":789},[448,1468,1469,1471,1473],{"class":450,"line":587},[448,1470,1127],{"class":1085},[448,1472,1130],{"class":802},[448,1474,1095],{"class":510},[448,1476,1477],{"class":450,"line":704},[448,1478,790],{"emptyLinePlaceholder":789},[448,1480,1481,1483,1485],{"class":450,"line":712},[448,1482,1141],{"class":1085},[448,1484,1144],{"class":1089},[448,1486,1095],{"class":510},[448,1488,1489],{"class":450,"line":720},[448,1490,790],{"emptyLinePlaceholder":789},[448,1492,1493],{"class":450,"line":990},[448,1494,1155],{"class":776},[448,1496,1497],{"class":450,"line":1004},[448,1498,1160],{"class":776},[448,1500,1501],{"class":450,"line":1163},[448,1502,790],{"emptyLinePlaceholder":789},[448,1504,1505],{"class":450,"line":1168},[448,1506,1171],{"class":776},[448,1508,1509],{"class":450,"line":1174},[448,1510,1177],{"class":776},[448,1512,1513],{"class":450,"line":1180},[448,1514,790],{"emptyLinePlaceholder":789},[448,1516,1517],{"class":450,"line":1185},[448,1518,1188],{"class":776},[448,1520,1521],{"class":450,"line":1191},[448,1522,1194],{"class":776},[448,1524,1525],{"class":450,"line":1197},[448,1526,790],{"emptyLinePlaceholder":789},[448,1528,1531,1533,1536],{"class":1529,"line":1202},[450,1530],"highlight",[448,1532,1205],{"class":1077},[448,1534,1535],{"class":454}," \u002Ftinyauth ",[448,1537,1210],{"class":802},[448,1539,1541,1544],{"class":1540,"line":1213},[450,1530],[448,1542,1543],{"class":1085},"        internal",[448,1545,1095],{"class":510},[448,1547,1549,1551,1554],{"class":1548,"line":1219},[450,1530],[448,1550,1352],{"class":1085},[448,1552,1553],{"class":802},"http:\u002F\u002Ftinyauth:3000\u002Fapi\u002Fauth\u002Fnginx",[448,1555,1095],{"class":510},[448,1557,1559,1562,1566],{"class":1558,"line":1225},[450,1530],[448,1560,1561],{"class":1085},"        proxy_pass_request_body ",[448,1563,1565],{"class":1564},"soUAX","off",[448,1567,1095],{"class":510},[448,1569,1571,1574,1577,1580],{"class":1570,"line":1231},[450,1530],[448,1572,1573],{"class":1085},"        proxy_set_header ",[448,1575,1576],{"class":802},"Content-Length ",[448,1578,1579],{"class":458},"\"\"",[448,1581,1095],{"class":510},[448,1583,1585,1587,1590,1592,1595],{"class":1584,"line":1236},[450,1530],[448,1586,1573],{"class":1085},[448,1588,1589],{"class":802},"X-Forwarded-Proto ",[448,1591,1314],{"class":510},[448,1593,1594],{"class":802},"scheme",[448,1596,1095],{"class":510},[448,1598,1600,1602,1605,1607,1610],{"class":1599,"line":1242},[450,1530],[448,1601,1573],{"class":1085},[448,1603,1604],{"class":802},"X-Forwarded-Host ",[448,1606,1314],{"class":510},[448,1608,1609],{"class":802},"http_host",[448,1611,1095],{"class":510},[448,1613,1615,1617,1620,1622,1625],{"class":1614,"line":1248},[450,1530],[448,1616,1573],{"class":1085},[448,1618,1619],{"class":802},"X-Forwarded-Uri ",[448,1621,1314],{"class":510},[448,1623,1624],{"class":802},"request_uri",[448,1626,1095],{"class":510},[448,1628,1630],{"class":1629,"line":1253},[450,1530],[448,1631,1375],{"class":802},[448,1633,1635],{"class":1634,"line":1259},[450,1530],[448,1636,790],{"emptyLinePlaceholder":789},[448,1638,1640,1642,1645],{"class":1639,"line":1265},[450,1530],[448,1641,1205],{"class":1077},[448,1643,1644],{"class":454}," @tinyauth_login ",[448,1646,1210],{"class":802},[448,1648,1650,1654,1657,1660,1662,1665,1667,1669,1671],{"class":1649,"line":1270},[450,1530],[448,1651,1653],{"class":1652},"sJLGa","        return",[448,1655,1656],{"class":1089}," 302",[448,1658,1659],{"class":802}," https:\u002F\u002Ftinyauth.mydomain.com\u002Flogin?redirect_uri=",[448,1661,1314],{"class":510},[448,1663,1664],{"class":802},"scheme:\u002F\u002F",[448,1666,1314],{"class":510},[448,1668,1609],{"class":802},[448,1670,1314],{"class":510},[448,1672,1673],{"class":802},"request_uri;\n",[448,1675,1677],{"class":1676,"line":1276},[450,1530],[448,1678,1375],{"class":802},[448,1680,1681],{"class":450,"line":1282},[448,1682,790],{"emptyLinePlaceholder":789},[448,1684,1685,1687,1689],{"class":450,"line":1287},[448,1686,1205],{"class":1077},[448,1688,814],{"class":454},[448,1690,1210],{"class":802},[448,1692,1694,1697,1700],{"class":1693,"line":1298},[450,1530],[448,1695,1696],{"class":1085},"        auth_request ",[448,1698,1699],{"class":802},"\u002Ftinyauth",[448,1701,1095],{"class":510},[448,1703,1705,1708,1711,1714],{"class":1704,"line":1308},[450,1530],[448,1706,1707],{"class":1085},"        error_page ",[448,1709,1710],{"class":1089},"401",[448,1712,1713],{"class":802}," = @tinyauth_login",[448,1715,1095],{"class":510},[448,1717,1718],{"class":450,"line":1322},[448,1719,790],{"emptyLinePlaceholder":789},[448,1721,1722],{"class":450,"line":1337},[448,1723,1216],{"class":776},[448,1725,1726],{"class":450,"line":1349},[448,1727,1222],{"class":776},[448,1729,1730],{"class":450,"line":1372},[448,1731,1228],{"class":776},[448,1733,1734],{"class":450,"line":1378},[448,1735,790],{"emptyLinePlaceholder":789},[448,1737,1739],{"class":450,"line":1738},44,[448,1740,1239],{"class":776},[448,1742,1744],{"class":450,"line":1743},45,[448,1745,1245],{"class":776},[448,1747,1749],{"class":450,"line":1748},46,[448,1750,790],{"emptyLinePlaceholder":789},[448,1752,1754],{"class":450,"line":1753},47,[448,1755,1256],{"class":776},[448,1757,1759],{"class":450,"line":1758},48,[448,1760,1262],{"class":776},[448,1762,1764],{"class":450,"line":1763},49,[448,1765,790],{"emptyLinePlaceholder":789},[448,1767,1769],{"class":450,"line":1768},50,[448,1770,1273],{"class":776},[448,1772,1774],{"class":450,"line":1773},51,[448,1775,1279],{"class":776},[448,1777,1779],{"class":450,"line":1778},52,[448,1780,790],{"emptyLinePlaceholder":789},[448,1782,1784,1786,1788],{"class":450,"line":1783},53,[448,1785,1290],{"class":1085},[448,1787,1293],{"class":802},[448,1789,1095],{"class":510},[448,1791,1793,1795,1797],{"class":450,"line":1792},54,[448,1794,1290],{"class":1085},[448,1796,1303],{"class":802},[448,1798,1095],{"class":510},[448,1800,1802,1804,1806,1808],{"class":450,"line":1801},55,[448,1803,1311],{"class":1085},[448,1805,1314],{"class":510},[448,1807,1317],{"class":802},[448,1809,1095],{"class":510},[448,1811,1813,1815,1817,1819,1821],{"class":450,"line":1812},56,[448,1814,1311],{"class":1085},[448,1816,1314],{"class":510},[448,1818,1329],{"class":802},[448,1820,1332],{"class":1089},[448,1822,1095],{"class":510},[448,1824,1826,1828,1830,1832],{"class":450,"line":1825},57,[448,1827,1311],{"class":1085},[448,1829,1314],{"class":510},[448,1831,1344],{"class":802},[448,1833,1095],{"class":510},[448,1835,1837,1839,1841,1843,1845,1847,1849,1851],{"class":450,"line":1836},58,[448,1838,1352],{"class":1085},[448,1840,1314],{"class":510},[448,1842,1357],{"class":802},[448,1844,1314],{"class":510},[448,1846,1362],{"class":802},[448,1848,1314],{"class":510},[448,1850,1367],{"class":802},[448,1852,1095],{"class":510},[448,1854,1856],{"class":450,"line":1855},59,[448,1857,1375],{"class":802},[448,1859,1861],{"class":450,"line":1860},60,[448,1862,1381],{"class":802},[727,1864,1866,1867,1870,1871,1874,1875,1878],{"to":1865},"\u002Fserveex\u002Fsecurity\u002Ftinyauth#exposing-tinyauth-with-swag","The ",[405,1868,1869],{},"location \u002Ftinyauth"," block runs inside SWAG's own container, so SWAG needs to be on TinyAuth's Docker network to reach it by name (",[405,1872,1873],{},"tinyauth"," here). This should already be set up from ",[751,1876,1877],{},"exposing TinyAuth itself",". If you run into an error, double-check SWAG's compose file still has that network attached.",[745,1880,749,1881,1883,1884,1887,1888,1890,1891,739,1902,1911,1912,887],{"icon":444},[751,1882,753],{}," You can protect this app with ",[394,1885,255],{"href":1886},"\u002Fserveex\u002Fadvanced\u002Fauthentik"," instead of TinyAuth by opening ",[405,1889,1039],{}," and uncommenting ",[405,1892,1893,1896,1899],{"className":1059,"language":1061,"style":444},[448,1894,1895],{"class":1085},"include ",[448,1897,1898],{"class":802},"\u002Fconfig\u002Fnginx\u002Fauthentik-server.conf",[448,1900,1901],{"class":510},";",[405,1903,1904,1906,1909],{"className":1059,"language":1061,"style":444},[448,1905,1895],{"class":1085},[448,1907,1908],{"class":802},"\u002Fconfig\u002Fnginx\u002Fauthentik-location.conf",[448,1910,1901],{"class":510},". Don't forget to ",[394,1913,1915],{"href":1914},"\u002Fserveex\u002Fadvanced\u002Fauthentik#protecting-an-app-via-reverse-proxy","create an application and provider in Authentik",[1917,1918,1919],"style",{},"html pre.shiki code .sEgDM, html code.shiki .sEgDM{--shiki-light:#B392F0;--shiki-default:#FFCB6B;--shiki-dark:#B392F0}html pre.shiki code .s11XM, html code.shiki .s11XM{--shiki-light:#9ECBFF;--shiki-default:#C3E88D;--shiki-dark:#9ECBFF}html pre.shiki code .sJWha, html code.shiki .sJWha{--shiki-light:#79B8FF;--shiki-default:#C3E88D;--shiki-dark:#79B8FF}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);}html pre.shiki code .sRuoG, html code.shiki .sRuoG{--shiki-light:#85E89D;--shiki-default:#F07178;--shiki-dark:#85E89D}html pre.shiki code .s8jd1, html code.shiki .s8jd1{--shiki-light:#E1E4E8;--shiki-default:#89DDFF;--shiki-dark:#E1E4E8}html pre.shiki code .s08Ry, html code.shiki .s08Ry{--shiki-light:#79B8FF;--shiki-default:#FF9CAC;--shiki-dark:#79B8FF}html pre.shiki code .sDvJj, html code.shiki .sDvJj{--shiki-light:#6A737D;--shiki-light-font-style:inherit;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#6A737D;--shiki-dark-font-style:inherit}html pre.shiki code .slcoZ, html code.shiki .slcoZ{--shiki-light:#E1E4E8;--shiki-default:#EEFFFF;--shiki-dark:#E1E4E8}html pre.shiki code .sAoO4, html code.shiki .sAoO4{--shiki-light:#F97583;--shiki-default:#C792EA;--shiki-dark:#F97583}html pre.shiki code .sJPTy, html code.shiki .sJPTy{--shiki-light:#F97583;--shiki-default:#89DDFF;--shiki-dark:#F97583}html pre.shiki code .swwWl, html code.shiki .swwWl{--shiki-light:#79B8FF;--shiki-default:#F78C6C;--shiki-dark:#79B8FF}html pre.shiki code .soUAX, html code.shiki .soUAX{--shiki-light:#79B8FF;--shiki-default:#89DDFF;--shiki-dark:#79B8FF}html pre.shiki code .sJLGa, html code.shiki .sJLGa{--shiki-light:#F97583;--shiki-light-font-style:inherit;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#F97583;--shiki-dark-font-style:inherit}",{"title":444,"searchDepth":514,"depth":514,"links":1921},[1922,1927,1932],{"id":419,"depth":514,"text":420,"children":1923},[1924,1925,1926],{"id":432,"depth":526,"text":433},{"id":612,"depth":526,"text":613},{"id":820,"depth":526,"text":821},{"id":831,"depth":514,"text":832,"children":1928},[1929,1930,1931],{"id":892,"depth":526,"text":893},{"id":1032,"depth":526,"text":1033},{"id":1392,"depth":526,"text":821},{"id":1398,"depth":514,"text":1399},[1934],"Djeex","Install File Browser Quantum, a modernized fork of File Browser, to browse and manage your server files from a fast web interface.","md",null,{},{"title":209,"description":1935},"jUIab2kiSzS0pj_GPRx_vepfPptmTWaHcpZdTKSGkb8",[1942,1944],{"title":199,"path":200,"stem":201,"description":1943,"children":-1},"Install Nextcloud to self-host your files, photos, and calendar, a privacy-friendly alternative to Google Drive, OneDrive, and iCloud.",{"title":213,"path":214,"stem":215,"description":1945,"children":-1},"Install Pingvin Share, a self-hosted file sharing platform to send files securely without relying on WeTransfer or Google Drive.",1788645847806]