[{"data":1,"prerenderedAt":625},["ShallowReactive",2],{"\u002Fnext\u002Fadministrer\u002Fexploitation\u002Fsauvegardes-et-restauration":3,"section:\u002Fnext\u002Fadministrer\u002Fexploitation\u002Fsauvegardes-et-restauration":624},{"id":4,"title":5,"body":6,"description":608,"extension":609,"meta":610,"navigation":611,"path":620,"seo":621,"stem":622,"__hash__":623},"docs\u002F2.next\u002F5.administrer\u002F03.exploitation\u002F10.sauvegardes-et-restauration.md","Sauvegarder et restaurer un site auto-hébergé",{"type":7,"value":8,"toc":597},"minimark",[9,13,26,29,34,41,126,130,161,180,191,195,205,229,234,250,254,267,285,289,307,311,319,386,415,419,426,513,521,525,540,544,593],[10,11,5],"h1",{"id":12},"sauvegarder-et-restaurer-un-site-auto-hébergé",[14,15,16],"blockquote",{},[17,18,19,20,25],"p",{},"S'applique à : auto-hébergé (installation manuelle ou Docker), Dokos v5. Sur Dokos Cloud, voir ",[21,22,24],"a",{"href":23},"\u002Fnext\u002Fadministrer\u002Fcloud\u002Fsauvegardes","Sauvegardes Dokos Cloud",".",[17,27,28],{},"Une sauvegarde n'est utile que si vous savez la restaurer. Cette page couvre les quatre règles d'une bonne sauvegarde : planifier, garder la clé, copier hors du serveur, tester.",[30,31,33],"h2",{"id":32},"ce-que-contient-une-sauvegarde","Ce que contient une sauvegarde",[17,35,36,37,25],{},"Les commandes s'exécutent dans le dossier du bench. Les fichiers sont écrits dans ",[38,39,40],"code",{},"sites\u002F\u003Csite>\u002Fprivate\u002Fbackups\u002F",[42,43,44,60],"table",{},[45,46,47],"thead",{},[48,49,50,54,57],"tr",{},[51,52,53],"th",{},"Fichier",[51,55,56],{},"Contenu",[51,58,59],{},"Option",[61,62,63,81,97,112],"tbody",{},[48,64,65,71,74],{},[66,67,68],"td",{},[38,69,70],{},"…-database.sql.gz",[66,72,73],{},"La base de données",[66,75,76,77,80],{},"Toujours. Le suffixe ",[38,78,79],{},"-enc"," indique un fichier chiffré.",[48,82,83,88,94],{},[66,84,85],{},[38,86,87],{},"…-site_config_backup.json",[66,89,90,91],{},"La configuration du site, dont la clé ",[38,92,93],{},"encryption_key",[66,95,96],{},"Toujours",[48,98,99,104,107],{},[66,100,101],{},[38,102,103],{},"…-files.tar",[66,105,106],{},"Les fichiers publics",[66,108,109],{},[38,110,111],{},"--with-files",[48,113,114,119,122],{},[66,115,116],{},[38,117,118],{},"…-private-files.tar",[66,120,121],{},"Les fichiers privés (pièces jointes)",[66,123,124],{},[38,125,111],{},[30,127,129],{"id":128},"sauvegarder-à-la-demande","Sauvegarder à la demande",[131,132,137],"pre",{"className":133,"code":134,"language":135,"meta":136,"style":136},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","bench --site dokompany.fr backup --with-files\n","bash","",[38,138,139],{"__ignoreMap":136},[140,141,144,148,152,155,158],"span",{"class":142,"line":143},"line",1,[140,145,147],{"class":146},"sBMFI","bench",[140,149,151],{"class":150},"sfazB"," --site",[140,153,154],{"class":150}," dokompany.fr",[140,156,157],{"class":150}," backup",[140,159,160],{"class":150}," --with-files\n",[17,162,163,164,167,168,171,172,175,176,179],{},"Options utiles : ",[38,165,166],{},"--compress"," compresse les fichiers (extension ",[38,169,170],{},".tgz"," au lieu de ",[38,173,174],{},".tar","), ",[38,177,178],{},"--backup-path \u003Cdossier>"," écrit la sauvegarde dans un autre dossier.",[17,181,182,183,186,187,25],{},"Avec Docker, préfixez la commande : ",[38,184,185],{},"docker compose run backend bench --site frontend backup --with-files --compress",". Voir ",[21,188,190],{"href":189},"\u002Fnext\u002Fadministrer\u002Finstallation\u002Fdocker","Installation Docker",[30,192,194],{"id":193},"planifier-les-sauvegardes","Planifier les sauvegardes",[17,196,197,200,201,204],{},[38,198,199],{},"bench init"," ajoute une tâche cron qui sauvegarde la base de tous les sites toutes les 6 heures. Le journal est ",[38,202,203],{},"logs\u002Fbackup.log",". Si la tâche manque, recréez-la :",[131,206,208],{"className":133,"code":207,"language":135,"meta":136,"style":136},"bench setup backups\ncrontab -l\n",[38,209,210,220],{"__ignoreMap":136},[140,211,212,214,217],{"class":142,"line":143},[140,213,147],{"class":146},[140,215,216],{"class":150}," setup",[140,218,219],{"class":150}," backups\n",[140,221,223,226],{"class":142,"line":222},2,[140,224,225],{"class":146},"crontab",[140,227,228],{"class":150}," -l\n",[17,230,231,232,25],{},"Cette tâche ne sauvegarde pas les fichiers. Ajoutez une tâche cron quotidienne avec ",[38,233,111],{},[17,235,236,237,241,242,245,246,249],{},"Le nombre de sauvegardes conservées sur le serveur se règle dans ",[238,239,240],"strong",{},"Paramètres Système",", onglet ",[238,243,244],{},"Sauvegardes",", champ ",[238,247,248],{},"Nombre de Sauvegardes"," (3 par défaut).",[30,251,253],{"id":252},"garder-la-clé-de-chiffrement","Garder la clé de chiffrement",[17,255,256,257,259,260,263,264,266],{},"La clé ",[38,258,93],{}," du fichier ",[38,261,262],{},"site_config.json"," chiffre les champs de type mot de passe (comptes email, passerelles de paiement, clés d'API). Sans elle, un site restauré ne peut plus lire ces valeurs. Conservez une copie de ",[38,265,262],{}," avec chaque sauvegarde.",[17,268,269,270,273,274,276,277,280,281,284],{},"Pour chiffrer aussi les fichiers de sauvegarde, cochez ",[238,271,272],{},"Crypter les sauvegardes"," dans ",[238,275,240],{},". La clé de chiffrement des sauvegardes est alors visible dans la page ",[238,278,279],{},"Télécharger des sauvegardes",", bouton ",[238,282,283],{},"Obtenir la clé de cryptage de la sauvegarde"," (réservé au rôle Responsable système). Notez-la hors du serveur.",[30,286,288],{"id":287},"copier-les-sauvegardes-hors-du-serveur","Copier les sauvegardes hors du serveur",[17,290,291,292,295,296,302,303,25],{},"Une sauvegarde qui reste sur le serveur disparaît avec lui. Copiez le dossier ",[38,293,294],{},"private\u002Fbackups"," vers une autre machine ou un stockage objet, avec l'outil de votre choix. En v5, l'envoi automatique vers un stockage externe (S3, Google Drive, Dropbox) fait partie de l'application ",[21,297,301],{"href":298,"rel":299},"https:\u002F\u002Fgithub.com\u002Ffrappe\u002Foffsite_backups",[300],"nofollow","Offsite Backups",", à installer à part. Voir ",[21,304,306],{"href":305},"\u002Fnext\u002Fadministrer\u002Fexploitation\u002Fmigration-v4-vers-v5","Migrer vers la version 5",[30,308,310],{"id":309},"restaurer-un-site","Restaurer un site",[312,313,316],"callout",{"color":314,"icon":315},"amber","i-heroicons-exclamation-triangle",[17,317,318],{},"La restauration remplace la base du site. Sauvegardez l'état actuel avant de restaurer.",[131,320,322],{"className":133,"code":321,"language":135,"meta":136,"style":136},"bench --site dokompany.fr backup --with-files\nbench --site dokompany.fr restore 20261029_020000-dokompany_fr-database.sql.gz \\\n  --with-public-files 20261029_020000-dokompany_fr-files.tar \\\n  --with-private-files 20261029_020000-dokompany_fr-private-files.tar\nbench --site dokompany.fr migrate\n",[38,323,324,336,354,365,374],{"__ignoreMap":136},[140,325,326,328,330,332,334],{"class":142,"line":143},[140,327,147],{"class":146},[140,329,151],{"class":150},[140,331,154],{"class":150},[140,333,157],{"class":150},[140,335,160],{"class":150},[140,337,338,340,342,344,347,350],{"class":142,"line":222},[140,339,147],{"class":146},[140,341,151],{"class":150},[140,343,154],{"class":150},[140,345,346],{"class":150}," restore",[140,348,349],{"class":150}," 20261029_020000-dokompany_fr-database.sql.gz",[140,351,353],{"class":352},"sTEyZ"," \\\n",[140,355,357,360,363],{"class":142,"line":356},3,[140,358,359],{"class":150},"  --with-public-files",[140,361,362],{"class":150}," 20261029_020000-dokompany_fr-files.tar",[140,364,353],{"class":352},[140,366,368,371],{"class":142,"line":367},4,[140,369,370],{"class":150},"  --with-private-files",[140,372,373],{"class":150}," 20261029_020000-dokompany_fr-private-files.tar\n",[140,375,377,379,381,383],{"class":142,"line":376},5,[140,378,147],{"class":146},[140,380,151],{"class":150},[140,382,154],{"class":150},[140,384,385],{"class":150}," migrate\n",[387,388,389,397,409],"ul",{},[390,391,392,393,396],"li",{},"Pour une sauvegarde chiffrée, ajoutez ",[38,394,395],{},"--encryption-key \u003Cclé>"," si le site ne possède pas déjà cette clé.",[390,398,399,400,402,403,405,406,25],{},"Sur un nouveau serveur, copiez la valeur ",[38,401,93],{}," de l'ancien ",[38,404,262],{}," dans le nouveau : ",[38,407,408],{},"bench --site dokompany.fr set-config encryption_key \"\u003Cclé>\"",[390,410,411,414],{},[38,412,413],{},"bench migrate"," aligne la base sur la version du code installée.",[30,416,418],{"id":417},"exemple-tester-une-restauration-chaque-mois","Exemple : tester une restauration chaque mois",[17,420,421,422,425],{},"L'administrateur de Dokompany restaure la sauvegarde de la nuit sur un site de test ",[38,423,424],{},"test.dokompany.fr",", sur le même bench.",[131,427,429],{"className":133,"code":428,"language":135,"meta":136,"style":136},"bench --site test.dokompany.fr restore \u002Fhome\u002Fdokos\u002Fbackups\u002F20261029_020000-dokompany_fr-database.sql.gz \\\n  --with-private-files \u002Fhome\u002Fdokos\u002Fbackups\u002F20261029_020000-dokompany_fr-private-files.tar\nbench --site test.dokompany.fr set-config mute_emails 1\nbench --site test.dokompany.fr set-config mute_notifications 1\nbench --site test.dokompany.fr set-config mute_payment_gateways 1\nbench --site test.dokompany.fr migrate\n",[38,430,431,447,454,472,487,502],{"__ignoreMap":136},[140,432,433,435,437,440,442,445],{"class":142,"line":143},[140,434,147],{"class":146},[140,436,151],{"class":150},[140,438,439],{"class":150}," test.dokompany.fr",[140,441,346],{"class":150},[140,443,444],{"class":150}," \u002Fhome\u002Fdokos\u002Fbackups\u002F20261029_020000-dokompany_fr-database.sql.gz",[140,446,353],{"class":352},[140,448,449,451],{"class":142,"line":222},[140,450,370],{"class":150},[140,452,453],{"class":150}," \u002Fhome\u002Fdokos\u002Fbackups\u002F20261029_020000-dokompany_fr-private-files.tar\n",[140,455,456,458,460,462,465,468],{"class":142,"line":356},[140,457,147],{"class":146},[140,459,151],{"class":150},[140,461,439],{"class":150},[140,463,464],{"class":150}," set-config",[140,466,467],{"class":150}," mute_emails",[140,469,471],{"class":470},"sbssI"," 1\n",[140,473,474,476,478,480,482,485],{"class":142,"line":367},[140,475,147],{"class":146},[140,477,151],{"class":150},[140,479,439],{"class":150},[140,481,464],{"class":150},[140,483,484],{"class":150}," mute_notifications",[140,486,471],{"class":470},[140,488,489,491,493,495,497,500],{"class":142,"line":376},[140,490,147],{"class":146},[140,492,151],{"class":150},[140,494,439],{"class":150},[140,496,464],{"class":150},[140,498,499],{"class":150}," mute_payment_gateways",[140,501,471],{"class":470},[140,503,505,507,509,511],{"class":142,"line":504},6,[140,506,147],{"class":146},[140,508,151],{"class":150},[140,510,439],{"class":150},[140,512,385],{"class":150},[17,514,515,516,520],{},"Il coupe les envois avant de démarrer le site. Voir ",[21,517,519],{"href":518},"\u002Fnext\u002Fadministrer\u002Fcloud\u002Fsite-de-test","Copier la production sur un site de test"," pour le rôle de chaque clé.",[30,522,524],{"id":523},"vérifier","Vérifier",[387,526,527,530,533],{},[390,528,529],{},"Connectez-vous au site restauré et ouvrez le dernier document créé avant la sauvegarde.",[390,531,532],{},"Ouvrez une pièce jointe : elle s'affiche (fichiers privés restaurés).",[390,534,535,536,539],{},"Ouvrez un ",[238,537,538],{},"Compte email"," : aucune erreur de déchiffrement n'apparaît.",[30,541,543],{"id":542},"problèmes-fréquents","Problèmes fréquents",[42,545,546,556],{},[45,547,548],{},[48,549,550,553],{},[51,551,552],{},"Problème",[51,554,555],{},"Solution",[61,557,558,568,579],{},[48,559,560,563],{},[66,561,562],{},"Erreur de clé de chiffrement sur un champ mot de passe",[66,564,256,565,567],{},[38,566,93],{}," du site n'est pas celle d'origine. Remettez l'ancienne clé, ou saisissez de nouveau le secret concerné.",[48,569,570,576],{},[66,571,572,575],{},[38,573,574],{},"restore"," demande confirmation pour une version plus ancienne",[66,577,578],{},"La sauvegarde vient d'une version plus récente que le code installé. Mettez d'abord le code à niveau.",[48,580,581,586],{},[66,582,583],{},[38,584,585],{},"Decryption failed",[66,587,588,589,592],{},"La clé fournie avec ",[38,590,591],{},"--encryption-key"," n'est pas la bonne.",[594,595,596],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}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 .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":136,"searchDepth":143,"depth":222,"links":598},[599,600,601,602,603,604,605,606,607],{"id":32,"depth":222,"text":33},{"id":128,"depth":222,"text":129},{"id":193,"depth":222,"text":194},{"id":252,"depth":222,"text":253},{"id":287,"depth":222,"text":288},{"id":309,"depth":222,"text":310},{"id":417,"depth":222,"text":418},{"id":523,"depth":222,"text":524},{"id":542,"depth":222,"text":543},"Planifiez, chiffrez, copiez hors du serveur et testez les sauvegardes d'un site Dokos auto-hébergé, puis restaurez-les avec bench.","md",{"reviewed":611,"last_verified":612,"sources":613},true,"2026-11-04",[614,615,616,617,618,619],"apps\u002Ffrappe\u002Ffrappe\u002Fcommands\u002Fsite.py (develop, backup, restore)","apps\u002Ffrappe\u002Ffrappe\u002Futils\u002Fbackups.py (develop)","apps\u002Ffrappe\u002Ffrappe\u002Fcore\u002Fdoctype\u002Fsystem_settings\u002Fsystem_settings.json (develop)","apps\u002Ffrappe\u002Ffrappe\u002Fdesk\u002Fpage\u002Fbackups\u002Fbackups.js (develop)","bench 2.9.0 (bench\u002Fbench.py, setup backups)","helpdesk:28621","\u002Fnext\u002Fadministrer\u002Fexploitation\u002Fsauvegardes-et-restauration",{"title":5,"description":608},"2.next\u002F5.administrer\u002F03.exploitation\u002F10.sauvegardes-et-restauration","3xVpH1-QUh58oRiYG102Sd6UCK1gPdWwez93LIq4A-w",{},1793871717969]