[{"data":1,"prerenderedAt":2054},["ShallowReactive",2],{"navigation_docs_en":3,"-en-recycled-alternatives-plex-":377,"-en-recycled-alternatives-plex--surround":2049},[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":362,"body":379,"contributors":2041,"description":2043,"extension":2044,"hideCopyPage":15,"hideHeader":15,"hideToc":15,"links":2045,"meta":2046,"navigation":739,"path":363,"seo":2047,"stem":364,"__hash__":2048},"docs_en\u002Fen\u002F6.recycled\u002F3.alternatives\u002F1.plex.md",{"type":380,"value":381,"toc":2027},"minimark",[382,390,399,409,417,424,433,450,457,462,466,994,998,1005,1016,1021,1040,1050,1087,1090,1099,1107,1111,1114,1117,1151,2008,2015,2020,2023],[383,384],"ellipsis",{"blur":385,"left":386,"top":387,"width":388,"z-index":389},"140px","0px","10rem","40rem","60",[391,392,394,395,398],"note",{"to":393},"\u002Fserveex\u002Fmedia\u002Fjellyfin","This is an alternative to ",[396,397,177],"strong",{},", kept here for reference. Plex isn't fully self-hosted: local playback still goes through Plex's own relay and requires a Plex account, and several features sit behind a Plex Pass paywall.",[400,401,402,408],"p",{},[403,404,362],"a",{"href":405,"rel":406},"https:\u002F\u002Fwww.plex.tv\u002Ffr\u002F",[407],"nofollow"," is a self-hosted video streaming platform for managing your movie or TV show library and playing them locally or remotely. Plex has apps for TV, Android, iOS, Windows, and macOS, allowing you to stream your library just like Netflix.",[400,410,411,412,416],{},"With ",[413,414,415],"em",{},"Plex Pass",", you can also organize and play your music content similar to Spotify, the difference being that it’s your content, hosted and streamed from your server.",[400,418,419],{},[420,421],"img",{"alt":422,"src":423},"picture","\u002Fimg\u002Fserveex\u002Fplex.png",[400,425,426,427,432],{},"We'll also install ",[403,428,431],{"href":429,"rel":430},"https:\u002F\u002Fdocs.linuxserver.io\u002Fimages\u002Fdocker-tautulli\u002F",[407],"Tautulli",", a tool that provides detailed stats about Plex. As always, we'll use linuxserver.io images where possible.",[434,435,436,444],"ul",{},[437,438,439],"li",{},[403,440,443],{"href":441,"rel":442},"https:\u002F\u002Fdocs.linuxserver.io\u002Fimages\u002Fdocker-plex",[407],"More info on the Plex container",[437,445,446],{},[403,447,449],{"href":429,"rel":448},[407],"More info on the Tautulli container",[391,451,452,453,456],{},"You’ll need to create a ",[413,454,455],{},"Plex.tv"," account. You don’t need to expose your Plex service; it will be accessible through the platform. Your Plex server will be manageable directly from your account.",[458,459,461],"h2",{"id":460},"install-plex","Install Plex",[463,464],"file-tree",{":tree":465},"{\"\u002F\":[{\"srv\":[{\"docker\":[{\"plex\":[\"compose.yml\",\".env\",\"config\u002F\",\"transcode\u002F\"]},{\"tautulli\":[\"config\u002F\"]}]}]},{\"media\":[\"tvseries\u002F\",\"movies\u002F\",\"library\u002F\"]}]}",[467,468,470,475,495,528,532,547,837,911,915,918,931,938,967,970,982,990],"steps",{"level":469},"3",[471,472,474],"h3",{"id":473},"create-the-media-folders","Create the media folders",[400,476,477,478,482,483,486,487,490,491,494],{},"Create the ",[479,480,481],"code",{},"movies",", ",[479,484,485],{},"tvseries",", and ",[479,488,489],{},"library"," folders in ",[479,492,493],{},"\u002Fmedia",":",[496,497,503],"pre",{"className":498,"code":499,"filename":500,"language":501,"meta":502,"style":502},"language-bash shiki shiki-themes github-dark material-theme github-dark","mkdir -p \u002Fmedia\u002Fmovies \u002Fmedia\u002Flibrary \u002Fmedia\u002Ftvseries\n","Terminal","bash","",[479,504,505],{"__ignoreMap":502},[506,507,510,514,518,522,525],"span",{"class":508,"line":509},"line",1,[506,511,513],{"class":512},"sEgDM","mkdir",[506,515,517],{"class":516},"sJWha"," -p",[506,519,521],{"class":520},"s11XM"," \u002Fmedia\u002Fmovies",[506,523,524],{"class":520}," \u002Fmedia\u002Flibrary",[506,526,527],{"class":520}," \u002Fmedia\u002Ftvseries\n",[471,529,531],{"id":530},"deploy-the-stack","Deploy the stack",[400,533,534,535,538,539,542,543,546],{},"Open Dockge in your browser and click ",[479,536,537],{},"compose",".",[540,541],"br",{},"\nName the stack ",[479,544,545],{},"plex"," and add the following config:",[496,548,553],{"className":549,"code":550,"filename":551,"language":552,"meta":502,"style":502},"language-yaml shiki shiki-themes github-dark material-theme github-dark","---\nservices:\n  linuxserver_plex:\n    image: ghcr.io\u002Flinuxserver\u002Fplex:amd64-latest\n    container_name: plex\n    network_mode: host\n    environment:\n      - PUID=${PUID}\n      - PGID=${GUID}\n      - TZ=Europe\u002FParis\n      - VERSION=docker\n    volumes:\n      - \u002Fsrv\u002Fdocker\u002Fplex\u002Fconfig:\u002Fconfig\n      - \u002Fsrv\u002Fdocker\u002Fplex\u002Ftranscode:\u002Ftranscode\n      - \u002Fmedia:\u002Fmedia\n    restart: unless-stopped\n    mem_limit: 4096m\n    mem_reservation: 2048m\n    devices:\n      - \u002Fdev\u002Fdri:\u002Fdev\u002Fdri\n\n  tautulli:\n    image: lscr.io\u002Flinuxserver\u002Ftautulli:latest\n    container_name: tautulli\n    environment:\n      - PUID=${PUID}\n      - PGID=${GUID}\n      - TZ=Europe\u002FParis\n    volumes:\n      - \u002Fsrv\u002Fdocker\u002Ftautulli\u002Fconfig:\u002Fconfig\n    ports:\n      - 8181:8181\n    restart: unless-stopped\n","compose.yaml","yaml",[479,554,555,560,571,579,590,601,612,620,629,637,645,653,661,669,677,685,696,707,718,726,734,741,749,759,769,776,783,790,797,804,812,820,828],{"__ignoreMap":502},[506,556,557],{"class":508,"line":509},[506,558,559],{"class":512},"---\n",[506,561,563,567],{"class":508,"line":562},2,[506,564,566],{"class":565},"sRuoG","services",[506,568,570],{"class":569},"s8jd1",":\n",[506,572,574,577],{"class":508,"line":573},3,[506,575,576],{"class":565},"  linuxserver_plex",[506,578,570],{"class":569},[506,580,582,585,587],{"class":508,"line":581},4,[506,583,584],{"class":565},"    image",[506,586,494],{"class":569},[506,588,589],{"class":520}," ghcr.io\u002Flinuxserver\u002Fplex:amd64-latest\n",[506,591,593,596,598],{"class":508,"line":592},5,[506,594,595],{"class":565},"    container_name",[506,597,494],{"class":569},[506,599,600],{"class":520}," plex\n",[506,602,604,607,609],{"class":508,"line":603},6,[506,605,606],{"class":565},"    network_mode",[506,608,494],{"class":569},[506,610,611],{"class":520}," host\n",[506,613,615,618],{"class":508,"line":614},7,[506,616,617],{"class":565},"    environment",[506,619,570],{"class":569},[506,621,623,626],{"class":508,"line":622},8,[506,624,625],{"class":569},"      -",[506,627,628],{"class":520}," PUID=${PUID}\n",[506,630,632,634],{"class":508,"line":631},9,[506,633,625],{"class":569},[506,635,636],{"class":520}," PGID=${GUID}\n",[506,638,640,642],{"class":508,"line":639},10,[506,641,625],{"class":569},[506,643,644],{"class":520}," TZ=Europe\u002FParis\n",[506,646,648,650],{"class":508,"line":647},11,[506,649,625],{"class":569},[506,651,652],{"class":520}," VERSION=docker\n",[506,654,656,659],{"class":508,"line":655},12,[506,657,658],{"class":565},"    volumes",[506,660,570],{"class":569},[506,662,664,666],{"class":508,"line":663},13,[506,665,625],{"class":569},[506,667,668],{"class":520}," \u002Fsrv\u002Fdocker\u002Fplex\u002Fconfig:\u002Fconfig\n",[506,670,672,674],{"class":508,"line":671},14,[506,673,625],{"class":569},[506,675,676],{"class":520}," \u002Fsrv\u002Fdocker\u002Fplex\u002Ftranscode:\u002Ftranscode\n",[506,678,680,682],{"class":508,"line":679},15,[506,681,625],{"class":569},[506,683,684],{"class":520}," \u002Fmedia:\u002Fmedia\n",[506,686,688,691,693],{"class":508,"line":687},16,[506,689,690],{"class":565},"    restart",[506,692,494],{"class":569},[506,694,695],{"class":520}," unless-stopped\n",[506,697,699,702,704],{"class":508,"line":698},17,[506,700,701],{"class":565},"    mem_limit",[506,703,494],{"class":569},[506,705,706],{"class":520}," 4096m\n",[506,708,710,713,715],{"class":508,"line":709},18,[506,711,712],{"class":565},"    mem_reservation",[506,714,494],{"class":569},[506,716,717],{"class":520}," 2048m\n",[506,719,721,724],{"class":508,"line":720},19,[506,722,723],{"class":565},"    devices",[506,725,570],{"class":569},[506,727,729,731],{"class":508,"line":728},20,[506,730,625],{"class":569},[506,732,733],{"class":520}," \u002Fdev\u002Fdri:\u002Fdev\u002Fdri\n",[506,735,737],{"class":508,"line":736},21,[506,738,740],{"emptyLinePlaceholder":739},true,"\n",[506,742,744,747],{"class":508,"line":743},22,[506,745,746],{"class":565},"  tautulli",[506,748,570],{"class":569},[506,750,752,754,756],{"class":508,"line":751},23,[506,753,584],{"class":565},[506,755,494],{"class":569},[506,757,758],{"class":520}," lscr.io\u002Flinuxserver\u002Ftautulli:latest\n",[506,760,762,764,766],{"class":508,"line":761},24,[506,763,595],{"class":565},[506,765,494],{"class":569},[506,767,768],{"class":520}," tautulli\n",[506,770,772,774],{"class":508,"line":771},25,[506,773,617],{"class":565},[506,775,570],{"class":569},[506,777,779,781],{"class":508,"line":778},26,[506,780,625],{"class":569},[506,782,628],{"class":520},[506,784,786,788],{"class":508,"line":785},27,[506,787,625],{"class":569},[506,789,636],{"class":520},[506,791,793,795],{"class":508,"line":792},28,[506,794,625],{"class":569},[506,796,644],{"class":520},[506,798,800,802],{"class":508,"line":799},29,[506,801,658],{"class":565},[506,803,570],{"class":569},[506,805,807,809],{"class":508,"line":806},30,[506,808,625],{"class":569},[506,810,811],{"class":520}," \u002Fsrv\u002Fdocker\u002Ftautulli\u002Fconfig:\u002Fconfig\n",[506,813,815,818],{"class":508,"line":814},31,[506,816,817],{"class":565},"    ports",[506,819,570],{"class":569},[506,821,823,825],{"class":508,"line":822},32,[506,824,625],{"class":569},[506,826,827],{"class":520}," 8181:8181\n",[506,829,831,833,835],{"class":508,"line":830},33,[506,832,690],{"class":565},[506,834,494],{"class":569},[506,836,695],{"class":520},[838,839,840,843],"tip",{"icon":502},[400,841,842],{},"✨ Add the Watchtower label to each container to automate updates:",[496,844,846],{"className":549,"code":845,"filename":551,"language":552,"meta":502,"style":502},"---\nservices:\n  plex:\n    #...\n    labels:\n      - com.centurylinklabs.watchtower.enable=true\n\n  tautulli:\n    #...\n    labels:\n      - com.centurylinklabs.watchtower.enable=true\n",[479,847,848,852,858,865,871,878,885,889,895,899,905],{"__ignoreMap":502},[506,849,850],{"class":508,"line":509},[506,851,559],{"class":512},[506,853,854,856],{"class":508,"line":562},[506,855,566],{"class":565},[506,857,570],{"class":569},[506,859,860,863],{"class":508,"line":573},[506,861,862],{"class":565},"  plex",[506,864,570],{"class":569},[506,866,867],{"class":508,"line":581},[506,868,870],{"class":869},"sDvJj","    #...\n",[506,872,873,876],{"class":508,"line":592},[506,874,875],{"class":565},"    labels",[506,877,570],{"class":569},[506,879,880,882],{"class":508,"line":603},[506,881,625],{"class":569},[506,883,884],{"class":520}," com.centurylinklabs.watchtower.enable=true\n",[506,886,887],{"class":508,"line":614},[506,888,740],{"emptyLinePlaceholder":739},[506,890,891,893],{"class":508,"line":622},[506,892,746],{"class":565},[506,894,570],{"class":569},[506,896,897],{"class":508,"line":631},[506,898,870],{"class":869},[506,900,901,903],{"class":508,"line":639},[506,902,875],{"class":565},[506,904,570],{"class":569},[506,906,907,909],{"class":508,"line":647},[506,908,625],{"class":569},[506,910,884],{"class":520},[471,912,914],{"id":913},"set-your-environment-variables","Set your environment variables",[400,916,917],{},"Find your PUID and GUID by running:",[496,919,921],{"className":498,"code":920,"filename":500,"language":501,"meta":502,"style":502},"id username\n",[479,922,923],{"__ignoreMap":502},[506,924,925,928],{"class":508,"line":509},[506,926,927],{"class":512},"id",[506,929,930],{"class":520}," username\n",[400,932,933,934,937],{},"Fill in your ",[479,935,936],{},".env"," file with the retrieved values, for example:",[496,939,943],{"className":940,"code":941,"filename":936,"language":942,"meta":502,"style":502},"language-properties shiki shiki-themes github-dark material-theme github-dark","PUID=1000\nGUID=1000\n","properties",[479,944,945,958],{"__ignoreMap":502},[506,946,947,951,954],{"class":508,"line":509},[506,948,950],{"class":949},"szyEh","PUID",[506,952,953],{"class":569},"=",[506,955,957],{"class":956},"slcoZ","1000\n",[506,959,960,963,965],{"class":508,"line":562},[506,961,962],{"class":949},"GUID",[506,964,953],{"class":569},[506,966,957],{"class":956},[400,968,969],{},"Deploy the stack.",[400,971,972,973,538,976,978,979,538],{},"The local interface is available at ",[479,974,975],{},"http:\u002F\u002Fyourserverip:32400\u002Fweb\u002Findex.html",[540,977],{},"\nTautulli is accessible at ",[479,980,981],{},"http:\u002F\u002Fyourserverip:8181",[983,984,986,987,538],"warning",{"to":985},"https:\u002F\u002Fsupport.plex.tv\u002Farticles\u002F200288586-installation\u002F#toc-2","You must be on your local network during Plex's initial setup. Otherwise, the URL will redirect to your Plex account without detecting your server. A VPN won't help. If you have no choice, ",[396,988,989],{},"you can handle the setup remotely via SSH tunnel",[471,991,993],{"id":992},"done","Done !",[458,995,997],{"id":996},"configure-plex","Configure Plex",[400,999,1000,1001,1004],{},"Plex offers a range of free movies\u002Fshows. After creating your account, I recommend disabling everything in the ",[413,1002,1003],{},"Online Services"," section to keep your library clean.",[400,1006,1007,1008,1011,1012,1015],{},"Then go to the ",[413,1009,1010],{},"Remote Access"," section and manually select a port (we’ll use ",[479,1013,1014],{},"1234","). It's best not to use the default port.",[400,1017,1018],{},[420,1019],{"alt":422,"src":1020},"\u002Fimg\u002Fserveex\u002Fplex-port.png",[434,1022,1023,1037],{},[437,1024,1025,1026,1028,1029,1032,1033,538],{},"On your router, forward TCP port ",[479,1027,1014],{}," to port ",[479,1030,1031],{},"32400"," for your server’s IP using ",[403,1034,1036],{"href":1035},"\u002Fgeneral\u002Fnetworking\u002Fnat","NAT rules",[437,1038,1039],{},"Once done, return to Plex to verify that remote access is functional.",[1041,1042,1043,1046,1047,1049],"caution",{},[396,1044,1045],{},"If it fails:"," check your firewall rules and allow port ",[479,1048,1031],{}," on your server.",[434,1051,1052,1063,1073],{},[437,1053,1054,1055,1058,1059,1062],{},"If you have PlexPass and a GPU or iGPU, enable ",[413,1056,1057],{},"hardware acceleration"," in the ",[413,1060,1061],{},"Transcoder"," section.",[437,1064,1065,1066,1069,1070,538],{},"In ",[413,1067,1068],{},"Settings > Library",", enable ",[413,1071,1072],{},"Update my library automatically",[437,1074,1065,1075,1078,1079,1082,1083,1086],{},[413,1076,1077],{},"Manage > Library",", add or edit libraries and point to ",[479,1080,1081],{},"\u002Fmedia\u002Fmovies"," for movies and ",[479,1084,1085],{},"\u002Fmedia\u002Ftvseries"," for series.",[400,1088,1089],{},"And that’s it! You now have a working Plex server!",[400,1091,1092,1093,1095,1096,1098],{},"Simply add your media to ",[479,1094,1081],{}," and ",[479,1097,1085],{}," on your server. You can then install the Plex app on your devices and watch your favorite content locally or remotely.",[391,1100,1102,1103,1106],{"to":1101},"\u002Fgeneral\u002Fnetworking\u002Fsamba","If your media is stored on a network disk (e.g. NAS or external hard drive over the network), refer to the ",[396,1104,1105],{},"Samba mount guide"," so Plex can access it.",[458,1108,1110],{"id":1109},"expose-tautulli-with-swag","Expose Tautulli with Swag",[400,1112,1113],{},"You don’t need to expose Plex, as it's accessible via your Plex account on plex.tv.",[400,1115,1116],{},"However, you may want to expose Tautulli so you can view stats from a simple URL when you're not home.",[391,1118,1119,1120,1123,1124,1127,1128,1131,1132,1136,1137,1141,1142,1145,1146,1148,1149,538],{},"We assume you have the subdomain ",[479,1121,1122],{},"tautulli.mydomain.com"," with a ",[479,1125,1126],{},"CNAME"," pointing to ",[479,1129,1130],{},"mydomain.com"," in your ",[403,1133,1135],{"href":1134},"\u002Fgeneral\u002Fnetworking\u002Fdns","DNS zone",". And of course, ",[403,1138,1140],{"href":1139},"\u002Fserveex\u002Fsecurity\u002Fcloudflare","unless you use Cloudflare Zero Trust",", your box's port ",[479,1143,1144],{},"443"," must be forwarded to your server's port ",[479,1147,1144],{}," in ",[403,1150,1036],{"href":1035},[467,1152,1153,1157,1160,1277,1280,1290,1294,1305,1316,1344,1347,1971,1989,2005],{"level":469},[471,1154,1156],{"id":1155},"add-tautullis-network-to-swag","Add Tautulli's network to SWAG",[400,1158,1159],{},"Go to Dockge and edit SWAG’s compose file by adding Tautulli’s network:",[496,1161,1163],{"className":549,"code":1162,"filename":551,"language":552,"meta":502,"style":502},"---\nservices:\n  swag:\n     container_name: # ...\n      # ... \n     networks:              # Attach container to custom network \n      # ...           \n      - tautulli            # Name of the declared network\n\nnetworks:                   # Define the custom network\n  # ...\n  tautulli:                 # Declared network name\n    name: tautulli_default  # Actual external network name\n    external: true          # Marks it as externally defined\n",[479,1164,1165,1169,1175,1182,1192,1197,1207,1212,1222,1226,1236,1241,1250,1263],{"__ignoreMap":502},[506,1166,1167],{"class":508,"line":509},[506,1168,559],{"class":512},[506,1170,1171,1173],{"class":508,"line":562},[506,1172,566],{"class":565},[506,1174,570],{"class":569},[506,1176,1177,1180],{"class":508,"line":573},[506,1178,1179],{"class":565},"  swag",[506,1181,570],{"class":569},[506,1183,1184,1187,1189],{"class":508,"line":581},[506,1185,1186],{"class":565},"     container_name",[506,1188,494],{"class":569},[506,1190,1191],{"class":869}," # ...\n",[506,1193,1194],{"class":508,"line":592},[506,1195,1196],{"class":869},"      # ... \n",[506,1198,1199,1202,1204],{"class":508,"line":603},[506,1200,1201],{"class":565},"     networks",[506,1203,494],{"class":569},[506,1205,1206],{"class":869},"              # Attach container to custom network \n",[506,1208,1209],{"class":508,"line":614},[506,1210,1211],{"class":869},"      # ...           \n",[506,1213,1214,1216,1219],{"class":508,"line":622},[506,1215,625],{"class":569},[506,1217,1218],{"class":520}," tautulli",[506,1220,1221],{"class":869},"            # Name of the declared network\n",[506,1223,1224],{"class":508,"line":631},[506,1225,740],{"emptyLinePlaceholder":739},[506,1227,1228,1231,1233],{"class":508,"line":639},[506,1229,1230],{"class":565},"networks",[506,1232,494],{"class":569},[506,1234,1235],{"class":869},"                   # Define the custom network\n",[506,1237,1238],{"class":508,"line":647},[506,1239,1240],{"class":869},"  # ...\n",[506,1242,1243,1245,1247],{"class":508,"line":655},[506,1244,746],{"class":565},[506,1246,494],{"class":569},[506,1248,1249],{"class":869},"                 # Declared network name\n",[506,1251,1252,1255,1257,1260],{"class":508,"line":663},[506,1253,1254],{"class":565},"    name",[506,1256,494],{"class":569},[506,1258,1259],{"class":520}," tautulli_default",[506,1261,1262],{"class":869},"  # Actual external network name\n",[506,1264,1265,1268,1270,1274],{"class":508,"line":671},[506,1266,1267],{"class":565},"    external",[506,1269,494],{"class":569},[506,1271,1273],{"class":1272},"s08Ry"," true",[506,1275,1276],{"class":869},"          # Marks it as externally defined\n",[400,1278,1279],{},"Redeploy the stack and wait for SWAG to be fully operational.",[391,1281,1282,1283,1286,1287,538],{},"Here we assume the Tautulli network name is ",[479,1284,1285],{},"tautulli_default",". You can check the connection by visiting SWAG’s dashboard at ",[479,1288,1289],{},"http:\u002F\u002Fyourserverip:81",[471,1291,1293],{"id":1292},"create-the-subdomainconf-file","Create the subdomain.conf file",[400,1295,1296,1297,1300,1301,1304],{},"Copy and rename the file ",[479,1298,1299],{},"tautulli.subdomain.conf.sample"," to ",[479,1302,1303],{},"tautulli.subdomain.conf",", then edit it:",[838,1306,1308,1309,1312,1313,1315],{"icon":502,"to":1307},"\u002Fserveex\u002Ffiles\u002Ffile-browser-quantum","✨ ",[396,1310,1311],{},"Tip:"," Use ",[396,1314,352],{}," to navigate and edit files instead of using terminal commands.",[496,1317,1319],{"className":498,"code":1318,"filename":500,"language":501,"meta":502,"style":502},"sudo cp \u002Fsrv\u002Fdocker\u002Fswag\u002Fconfig\u002Fnginx\u002Fproxy-confs\u002Ftautulli.subdomain.conf.sample \u002Fsrv\u002Fdocker\u002Fswag\u002Fconfig\u002Fnginx\u002Fproxy-confs\u002Ftautulli.subdomain.conf\nsudo nano \u002Fsrv\u002Fdocker\u002Fswag\u002Fconfig\u002Fnginx\u002Fproxy-confs\u002Ftautulli.subdomain.conf\n",[479,1320,1321,1335],{"__ignoreMap":502},[506,1322,1323,1326,1329,1332],{"class":508,"line":509},[506,1324,1325],{"class":512},"sudo",[506,1327,1328],{"class":520}," cp",[506,1330,1331],{"class":520}," \u002Fsrv\u002Fdocker\u002Fswag\u002Fconfig\u002Fnginx\u002Fproxy-confs\u002Ftautulli.subdomain.conf.sample",[506,1333,1334],{"class":520}," \u002Fsrv\u002Fdocker\u002Fswag\u002Fconfig\u002Fnginx\u002Fproxy-confs\u002Ftautulli.subdomain.conf\n",[506,1336,1337,1339,1342],{"class":508,"line":562},[506,1338,1325],{"class":512},[506,1340,1341],{"class":520}," nano",[506,1343,1334],{"class":520},[400,1345,1346],{},"Ensure the configuration matches the following, and edit it if needed:",[496,1348,1352],{"className":1349,"code":1350,"filename":1303,"language":1351,"meta":502,"style":502},"language-nginx shiki shiki-themes github-dark material-theme github-dark","## Version 2023\u002F05\u002F31\n# make sure that your tautulli container is named tautulli\n# make sure that your dns has a cname set for tautulli\n\nserver {\n    listen 443 ssl;\n    listen [::]:443 ssl;\n\n    server_name tautulli.*;\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 tautulli;\n        set $upstream_port 8181;\n        set $upstream_proto http;\n        proxy_pass $upstream_proto:\u002F\u002F$upstream_app:$upstream_port;\n\n    }\n\n    location ~ (\u002Ftautulli)?\u002Fapi {\n        include \u002Fconfig\u002Fnginx\u002Fproxy.conf;\n        include \u002Fconfig\u002Fnginx\u002Fresolver.conf;\n        set $upstream_app tautulli;\n        set $upstream_port 8181;\n        set $upstream_proto http;\n        proxy_pass $upstream_proto:\u002F\u002F$upstream_app:$upstream_port;\n\n    }\n\n    location ~ (\u002Ftautulli)?\u002Fnewsletter {\n        include \u002Fconfig\u002Fnginx\u002Fproxy.conf;\n        include \u002Fconfig\u002Fnginx\u002Fresolver.conf;\n        set $upstream_app tautulli;\n        set $upstream_port 8181;\n        set $upstream_proto http;\n        proxy_pass $upstream_proto:\u002F\u002F$upstream_app:$upstream_port;\n\n    }\n\n    location ~ (\u002Ftautulli)?\u002Fimage {\n        include \u002Fconfig\u002Fnginx\u002Fproxy.conf;\n        include \u002Fconfig\u002Fnginx\u002Fresolver.conf;\n        set $upstream_app tautulli;\n        set $upstream_port 8181;\n        set $upstream_proto http;\n        proxy_pass $upstream_proto:\u002F\u002F$upstream_app:$upstream_port;\n\n    }\n}\n","nginx",[479,1353,1354,1359,1364,1369,1373,1382,1397,1406,1410,1420,1424,1434,1438,1448,1452,1457,1462,1466,1471,1476,1480,1485,1490,1494,1505,1510,1515,1520,1524,1529,1534,1538,1543,1548,1553,1559,1565,1570,1581,1591,1605,1620,1632,1655,1660,1666,1671,1685,1694,1703,1714,1727,1738,1757,1762,1767,1772,1784,1793,1802,1813,1826,1837,1856,1861,1866,1871,1883,1892,1901,1912,1925,1936,1955,1960,1965],{"__ignoreMap":502},[506,1355,1356],{"class":508,"line":509},[506,1357,1358],{"class":869},"## Version 2023\u002F05\u002F31\n",[506,1360,1361],{"class":508,"line":562},[506,1362,1363],{"class":869},"# make sure that your tautulli container is named tautulli\n",[506,1365,1366],{"class":508,"line":573},[506,1367,1368],{"class":869},"# make sure that your dns has a cname set for tautulli\n",[506,1370,1371],{"class":508,"line":581},[506,1372,740],{"emptyLinePlaceholder":739},[506,1374,1375,1379],{"class":508,"line":592},[506,1376,1378],{"class":1377},"sAoO4","server",[506,1380,1381],{"class":956}," {\n",[506,1383,1384,1388,1391,1394],{"class":508,"line":603},[506,1385,1387],{"class":1386},"sJPTy","    listen ",[506,1389,1144],{"class":1390},"swwWl",[506,1392,1393],{"class":956}," ssl",[506,1395,1396],{"class":569},";\n",[506,1398,1399,1401,1404],{"class":508,"line":614},[506,1400,1387],{"class":1386},[506,1402,1403],{"class":956},"[::]:443 ssl",[506,1405,1396],{"class":569},[506,1407,1408],{"class":508,"line":622},[506,1409,740],{"emptyLinePlaceholder":739},[506,1411,1412,1415,1418],{"class":508,"line":631},[506,1413,1414],{"class":1386},"    server_name ",[506,1416,1417],{"class":956},"tautulli.*",[506,1419,1396],{"class":569},[506,1421,1422],{"class":508,"line":639},[506,1423,740],{"emptyLinePlaceholder":739},[506,1425,1426,1429,1432],{"class":508,"line":647},[506,1427,1428],{"class":1386},"    include ",[506,1430,1431],{"class":956},"\u002Fconfig\u002Fnginx\u002Fssl.conf",[506,1433,1396],{"class":569},[506,1435,1436],{"class":508,"line":655},[506,1437,740],{"emptyLinePlaceholder":739},[506,1439,1440,1443,1446],{"class":508,"line":663},[506,1441,1442],{"class":1386},"    client_max_body_size ",[506,1444,1445],{"class":1390},"0",[506,1447,1396],{"class":569},[506,1449,1450],{"class":508,"line":671},[506,1451,740],{"emptyLinePlaceholder":739},[506,1453,1454],{"class":508,"line":679},[506,1455,1456],{"class":869},"    # enable for ldap auth (requires ldap-location.conf in the location block)\n",[506,1458,1459],{"class":508,"line":687},[506,1460,1461],{"class":869},"    #include \u002Fconfig\u002Fnginx\u002Fldap-server.conf;\n",[506,1463,1464],{"class":508,"line":698},[506,1465,740],{"emptyLinePlaceholder":739},[506,1467,1468],{"class":508,"line":709},[506,1469,1470],{"class":869},"    # enable for Authelia (requires authelia-location.conf in the location block)\n",[506,1472,1473],{"class":508,"line":720},[506,1474,1475],{"class":869},"    #include \u002Fconfig\u002Fnginx\u002Fauthelia-server.conf;\n",[506,1477,1478],{"class":508,"line":728},[506,1479,740],{"emptyLinePlaceholder":739},[506,1481,1482],{"class":508,"line":736},[506,1483,1484],{"class":869},"    # enable for Authentik (requires authentik-location.conf in the location block)\n",[506,1486,1487],{"class":508,"line":743},[506,1488,1489],{"class":869},"    #include \u002Fconfig\u002Fnginx\u002Fauthentik-server.conf;\n",[506,1491,1492],{"class":508,"line":751},[506,1493,740],{"emptyLinePlaceholder":739},[506,1495,1496,1499,1502],{"class":508,"line":761},[506,1497,1498],{"class":1377},"    location",[506,1500,1501],{"class":512}," \u002F ",[506,1503,1504],{"class":956},"{\n",[506,1506,1507],{"class":508,"line":771},[506,1508,1509],{"class":869},"        # enable the next two lines for http auth\n",[506,1511,1512],{"class":508,"line":778},[506,1513,1514],{"class":869},"        #auth_basic \"Restricted\";\n",[506,1516,1517],{"class":508,"line":785},[506,1518,1519],{"class":869},"        #auth_basic_user_file \u002Fconfig\u002Fnginx\u002F.htpasswd;\n",[506,1521,1522],{"class":508,"line":792},[506,1523,740],{"emptyLinePlaceholder":739},[506,1525,1526],{"class":508,"line":799},[506,1527,1528],{"class":869},"        # enable for ldap auth (requires ldap-server.conf in the server block)\n",[506,1530,1531],{"class":508,"line":806},[506,1532,1533],{"class":869},"        #include \u002Fconfig\u002Fnginx\u002Fldap-location.conf;\n",[506,1535,1536],{"class":508,"line":814},[506,1537,740],{"emptyLinePlaceholder":739},[506,1539,1540],{"class":508,"line":822},[506,1541,1542],{"class":869},"        # enable for Authelia (requires authelia-server.conf in the server block)\n",[506,1544,1545],{"class":508,"line":830},[506,1546,1547],{"class":869},"        #include \u002Fconfig\u002Fnginx\u002Fauthelia-location.conf;\n",[506,1549,1551],{"class":508,"line":1550},34,[506,1552,740],{"emptyLinePlaceholder":739},[506,1554,1556],{"class":508,"line":1555},35,[506,1557,1558],{"class":869},"        # enable for Authentik (requires authentik-server.conf in the server block)\n",[506,1560,1562],{"class":508,"line":1561},36,[506,1563,1564],{"class":869},"        #include \u002Fconfig\u002Fnginx\u002Fauthentik-location.conf;\n",[506,1566,1568],{"class":508,"line":1567},37,[506,1569,740],{"emptyLinePlaceholder":739},[506,1571,1573,1576,1579],{"class":508,"line":1572},38,[506,1574,1575],{"class":1386},"        include ",[506,1577,1578],{"class":956},"\u002Fconfig\u002Fnginx\u002Fproxy.conf",[506,1580,1396],{"class":569},[506,1582,1584,1586,1589],{"class":508,"line":1583},39,[506,1585,1575],{"class":1386},[506,1587,1588],{"class":956},"\u002Fconfig\u002Fnginx\u002Fresolver.conf",[506,1590,1396],{"class":569},[506,1592,1594,1597,1600,1603],{"class":508,"line":1593},40,[506,1595,1596],{"class":1386},"        set ",[506,1598,1599],{"class":569},"$",[506,1601,1602],{"class":956},"upstream_app tautulli",[506,1604,1396],{"class":569},[506,1606,1608,1610,1612,1615,1618],{"class":508,"line":1607},41,[506,1609,1596],{"class":1386},[506,1611,1599],{"class":569},[506,1613,1614],{"class":956},"upstream_port ",[506,1616,1617],{"class":1390},"8181",[506,1619,1396],{"class":569},[506,1621,1623,1625,1627,1630],{"class":508,"line":1622},42,[506,1624,1596],{"class":1386},[506,1626,1599],{"class":569},[506,1628,1629],{"class":956},"upstream_proto http",[506,1631,1396],{"class":569},[506,1633,1635,1638,1640,1643,1645,1648,1650,1653],{"class":508,"line":1634},43,[506,1636,1637],{"class":1386},"        proxy_pass ",[506,1639,1599],{"class":569},[506,1641,1642],{"class":956},"upstream_proto:\u002F\u002F",[506,1644,1599],{"class":569},[506,1646,1647],{"class":956},"upstream_app:",[506,1649,1599],{"class":569},[506,1651,1652],{"class":956},"upstream_port",[506,1654,1396],{"class":569},[506,1656,1658],{"class":508,"line":1657},44,[506,1659,740],{"emptyLinePlaceholder":739},[506,1661,1663],{"class":508,"line":1662},45,[506,1664,1665],{"class":956},"    }\n",[506,1667,1669],{"class":508,"line":1668},46,[506,1670,740],{"emptyLinePlaceholder":739},[506,1672,1674,1676,1679,1683],{"class":508,"line":1673},47,[506,1675,1498],{"class":1377},[506,1677,1678],{"class":1386}," ~",[506,1680,1682],{"class":1681},"sxjBU"," (\u002Ftautulli)?\u002Fapi ",[506,1684,1504],{"class":956},[506,1686,1688,1690,1692],{"class":508,"line":1687},48,[506,1689,1575],{"class":1386},[506,1691,1578],{"class":956},[506,1693,1396],{"class":569},[506,1695,1697,1699,1701],{"class":508,"line":1696},49,[506,1698,1575],{"class":1386},[506,1700,1588],{"class":956},[506,1702,1396],{"class":569},[506,1704,1706,1708,1710,1712],{"class":508,"line":1705},50,[506,1707,1596],{"class":1386},[506,1709,1599],{"class":569},[506,1711,1602],{"class":956},[506,1713,1396],{"class":569},[506,1715,1717,1719,1721,1723,1725],{"class":508,"line":1716},51,[506,1718,1596],{"class":1386},[506,1720,1599],{"class":569},[506,1722,1614],{"class":956},[506,1724,1617],{"class":1390},[506,1726,1396],{"class":569},[506,1728,1730,1732,1734,1736],{"class":508,"line":1729},52,[506,1731,1596],{"class":1386},[506,1733,1599],{"class":569},[506,1735,1629],{"class":956},[506,1737,1396],{"class":569},[506,1739,1741,1743,1745,1747,1749,1751,1753,1755],{"class":508,"line":1740},53,[506,1742,1637],{"class":1386},[506,1744,1599],{"class":569},[506,1746,1642],{"class":956},[506,1748,1599],{"class":569},[506,1750,1647],{"class":956},[506,1752,1599],{"class":569},[506,1754,1652],{"class":956},[506,1756,1396],{"class":569},[506,1758,1760],{"class":508,"line":1759},54,[506,1761,740],{"emptyLinePlaceholder":739},[506,1763,1765],{"class":508,"line":1764},55,[506,1766,1665],{"class":956},[506,1768,1770],{"class":508,"line":1769},56,[506,1771,740],{"emptyLinePlaceholder":739},[506,1773,1775,1777,1779,1782],{"class":508,"line":1774},57,[506,1776,1498],{"class":1377},[506,1778,1678],{"class":1386},[506,1780,1781],{"class":1681}," (\u002Ftautulli)?\u002Fnewsletter ",[506,1783,1504],{"class":956},[506,1785,1787,1789,1791],{"class":508,"line":1786},58,[506,1788,1575],{"class":1386},[506,1790,1578],{"class":956},[506,1792,1396],{"class":569},[506,1794,1796,1798,1800],{"class":508,"line":1795},59,[506,1797,1575],{"class":1386},[506,1799,1588],{"class":956},[506,1801,1396],{"class":569},[506,1803,1805,1807,1809,1811],{"class":508,"line":1804},60,[506,1806,1596],{"class":1386},[506,1808,1599],{"class":569},[506,1810,1602],{"class":956},[506,1812,1396],{"class":569},[506,1814,1816,1818,1820,1822,1824],{"class":508,"line":1815},61,[506,1817,1596],{"class":1386},[506,1819,1599],{"class":569},[506,1821,1614],{"class":956},[506,1823,1617],{"class":1390},[506,1825,1396],{"class":569},[506,1827,1829,1831,1833,1835],{"class":508,"line":1828},62,[506,1830,1596],{"class":1386},[506,1832,1599],{"class":569},[506,1834,1629],{"class":956},[506,1836,1396],{"class":569},[506,1838,1840,1842,1844,1846,1848,1850,1852,1854],{"class":508,"line":1839},63,[506,1841,1637],{"class":1386},[506,1843,1599],{"class":569},[506,1845,1642],{"class":956},[506,1847,1599],{"class":569},[506,1849,1647],{"class":956},[506,1851,1599],{"class":569},[506,1853,1652],{"class":956},[506,1855,1396],{"class":569},[506,1857,1859],{"class":508,"line":1858},64,[506,1860,740],{"emptyLinePlaceholder":739},[506,1862,1864],{"class":508,"line":1863},65,[506,1865,1665],{"class":956},[506,1867,1869],{"class":508,"line":1868},66,[506,1870,740],{"emptyLinePlaceholder":739},[506,1872,1874,1876,1878,1881],{"class":508,"line":1873},67,[506,1875,1498],{"class":1377},[506,1877,1678],{"class":1386},[506,1879,1880],{"class":1681}," (\u002Ftautulli)?\u002Fimage ",[506,1882,1504],{"class":956},[506,1884,1886,1888,1890],{"class":508,"line":1885},68,[506,1887,1575],{"class":1386},[506,1889,1578],{"class":956},[506,1891,1396],{"class":569},[506,1893,1895,1897,1899],{"class":508,"line":1894},69,[506,1896,1575],{"class":1386},[506,1898,1588],{"class":956},[506,1900,1396],{"class":569},[506,1902,1904,1906,1908,1910],{"class":508,"line":1903},70,[506,1905,1596],{"class":1386},[506,1907,1599],{"class":569},[506,1909,1602],{"class":956},[506,1911,1396],{"class":569},[506,1913,1915,1917,1919,1921,1923],{"class":508,"line":1914},71,[506,1916,1596],{"class":1386},[506,1918,1599],{"class":569},[506,1920,1614],{"class":956},[506,1922,1617],{"class":1390},[506,1924,1396],{"class":569},[506,1926,1928,1930,1932,1934],{"class":508,"line":1927},72,[506,1929,1596],{"class":1386},[506,1931,1599],{"class":569},[506,1933,1629],{"class":956},[506,1935,1396],{"class":569},[506,1937,1939,1941,1943,1945,1947,1949,1951,1953],{"class":508,"line":1938},73,[506,1940,1637],{"class":1386},[506,1942,1599],{"class":569},[506,1944,1642],{"class":956},[506,1946,1599],{"class":569},[506,1948,1647],{"class":956},[506,1950,1599],{"class":569},[506,1952,1652],{"class":956},[506,1954,1396],{"class":569},[506,1956,1958],{"class":508,"line":1957},74,[506,1959,740],{"emptyLinePlaceholder":739},[506,1961,1963],{"class":508,"line":1962},75,[506,1964,1665],{"class":956},[506,1966,1968],{"class":508,"line":1967},76,[506,1969,1970],{"class":956},"}\n",[838,1972,1974,1975,1978,1979,1095,1982,1985,1986,538],{"icon":502,"to":1973},"\u002Fserveex\u002Fadvanced\u002Fauthentik#protecting-an-app-via-reverse-proxy","✨ You can protect this app with Authentik by removing the ",[479,1976,1977],{},"#"," before ",[479,1980,1981],{},"include \u002Fconfig\u002Fnginx\u002Fauthentik-server.conf;",[479,1983,1984],{},"include \u002Fconfig\u002Fnginx\u002Fauthentik-location.conf;",". Don’t forget to ",[396,1987,1988],{},"create an application and provider in Authentik",[400,1990,1991,1992,1996,1997,2000,2001,2004],{},"Press ",[1993,1994],"kbd",{"value":1995},"Ctrl+O",", then ",[1993,1998],{"value":1999},"Enter"," to save, and ",[1993,2002],{"value":2003},"Ctrl+X"," to exit.",[471,2006,993],{"id":2007},"done-1",[400,2009,2010,2011,2014],{},"Wait a few minutes, then open ",[479,2012,2013],{},"http:\u002F\u002Ftautulli.mydomain.com"," in your browser.",[1041,2016,2017,2019],{},[396,2018,1045],{}," check your firewall rules.",[400,2021,2022],{},"And you're done!",[2024,2025,2026],"style",{},"html pre.shiki code .sEgDM, html code.shiki .sEgDM{--shiki-light:#B392F0;--shiki-default:#FFCB6B;--shiki-dark:#B392F0}html pre.shiki code .sJWha, html code.shiki .sJWha{--shiki-light:#79B8FF;--shiki-default:#C3E88D;--shiki-dark:#79B8FF}html pre.shiki code .s11XM, html code.shiki .s11XM{--shiki-light:#9ECBFF;--shiki-default:#C3E88D;--shiki-dark:#9ECBFF}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 .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 .szyEh, html code.shiki .szyEh{--shiki-light:#F97583;--shiki-default:#F07178;--shiki-dark:#F97583}html pre.shiki code .slcoZ, html code.shiki .slcoZ{--shiki-light:#E1E4E8;--shiki-default:#EEFFFF;--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 .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 .sxjBU, html code.shiki .sxjBU{--shiki-light:#DBEDFF;--shiki-default:#C3E88D;--shiki-dark:#DBEDFF}",{"title":502,"searchDepth":562,"depth":562,"links":2028},[2029,2035,2036],{"id":460,"depth":562,"text":461,"children":2030},[2031,2032,2033,2034],{"id":473,"depth":573,"text":474},{"id":530,"depth":573,"text":531},{"id":913,"depth":573,"text":914},{"id":992,"depth":573,"text":993},{"id":996,"depth":562,"text":997},{"id":1109,"depth":562,"text":1110,"children":2037},[2038,2039,2040],{"id":1155,"depth":573,"text":1156},{"id":1292,"depth":573,"text":1293},{"id":2007,"depth":573,"text":993},[2042],"Djeex","Install Plex Media Server with Tautulli on your homelab to stream movies and TV shows from anywhere on all your devices.","md",null,{},{"title":362,"description":2043},"a1pCewX_4yMxwICYdy5xoQ9bF9zRtpq_hkR110NqzoA",[2050,2052],{"title":352,"path":353,"stem":354,"description":2051,"children":-1},"Install File Browser to browse and manage your server files from a web interface, exposed securely with SWAG.",{"title":366,"path":367,"stem":368,"description":2053,"children":-1},"Install qBittorrent with Gluetun and ProtonVPN to download torrents securely behind a VPN on your self-hosted server.",1788645858227]