[{"data":1,"prerenderedAt":1084},["ShallowReactive",2],{"navigation_docs_fr":3,"-fr-nonsense-bash-backrest-docker-stop-":376,"-fr-nonsense-bash-backrest-docker-stop--surround":1079},[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":324,"body":378,"contributors":1071,"description":1073,"extension":1074,"hideCopyPage":15,"hideHeader":15,"hideToc":15,"links":1075,"meta":1076,"navigation":652,"path":325,"seo":1077,"stem":326,"__hash__":1078},"docs_fr\u002Ffr\u002F5.nonsense\u002F3.bash\u002F5.backrest-docker-stop.md",{"type":379,"value":380,"toc":1066},"minimark",[381,389,405,408,414,442,447,466,779,782,786,791,999,1003,1015,1056,1062],[382,383],"ellipsis",{"blur":384,"left":385,"top":386,"width":387,"z-index":388},"140px","0px","10rem","40rem","60",[390,391,392,399,400,404],"p",{},[393,394,398],"a",{"href":395,"rel":396},"https:\u002F\u002Fgithub.com\u002Fgarethgeorge\u002Fbackrest",[397],"nofollow","Backrest"," est un formidable outil de backup. Dans le cas de ",[393,401,94],{"href":402,"rel":403},"https:\u002F\u002Fdocu.djeex.fr\u002Ffr\u002Fserveex\u002Fintroduction",[397],", la majeure partie des données à sauvegarder sont des conteneurs, et souvent ces conteneurs possèdent des bases de données.",[390,406,407],{},"Le problème ? On ne peut pas sauvegarder proprement une BDD qui est en route. Alors, il existe plein de solutions complexe à base de dump des bases de données, mais souvent le plus simple cela reste de stopper les conteneurs, de sauvegarder, et de redémarrer les conteneurs.",[390,409,410,413],{},[411,412,398],"strong",{}," ne propose pas de solutions native, mais il propose d'executer des scripts customisés à déclencher sur des évenements, comme le démarrage et la fin de la sauvegarde par exemple. Notre besoin est donc de stopper les conteneurs dont on veut sauvegarder la BDD, à chaque démarrage du plan de sauvegarde, et de les redémarrer à la fin de l'execution du plan de sauvegarde. Pour cela nous allons avoir besoin d'un script bash et d'une connexion sécurisée entre Backrest et le socket de Docker, afin d'avoir la cinématique suivante :",[415,416,417,421,424,431,434,437,439],"ul",{},[418,419,420],"li",{},"Le plan de sauvegarde se met en route",[418,422,423],{},"L'evenement déclenche l'execution d'un script custom",[418,425,426,427],{},"Le script contacte docker et demande la liste des conteneurs qui comportent le label ",[428,429,430],"code",{},"backrest.backup.stop=true",[418,432,433],{},"Il récupère cette liste et leur envoie une commande d'extinction",[418,435,436],{},"Le plan de sauvegarde s'arrête",[418,438,423],{},[418,440,441],{},"Le script recontacte docker, récupère la même liste, et redémarre ces conteneurs",[443,444,446],"h2",{"id":445},"faire-communiquer-backrest-et-docker-en-toute-sécurité","Faire communiquer Backrest et Docker en toute sécurité",[390,448,449,450,452,453,458,459,462,463,465],{},"Pour faire communiquer ",[411,451,398],{}," et Docker en toute sécurité, nous utiliserons ",[393,454,457],{"href":455,"rel":456},"https:\u002F\u002Fgithub.com\u002Flinuxserver\u002Fdocker-socket-proxy",[397],"Docker Socket Proxy",".",[460,461],"br",{},"\nCela évite d'exposer l'intégralité du socket Docker et n'accorde que les droits nécessaires.",[460,464],{},"\nVoici un exemple de stack Docker :",[467,468,474],"pre",{"className":469,"code":470,"filename":471,"language":472,"meta":473,"style":473},"language-yaml shiki shiki-themes github-dark material-theme github-dark","---\nservices:\n  backrest:\n    image: garethgeorge\u002Fbackrest:latest\n    container_name: backrest\n    hostname: backrest\n    security_opt:\n      - no-new-privileges:true\n    volumes:\n      - ...  # vos volumes\n    environment:\n      - ...  # vos variables\n      - DOCKER_HOST=tcp:\u002F\u002Fsocket-proxy-backrest:2375\n    restart: unless-stopped\n    ports:\n      - ... # vos ports\n    depends_on:\n      - socket-proxy\n\n  socket-proxy:\n    image: lscr.io\u002Flinuxserver\u002Fsocket-proxy:latest\n    container_name: socket-proxy-backrest\n    security_opt:\n      - no-new-privileges:true\n    environment:\n      - CONTAINERS=1\n      - ALLOW_START=1\n      - ALLOW_STOP=1\n    volumes:\n      - \u002Fvar\u002Frun\u002Fdocker.sock:\u002Fvar\u002Frun\u002Fdocker.sock:ro\n    restart: unless-stopped\n    read_only: true\n    tmpfs:\n      - \u002Frun\n","compose.yaml","yaml","",[428,475,476,485,496,504,517,528,538,546,555,563,576,584,594,602,613,621,631,639,647,654,662,672,682,689,696,703,711,719,727,734,742,751,763,771],{"__ignoreMap":473},[477,478,481],"span",{"class":479,"line":480},"line",1,[477,482,484],{"class":483},"sEgDM","---\n",[477,486,488,492],{"class":479,"line":487},2,[477,489,491],{"class":490},"sRuoG","services",[477,493,495],{"class":494},"s8jd1",":\n",[477,497,499,502],{"class":479,"line":498},3,[477,500,501],{"class":490},"  backrest",[477,503,495],{"class":494},[477,505,507,510,513],{"class":479,"line":506},4,[477,508,509],{"class":490},"    image",[477,511,512],{"class":494},":",[477,514,516],{"class":515},"s11XM"," garethgeorge\u002Fbackrest:latest\n",[477,518,520,523,525],{"class":479,"line":519},5,[477,521,522],{"class":490},"    container_name",[477,524,512],{"class":494},[477,526,527],{"class":515}," backrest\n",[477,529,531,534,536],{"class":479,"line":530},6,[477,532,533],{"class":490},"    hostname",[477,535,512],{"class":494},[477,537,527],{"class":515},[477,539,541,544],{"class":479,"line":540},7,[477,542,543],{"class":490},"    security_opt",[477,545,495],{"class":494},[477,547,549,552],{"class":479,"line":548},8,[477,550,551],{"class":494},"      -",[477,553,554],{"class":515}," no-new-privileges:true\n",[477,556,558,561],{"class":479,"line":557},9,[477,559,560],{"class":490},"    volumes",[477,562,495],{"class":494},[477,564,566,568,572],{"class":479,"line":565},10,[477,567,551],{"class":494},[477,569,571],{"class":570},"swwWl"," ...",[477,573,575],{"class":574},"sDvJj","  # vos volumes\n",[477,577,579,582],{"class":479,"line":578},11,[477,580,581],{"class":490},"    environment",[477,583,495],{"class":494},[477,585,587,589,591],{"class":479,"line":586},12,[477,588,551],{"class":494},[477,590,571],{"class":570},[477,592,593],{"class":574},"  # vos variables\n",[477,595,597,599],{"class":479,"line":596},13,[477,598,551],{"class":494},[477,600,601],{"class":515}," DOCKER_HOST=tcp:\u002F\u002Fsocket-proxy-backrest:2375\n",[477,603,605,608,610],{"class":479,"line":604},14,[477,606,607],{"class":490},"    restart",[477,609,512],{"class":494},[477,611,612],{"class":515}," unless-stopped\n",[477,614,616,619],{"class":479,"line":615},15,[477,617,618],{"class":490},"    ports",[477,620,495],{"class":494},[477,622,624,626,628],{"class":479,"line":623},16,[477,625,551],{"class":494},[477,627,571],{"class":570},[477,629,630],{"class":574}," # vos ports\n",[477,632,634,637],{"class":479,"line":633},17,[477,635,636],{"class":490},"    depends_on",[477,638,495],{"class":494},[477,640,642,644],{"class":479,"line":641},18,[477,643,551],{"class":494},[477,645,646],{"class":515}," socket-proxy\n",[477,648,650],{"class":479,"line":649},19,[477,651,653],{"emptyLinePlaceholder":652},true,"\n",[477,655,657,660],{"class":479,"line":656},20,[477,658,659],{"class":490},"  socket-proxy",[477,661,495],{"class":494},[477,663,665,667,669],{"class":479,"line":664},21,[477,666,509],{"class":490},[477,668,512],{"class":494},[477,670,671],{"class":515}," lscr.io\u002Flinuxserver\u002Fsocket-proxy:latest\n",[477,673,675,677,679],{"class":479,"line":674},22,[477,676,522],{"class":490},[477,678,512],{"class":494},[477,680,681],{"class":515}," socket-proxy-backrest\n",[477,683,685,687],{"class":479,"line":684},23,[477,686,543],{"class":490},[477,688,495],{"class":494},[477,690,692,694],{"class":479,"line":691},24,[477,693,551],{"class":494},[477,695,554],{"class":515},[477,697,699,701],{"class":479,"line":698},25,[477,700,581],{"class":490},[477,702,495],{"class":494},[477,704,706,708],{"class":479,"line":705},26,[477,707,551],{"class":494},[477,709,710],{"class":515}," CONTAINERS=1\n",[477,712,714,716],{"class":479,"line":713},27,[477,715,551],{"class":494},[477,717,718],{"class":515}," ALLOW_START=1\n",[477,720,722,724],{"class":479,"line":721},28,[477,723,551],{"class":494},[477,725,726],{"class":515}," ALLOW_STOP=1\n",[477,728,730,732],{"class":479,"line":729},29,[477,731,560],{"class":490},[477,733,495],{"class":494},[477,735,737,739],{"class":479,"line":736},30,[477,738,551],{"class":494},[477,740,741],{"class":515}," \u002Fvar\u002Frun\u002Fdocker.sock:\u002Fvar\u002Frun\u002Fdocker.sock:ro\n",[477,743,745,747,749],{"class":479,"line":744},31,[477,746,607],{"class":490},[477,748,512],{"class":494},[477,750,612],{"class":515},[477,752,754,757,759],{"class":479,"line":753},32,[477,755,756],{"class":490},"    read_only",[477,758,512],{"class":494},[477,760,762],{"class":761},"s08Ry"," true\n",[477,764,766,769],{"class":479,"line":765},33,[477,767,768],{"class":490},"    tmpfs",[477,770,495],{"class":494},[477,772,774,776],{"class":479,"line":773},34,[477,775,551],{"class":494},[477,777,778],{"class":515}," \u002Frun\n",[390,780,781],{},"Et voilà, Backrest pourra ainsi communiquer avec Docker en toute sécurité.",[443,783,785],{"id":784},"les-scripts","Les scripts",[390,787,788,789,458],{},"Vous trouverez ci-dessous les scripts à renseigner en action pour les évèvenements de démarrage et d'arrêt de la sauvegarde dans ",[411,790,398],{},[792,793,794,912],"code-group",{},[467,795,800],{"className":796,"code":797,"filename":798,"language":799,"meta":473,"style":473},"language-sh shiki shiki-themes github-dark material-theme github-dark","#!\u002Fusr\u002Fbin\u002Fenv bash\n\nBACKUP_LABEL=\"backrest.backup.stop=true\"\nBACKUP_CONTAINERS=$(docker ps -aqf \"label=$BACKUP_LABEL\")\nfor BC in $BACKUP_CONTAINERS\ndo\n    docker stop \"$BC\"\ndone\nsleep 10\n","Stop","sh",[428,801,802,807,811,830,864,879,884,899,904],{"__ignoreMap":473},[477,803,804],{"class":479,"line":480},[477,805,806],{"class":574},"#!\u002Fusr\u002Fbin\u002Fenv bash\n",[477,808,809],{"class":479,"line":487},[477,810,653],{"emptyLinePlaceholder":652},[477,812,813,817,821,825,827],{"class":479,"line":498},[477,814,816],{"class":815},"slcoZ","BACKUP_LABEL",[477,818,820],{"class":819},"sJPTy","=",[477,822,824],{"class":823},"s8K8j","\"",[477,826,430],{"class":515},[477,828,829],{"class":823},"\"\n",[477,831,832,835,837,840,843,846,850,853,856,859,861],{"class":479,"line":506},[477,833,834],{"class":815},"BACKUP_CONTAINERS",[477,836,820],{"class":819},[477,838,839],{"class":494},"$(",[477,841,842],{"class":483},"docker",[477,844,845],{"class":515}," ps",[477,847,849],{"class":848},"sJWha"," -aqf",[477,851,852],{"class":823}," \"",[477,854,855],{"class":515},"label=",[477,857,858],{"class":815},"$BACKUP_LABEL",[477,860,824],{"class":823},[477,862,863],{"class":494},")\n",[477,865,866,870,873,876],{"class":479,"line":519},[477,867,869],{"class":868},"sJLGa","for",[477,871,872],{"class":815}," BC ",[477,874,875],{"class":868},"in",[477,877,878],{"class":815}," $BACKUP_CONTAINERS\n",[477,880,881],{"class":479,"line":530},[477,882,883],{"class":868},"do\n",[477,885,886,889,892,894,897],{"class":479,"line":540},[477,887,888],{"class":483},"    docker",[477,890,891],{"class":515}," stop",[477,893,852],{"class":823},[477,895,896],{"class":815},"$BC",[477,898,829],{"class":823},[477,900,901],{"class":479,"line":548},[477,902,903],{"class":868},"done\n",[477,905,906,909],{"class":479,"line":557},[477,907,908],{"class":483},"sleep",[477,910,911],{"class":570}," 10\n",[467,913,916],{"className":796,"code":914,"filename":915,"language":799,"meta":473,"style":473},"#!\u002Fusr\u002Fbin\u002Fenv bash\n\nBACKUP_LABEL=\"backrest.backup.stop=true\"\nBACKUP_CONTAINERS=$(docker ps -aqf \"label=$BACKUP_LABEL\")\nfor BC in $BACKUP_CONTAINERS\ndo\n    docker start \"$BC\"\ndone\nsleep 10\n","Start",[428,917,918,922,926,938,962,972,976,989,993],{"__ignoreMap":473},[477,919,920],{"class":479,"line":480},[477,921,806],{"class":574},[477,923,924],{"class":479,"line":487},[477,925,653],{"emptyLinePlaceholder":652},[477,927,928,930,932,934,936],{"class":479,"line":498},[477,929,816],{"class":815},[477,931,820],{"class":819},[477,933,824],{"class":823},[477,935,430],{"class":515},[477,937,829],{"class":823},[477,939,940,942,944,946,948,950,952,954,956,958,960],{"class":479,"line":506},[477,941,834],{"class":815},[477,943,820],{"class":819},[477,945,839],{"class":494},[477,947,842],{"class":483},[477,949,845],{"class":515},[477,951,849],{"class":848},[477,953,852],{"class":823},[477,955,855],{"class":515},[477,957,858],{"class":815},[477,959,824],{"class":823},[477,961,863],{"class":494},[477,963,964,966,968,970],{"class":479,"line":519},[477,965,869],{"class":868},[477,967,872],{"class":815},[477,969,875],{"class":868},[477,971,878],{"class":815},[477,973,974],{"class":479,"line":530},[477,975,883],{"class":868},[477,977,978,980,983,985,987],{"class":479,"line":540},[477,979,888],{"class":483},[477,981,982],{"class":515}," start",[477,984,852],{"class":823},[477,986,896],{"class":815},[477,988,829],{"class":823},[477,990,991],{"class":479,"line":548},[477,992,903],{"class":868},[477,994,995,997],{"class":479,"line":557},[477,996,908],{"class":483},[477,998,911],{"class":570},[443,1000,1002],{"id":1001},"le-label","Le label",[390,1004,1005,1006,1008,1009,1011,1012,1014],{},"Une fois les scripts renseignés et paramétrés pour les bons hooks dans ",[411,1007,398],{},", vous n'avez plus qu'à ajouter le libellé ",[428,1010,430],{}," dans les fichiers ",[428,1013,471],{}," des conteneurs à éteindre et rallumer durant les sauvegardes :",[467,1016,1018],{"className":469,"code":1017,"filename":471,"language":472,"meta":473,"style":473},"---\nservices:\n  votre_service:\n    ...\n    labels:\n      - backrest.backup.stop=true\n",[428,1019,1020,1024,1030,1037,1042,1049],{"__ignoreMap":473},[477,1021,1022],{"class":479,"line":480},[477,1023,484],{"class":483},[477,1025,1026,1028],{"class":479,"line":487},[477,1027,491],{"class":490},[477,1029,495],{"class":494},[477,1031,1032,1035],{"class":479,"line":498},[477,1033,1034],{"class":490},"  votre_service",[477,1036,495],{"class":494},[477,1038,1039],{"class":479,"line":506},[477,1040,1041],{"class":570},"    ...\n",[477,1043,1044,1047],{"class":479,"line":519},[477,1045,1046],{"class":490},"    labels",[477,1048,495],{"class":494},[477,1050,1051,1053],{"class":479,"line":530},[477,1052,551],{"class":494},[477,1054,1055],{"class":515}," backrest.backup.stop=true\n",[390,1057,1058,1059,1061],{},"Et voilà !",[460,1060],{},"\nÀ la prochaine sauvegarde, les conteneurs correctement labelisés s'arrêteront pendant la sauvegarde et redémarreront tout seuls une fois terminée.",[1063,1064,1065],"style",{},"html pre.shiki code .sEgDM, html code.shiki .sEgDM{--shiki-light:#B392F0;--shiki-default:#FFCB6B;--shiki-dark:#B392F0}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 .s11XM, html code.shiki .s11XM{--shiki-light:#9ECBFF;--shiki-default:#C3E88D;--shiki-dark:#9ECBFF}html pre.shiki code .swwWl, html code.shiki .swwWl{--shiki-light:#79B8FF;--shiki-default:#F78C6C;--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 .s08Ry, html code.shiki .s08Ry{--shiki-light:#79B8FF;--shiki-default:#FF9CAC;--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 .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 pre.shiki code .s8K8j, html code.shiki .s8K8j{--shiki-light:#9ECBFF;--shiki-default:#89DDFF;--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 .sJLGa, html code.shiki .sJLGa{--shiki-light:#F97583;--shiki-light-font-style:inherit;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#F97583;--shiki-dark-font-style:inherit}",{"title":473,"searchDepth":487,"depth":487,"links":1067},[1068,1069,1070],{"id":445,"depth":487,"text":446},{"id":784,"depth":487,"text":785},{"id":1001,"depth":487,"text":1002},[1072],"Djeex","Un script bash qui arrête les conteneurs Docker avant une sauvegarde Backrest et les redémarre après, pour des sauvegardes de bases de données sans dump complexe.","md",null,{},{"title":324,"description":1073},"1qX6Tcv4gdmQKJqO4U8gtoRhZOM2o3TrGLr9cm1Y0mU",[1080,1082],{"title":320,"path":321,"stem":322,"description":1081,"children":-1},"Un script bash qui surveille la température des disques durs et éteint automatiquement le serveur lorsqu'ils dépassent un seuil de sécurité trop longtemps.",{"title":328,"path":329,"stem":330,"description":1083,"children":-1},"Une petite fonction Bash qui enveloppe sudo et demande confirmation avant de lancer rm, pour qu'une faute de frappe n'efface pas des fichiers appartenant à root.",1788645853662]