[{"data":1,"prerenderedAt":2114},["ShallowReactive",2],{"navigation_docs_fr":3,"-fr-serveex-advanced-arcane-":376,"-fr-serveex-advanced-arcane--surround":2109},[4,16,93,261,270,331],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":15},"À propos","i-noto-star","\u002Ffr\u002Fabout","fr\u002F1.about",[10],{"title":11,"path":12,"stem":13,"icon":14},"Bienvenue","\u002Ffr\u002Fabout\u002Fwelcome","fr\u002F1.about\u002F1.welcome","i-lucide-home",false,{"title":17,"icon":18,"path":19,"stem":20,"children":21,"page":15},"Généralités","i-noto-open-book","\u002Ffr\u002Fgeneral","fr\u002F2.general",[22,26,44,58,75],{"title":17,"path":23,"stem":24,"icon":25},"\u002Ffr\u002Fgeneral\u002Fsummary","fr\u002F2.general\u002F1.summary","i-lucide-bookmark",{"title":27,"icon":28,"path":29,"stem":30,"children":31,"page":15},"Réseau","i-lucide-network","\u002Ffr\u002Fgeneral\u002Fnetworking","fr\u002F2.general\u002F2.networking",[32,36,40],{"title":33,"path":34,"stem":35},"NAT & DHCP","\u002Ffr\u002Fgeneral\u002Fnetworking\u002Fnat","fr\u002F2.general\u002F2.networking\u002F1.nat",{"title":37,"path":38,"stem":39},"Zone DNS","\u002Ffr\u002Fgeneral\u002Fnetworking\u002Fdns","fr\u002F2.general\u002F2.networking\u002F2.dns",{"title":41,"path":42,"stem":43},"Samba","\u002Ffr\u002Fgeneral\u002Fnetworking\u002Fsamba","fr\u002F2.general\u002F2.networking\u002F3.samba",{"title":45,"icon":46,"path":47,"stem":48,"children":49,"page":15},"Stockage","i-lucide-hard-drive","\u002Ffr\u002Fgeneral\u002Fstorage","fr\u002F2.general\u002F3.storage",[50,54],{"title":51,"path":52,"stem":53},"RAID","\u002Ffr\u002Fgeneral\u002Fstorage\u002Fraid","fr\u002F2.general\u002F3.storage\u002F1.raid",{"title":55,"path":56,"stem":57},"ZFS","\u002Ffr\u002Fgeneral\u002Fstorage\u002Fzfs","fr\u002F2.general\u002F3.storage\u002F2.zfs",{"title":59,"icon":60,"path":61,"stem":62,"children":63,"page":15},"Matériel","i-lucide-server","\u002Ffr\u002Fgeneral\u002Fhardware","fr\u002F2.general\u002F4.hardware",[64,68,71],{"title":65,"path":66,"stem":67},"Les bases","\u002Ffr\u002Fgeneral\u002Fhardware\u002Fbasics","fr\u002F2.general\u002F4.hardware\u002F1.basics",{"title":27,"path":69,"stem":70},"\u002Ffr\u002Fgeneral\u002Fhardware\u002Fnetwork","fr\u002F2.general\u002F4.hardware\u002F2.network",{"title":72,"path":73,"stem":74},"Le ProloNAS","\u002Ffr\u002Fgeneral\u002Fhardware\u002Fprolonas","fr\u002F2.general\u002F4.hardware\u002F3.prolonas",{"title":76,"icon":77,"path":78,"stem":79,"children":80,"page":15},"Linux pour les nuls","i-lucide-terminal","\u002Ffr\u002Fgeneral\u002Flinux","fr\u002F2.general\u002F5.linux",[81,85,89],{"title":82,"path":83,"stem":84},"CLI pour les nuls","\u002Ffr\u002Fgeneral\u002Flinux\u002Fcli-basics","fr\u002F2.general\u002F5.linux\u002F1.cli-basics",{"title":86,"path":87,"stem":88},"Dossiers et partitions","\u002Ffr\u002Fgeneral\u002Flinux\u002Ffilesystem","fr\u002F2.general\u002F5.linux\u002F2.filesystem",{"title":90,"path":91,"stem":92},"Outils CLI pratiques","\u002Ffr\u002Fgeneral\u002Flinux\u002Fhandy-tools","fr\u002F2.general\u002F5.linux\u002F3.handy-tools",{"title":94,"icon":95,"path":96,"stem":97,"children":98,"page":15},"Serveex","i-noto-microscope","\u002Ffr\u002Fserveex","fr\u002F3.serveex",[99,103,125,143,169,187,201,215,233,247],{"title":100,"path":101,"stem":102,"icon":25},"Introduction","\u002Ffr\u002Fserveex\u002Fintroduction","fr\u002F3.serveex\u002F1.introduction",{"title":104,"icon":105,"path":106,"stem":107,"children":108,"page":15},"Cœur du serveur","i-lucide-server-cog","\u002Ffr\u002Fserveex\u002Fcore","fr\u002F3.serveex\u002F2.core",[109,113,117,121],{"title":110,"path":111,"stem":112},"Debian 13","\u002Ffr\u002Fserveex\u002Fcore\u002Finstallation","fr\u002F3.serveex\u002F2.core\u002F1.installation",{"title":114,"path":115,"stem":116},"Docker","\u002Ffr\u002Fserveex\u002Fcore\u002Fdocker","fr\u002F3.serveex\u002F2.core\u002F2.docker",{"title":118,"path":119,"stem":120},"Wireguard","\u002Ffr\u002Fserveex\u002Fcore\u002Fwireguard","fr\u002F3.serveex\u002F2.core\u002F3.wireguard",{"title":122,"path":123,"stem":124},"SWAG","\u002Ffr\u002Fserveex\u002Fcore\u002Fswag","fr\u002F3.serveex\u002F2.core\u002F4.swag",{"title":126,"icon":127,"path":128,"stem":129,"children":130,"page":15},"Sécurité","i-lucide-shield","\u002Ffr\u002Fserveex\u002Fsecurity","fr\u002F3.serveex\u002F3.security",[131,135,139],{"title":132,"path":133,"stem":134},"Cloudflare Zero Trust","\u002Ffr\u002Fserveex\u002Fsecurity\u002Fcloudflare","fr\u002F3.serveex\u002F3.security\u002F2.cloudflare",{"title":136,"path":137,"stem":138},"TinyAuth","\u002Ffr\u002Fserveex\u002Fsecurity\u002Ftinyauth","fr\u002F3.serveex\u002F3.security\u002F3.tinyauth",{"title":140,"path":141,"stem":142},"Pocket ID","\u002Ffr\u002Fserveex\u002Fsecurity\u002Fpocket-id","fr\u002F3.serveex\u002F3.security\u002F4.pocket-id",{"title":144,"icon":145,"path":146,"stem":147,"children":148,"page":15},"Monitoring","i-lucide-chart-no-axes-column","\u002Ffr\u002Fserveex\u002Fmonitoring","fr\u002F3.serveex\u002F4.monitoring",[149,153,157,161,165],{"title":150,"path":151,"stem":152},"Uptime-Kuma","\u002Ffr\u002Fserveex\u002Fmonitoring\u002Fuptime-kuma","fr\u002F3.serveex\u002F4.monitoring\u002F1.uptime-kuma",{"title":154,"path":155,"stem":156},"Dozzle","\u002Ffr\u002Fserveex\u002Fmonitoring\u002Fdozzle","fr\u002F3.serveex\u002F4.monitoring\u002F2.dozzle",{"title":158,"path":159,"stem":160},"Speedtest Tracker","\u002Ffr\u002Fserveex\u002Fmonitoring\u002Fspeedtest-tracker","fr\u002F3.serveex\u002F4.monitoring\u002F3.speedtest-tracker",{"title":162,"path":163,"stem":164},"Beszel","\u002Ffr\u002Fserveex\u002Fmonitoring\u002Fbeszel","fr\u002F3.serveex\u002F4.monitoring\u002F4.beszel",{"title":166,"path":167,"stem":168},"UpSnap","\u002Ffr\u002Fserveex\u002Fmonitoring\u002Fupsnap","fr\u002F3.serveex\u002F4.monitoring\u002F5.upsnap",{"title":170,"icon":171,"path":172,"stem":173,"children":174,"page":15},"Média & Seedbox","i-lucide-list-video","\u002Ffr\u002Fserveex\u002Fmedia","fr\u002F3.serveex\u002F5.media",[175,179,183],{"title":176,"path":177,"stem":178},"Jellyfin","\u002Ffr\u002Fserveex\u002Fmedia\u002Fjellyfin","fr\u002F3.serveex\u002F5.media\u002F1.jellyfin",{"title":180,"path":181,"stem":182},"Qbittorrent","\u002Ffr\u002Fserveex\u002Fmedia\u002Fqbittorrent","fr\u002F3.serveex\u002F5.media\u002F2.qbittorrent",{"title":184,"path":185,"stem":186},"Automatisation","\u002Ffr\u002Fserveex\u002Fmedia\u002Fservarr","fr\u002F3.serveex\u002F5.media\u002F3.servarr",{"title":188,"icon":189,"path":190,"stem":191,"children":192,"page":15},"Cloud & Photos","i-lucide-cloud-upload","\u002Ffr\u002Fserveex\u002Fcloud","fr\u002F3.serveex\u002F6.cloud",[193,197],{"title":194,"path":195,"stem":196},"Immich","\u002Ffr\u002Fserveex\u002Fcloud\u002Fimmich","fr\u002F3.serveex\u002F6.cloud\u002F1.immich",{"title":198,"path":199,"stem":200},"Nextcloud","\u002Ffr\u002Fserveex\u002Fcloud\u002Fnextcloud","fr\u002F3.serveex\u002F6.cloud\u002F2.nextcloud",{"title":202,"icon":203,"path":204,"stem":205,"children":206,"page":15},"Fichiers & partage","i-lucide-folder-tree","\u002Ffr\u002Fserveex\u002Ffiles","fr\u002F3.serveex\u002F7.files",[207,211],{"title":208,"path":209,"stem":210},"File Browser Quantum","\u002Ffr\u002Fserveex\u002Ffiles\u002Ffile-browser-quantum","fr\u002F3.serveex\u002F7.files\u002F1.file-browser-quantum",{"title":212,"path":213,"stem":214},"Pingvin","\u002Ffr\u002Fserveex\u002Ffiles\u002Fpingvin","fr\u002F3.serveex\u002F7.files\u002F2.pingvin",{"title":216,"icon":217,"path":218,"stem":219,"children":220,"page":15},"Développement","i-lucide-code-xml","\u002Ffr\u002Fserveex\u002Fdevelopment","fr\u002F3.serveex\u002F8.development",[221,225,229],{"title":222,"path":223,"stem":224},"Code-Serveur","\u002Ffr\u002Fserveex\u002Fdevelopment\u002Fcode-server","fr\u002F3.serveex\u002F8.development\u002F1.code-server",{"title":226,"path":227,"stem":228},"Forgejo","\u002Ffr\u002Fserveex\u002Fdevelopment\u002Fforgejo","fr\u002F3.serveex\u002F8.development\u002F2.forgejo",{"title":230,"path":231,"stem":232},"IT Tools","\u002Ffr\u002Fserveex\u002Fdevelopment\u002Fit-tools","fr\u002F3.serveex\u002F8.development\u002F3.it-tools",{"title":234,"icon":235,"path":236,"stem":237,"children":238,"page":15},"Applications utiles","i-lucide-award","\u002Ffr\u002Fserveex\u002Fapps","fr\u002F3.serveex\u002F9.apps",[239,243],{"title":240,"path":241,"stem":242},"Adguard Home","\u002Ffr\u002Fserveex\u002Fapps\u002Fadguard","fr\u002F3.serveex\u002F9.apps\u002F1.adguard",{"title":244,"path":245,"stem":246},"Vaultwarden","\u002Ffr\u002Fserveex\u002Fapps\u002Fvaultwarden","fr\u002F3.serveex\u002F9.apps\u002F2.vaultwarden",{"title":248,"icon":249,"path":250,"stem":251,"children":252,"page":15},"Avancé","i-lucide-flask-conical","\u002Ffr\u002Fserveex\u002Fadvanced","fr\u002F3.serveex\u002F91.advanced",[253,257],{"title":254,"path":255,"stem":256},"Authentik","\u002Ffr\u002Fserveex\u002Fadvanced\u002Fauthentik","fr\u002F3.serveex\u002F91.advanced\u002F1.authentik",{"title":258,"path":259,"stem":260},"Arcane","\u002Ffr\u002Fserveex\u002Fadvanced\u002Farcane","fr\u002F3.serveex\u002F91.advanced\u002F2.arcane",{"title":262,"icon":263,"path":264,"stem":265,"children":266,"page":15},"Stockeex","i-noto-computer-disk","\u002Ffr\u002Fstockeex","fr\u002F4.stockeex",[267],{"title":100,"path":268,"stem":269,"icon":25},"\u002Ffr\u002Fstockeex\u002Fintroduction","fr\u002F4.stockeex\u002F1.introduction",{"title":271,"icon":272,"path":273,"stem":274,"children":275,"page":15},"Mes bêtises","i-noto-test-tube","\u002Ffr\u002Fnonsense","fr\u002F5.nonsense",[276,279,301],{"title":271,"path":277,"stem":278,"icon":25},"\u002Ffr\u002Fnonsense\u002Fsummary","fr\u002F5.nonsense\u002F1.summary",{"title":280,"icon":281,"path":282,"stem":283,"children":284,"page":15},"Python","i-lucide-file-code-2","\u002Ffr\u002Fnonsense\u002Fpython","fr\u002F5.nonsense\u002F2.python",[285,289,293,297],{"title":286,"path":287,"stem":288},"Nvidia Stock Bot","\u002Ffr\u002Fnonsense\u002Fpython\u002Fnvidia-stock-bot","fr\u002F5.nonsense\u002F2.python\u002F1.nvidia-stock-bot",{"title":290,"path":291,"stem":292},"Adguard CIDRE","\u002Ffr\u002Fnonsense\u002Fpython\u002Fadguard-cidre","fr\u002F5.nonsense\u002F2.python\u002F2.adguard-cidre",{"title":294,"path":295,"stem":296},"Lumeex","\u002Ffr\u002Fnonsense\u002Fpython\u002Flumeex","fr\u002F5.nonsense\u002F2.python\u002F3.lumeex",{"title":298,"path":299,"stem":300},"Instameex","\u002Ffr\u002Fnonsense\u002Fpython\u002Finstameex","fr\u002F5.nonsense\u002F2.python\u002F4.instameex",{"title":302,"icon":303,"path":304,"stem":305,"children":306,"page":15},"Bash","i-lucide-file-terminal","\u002Ffr\u002Fnonsense\u002Fbash","fr\u002F5.nonsense\u002F3.bash",[307,311,315,319,323,327],{"title":308,"path":309,"stem":310},"Doublons servarr","\u002Ffr\u002Fnonsense\u002Fbash\u002Fservarr-duplicates","fr\u002F5.nonsense\u002F3.bash\u002F1.servarr-duplicates",{"title":312,"path":313,"stem":314},"Luks backup","\u002Ffr\u002Fnonsense\u002Fbash\u002Fluks-backup","fr\u002F5.nonsense\u002F3.bash\u002F2.luks-backup",{"title":316,"path":317,"stem":318},"Socat Proxy","\u002Ffr\u002Fnonsense\u002Fbash\u002Fsocat-proxy","fr\u002F5.nonsense\u002F3.bash\u002F3.socat-proxy",{"title":320,"path":321,"stem":322},"HotDisk","\u002Ffr\u002Fnonsense\u002Fbash\u002Fhotdisk","fr\u002F5.nonsense\u002F3.bash\u002F4.hotdisk",{"title":324,"path":325,"stem":326},"Backrest Docker Stop","\u002Ffr\u002Fnonsense\u002Fbash\u002Fbackrest-docker-stop","fr\u002F5.nonsense\u002F3.bash\u002F5.backrest-docker-stop",{"title":328,"path":329,"stem":330},"rm Confirmation Guard","\u002Ffr\u002Fnonsense\u002Fbash\u002Frm-confirmation","fr\u002F5.nonsense\u002F3.bash\u002F6.rm-confirmation",{"title":332,"icon":333,"path":334,"stem":335,"children":336,"page":15},"Poubelle","i-noto-recycling-symbol","\u002Ffr\u002Frecycled","fr\u002F6.recycled",[337,340,354],{"title":332,"path":338,"stem":339,"icon":25},"\u002Ffr\u002Frecycled\u002Fsummary","fr\u002F6.recycled\u002F1.summary",{"title":341,"icon":342,"path":343,"stem":344,"children":345,"page":15},"Obsolète","i-lucide-trash-2","\u002Ffr\u002Frecycled\u002Fdeprecated","fr\u002F6.recycled\u002F2.deprecated",[346,350],{"title":347,"path":348,"stem":349},"Wireguard 14","\u002Ffr\u002Frecycled\u002Fdeprecated\u002Fwireguard-14","fr\u002F6.recycled\u002F2.deprecated\u002F1.wireguard-14",{"title":351,"path":352,"stem":353},"File Browser","\u002Ffr\u002Frecycled\u002Fdeprecated\u002Ffile-browser","fr\u002F6.recycled\u002F2.deprecated\u002F2.file-browser",{"title":355,"icon":356,"path":357,"stem":358,"children":359,"page":15},"Alternatives","i-lucide-arrow-left-right","\u002Ffr\u002Frecycled\u002Falternatives","fr\u002F6.recycled\u002F3.alternatives",[360,364,368,372],{"title":361,"path":362,"stem":363},"Plex","\u002Ffr\u002Frecycled\u002Falternatives\u002Fplex","fr\u002F6.recycled\u002F3.alternatives\u002F1.plex",{"title":365,"path":366,"stem":367},"Qbittorrent pour Plex","\u002Ffr\u002Frecycled\u002Falternatives\u002Fqbittorrent-for-plex","fr\u002F6.recycled\u002F3.alternatives\u002F2.qbittorrent for plex",{"title":369,"path":370,"stem":371},"Servarr pour Plex","\u002Ffr\u002Frecycled\u002Falternatives\u002Fservarr-for-plex","fr\u002F6.recycled\u002F3.alternatives\u002F3.servarr for plex",{"title":373,"path":374,"stem":375},"Gitea","\u002Ffr\u002Frecycled\u002Falternatives\u002Fgitea","fr\u002F6.recycled\u002F3.alternatives\u002F4.gitea",{"id":377,"title":258,"body":378,"contributors":2101,"description":2103,"extension":2104,"hideCopyPage":15,"hideHeader":15,"hideToc":15,"links":2105,"meta":2106,"navigation":686,"path":259,"seo":2107,"stem":260,"__hash__":2108},"docs_fr\u002Ffr\u002F3.serveex\u002F91.advanced\u002F2.arcane.md",{"type":379,"value":380,"toc":2077},"minimark",[381,389,399,409,415,432,440,445,449,1180,1187,1191,1194,1210,1246,1677,1680,1684,1695,1711,1860,1864,1867,2025,2028,2073],[382,383],"ellipsis",{"blur":384,"left":385,"top":386,"width":387,"z-index":388},"140px","0px","10rem","40rem","60",[390,391,393,394,398],"note",{"to":392},"\u002Fserveex\u002Fcore\u002Fdocker#installer-dockge-pour-gérer-et-déployer-les-conteneurs","Arcane est une alternative avancée à ",[395,396,397],"strong",{},"Dockge"," : il peut gérer plusieurs hôtes Docker distants depuis une seule instance, et prend en charge la connexion OIDC nativement plutôt que de dépendre d'un proxy de forward-auth séparé.",[400,401,402,408],"p",{},[403,404,258],"a",{"href":405,"rel":406},"https:\u002F\u002Fgithub.com\u002Fgetarcaneapp\u002Farcane",[407],"nofollow"," est une interface web auto-hébergée pour gérer les conteneurs, images, volumes et stacks Compose de Docker.",[400,410,411],{},[412,413],"img",{"alt":258,"src":414},"\u002Fimg\u002Fserveex\u002Farcane.png",[416,417,418,426],"ul",{},[419,420,421],"li",{},[403,422,425],{"href":423,"rel":424},"https:\u002F\u002Fgetarcane.app\u002Fdocs\u002F",[407],"Documentation d'Arcane",[419,427,428],{},[403,429,431],{"href":405,"rel":430},[407],"Arcane sur GitHub",[390,433,435,436,439],{"to":434},"https:\u002F\u002Fdocs.linuxserver.io\u002Fimages\u002Fdocker-socket-proxy\u002F","Arcane a besoin d'accéder au socket Docker pour gérer les conteneurs, ce qui équivaut à un accès root sur votre hôte. Plutôt que de monter le socket directement, ce tutoriel place ",[395,437,438],{},"Docker Socket Proxy"," devant, en n'autorisant que les permissions d'API dont Arcane a réellement besoin. Quoi que vous utilisiez, assurez-vous qu'Arcane lui-même ne soit jamais joignable sans authentification.",[441,442,444],"h2",{"id":443},"installation","Installation",[446,447],"file-tree",{":tree":448},"{\"\u002F\":[{\"srv\":[{\"docker\":[{\"arcane\":[\"compose.yaml\",\".env\",\"data\u002F\"]}]}]}]}",[450,451,453,458,490,497,501,523,941,962,1009,1013,1019,1076,1169,1176],"steps",{"level":452},"3",[454,455,457],"h3",{"id":456},"générer-une-clé-de-chiffrement","Générer une clé de chiffrement",[459,460,466],"pre",{"className":461,"code":462,"filename":463,"language":464,"meta":465,"style":465},"language-bash shiki shiki-themes github-dark material-theme github-dark","openssl rand -base64 32\n","Terminal","bash","",[467,468,469],"code",{"__ignoreMap":465},[470,471,474,478,482,486],"span",{"class":472,"line":473},"line",1,[470,475,477],{"class":476},"sEgDM","openssl",[470,479,481],{"class":480},"s11XM"," rand",[470,483,485],{"class":484},"sJWha"," -base64",[470,487,489],{"class":488},"swwWl"," 32\n",[400,491,492,493,496],{},"Gardez le résultat, vous en aurez besoin pour le fichier ",[467,494,495],{},".env"," ci-dessous.",[454,498,500],{"id":499},"déployer-la-stack","Déployer la stack",[400,502,503,504,507,508,511,512,514,515,518,519,522],{},"Ouvrez Dockge, cliquez sur ",[467,505,506],{},"compose",", nommez la stack ",[467,509,510],{},"arcane",", et ajoutez la configuration suivante. Elle inclut le socket proxy : ",[467,513,510],{}," ne touche jamais directement à ",[467,516,517],{},"\u002Fvar\u002Frun\u002Fdocker.sock",", seul ",[467,520,521],{},"docker-socket-proxy"," le fait, et il n'autorise que les permissions dont Arcane a besoin (conteneurs, images, réseaux, volumes, exec, build\u002Fcommit), sur leur propre réseau interne :",[459,524,529],{"className":525,"code":526,"filename":527,"language":528,"meta":465,"style":465},"language-yaml shiki shiki-themes github-dark material-theme github-dark","---\nservices:\n  arcane:\n    image: ghcr.io\u002Fgetarcaneapp\u002Fmanager:latest\n    container_name: arcane\n    restart: unless-stopped\n    cgroup: host\n    env_file:\n      - .env\n    volumes:\n      - \u002Fsrv\u002Fdocker\u002Farcane\u002Fdata:\u002Fapp\u002Fdata\n    networks:\n      - arcane-internal\n    ports:\n      - 3552:3552\n    depends_on:\n      - docker-socket-proxy\n\n  docker-socket-proxy:\n    image: lscr.io\u002Flinuxserver\u002Fsocket-proxy:latest\n    container_name: arcane-docker-proxy\n    security_opt:\n      - no-new-privileges:true\n    networks:\n      - arcane-internal\n    volumes:\n      - \u002Fvar\u002Frun\u002Fdocker.sock:\u002Fvar\u002Frun\u002Fdocker.sock:ro\n    environment:\n      - CONTAINERS=1\n      - IMAGES=1\n      - NETWORKS=1\n      - VOLUMES=1\n      - EXEC=1\n      - BUILD=1\n      - COMMIT=1\n      - INFO=1\n      - SYSTEM=1\n      - POST=1\n      - ALLOW_START=1\n      - ALLOW_STOP=1\n      - ALLOW_RESTARTS=1\n    restart: unless-stopped\n    read_only: true\n    tmpfs:\n      - \u002Frun\n\nnetworks:\n  arcane-internal:\n    name: arcane-internal\n","compose.yaml","yaml",[467,530,531,536,547,555,567,578,589,600,608,617,625,633,641,649,657,665,673,681,688,696,706,716,724,732,739,746,753,761,769,777,785,793,801,809,817,825,833,841,849,857,865,873,882,894,902,910,915,923,931],{"__ignoreMap":465},[470,532,533],{"class":472,"line":473},[470,534,535],{"class":476},"---\n",[470,537,539,543],{"class":472,"line":538},2,[470,540,542],{"class":541},"sRuoG","services",[470,544,546],{"class":545},"s8jd1",":\n",[470,548,550,553],{"class":472,"line":549},3,[470,551,552],{"class":541},"  arcane",[470,554,546],{"class":545},[470,556,558,561,564],{"class":472,"line":557},4,[470,559,560],{"class":541},"    image",[470,562,563],{"class":545},":",[470,565,566],{"class":480}," ghcr.io\u002Fgetarcaneapp\u002Fmanager:latest\n",[470,568,570,573,575],{"class":472,"line":569},5,[470,571,572],{"class":541},"    container_name",[470,574,563],{"class":545},[470,576,577],{"class":480}," arcane\n",[470,579,581,584,586],{"class":472,"line":580},6,[470,582,583],{"class":541},"    restart",[470,585,563],{"class":545},[470,587,588],{"class":480}," unless-stopped\n",[470,590,592,595,597],{"class":472,"line":591},7,[470,593,594],{"class":541},"    cgroup",[470,596,563],{"class":545},[470,598,599],{"class":480}," host\n",[470,601,603,606],{"class":472,"line":602},8,[470,604,605],{"class":541},"    env_file",[470,607,546],{"class":545},[470,609,611,614],{"class":472,"line":610},9,[470,612,613],{"class":545},"      -",[470,615,616],{"class":480}," .env\n",[470,618,620,623],{"class":472,"line":619},10,[470,621,622],{"class":541},"    volumes",[470,624,546],{"class":545},[470,626,628,630],{"class":472,"line":627},11,[470,629,613],{"class":545},[470,631,632],{"class":480}," \u002Fsrv\u002Fdocker\u002Farcane\u002Fdata:\u002Fapp\u002Fdata\n",[470,634,636,639],{"class":472,"line":635},12,[470,637,638],{"class":541},"    networks",[470,640,546],{"class":545},[470,642,644,646],{"class":472,"line":643},13,[470,645,613],{"class":545},[470,647,648],{"class":480}," arcane-internal\n",[470,650,652,655],{"class":472,"line":651},14,[470,653,654],{"class":541},"    ports",[470,656,546],{"class":545},[470,658,660,662],{"class":472,"line":659},15,[470,661,613],{"class":545},[470,663,664],{"class":480}," 3552:3552\n",[470,666,668,671],{"class":472,"line":667},16,[470,669,670],{"class":541},"    depends_on",[470,672,546],{"class":545},[470,674,676,678],{"class":472,"line":675},17,[470,677,613],{"class":545},[470,679,680],{"class":480}," docker-socket-proxy\n",[470,682,684],{"class":472,"line":683},18,[470,685,687],{"emptyLinePlaceholder":686},true,"\n",[470,689,691,694],{"class":472,"line":690},19,[470,692,693],{"class":541},"  docker-socket-proxy",[470,695,546],{"class":545},[470,697,699,701,703],{"class":472,"line":698},20,[470,700,560],{"class":541},[470,702,563],{"class":545},[470,704,705],{"class":480}," lscr.io\u002Flinuxserver\u002Fsocket-proxy:latest\n",[470,707,709,711,713],{"class":472,"line":708},21,[470,710,572],{"class":541},[470,712,563],{"class":545},[470,714,715],{"class":480}," arcane-docker-proxy\n",[470,717,719,722],{"class":472,"line":718},22,[470,720,721],{"class":541},"    security_opt",[470,723,546],{"class":545},[470,725,727,729],{"class":472,"line":726},23,[470,728,613],{"class":545},[470,730,731],{"class":480}," no-new-privileges:true\n",[470,733,735,737],{"class":472,"line":734},24,[470,736,638],{"class":541},[470,738,546],{"class":545},[470,740,742,744],{"class":472,"line":741},25,[470,743,613],{"class":545},[470,745,648],{"class":480},[470,747,749,751],{"class":472,"line":748},26,[470,750,622],{"class":541},[470,752,546],{"class":545},[470,754,756,758],{"class":472,"line":755},27,[470,757,613],{"class":545},[470,759,760],{"class":480}," \u002Fvar\u002Frun\u002Fdocker.sock:\u002Fvar\u002Frun\u002Fdocker.sock:ro\n",[470,762,764,767],{"class":472,"line":763},28,[470,765,766],{"class":541},"    environment",[470,768,546],{"class":545},[470,770,772,774],{"class":472,"line":771},29,[470,773,613],{"class":545},[470,775,776],{"class":480}," CONTAINERS=1\n",[470,778,780,782],{"class":472,"line":779},30,[470,781,613],{"class":545},[470,783,784],{"class":480}," IMAGES=1\n",[470,786,788,790],{"class":472,"line":787},31,[470,789,613],{"class":545},[470,791,792],{"class":480}," NETWORKS=1\n",[470,794,796,798],{"class":472,"line":795},32,[470,797,613],{"class":545},[470,799,800],{"class":480}," VOLUMES=1\n",[470,802,804,806],{"class":472,"line":803},33,[470,805,613],{"class":545},[470,807,808],{"class":480}," EXEC=1\n",[470,810,812,814],{"class":472,"line":811},34,[470,813,613],{"class":545},[470,815,816],{"class":480}," BUILD=1\n",[470,818,820,822],{"class":472,"line":819},35,[470,821,613],{"class":545},[470,823,824],{"class":480}," COMMIT=1\n",[470,826,828,830],{"class":472,"line":827},36,[470,829,613],{"class":545},[470,831,832],{"class":480}," INFO=1\n",[470,834,836,838],{"class":472,"line":835},37,[470,837,613],{"class":545},[470,839,840],{"class":480}," SYSTEM=1\n",[470,842,844,846],{"class":472,"line":843},38,[470,845,613],{"class":545},[470,847,848],{"class":480}," POST=1\n",[470,850,852,854],{"class":472,"line":851},39,[470,853,613],{"class":545},[470,855,856],{"class":480}," ALLOW_START=1\n",[470,858,860,862],{"class":472,"line":859},40,[470,861,613],{"class":545},[470,863,864],{"class":480}," ALLOW_STOP=1\n",[470,866,868,870],{"class":472,"line":867},41,[470,869,613],{"class":545},[470,871,872],{"class":480}," ALLOW_RESTARTS=1\n",[470,874,876,878,880],{"class":472,"line":875},42,[470,877,583],{"class":541},[470,879,563],{"class":545},[470,881,588],{"class":480},[470,883,885,888,890],{"class":472,"line":884},43,[470,886,887],{"class":541},"    read_only",[470,889,563],{"class":545},[470,891,893],{"class":892},"s08Ry"," true\n",[470,895,897,900],{"class":472,"line":896},44,[470,898,899],{"class":541},"    tmpfs",[470,901,546],{"class":545},[470,903,905,907],{"class":472,"line":904},45,[470,906,613],{"class":545},[470,908,909],{"class":480}," \u002Frun\n",[470,911,913],{"class":472,"line":912},46,[470,914,687],{"emptyLinePlaceholder":686},[470,916,918,921],{"class":472,"line":917},47,[470,919,920],{"class":541},"networks",[470,922,546],{"class":545},[470,924,926,929],{"class":472,"line":925},48,[470,927,928],{"class":541},"  arcane-internal",[470,930,546],{"class":545},[470,932,934,937,939],{"class":472,"line":933},49,[470,935,936],{"class":541},"    name",[470,938,563],{"class":545},[470,940,648],{"class":480},[390,942,943,946,947,950,951,950,954,957,958,961],{},[467,944,945],{},"POST=1"," est l'autorisation d'écriture globale nécessaire pour créer et supprimer conteneurs, images, réseaux et volumes ; ",[467,948,949],{},"ALLOW_START","\u002F",[467,952,953],{},"ALLOW_STOP",[467,955,956],{},"ALLOW_RESTARTS"," couvrent séparément les actions sur le cycle de vie des conteneurs. Tout le reste (Swarm, secrets, configs, auth) est laissé à sa valeur par défaut ",[467,959,960],{},"0",", puisque ce site ne les utilise pas.",[963,964,965,968],"tip",{"icon":465},[400,966,967],{},"✨ Ajoutez le label Watchtower pour automatiser les mises à jour :",[459,969,971],{"className":525,"code":970,"filename":527,"language":528,"meta":465,"style":465},"---\nservices:\n  arcane:\n    #...\n    labels:\n      - com.centurylinklabs.watchtower.enable=true\n",[467,972,973,977,983,989,995,1002],{"__ignoreMap":465},[470,974,975],{"class":472,"line":473},[470,976,535],{"class":476},[470,978,979,981],{"class":472,"line":538},[470,980,542],{"class":541},[470,982,546],{"class":545},[470,984,985,987],{"class":472,"line":549},[470,986,552],{"class":541},[470,988,546],{"class":545},[470,990,991],{"class":472,"line":557},[470,992,994],{"class":993},"sDvJj","    #...\n",[470,996,997,1000],{"class":472,"line":569},[470,998,999],{"class":541},"    labels",[470,1001,546],{"class":545},[470,1003,1004,1006],{"class":472,"line":580},[470,1005,613],{"class":545},[470,1007,1008],{"class":480}," com.centurylinklabs.watchtower.enable=true\n",[454,1010,1012],{"id":1011},"renseigner-vos-variables-denvironnement","Renseigner vos variables d'environnement",[400,1014,1015,1016,1018],{},"Remplissez le fichier ",[467,1017,495],{}," :",[459,1020,1024],{"className":1021,"code":1022,"filename":495,"language":1023,"meta":465,"style":465},"language-properties shiki shiki-themes github-dark material-theme github-dark","APP_URL=https:\u002F\u002Farcane.mondomaine.fr\nENCRYPTION_KEY=\nDOCKER_HOST=tcp:\u002F\u002Fdocker-socket-proxy:2375\nPUID=1000\nPGID=1000\n","properties",[467,1025,1026,1039,1047,1057,1067],{"__ignoreMap":465},[470,1027,1028,1032,1035],{"class":472,"line":473},[470,1029,1031],{"class":1030},"szyEh","APP_URL",[470,1033,1034],{"class":545},"=",[470,1036,1038],{"class":1037},"slcoZ","https:\u002F\u002Farcane.mondomaine.fr\n",[470,1040,1041,1044],{"class":472,"line":538},[470,1042,1043],{"class":1030},"ENCRYPTION_KEY",[470,1045,1046],{"class":545},"=\n",[470,1048,1049,1052,1054],{"class":472,"line":549},[470,1050,1051],{"class":1030},"DOCKER_HOST",[470,1053,1034],{"class":545},[470,1055,1056],{"class":1037},"tcp:\u002F\u002Fdocker-socket-proxy:2375\n",[470,1058,1059,1062,1064],{"class":472,"line":557},[470,1060,1061],{"class":1030},"PUID",[470,1063,1034],{"class":545},[470,1065,1066],{"class":1037},"1000\n",[470,1068,1069,1072,1074],{"class":472,"line":569},[470,1070,1071],{"class":1030},"PGID",[470,1073,1034],{"class":545},[470,1075,1066],{"class":1037},[1077,1078,1079,1095],"table",{},[1080,1081,1082],"thead",{},[1083,1084,1085,1089,1092],"tr",{},[1086,1087,1088],"th",{},"Variable",[1086,1090,1091],{},"Valeur",[1086,1093,1094],{},"Exemple",[1096,1097,1098,1115,1131,1147],"tbody",{},[1083,1099,1100,1107,1110],{},[1101,1102,1103],"td",{},[467,1104,1105],{"className":1021,"language":1023,"style":465},[470,1106,1031],{"class":1037},[1101,1108,1109],{},"L'URL publique par laquelle vous joindrez Arcane (voir l'exposition plus bas), sans port",[1101,1111,1112],{},[467,1113,1114],{},"https:\u002F\u002Farcane.mondomaine.fr",[1083,1116,1117,1123,1126],{},[1101,1118,1119],{},[467,1120,1121],{"className":1021,"language":1023,"style":465},[470,1122,1043],{"class":1037},[1101,1124,1125],{},"La clé générée ci-dessus",[1101,1127,1128],{},[467,1129,1130],{},"Q2pVEqsTNRkJSO9SkJzU3KZ2...",[1083,1132,1133,1139,1142],{},[1101,1134,1135],{},[467,1136,1137],{"className":1021,"language":1023,"style":465},[470,1138,1051],{"class":1037},[1101,1140,1141],{},"Pointe Arcane vers le socket proxy plutôt qu'un socket monté",[1101,1143,1144],{},[467,1145,1146],{},"tcp:\u002F\u002Fdocker-socket-proxy:2375",[1083,1148,1149,1158,1164],{},[1101,1150,1151,1153,1154],{},[467,1152,1061],{}," \u002F ",[467,1155,1156],{"className":1021,"language":1023,"style":465},[470,1157,1071],{"class":1037},[1101,1159,1160,1161],{},"Vos identifiants d'utilisateur et de groupe, via ",[467,1162,1163],{},"id votreutilisateur",[1101,1165,1166],{},[467,1167,1168],{},"1000",[400,1170,1171,1172,1175],{},"Déployez la stack. L'interface locale est disponible sur ",[467,1173,1174],{},"http:\u002F\u002Fipdevotreserveur:3552",".",[454,1177,1179],{"id":1178},"terminé","Terminé !",[1181,1182,1183,1186],"caution",{},[395,1184,1185],{},"Si ça ne marche pas :"," vérifiez les règles de votre pare-feu.",[441,1188,1190],{"id":1189},"exposer-arcane-avec-swag","Exposer Arcane avec SWAG",[400,1192,1193],{},"Le principal intérêt de cette installation est de pouvoir accéder à Arcane à distance depuis tous vos appareils. Nous allons l'exposer avec SWAG.",[1195,1196,1197,1198,1201,1202,1205,1206,1209],"warning",{},"La connexion locale d'Arcane n'a pas d'authentification multifacteur. Ne l'exposez que si vous utilisez ",[403,1199,140],{"href":1200},"\u002Fserveex\u002Fsecurity\u002Fpocket-id"," (voir plus bas) ou ",[403,1203,254],{"href":1204},"\u002Fserveex\u002Fadvanced\u002Fauthentik"," pour la connexion. Sinon, ne l'exposez pas avec SWAG. Utilisez plutôt un VPN comme ",[403,1207,118],{"href":1208},"\u002Fserveex\u002Fcore\u002Fwireguard",", surtout vu le niveau d'accès qu'Arcane a sur votre hôte.",[390,1211,1212,1213,1216,1217,1220,1221,1224,1225,1229,1230,1234,1235,1238,1239,1241,1242,1175],{},"Nous partons du principe que vous avez le sous-domaine ",[467,1214,1215],{},"arcane.mondomaine.fr"," avec un ",[467,1218,1219],{},"CNAME"," pointant vers ",[467,1222,1223],{},"mondomaine.fr"," dans votre ",[403,1226,1228],{"href":1227},"\u002Fgeneral\u002Fnetworking\u002Fdns","zone DNS",". Et bien sûr, ",[403,1231,1233],{"href":1232},"\u002Fserveex\u002Fsecurity\u002Fcloudflare","à moins d'utiliser Cloudflare Zero Trust",", le port ",[467,1236,1237],{},"443"," de votre box doit être redirigé vers le port ",[467,1240,1237],{}," de votre serveur dans les ",[403,1243,1245],{"href":1244},"\u002Fgeneral\u002Fnetworking\u002Fnat","règles NAT",[450,1247,1248,1252,1255,1369,1372,1382,1386,1392,1403,1419,1422,1645,1658,1674],{"level":452},[454,1249,1251],{"id":1250},"ajouter-le-réseau-darcane-à-swag","Ajouter le réseau d'Arcane à SWAG",[400,1253,1254],{},"Allez dans Dockge et modifiez le fichier compose de SWAG en y ajoutant le réseau d'Arcane :",[459,1256,1258],{"className":525,"code":1257,"filename":527,"language":528,"meta":465,"style":465},"---\nservices:\n  swag:\n     container_name: # ...\n      # ... \n     networks:              # Rattache le conteneur au réseau personnalisé \n      # ...           \n      - arcane              # Nom du réseau déclaré\n\nnetworks:                   # Définit le réseau personnalisé\n  # ...\n  arcane:                   # Nom du réseau déclaré\n    name: arcane_default    # Nom réel du réseau externe\n    external: true          # Le marque comme défini à l'extérieur\n",[467,1259,1260,1264,1270,1277,1287,1292,1302,1307,1317,1321,1330,1335,1344,1356],{"__ignoreMap":465},[470,1261,1262],{"class":472,"line":473},[470,1263,535],{"class":476},[470,1265,1266,1268],{"class":472,"line":538},[470,1267,542],{"class":541},[470,1269,546],{"class":545},[470,1271,1272,1275],{"class":472,"line":549},[470,1273,1274],{"class":541},"  swag",[470,1276,546],{"class":545},[470,1278,1279,1282,1284],{"class":472,"line":557},[470,1280,1281],{"class":541},"     container_name",[470,1283,563],{"class":545},[470,1285,1286],{"class":993}," # ...\n",[470,1288,1289],{"class":472,"line":569},[470,1290,1291],{"class":993},"      # ... \n",[470,1293,1294,1297,1299],{"class":472,"line":580},[470,1295,1296],{"class":541},"     networks",[470,1298,563],{"class":545},[470,1300,1301],{"class":993},"              # Rattache le conteneur au réseau personnalisé \n",[470,1303,1304],{"class":472,"line":591},[470,1305,1306],{"class":993},"      # ...           \n",[470,1308,1309,1311,1314],{"class":472,"line":602},[470,1310,613],{"class":545},[470,1312,1313],{"class":480}," arcane",[470,1315,1316],{"class":993},"              # Nom du réseau déclaré\n",[470,1318,1319],{"class":472,"line":610},[470,1320,687],{"emptyLinePlaceholder":686},[470,1322,1323,1325,1327],{"class":472,"line":619},[470,1324,920],{"class":541},[470,1326,563],{"class":545},[470,1328,1329],{"class":993},"                   # Définit le réseau personnalisé\n",[470,1331,1332],{"class":472,"line":627},[470,1333,1334],{"class":993},"  # ...\n",[470,1336,1337,1339,1341],{"class":472,"line":635},[470,1338,552],{"class":541},[470,1340,563],{"class":545},[470,1342,1343],{"class":993},"                   # Nom du réseau déclaré\n",[470,1345,1346,1348,1350,1353],{"class":472,"line":643},[470,1347,936],{"class":541},[470,1349,563],{"class":545},[470,1351,1352],{"class":480}," arcane_default",[470,1354,1355],{"class":993},"    # Nom réel du réseau externe\n",[470,1357,1358,1361,1363,1366],{"class":472,"line":651},[470,1359,1360],{"class":541},"    external",[470,1362,563],{"class":545},[470,1364,1365],{"class":892}," true",[470,1367,1368],{"class":993},"          # Le marque comme défini à l'extérieur\n",[400,1370,1371],{},"Redéployez la stack et attendez que SWAG soit pleinement opérationnel.",[390,1373,1374,1375,1378,1379,1175],{},"Nous partons ici du principe que le nom du réseau d'Arcane est ",[467,1376,1377],{},"arcane_default",". Vous pouvez vérifier la connexion en visitant le tableau de bord de SWAG sur ",[467,1380,1381],{},"http:\u002F\u002Fipdevotreserveur:81",[454,1383,1385],{"id":1384},"créer-le-fichier-subdomainconf","Créer le fichier subdomain.conf",[400,1387,1388,1389,1018],{},"Dans les dossiers de Swag, créez le fichier ",[467,1390,1391],{},"arcane.subdomain.conf",[963,1393,1395,1396,1399,1400,1402],{"icon":465,"to":1394},"\u002Fserveex\u002Ffiles\u002Ffile-browser-quantum","✨ ",[395,1397,1398],{},"Astuce :"," utilisez ",[395,1401,208],{}," pour naviguer et modifier les fichiers plutôt que des commandes dans le terminal.",[459,1404,1406],{"className":461,"code":1405,"filename":463,"language":464,"meta":465,"style":465},"sudo nano \u002Fsrv\u002Fdocker\u002Fswag\u002Fconfig\u002Fnginx\u002Fproxy-confs\u002Farcane.subdomain.conf\n",[467,1407,1408],{"__ignoreMap":465},[470,1409,1410,1413,1416],{"class":472,"line":473},[470,1411,1412],{"class":476},"sudo",[470,1414,1415],{"class":480}," nano",[470,1417,1418],{"class":480}," \u002Fsrv\u002Fdocker\u002Fswag\u002Fconfig\u002Fnginx\u002Fproxy-confs\u002Farcane.subdomain.conf\n",[400,1420,1421],{},"Collez la configuration suivante :",[459,1423,1427],{"className":1424,"code":1425,"filename":1391,"language":1426,"meta":465,"style":465},"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 arcane.*;\n\n    include \u002Fconfig\u002Fnginx\u002Fssl.conf;\n\n    client_max_body_size 0;\n\n    location \u002F {\n        include \u002Fconfig\u002Fnginx\u002Fproxy.conf;\n        include \u002Fconfig\u002Fnginx\u002Fresolver.conf;\n        set $upstream_app arcane;\n        set $upstream_port 3552;\n        set $upstream_proto http;\n        proxy_pass $upstream_proto:\u002F\u002F$upstream_app:$upstream_port;\n\n        proxy_set_header Upgrade $http_upgrade;\n        proxy_set_header Connection \"upgrade\";\n    }\n}\n","nginx",[467,1428,1429,1434,1438,1447,1461,1470,1474,1484,1488,1498,1502,1511,1515,1525,1535,1544,1557,1571,1582,1604,1608,1623,1635,1640],{"__ignoreMap":465},[470,1430,1431],{"class":472,"line":473},[470,1432,1433],{"class":993},"## Version 2023\u002F12\u002F19\n",[470,1435,1436],{"class":472,"line":538},[470,1437,687],{"emptyLinePlaceholder":686},[470,1439,1440,1444],{"class":472,"line":549},[470,1441,1443],{"class":1442},"sAoO4","server",[470,1445,1446],{"class":1037}," {\n",[470,1448,1449,1453,1455,1458],{"class":472,"line":557},[470,1450,1452],{"class":1451},"sJPTy","    listen ",[470,1454,1237],{"class":488},[470,1456,1457],{"class":1037}," ssl",[470,1459,1460],{"class":545},";\n",[470,1462,1463,1465,1468],{"class":472,"line":569},[470,1464,1452],{"class":1451},[470,1466,1467],{"class":1037},"[::]:443 ssl",[470,1469,1460],{"class":545},[470,1471,1472],{"class":472,"line":580},[470,1473,687],{"emptyLinePlaceholder":686},[470,1475,1476,1479,1482],{"class":472,"line":591},[470,1477,1478],{"class":1451},"    server_name ",[470,1480,1481],{"class":1037},"arcane.*",[470,1483,1460],{"class":545},[470,1485,1486],{"class":472,"line":602},[470,1487,687],{"emptyLinePlaceholder":686},[470,1489,1490,1493,1496],{"class":472,"line":610},[470,1491,1492],{"class":1451},"    include ",[470,1494,1495],{"class":1037},"\u002Fconfig\u002Fnginx\u002Fssl.conf",[470,1497,1460],{"class":545},[470,1499,1500],{"class":472,"line":619},[470,1501,687],{"emptyLinePlaceholder":686},[470,1503,1504,1507,1509],{"class":472,"line":627},[470,1505,1506],{"class":1451},"    client_max_body_size ",[470,1508,960],{"class":488},[470,1510,1460],{"class":545},[470,1512,1513],{"class":472,"line":635},[470,1514,687],{"emptyLinePlaceholder":686},[470,1516,1517,1520,1522],{"class":472,"line":643},[470,1518,1519],{"class":1442},"    location",[470,1521,1153],{"class":476},[470,1523,1524],{"class":1037},"{\n",[470,1526,1527,1530,1533],{"class":472,"line":651},[470,1528,1529],{"class":1451},"        include ",[470,1531,1532],{"class":1037},"\u002Fconfig\u002Fnginx\u002Fproxy.conf",[470,1534,1460],{"class":545},[470,1536,1537,1539,1542],{"class":472,"line":659},[470,1538,1529],{"class":1451},[470,1540,1541],{"class":1037},"\u002Fconfig\u002Fnginx\u002Fresolver.conf",[470,1543,1460],{"class":545},[470,1545,1546,1549,1552,1555],{"class":472,"line":667},[470,1547,1548],{"class":1451},"        set ",[470,1550,1551],{"class":545},"$",[470,1553,1554],{"class":1037},"upstream_app arcane",[470,1556,1460],{"class":545},[470,1558,1559,1561,1563,1566,1569],{"class":472,"line":675},[470,1560,1548],{"class":1451},[470,1562,1551],{"class":545},[470,1564,1565],{"class":1037},"upstream_port ",[470,1567,1568],{"class":488},"3552",[470,1570,1460],{"class":545},[470,1572,1573,1575,1577,1580],{"class":472,"line":683},[470,1574,1548],{"class":1451},[470,1576,1551],{"class":545},[470,1578,1579],{"class":1037},"upstream_proto http",[470,1581,1460],{"class":545},[470,1583,1584,1587,1589,1592,1594,1597,1599,1602],{"class":472,"line":690},[470,1585,1586],{"class":1451},"        proxy_pass ",[470,1588,1551],{"class":545},[470,1590,1591],{"class":1037},"upstream_proto:\u002F\u002F",[470,1593,1551],{"class":545},[470,1595,1596],{"class":1037},"upstream_app:",[470,1598,1551],{"class":545},[470,1600,1601],{"class":1037},"upstream_port",[470,1603,1460],{"class":545},[470,1605,1606],{"class":472,"line":698},[470,1607,687],{"emptyLinePlaceholder":686},[470,1609,1610,1613,1616,1618,1621],{"class":472,"line":708},[470,1611,1612],{"class":1451},"        proxy_set_header ",[470,1614,1615],{"class":1037},"Upgrade ",[470,1617,1551],{"class":545},[470,1619,1620],{"class":1037},"http_upgrade",[470,1622,1460],{"class":545},[470,1624,1625,1627,1630,1633],{"class":472,"line":718},[470,1626,1612],{"class":1451},[470,1628,1629],{"class":1037},"Connection ",[470,1631,1632],{"class":480},"\"upgrade\"",[470,1634,1460],{"class":545},[470,1636,1637],{"class":472,"line":726},[470,1638,1639],{"class":1037},"    }\n",[470,1641,1642],{"class":472,"line":734},[470,1643,1644],{"class":1037},"}\n",[390,1646,1647,1648,950,1651,1654,1655,1175],{},"Les mises à jour en direct d'Arcane passent par un websocket, d'où les en-têtes ",[467,1649,1650],{},"Upgrade",[467,1652,1653],{},"Connection"," ci-dessus, en plus de l'inclusion habituelle de ",[467,1656,1657],{},"proxy.conf",[400,1659,1660,1661,1665,1666,1669,1670,1673],{},"Appuyez sur ",[1662,1663],"kbd",{"value":1664},"Ctrl+O",", puis ",[1662,1667],{"value":1668},"Enter"," pour enregistrer, et ",[1662,1671],{"value":1672},"Ctrl+X"," pour quitter.",[454,1675,1179],{"id":1676},"terminé-1",[400,1678,1679],{},"Et voilà ! Arcane est maintenant accessible depuis internet.",[441,1681,1683],{"id":1682},"connecter-un-hôte-distant","Connecter un hôte distant",[400,1685,1686,1687,1690,1691,1694],{},"Arcane peut gérer plusieurs hôtes Docker depuis une seule instance. Chaque hôte distant fait tourner un conteneur ",[395,1688,1689],{},"agent"," léger qui se reconnecte à Arcane. Plutôt que d'exposer cette connexion sur internet, nous la ferons passer par le ",[403,1692,1693],{"href":1208},"VPN WireGuard"," déjà mis en place plus tôt, ainsi le trafic de l'agent ne quitte jamais votre réseau privé.",[390,1696,1698,1699,1702,1703,1706,1707,1710],{"to":1697},"\u002Fserveex\u002Fcore\u002Fwireguard#client-server-setup","Ceci suppose que l'hôte Arcane et l'hôte distant font déjà tourner leur propre client WireGuard, connectés à votre VPN comme décrit dans ",[395,1700,1701],{},"Client Server Setup",". Notez l'adresse VPN que wg-easy a attribuée à l'",[395,1704,1705],{},"hôte Arcane"," (par exemple ",[467,1708,1709],{},"10.8.0.3",") ; c'est l'adresse que visera l'agent distant ci-dessous.",[450,1712,1713,1717,1729,1733,1742,1844,1847,1850,1854,1857],{"level":452},[454,1714,1716],{"id":1715},"ajouter-lenvironnement-distant-dans-arcane","Ajouter l'environnement distant dans Arcane",[400,1718,1719,1720,1724,1725,1728],{},"Dans Arcane, allez dans ",[1721,1722,1723],"em",{},"Environments > Add Environment",". Arcane génère un ",[395,1726,1727],{},"Agent Token"," à usage unique et le bout de configuration compose à déployer sur l'hôte distant.",[454,1730,1732],{"id":1731},"déployer-lagent-sur-lhôte-distant","Déployer l'agent sur l'hôte distant",[400,1734,1735,1736,507,1738,1741],{},"Sur l'hôte distant, ouvrez Dockge, cliquez sur ",[467,1737,506],{},[467,1739,1740],{},"arcane-agent",", et ajoutez la configuration suivante, en remplaçant le token par celui qu'Arcane vous a donné et l'URL par l'adresse VPN de votre hôte Arcane :",[459,1743,1745],{"className":525,"code":1744,"filename":527,"language":528,"meta":465,"style":465},"---\nservices:\n  arcane-agent:\n    image: ghcr.io\u002Fgetarcaneapp\u002Fagent:latest\n    container_name: arcane-agent\n    restart: unless-stopped\n    environment:\n      - EDGE_AGENT=true\n      - EDGE_TRANSPORT=poll\n      - AGENT_TOKEN=arc_votretoken\n      - MANAGER_API_URL=http:\u002F\u002F10.8.0.3:3552\n    volumes:\n      - \u002Fvar\u002Frun\u002Fdocker.sock:\u002Fvar\u002Frun\u002Fdocker.sock\n      - \u002Fsrv\u002Fdocker\u002Farcane-agent\u002Fdata:\u002Fapp\u002Fdata\n",[467,1746,1747,1751,1757,1764,1773,1782,1790,1796,1803,1810,1817,1824,1830,1837],{"__ignoreMap":465},[470,1748,1749],{"class":472,"line":473},[470,1750,535],{"class":476},[470,1752,1753,1755],{"class":472,"line":538},[470,1754,542],{"class":541},[470,1756,546],{"class":545},[470,1758,1759,1762],{"class":472,"line":549},[470,1760,1761],{"class":541},"  arcane-agent",[470,1763,546],{"class":545},[470,1765,1766,1768,1770],{"class":472,"line":557},[470,1767,560],{"class":541},[470,1769,563],{"class":545},[470,1771,1772],{"class":480}," ghcr.io\u002Fgetarcaneapp\u002Fagent:latest\n",[470,1774,1775,1777,1779],{"class":472,"line":569},[470,1776,572],{"class":541},[470,1778,563],{"class":545},[470,1780,1781],{"class":480}," arcane-agent\n",[470,1783,1784,1786,1788],{"class":472,"line":580},[470,1785,583],{"class":541},[470,1787,563],{"class":545},[470,1789,588],{"class":480},[470,1791,1792,1794],{"class":472,"line":591},[470,1793,766],{"class":541},[470,1795,546],{"class":545},[470,1797,1798,1800],{"class":472,"line":602},[470,1799,613],{"class":545},[470,1801,1802],{"class":480}," EDGE_AGENT=true\n",[470,1804,1805,1807],{"class":472,"line":610},[470,1806,613],{"class":545},[470,1808,1809],{"class":480}," EDGE_TRANSPORT=poll\n",[470,1811,1812,1814],{"class":472,"line":619},[470,1813,613],{"class":545},[470,1815,1816],{"class":480}," AGENT_TOKEN=arc_votretoken\n",[470,1818,1819,1821],{"class":472,"line":627},[470,1820,613],{"class":545},[470,1822,1823],{"class":480}," MANAGER_API_URL=http:\u002F\u002F10.8.0.3:3552\n",[470,1825,1826,1828],{"class":472,"line":635},[470,1827,622],{"class":541},[470,1829,546],{"class":545},[470,1831,1832,1834],{"class":472,"line":643},[470,1833,613],{"class":545},[470,1835,1836],{"class":480}," \u002Fvar\u002Frun\u002Fdocker.sock:\u002Fvar\u002Frun\u002Fdocker.sock\n",[470,1838,1839,1841],{"class":472,"line":651},[470,1840,613],{"class":545},[470,1842,1843],{"class":480}," \u002Fsrv\u002Fdocker\u002Farcane-agent\u002Fdata:\u002Fapp\u002Fdata\n",[390,1845,1846],{},"En « mode edge » : l'agent se connecte vers Arcane plutôt que l'inverse, il fonctionne donc derrière un NAT sans rien rediriger sur la box de l'hôte distant. Utiliser l'adresse VPN plutôt qu'un domaine public fait que cette connexion reste sur le tunnel WireGuard même si l'agent est techniquement en mode « edge ». Contrairement au manager ci-dessus, l'agent a besoin du vrai socket Docker monté directement, puisque c'est lui qui exécute réellement les commandes sur cet hôte ; il n'existe pas d'option socket-proxy documentée pour lui.",[400,1848,1849],{},"Déployez la stack.",[454,1851,1853],{"id":1852},"vérifier-la-connexion","Vérifier la connexion",[400,1855,1856],{},"De retour dans Arcane, le nouvel environnement devrait apparaître comme connecté en quelques secondes. Basculez dessus depuis le sélecteur d'environnement pour gérer les conteneurs et les stacks de cet hôte.",[454,1858,1179],{"id":1859},"terminé-2",[441,1861,1863],{"id":1862},"connecter-pocket-id","Connecter Pocket ID",[400,1865,1866],{},"Arcane gère OIDC nativement, vous pouvez donc exiger une connexion Pocket ID avant de laisser qui que ce soit gérer vos conteneurs, plutôt qu'avec (ou en plus de) les comptes propres à l'application.",[450,1868,1869,1873,1883,1891,1895,1901,1960,2008,2011,2022],{"level":452},[454,1870,1872],{"id":1871},"enregistrer-arcane-comme-client-oidc","Enregistrer Arcane comme client OIDC",[400,1874,1875,1879,1880,1882],{},[403,1876,1878],{"href":1877},"\u002Fserveex\u002Fsecurity\u002Fpocket-id#registering-an-oidc-client","Enregistrez un client OIDC dans Pocket ID"," nommé ",[467,1881,510],{},", avec cette URL de callback :",[459,1884,1889],{"className":1885,"code":1887,"language":1888,"meta":465},[1886],"language-text","https:\u002F\u002Farcane.mondomaine.fr\u002Fauth\u002Foidc\u002Fcallback\n","text",[467,1890,1887],{"__ignoreMap":465},[454,1892,1894],{"id":1893},"activer-oidc-dans-arcane","Activer OIDC dans Arcane",[400,1896,1897,1898,1900],{},"Modifiez le fichier ",[467,1899,495],{}," d'Arcane et ajoutez :",[459,1902,1904],{"className":1021,"code":1903,"filename":495,"language":1023,"meta":465,"style":465},"OIDC_ENABLED=true\nOIDC_CLIENT_ID=\nOIDC_CLIENT_SECRET=\nOIDC_ISSUER_URL=https:\u002F\u002Fid.mondomaine.fr\nOIDC_SCOPES=openid email profile\nOIDC_PROVIDER_NAME=Pocket ID\n",[467,1905,1906,1916,1923,1930,1940,1950],{"__ignoreMap":465},[470,1907,1908,1911,1913],{"class":472,"line":473},[470,1909,1910],{"class":1030},"OIDC_ENABLED",[470,1912,1034],{"class":545},[470,1914,1915],{"class":1037},"true\n",[470,1917,1918,1921],{"class":472,"line":538},[470,1919,1920],{"class":1030},"OIDC_CLIENT_ID",[470,1922,1046],{"class":545},[470,1924,1925,1928],{"class":472,"line":549},[470,1926,1927],{"class":1030},"OIDC_CLIENT_SECRET",[470,1929,1046],{"class":545},[470,1931,1932,1935,1937],{"class":472,"line":557},[470,1933,1934],{"class":1030},"OIDC_ISSUER_URL",[470,1936,1034],{"class":545},[470,1938,1939],{"class":1037},"https:\u002F\u002Fid.mondomaine.fr\n",[470,1941,1942,1945,1947],{"class":472,"line":569},[470,1943,1944],{"class":1030},"OIDC_SCOPES",[470,1946,1034],{"class":545},[470,1948,1949],{"class":1037},"openid email profile\n",[470,1951,1952,1955,1957],{"class":472,"line":580},[470,1953,1954],{"class":1030},"OIDC_PROVIDER_NAME",[470,1956,1034],{"class":545},[470,1958,1959],{"class":1037},"Pocket ID\n",[1077,1961,1962,1970],{},[1080,1963,1964],{},[1083,1965,1966,1968],{},[1086,1967,1088],{},[1086,1969,1091],{},[1096,1971,1972,1983,1994],{},[1083,1973,1974,1980],{},[1101,1975,1976],{},[467,1977,1978],{"className":1021,"language":1023,"style":465},[470,1979,1920],{"class":1037},[1101,1981,1982],{},"Le client ID copié depuis Pocket ID",[1083,1984,1985,1991],{},[1101,1986,1987],{},[467,1988,1989],{"className":1021,"language":1023,"style":465},[470,1990,1927],{"class":1037},[1101,1992,1993],{},"Le client secret copié depuis Pocket ID",[1083,1995,1996,2002],{},[1101,1997,1998],{},[467,1999,2000],{"className":1021,"language":1023,"style":465},[470,2001,1934],{"class":1037},[1101,2003,2004,2005],{},"L'URL publique de Pocket ID, sans slash final ; Arcane découvre le reste via ",[467,2006,2007],{},".well-known\u002Fopenid-configuration",[400,2009,2010],{},"Redéployez la stack.",[963,2012,2013,2014,2017,2018,2021],{"icon":465},"✨ Pour aller directement sur Pocket ID et masquer le formulaire de connexion local, mettez ",[467,2015,2016],{},"OIDC_AUTO_REDIRECT_TO_PROVIDER=true",", ou désactivez complètement la connexion locale dans ",[1721,2019,2020],{},"Settings > Authentication"," pour un accès uniquement OIDC.",[454,2023,1179],{"id":2024},"terminé-3",[400,2026,2027],{},"Et voilà ! Arcane propose désormais une option « Login with Pocket ID » à côté du formulaire de connexion local.",[963,2029,2030,2036],{"icon":465,"to":1204},[400,2031,2032,2033,2035],{},"✨ Vous pouvez utiliser ",[395,2034,254],{}," plutôt que Pocket ID :",[2037,2038,2039,2052,2063],"ol",{},[419,2040,2041,2042,2044,2045,2048,2049,1175],{},"Dans Authentik, créez une application et un provider OAuth2\u002FOpenID Connect nommé ",[467,2043,258],{},", avec une redirect URI (de type ",[467,2046,2047],{},"Strict",") valant ",[467,2050,2051],{},"https:\u002F\u002Farcane.mondomaine.fr\u002Fauth\u002Foidc\u002Fcallback",[419,2053,2054,2055,2058,2059,2062],{},"Notez les ",[395,2056,2057],{},"Client ID"," et ",[395,2060,2061],{},"Client Secret"," du provider.",[419,2064,2065,2066,2068,2069,2072],{},"Dans le ",[467,2067,495],{}," d'Arcane, mettez ",[467,2070,2071],{},"OIDC_ISSUER_URL=https:\u002F\u002Fauthentik.mondomaine.fr\u002Fapplication\u002Fo\u002Farcane\u002F",", puis renseignez le Client ID et le Client Secret.",[2074,2075,2076],"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 pre.shiki code .swwWl, html code.shiki .swwWl{--shiki-light:#79B8FF;--shiki-default:#F78C6C;--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 .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 .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}",{"title":465,"searchDepth":538,"depth":538,"links":2078},[2079,2085,2090,2096],{"id":443,"depth":538,"text":444,"children":2080},[2081,2082,2083,2084],{"id":456,"depth":549,"text":457},{"id":499,"depth":549,"text":500},{"id":1011,"depth":549,"text":1012},{"id":1178,"depth":549,"text":1179},{"id":1189,"depth":538,"text":1190,"children":2086},[2087,2088,2089],{"id":1250,"depth":549,"text":1251},{"id":1384,"depth":549,"text":1385},{"id":1676,"depth":549,"text":1179},{"id":1682,"depth":538,"text":1683,"children":2091},[2092,2093,2094,2095],{"id":1715,"depth":549,"text":1716},{"id":1731,"depth":549,"text":1732},{"id":1852,"depth":549,"text":1853},{"id":1859,"depth":549,"text":1179},{"id":1862,"depth":538,"text":1863,"children":2097},[2098,2099,2100],{"id":1871,"depth":549,"text":1872},{"id":1893,"depth":549,"text":1894},{"id":2024,"depth":549,"text":1179},[2102],"Djeex","Installer Arcane, une interface web moderne de gestion Docker et Compose, comme alternative plus avancée à Dockge avec gestion multi-hôtes et connexion OIDC.","md",null,{},{"title":258,"description":2103},"LQ24bsFtIujTPuikape1ybklD96dhFb0OVTldRWKjS0",[2110,2112],{"title":254,"path":255,"stem":256,"description":2111,"children":-1},"Installer Authentik comme fournisseur d'identité auto-hébergé, configurer le MFA et protéger vos services avec du SSO et l'authentification via reverse proxy.",{"title":100,"path":268,"stem":269,"description":2113,"icon":25,"children":-1},"Introduction à Stockeex, un projet personnel de gestion de stock et d'inventaire. Documentation en cours de rédaction.",1788645842368]