[{"data":1,"prerenderedAt":1357},["ShallowReactive",2],{"navigation_docs_fr":3,"-fr-serveex-core-docker-":376,"-fr-serveex-core-docker--surround":1352},[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":114,"body":378,"contributors":1344,"description":1346,"extension":1347,"hideCopyPage":15,"hideHeader":15,"hideToc":15,"links":1348,"meta":1349,"navigation":553,"path":115,"seo":1350,"stem":116,"__hash__":1351},"docs_fr\u002Ffr\u002F3.serveex\u002F2.core\u002F2.docker.md",{"type":379,"value":380,"toc":1329},"minimark",[381,389,405,413,423,430,435,684,696,721,731,737,742,746,751,1002,1005,1014,1021,1024,1322,1325],[382,383],"ellipsis",{"blur":384,"left":385,"top":386,"width":387,"z-index":388},"140px","0px","10rem","40rem","60",[390,391,392,393,397,398,397,401,404],"p",{},"Chaque application de ce guide, ",[394,395,176],"a",{"href":396},"\u002Fserveex\u002Fmedia\u002Fjellyfin",", ",[394,399,244],{"href":400},"\u002Fserveex\u002Fapps\u002Fvaultwarden",[394,402,194],{"href":403},"\u002Fserveex\u002Fcloud\u002Fimmich",", pour n'en citer que quelques-unes, arrive avec sa propre liste de dépendances, sa propre version de Python ou de Node, ses propres bizarreries. Installer tout ça directement sur Debian fonctionne un moment, jusqu'à ce que deux applications réclament une version différente de la même bibliothèque, ou qu'en désinstaller une laisse des fichiers éparpillés dans le système sans moyen propre de revenir en arrière.",[390,406,407,408,412],{},"Un ",[409,410,411],"strong",{},"conteneur"," contourne le problème : il empaquette une application avec tout ce dont elle a besoin pour tourner, isolée du reste du système et de tous les autres conteneurs. En démarrer un ne touche pas aux paquets de Debian, et le supprimer tient en une commande qui ne laisse rien derrière. Ce n'est pas non plus une machine virtuelle, il n'y a pas de second système d'exploitation à démarrer ni de ressources à réserver à l'avance : un conteneur partage le noyau de l'hôte et démarre en une seconde environ, en n'utilisant que la RAM et le CPU dont l'application à l'intérieur a réellement besoin.",[390,414,415,417,418,422],{},[409,416,114],{}," est l'outil qui construit, démarre et gère ces conteneurs. Pointez-le sur une ",[419,420,421],"em",{},"image",", un instantané prêt à l'emploi d'une application maintenu par ses développeurs, et il la télécharge et la lance en une commande. Tout le reste de Serveex est bâti dessus : chaque application à partir d'ici est un conteneur Docker, ou une poignée de conteneurs qui travaillent ensemble.",[390,424,425],{},[426,427],"img",{"alt":428,"src":429},"picture","\u002Fimg\u002Fserveex\u002Fdocker.svg",[431,432,434],"h2",{"id":433},"installer-docker","Installer Docker",[436,437,439,444,648,652,680],"steps",{"level":438},"3",[440,441,443],"h3",{"id":442},"ajouter-le-dépôt-docker-et-la-clé-gpg","Ajouter le dépôt Docker et la clé GPG",[445,446,452],"pre",{"className":447,"code":448,"filename":449,"language":450,"meta":451,"style":451},"language-bash shiki shiki-themes github-dark material-theme github-dark","# Ajoute la clé GPG officielle de Docker :\nsudo apt-get update\nsudo apt-get install ca-certificates curl\nsudo install -m 0755 -d \u002Fetc\u002Fapt\u002Fkeyrings\nsudo curl -fsSL https:\u002F\u002Fdownload.docker.com\u002Flinux\u002Fdebian\u002Fgpg -o \u002Fetc\u002Fapt\u002Fkeyrings\u002Fdocker.asc\nsudo chmod a+r \u002Fetc\u002Fapt\u002Fkeyrings\u002Fdocker.asc\n\n# Ajoute le dépôt aux sources Apt :\necho   \"deb [arch=$(dpkg --print-architecture) signed-by=\u002Fetc\u002Fapt\u002Fkeyrings\u002Fdocker.asc] https:\u002F\u002Fdownload.docker.com\u002Flinux\u002Fdebian   $(. \u002Fetc\u002Fos-release && echo \"$VERSION_CODENAME\") stable\" |   sudo tee \u002Fetc\u002Fapt\u002Fsources.list.d\u002Fdocker.list > \u002Fdev\u002Fnull\nsudo apt-get update\n","Terminal","bash","",[453,454,455,464,478,494,515,535,548,555,561,639],"code",{"__ignoreMap":451},[456,457,460],"span",{"class":458,"line":459},"line",1,[456,461,463],{"class":462},"sDvJj","# Ajoute la clé GPG officielle de Docker :\n",[456,465,467,471,475],{"class":458,"line":466},2,[456,468,470],{"class":469},"sEgDM","sudo",[456,472,474],{"class":473},"s11XM"," apt-get",[456,476,477],{"class":473}," update\n",[456,479,481,483,485,488,491],{"class":458,"line":480},3,[456,482,470],{"class":469},[456,484,474],{"class":473},[456,486,487],{"class":473}," install",[456,489,490],{"class":473}," ca-certificates",[456,492,493],{"class":473}," curl\n",[456,495,497,499,501,505,509,512],{"class":458,"line":496},4,[456,498,470],{"class":469},[456,500,487],{"class":473},[456,502,504],{"class":503},"sJWha"," -m",[456,506,508],{"class":507},"swwWl"," 0755",[456,510,511],{"class":503}," -d",[456,513,514],{"class":473}," \u002Fetc\u002Fapt\u002Fkeyrings\n",[456,516,518,520,523,526,529,532],{"class":458,"line":517},5,[456,519,470],{"class":469},[456,521,522],{"class":473}," curl",[456,524,525],{"class":503}," -fsSL",[456,527,528],{"class":473}," https:\u002F\u002Fdownload.docker.com\u002Flinux\u002Fdebian\u002Fgpg",[456,530,531],{"class":503}," -o",[456,533,534],{"class":473}," \u002Fetc\u002Fapt\u002Fkeyrings\u002Fdocker.asc\n",[456,536,538,540,543,546],{"class":458,"line":537},6,[456,539,470],{"class":469},[456,541,542],{"class":473}," chmod",[456,544,545],{"class":473}," a+r",[456,547,534],{"class":473},[456,549,551],{"class":458,"line":550},7,[456,552,554],{"emptyLinePlaceholder":553},true,"\n",[456,556,558],{"class":458,"line":557},8,[456,559,560],{"class":462},"# Ajoute le dépôt aux sources Apt :\n",[456,562,564,568,572,575,578,581,584,587,590,592,595,598,601,604,607,611,614,617,620,624,627,630,633,636],{"class":458,"line":563},9,[456,565,567],{"class":566},"sJGgK","echo",[456,569,571],{"class":570},"s8K8j","   \"",[456,573,574],{"class":473},"deb [arch=",[456,576,577],{"class":570},"$(",[456,579,580],{"class":469},"dpkg",[456,582,583],{"class":503}," --print-architecture",[456,585,586],{"class":570},")",[456,588,589],{"class":473}," signed-by=\u002Fetc\u002Fapt\u002Fkeyrings\u002Fdocker.asc] https:\u002F\u002Fdownload.docker.com\u002Flinux\u002Fdebian   ",[456,591,577],{"class":570},[456,593,594],{"class":566},".",[456,596,597],{"class":473}," \u002Fetc\u002Fos-release ",[456,599,600],{"class":570},"&&",[456,602,603],{"class":566}," echo",[456,605,606],{"class":570}," \"",[456,608,610],{"class":609},"slcoZ","$VERSION_CODENAME",[456,612,613],{"class":570},"\")",[456,615,616],{"class":473}," stable",[456,618,619],{"class":570},"\"",[456,621,623],{"class":622},"sJPTy"," |",[456,625,626],{"class":469},"   sudo",[456,628,629],{"class":473}," tee",[456,631,632],{"class":473}," \u002Fetc\u002Fapt\u002Fsources.list.d\u002Fdocker.list",[456,634,635],{"class":622}," >",[456,637,638],{"class":473}," \u002Fdev\u002Fnull\n",[456,640,642,644,646],{"class":458,"line":641},10,[456,643,470],{"class":469},[456,645,474],{"class":473},[456,647,477],{"class":473},[440,649,651],{"id":650},"installer-les-paquets","Installer les paquets",[445,653,655],{"className":447,"code":654,"filename":449,"language":450,"meta":451,"style":451},"sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin\n",[453,656,657],{"__ignoreMap":451},[456,658,659,661,663,665,668,671,674,677],{"class":458,"line":459},[456,660,470],{"class":469},[456,662,474],{"class":473},[456,664,487],{"class":473},[456,666,667],{"class":473}," docker-ce",[456,669,670],{"class":473}," docker-ce-cli",[456,672,673],{"class":473}," containerd.io",[456,675,676],{"class":473}," docker-buildx-plugin",[456,678,679],{"class":473}," docker-compose-plugin\n",[440,681,683],{"id":682},"terminé","Terminé !",[390,685,686,689,690],{},[409,687,688],{},"Plus d'options :"," ",[394,691,695],{"href":692,"rel":693},"https:\u002F\u002Fdocs.docker.com\u002Fengine\u002Finstall\u002Fdebian\u002F",[694],"nofollow","Installer Docker pour Debian 13",[697,698,699,706],"note",{},[390,700,701,702,705],{},"À partir d'ici, nous partons du principe que les stacks sont installées dans le dossier ",[453,703,704],{},"\u002Fsrv\u002Fdocker",", créé avec la commande :",[445,707,709],{"className":447,"code":708,"filename":449,"language":450,"meta":451,"style":451},"sudo mkdir \u002Fsrv\u002Fdocker\n",[453,710,711],{"__ignoreMap":451},[456,712,713,715,718],{"class":458,"line":459},[456,714,470],{"class":469},[456,716,717],{"class":473}," mkdir",[456,719,720],{"class":473}," \u002Fsrv\u002Fdocker\n",[431,722,724,725,730],{"id":723},"installer-dockge-pour-gérer-et-déployer-les-conteneurs","Installer ",[394,726,729],{"href":727,"rel":728},"https:\u002F\u002Fgithub.com\u002Flouislam\u002Fdockge",[694],"Dockge"," pour gérer et déployer les conteneurs",[390,732,733,736],{},[394,734,729],{"href":727,"rel":735},[694]," est un outil web permettant de créer, configurer, lancer et gérer des conteneurs pour Docker. C'est une interface simple, intuitive, qui est plus légère et plus facile pour les débutants que d'utiliser docker en CLI ou Portainer.",[390,738,739],{},[426,740],{"alt":428,"src":741},"\u002Fimg\u002Fserveex\u002Fdockge.png",[440,743,745],{"id":744},"configuration","Configuration",[747,748],"file-tree",{":tree":749,"label":750},"{\"\u002F\":[{\"srv\":[{\"docker\":[{\"dockge\":[\"compose.yml\"]}]}]}]}","Structure de fichiers que nous allons créer",[436,752,754,759,780,784,806,809,938,954,958,985,992,999],{"level":753},"4",[755,756,758],"h4",{"id":757},"créer-le-dossier-de-la-stack","Créer le dossier de la stack",[445,760,762],{"className":447,"code":761,"filename":449,"language":450,"meta":451,"style":451},"cd \u002Fsrv\u002Fdocker\nsudo mkdir dockge\n",[453,763,764,771],{"__ignoreMap":451},[456,765,766,769],{"class":458,"line":459},[456,767,768],{"class":566},"cd",[456,770,720],{"class":473},[456,772,773,775,777],{"class":458,"line":466},[456,774,470],{"class":469},[456,776,717],{"class":473},[456,778,779],{"class":473}," dockge\n",[755,781,783],{"id":782},"créer-le-fichier-compose","Créer le fichier compose",[445,785,787],{"className":447,"code":786,"filename":449,"language":450,"meta":451,"style":451},"cd \u002Fsrv\u002Fdocker\u002Fdockge\nsudo nano compose.yml\n",[453,788,789,796],{"__ignoreMap":451},[456,790,791,793],{"class":458,"line":459},[456,792,768],{"class":566},[456,794,795],{"class":473}," \u002Fsrv\u002Fdocker\u002Fdockge\n",[456,797,798,800,803],{"class":458,"line":466},[456,799,470],{"class":469},[456,801,802],{"class":473}," nano",[456,804,805],{"class":473}," compose.yml\n",[390,807,808],{},"Collez ce qui suit :",[445,810,815],{"className":811,"code":812,"filename":813,"language":814,"meta":451,"style":451},"language-yaml shiki shiki-themes github-dark material-theme github-dark","---\nservices:\n  dockge:\n    image: louislam\u002Fdockge:1\n    restart: unless-stopped\n    container_name: dockge\n    ports:\n      - 3555:5001 # le port accessible sur le réseau local sera 3555\n\n    volumes:\n      - \u002Fvar\u002Frun\u002Fdocker.sock:\u002Fvar\u002Frun\u002Fdocker.sock\n      - \u002Fsrv\u002Fdocker\u002Fdockge\u002Fdata:\u002Fapp\u002Fdata\n      - \u002Fsrv\u002Fdocker:\u002Fsrv\u002Fdocker\n    environment:\n      - DOCKGE_STACKS_DIR=\u002Fsrv\u002Fdocker\n","compose.yaml","yaml",[453,816,817,822,832,839,850,860,869,876,887,891,898,906,914,922,930],{"__ignoreMap":451},[456,818,819],{"class":458,"line":459},[456,820,821],{"class":469},"---\n",[456,823,824,828],{"class":458,"line":466},[456,825,827],{"class":826},"sRuoG","services",[456,829,831],{"class":830},"s8jd1",":\n",[456,833,834,837],{"class":458,"line":480},[456,835,836],{"class":826},"  dockge",[456,838,831],{"class":830},[456,840,841,844,847],{"class":458,"line":496},[456,842,843],{"class":826},"    image",[456,845,846],{"class":830},":",[456,848,849],{"class":473}," louislam\u002Fdockge:1\n",[456,851,852,855,857],{"class":458,"line":517},[456,853,854],{"class":826},"    restart",[456,856,846],{"class":830},[456,858,859],{"class":473}," unless-stopped\n",[456,861,862,865,867],{"class":458,"line":537},[456,863,864],{"class":826},"    container_name",[456,866,846],{"class":830},[456,868,779],{"class":473},[456,870,871,874],{"class":458,"line":550},[456,872,873],{"class":826},"    ports",[456,875,831],{"class":830},[456,877,878,881,884],{"class":458,"line":557},[456,879,880],{"class":830},"      -",[456,882,883],{"class":473}," 3555:5001",[456,885,886],{"class":462}," # le port accessible sur le réseau local sera 3555\n",[456,888,889],{"class":458,"line":563},[456,890,554],{"emptyLinePlaceholder":553},[456,892,893,896],{"class":458,"line":641},[456,894,895],{"class":826},"    volumes",[456,897,831],{"class":830},[456,899,901,903],{"class":458,"line":900},11,[456,902,880],{"class":830},[456,904,905],{"class":473}," \u002Fvar\u002Frun\u002Fdocker.sock:\u002Fvar\u002Frun\u002Fdocker.sock\n",[456,907,909,911],{"class":458,"line":908},12,[456,910,880],{"class":830},[456,912,913],{"class":473}," \u002Fsrv\u002Fdocker\u002Fdockge\u002Fdata:\u002Fapp\u002Fdata\n",[456,915,917,919],{"class":458,"line":916},13,[456,918,880],{"class":830},[456,920,921],{"class":473}," \u002Fsrv\u002Fdocker:\u002Fsrv\u002Fdocker\n",[456,923,925,928],{"class":458,"line":924},14,[456,926,927],{"class":826},"    environment",[456,929,831],{"class":830},[456,931,933,935],{"class":458,"line":932},15,[456,934,880],{"class":830},[456,936,937],{"class":473}," DOCKGE_STACKS_DIR=\u002Fsrv\u002Fdocker\n",[390,939,940,941,945,946,949,950,953],{},"Appuyez sur ",[942,943],"kbd",{"value":944},"Ctrl+O",", puis ",[942,947],{"value":948},"Enter"," pour enregistrer, et ",[942,951],{"value":952},"Ctrl+X"," pour quitter.",[755,955,957],{"id":956},"lancer-le-conteneur","Lancer le conteneur",[445,959,961],{"className":447,"code":960,"filename":449,"language":450,"meta":451,"style":451},"cd \u002Fsrv\u002Fdocker\u002Fdockge\nsudo docker compose up -d\n",[453,962,963,969],{"__ignoreMap":451},[456,964,965,967],{"class":458,"line":459},[456,966,768],{"class":566},[456,968,795],{"class":473},[456,970,971,973,976,979,982],{"class":458,"line":466},[456,972,470],{"class":469},[456,974,975],{"class":473}," docker",[456,977,978],{"class":473}," compose",[456,980,981],{"class":473}," up",[456,983,984],{"class":503}," -d\n",[390,986,987,988,991],{},"Allez ensuite sur ",[453,989,990],{},"http:\u002F\u002Fipdevotreserveur:3555"," dans votre navigateur pour accéder à la page de connexion.",[390,993,994,995],{},"Plus d'infos sur ",[394,996,998],{"href":727,"rel":997},[694],"Dockge et son utilisation",[755,1000,683],{"id":1001},"terminé-1",[390,1003,1004],{},"Et voilà ! Docker et un outil pour gérer facilement vos conteneurs sont prêts !",[431,1006,1008,1013],{"id":1007},"watchtower-pour-mettre-à-jour-les-conteneurs-automatiquement",[394,1009,1012],{"href":1010,"rel":1011},"https:\u002F\u002Fwatchtower.nickfedor.com\u002F",[694],"Watchtower",", pour mettre à jour les conteneurs automatiquement",[390,1015,1016,1017,1020],{},"Watchtower est un conteneur qui permet de vérifier les mise à jour et d'installer les nouvelles images sans effort, en ajoutant un simple label dans les fichiers ",[453,1018,1019],{},"compose.yml"," de vos conteneurs.",[440,1022,745],{"id":1023},"configuration-1",[436,1025,1026,1030,1052,1192,1196,1203,1226,1282,1286,1292,1316,1319],{"level":753},[755,1027,1029],{"id":1028},"créer-la-stack","Créer la stack",[1031,1032,1033,1037,1043,1049],"ul",{},[1034,1035,1036],"li",{},"Ouvrez Dockge dans votre navigateur",[1034,1038,1039,1040],{},"Cliquez sur ",[453,1041,1042],{},"compose",[1034,1044,1045,1046],{},"Nommez la stack ",[453,1047,1048],{},"watchtower",[1034,1050,1051],{},"Collez la configuration ci-dessous dans la zone de configuration par défaut de Dockge",[445,1053,1055],{"className":811,"code":1054,"filename":813,"language":814,"meta":451,"style":451},"---\nservices:\n  watchtower:\n    container_name: watchtower\n    image: ghcr.io\u002Fnicholas-fedor\u002Fwatchtower:latest\n    restart: unless-stopped\n    env_file:\n      - .env\n    environment:\n      - TZ=Europe\u002FParis\n      - WATCHTOWER_SCHEDULE=${SCHEDULE}\n      - WATCHTOWER_LABEL_ENABLE=true\n      - WATCHTOWER_CLEANUP=true\n      - WATCHTOWER_REMOVE_VOLUMES=true\n      # Notifications Discord - décommentez si utilisées\n      #- WATCHTOWER_NOTIFICATIONS=slack\n      #- WATCHTOWER_NOTIFICATION_SLACK_IDENTIFIER=Watchtower\n      #- WATCHTOWER_NOTIFICATION_SLACK_HOOK_URL=${WH_URL}\n    volumes:\n      - \u002Fvar\u002Frun\u002Fdocker.sock:\u002Fvar\u002Frun\u002Fdocker.sock\n",[453,1056,1057,1061,1067,1074,1083,1092,1100,1107,1114,1120,1127,1134,1141,1148,1155,1160,1166,1172,1178,1185],{"__ignoreMap":451},[456,1058,1059],{"class":458,"line":459},[456,1060,821],{"class":469},[456,1062,1063,1065],{"class":458,"line":466},[456,1064,827],{"class":826},[456,1066,831],{"class":830},[456,1068,1069,1072],{"class":458,"line":480},[456,1070,1071],{"class":826},"  watchtower",[456,1073,831],{"class":830},[456,1075,1076,1078,1080],{"class":458,"line":496},[456,1077,864],{"class":826},[456,1079,846],{"class":830},[456,1081,1082],{"class":473}," watchtower\n",[456,1084,1085,1087,1089],{"class":458,"line":517},[456,1086,843],{"class":826},[456,1088,846],{"class":830},[456,1090,1091],{"class":473}," ghcr.io\u002Fnicholas-fedor\u002Fwatchtower:latest\n",[456,1093,1094,1096,1098],{"class":458,"line":537},[456,1095,854],{"class":826},[456,1097,846],{"class":830},[456,1099,859],{"class":473},[456,1101,1102,1105],{"class":458,"line":550},[456,1103,1104],{"class":826},"    env_file",[456,1106,831],{"class":830},[456,1108,1109,1111],{"class":458,"line":557},[456,1110,880],{"class":830},[456,1112,1113],{"class":473}," .env\n",[456,1115,1116,1118],{"class":458,"line":563},[456,1117,927],{"class":826},[456,1119,831],{"class":830},[456,1121,1122,1124],{"class":458,"line":641},[456,1123,880],{"class":830},[456,1125,1126],{"class":473}," TZ=Europe\u002FParis\n",[456,1128,1129,1131],{"class":458,"line":900},[456,1130,880],{"class":830},[456,1132,1133],{"class":473}," WATCHTOWER_SCHEDULE=${SCHEDULE}\n",[456,1135,1136,1138],{"class":458,"line":908},[456,1137,880],{"class":830},[456,1139,1140],{"class":473}," WATCHTOWER_LABEL_ENABLE=true\n",[456,1142,1143,1145],{"class":458,"line":916},[456,1144,880],{"class":830},[456,1146,1147],{"class":473}," WATCHTOWER_CLEANUP=true\n",[456,1149,1150,1152],{"class":458,"line":924},[456,1151,880],{"class":830},[456,1153,1154],{"class":473}," WATCHTOWER_REMOVE_VOLUMES=true\n",[456,1156,1157],{"class":458,"line":932},[456,1158,1159],{"class":462},"      # Notifications Discord - décommentez si utilisées\n",[456,1161,1163],{"class":458,"line":1162},16,[456,1164,1165],{"class":462},"      #- WATCHTOWER_NOTIFICATIONS=slack\n",[456,1167,1169],{"class":458,"line":1168},17,[456,1170,1171],{"class":462},"      #- WATCHTOWER_NOTIFICATION_SLACK_IDENTIFIER=Watchtower\n",[456,1173,1175],{"class":458,"line":1174},18,[456,1176,1177],{"class":462},"      #- WATCHTOWER_NOTIFICATION_SLACK_HOOK_URL=${WH_URL}\n",[456,1179,1181,1183],{"class":458,"line":1180},19,[456,1182,895],{"class":826},[456,1184,831],{"class":830},[456,1186,1188,1190],{"class":458,"line":1187},20,[456,1189,880],{"class":830},[456,1191,905],{"class":473},[755,1193,1195],{"id":1194},"renseigner-vos-variables-denvironnement","Renseigner vos variables d'environnement",[390,1197,1198,1199,1202],{},"Remplissez la section ",[453,1200,1201],{},".env"," dans Dockge avec ce qui suit :",[445,1204,1208],{"className":1205,"code":1206,"filename":1201,"language":1207,"meta":451,"style":451},"language-properties shiki shiki-themes github-dark material-theme github-dark","SCHEDULE=\nWH_URL=\n","properties",[453,1209,1210,1219],{"__ignoreMap":451},[456,1211,1212,1216],{"class":458,"line":459},[456,1213,1215],{"class":1214},"szyEh","SCHEDULE",[456,1217,1218],{"class":830},"=\n",[456,1220,1221,1224],{"class":458,"line":466},[456,1222,1223],{"class":1214},"WH_URL",[456,1225,1218],{"class":830},[1227,1228,1229,1245],"table",{},[1230,1231,1232],"thead",{},[1233,1234,1235,1239,1242],"tr",{},[1236,1237,1238],"th",{},"Propriété",[1236,1240,1241],{},"Valeur",[1236,1243,1244],{},"Exemples",[1246,1247,1248,1264],"tbody",{},[1233,1249,1250,1255,1258],{},[1251,1252,1253],"td",{},[453,1254,1215],{},[1251,1256,1257],{},"Format cron",[1251,1259,1260,1263],{},[453,1261,1262],{},"0 0 6 * * *"," (tous les jours à 6h)",[1233,1265,1266,1270,1277],{},[1251,1267,1268],{},[453,1269,1223],{},[1251,1271,1272,1273,1276],{},"L'URL de votre webhook Discord, ajoutez ",[453,1274,1275],{},"\u002Fslack"," à la fin",[1251,1278,1279],{},[453,1280,1281],{},"https:\u002F\u002Fvotreserveurdiscord\u002Fwebhook\u002Fslack",[755,1283,1285],{"id":1284},"activer-watchtower-sur-les-autres-conteneurs","Activer Watchtower sur les autres conteneurs",[390,1287,1288,1289,1291],{},"Pour que Watchtower surveille vos autres conteneurs, ajoutez ceci à leur ",[453,1290,1019],{}," :",[445,1293,1295],{"className":811,"code":1294,"filename":813,"language":814,"meta":451,"style":451},"---\nlabels:\n  - com.centurylinklabs.watchtower.enable=true\n",[453,1296,1297,1301,1308],{"__ignoreMap":451},[456,1298,1299],{"class":458,"line":459},[456,1300,821],{"class":469},[456,1302,1303,1306],{"class":458,"line":466},[456,1304,1305],{"class":826},"labels",[456,1307,831],{"class":830},[456,1309,1310,1313],{"class":458,"line":480},[456,1311,1312],{"class":830},"  -",[456,1314,1315],{"class":473}," com.centurylinklabs.watchtower.enable=true\n",[390,1317,1318],{},"Redémarrez ensuite les stacks modifiées.",[755,1320,683],{"id":1321},"terminé-2",[390,1323,1324],{},"Et voilà, vous avez une bonne carcasse pour commencer à installer les services qui vous plaisent !",[1326,1327,1328],"style",{},"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 .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 pre.shiki code .sJGgK, html code.shiki .sJGgK{--shiki-light:#79B8FF;--shiki-default:#82AAFF;--shiki-dark:#79B8FF}html pre.shiki code .s8K8j, html code.shiki .s8K8j{--shiki-light:#9ECBFF;--shiki-default:#89DDFF;--shiki-dark:#9ECBFF}html pre.shiki code .slcoZ, html code.shiki .slcoZ{--shiki-light:#E1E4E8;--shiki-default:#EEFFFF;--shiki-dark:#E1E4E8}html pre.shiki code .sJPTy, html code.shiki .sJPTy{--shiki-light:#F97583;--shiki-default:#89DDFF;--shiki-dark:#F97583}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 .szyEh, html code.shiki .szyEh{--shiki-light:#F97583;--shiki-default:#F07178;--shiki-dark:#F97583}",{"title":451,"searchDepth":466,"depth":466,"links":1330},[1331,1336,1340],{"id":433,"depth":466,"text":434,"children":1332},[1333,1334,1335],{"id":442,"depth":480,"text":443},{"id":650,"depth":480,"text":651},{"id":682,"depth":480,"text":683},{"id":723,"depth":466,"text":1337,"children":1338},"Installer Dockge pour gérer et déployer les conteneurs",[1339],{"id":744,"depth":480,"text":745},{"id":1007,"depth":466,"text":1341,"children":1342},"Watchtower, pour mettre à jour les conteneurs automatiquement",[1343],{"id":1023,"depth":480,"text":745},[1345],"Djeex","Installer Docker et Dockge sur Debian pour déployer et gérer des services auto-hébergés avec de simples stacks de conteneurs.","md",null,{},{"title":114,"description":1346},"K8gtGPqul0SSHSGEOTIIKOqpL2wtcJtA8nRnRP2OJ8M",[1353,1355],{"title":110,"path":111,"stem":112,"description":1354,"children":-1},"Guide pas à pas pour installer Debian 13 sur un serveur maison et configurer l'accès SSH, les paquets essentiels et un système de base prêt à l'emploi.",{"title":118,"path":119,"stem":120,"description":1356,"children":-1},"Installer et configurer WireGuard VPN pour accéder à votre homelab de n'importe où et connecter tous vos appareils à votre réseau privé.",1788645837581]