La sauvegarde automatique mise en place dans l’article précédent ne vaut que si on sait s’en servir le jour où on en a besoin. Cet article décrit la procédure complète de restauration d’un container Docker depuis une sauvegarde Google Drive – testée sur Stirling PDF, Nginx Proxy Manager et Portainer.
Avant de commencer : vérifie que tu as bien une sauvegarde récente dans Google Drive. La commande suivante liste les dates disponibles :
Note la date de la sauvegarde que tu veux restaurer – tu en auras besoin à l’étape 4.
Vue d’ensemble de la procédure
Noter l’état actuel du container (point de comparaison)
Arrêter et supprimer le container
Renommer le dossier local (précaution de sécurité)
Restaurer les fichiers depuis Google Drive
Relancer le container
Vérifier que tout fonctionne
Nota : dans tout ce qui suit, tu remplaceras USER par ton nom d’utilisateur linux.
Procédure standard (Stirling PDF et containers similaires)
Étape 1 – Noter l’état actuel
Avant de toucher quoi que ce soit, note les éléments qui te permettront de vérifier que la restauration a bien fonctionné :
les réglages personnalisés du logiciel (utilisateurs, mots de passe, configuration)
les favoris, l’historique, tout ce qui est propre à ton usage
Vérifie l’empreinte des fichiers locaux actuels :
ls -la /home/USER/docker/nom-du-logiciel/
pour chaque sous-dossier :
ls -la /home/USER/docker/nom-du-logiciel/sous-dossier/
Vérifie aussi, pour chaque sous-dossier également, que la sauvegarde Drive contient bien les fichiers critiques et que leurs tailles correspondent :
sudo rclone --config /home/USER/.config/rclone/rclone.conf ls "gdrive:/daily/YYYY-MM-DD/nom-du-logiciel/sous-dossier/"
Les tailles en octets doivent correspondre à celles des fichiers locaux. Ce qui importe c’est que les fichiers principaux (base de données, configuration) soient de taille identique – pas besoin de vérifier les logs. Si c’est le cas, tu peux continuer en confiance.
Étape 2 – Arrêter et supprimer le container dans Portainer
Si tu restaure Portainer, va voir le cas particulier plus bas.
Depuis ton navigateur, ouvre Portainer :
Va dans Stacks dans le menu de gauche
Clique sur la stack du logiciel à restaurer
Clique sur Stop puis sur Delete this stack
Confirme la suppression
Le logiciel n’est plus accessible. C’est normal, on va le reconstruire depuis la sauvegarde.
Étape 3 – Renommer le dossier local (précaution)
Plutôt que de supprimer définitivement le dossier local, on le renomme. Si quelque chose se passe mal pendant la restauration, on peut revenir en arrière immédiatement.
NPM contient des données critiques : tes certificats Let’s Encrypt et ta configuration de proxy. La procédure standard s’applique, avec deux différences importantes.
Différence 1 – commande de restauration
Les certificats Let’s Encrypt dans letsencrypt/live/ sont des liens symboliques (symlinks) qui pointent vers les vrais fichiers dans letsencrypt/archive/. Sans l’option --copy-links, rclone refuse de les copier et la restauration échoue au démarrage avec l’erreur cannot load certificate.
La commande de restauration doit donc inclure --copy-links :
que tes proxy hosts sont bien présents dans l’interface NPM
que le cadenas vert s’affiche sur pdf.DOMAINE.com (certificat SSL actif)
Si les certificats ont expiré pendant une longue interruption, NPM les renouvellera automatiquement au redémarrage.
Cas particulier – Portainer
Portainer est un cas spécial car il s’auto-gère. On ne peut pas le restaurer depuis son propre interface puisqu’il sera arrêté pendant la procédure. Toute la restauration se fait en ligne de commande.
1 – Noter l’état actuel
ls -la /home/USER/docker/portainer/
ls -la /home/USER/docker/portainer/data/
Vérifie que la sauvegarde contient bien les fichiers critiques :
sudo rclone --config /home/USER/.config/rclone/rclone.conf ls "gdrive:/daily/YYYY-MM-DD/portainer/data/"
Tu dois voir portainer.db, portainer.key et portainer.pub avec des tailles cohérentes.
2 – Arrêter et supprimer Portainer en ligne de commande
5 – Redonner les droits root et relancer Portainer
Les fichiers dans portainer/data/ doivent appartenir à root – Portainer les gère en root et refuse de démarrer autrement. C’est une étape indispensable après restauration :
Ouvre Portainer dans ton navigateur (https://[IP-DU-BEELINK]:9443).
Si Portainer retrouve ton tableau de bord habituel sans te demander de créer un nouveau mot de passe, la restauration est réussie. Vérifie que tes stacks sont bien présentes dans l’onglet Stacks.
Nettoyage
rm -rf /home/USER/docker/portainer-BACKUP-TEST
En cas de problème
Le logiciel démarre mais ne retrouve pas les données Vérifie que les chemins dans le docker-compose.yml correspondent bien aux dossiers restaurés. Un chemin mal copié suffit à pointer vers un dossier vide.
« Can’t follow symlink without -L/–copy-links » Ce message apparaît lors de la restauration de NPM. Ajoute --copy-links à la commande rclone de restauration – voir la section NPM ci-dessus.
« Permission denied » au démarrage du container Les fichiers restaurés par Rclone appartiennent à USER, mais certains containers ont besoin que leurs dossiers appartiennent à root. C’est systématiquement le cas pour Portainer. Tape :
Portainer affiche « New Portainer installation » Les fichiers de données n’ont pas les bons droits après restauration. Arrête le container, refais sudo chown -R root:root /home/USER/docker/portainer/data, puis relance avec docker run.
Tu veux restaurer une version plus ancienne Remplace simplement YYYY-MM-DD par la date souhaitée dans la commande de l’étape 4. Les sauvegardes hebdomadaires sont dans gdrive:/weekly/YYYY-Wxx/ et les mensuelles dans gdrive:/monthly/YYYY-MM/.
Dans le prochain article
Maintenant que la sauvegarde et la restauration sont opérationnelles et testées, on verra comment installer un nouveau container en suivant dès le départ les bonnes pratiques – sans avoir à corriger la configuration après coup.
Pour information, je me suis aidée de Claude.ai pour réaliser ces actions et rédiger l’article.
Maintenant que tous les fichiers importants de mes containers Docker sont regroupés dans /home/USER/docker/, je peux mettre en place une sauvegarde automatique vers Google Drive. C’est l’objectif de cet article.
J’utilise Rclone, un outil en ligne de commande qui synchronise des dossiers locaux vers des dizaines de services cloud. Couplé à un script bash et au planificateur cron, il permet d’automatiser complètement les sauvegardes, sans intervention manuelle.
La stratégie de rétention Grand-Père / Père / Fils
Plutôt qu’une simple copie quotidienne qui s’écrase, j’ai mis en place une stratégie de rétention appelée Grand-Père / Père / Fils (GFF) :
les sauvegardes quotidiennes sont conservées 7 jours
une sauvegarde hebdomadaire est créée chaque dimanche et conservée 4 semaines
une sauvegarde mensuelle est créée le 1er de chaque mois et conservée 12 mois
une sauvegarde annuelle est créée le 1er janvier et conservée indéfiniment
Rclone ne gère pas cette logique nativement. C’est le script bash qui s’en charge.
Ce que tu auras dans Google Drive au bout de quelques semaines
La partie après /folders/ est l’ID du dossier. Copie-la et garde-la de côté.
En indiquant cet ID à Rclone, il ne verra que ce dossier et rien d’autre de ton Drive – c’est plus propre et plus sûr.
Étape 2 – Installer Rclone
Sur le Beelink, ouvre un terminal :
sudo apt install rclone
Vérifie l’installation :
rclone version
Tu dois voir quelque chose comme rclone v1.xx.x.
Étape 3 – Connecter Rclone à Google Drive
Lance la configuration interactive :
rclone config
Suis ces étapes dans le menu :
n → nouveau remote
Nom : gdrive
Type : drive → tape le numéro correspondant à "Google Drive"
client_id : → laisse vide, Entrée
client_secret : → laisse vide, Entrée
scope : 1 → accès complet à Drive
Edit advanced config : y → on répond oui pour pouvoir renseigner root_folder_id
laisser tout vide sauf :
root_folder_id : → colle ici l'ID copié à l'étape 1
laisser tout le reste vide, Entrée à chaque fois
Edit advanced config : n → la question est reposée, on répond non cette fois
Use auto config : y → ou n si tu es en SSH depuis Windows
Si tu travailles directement sur le Beelink (avec écran et clavier) :
Use auto config : y
Un navigateur s’ouvre – connecte-toi à Google et autorise Rclone.
Si tu travailles depuis ton PC Windows en SSH :
Use auto config : n
Rclone te donne une URL. Ouvre-la dans ton navigateur Windows, autorise l’accès, et colle le code retourné dans le terminal.
Si la commande retourne le contenu de ton dossier Drive (ou rien si le dossier est vide), la connexion est établie. Rclone ne voit que ce dossier – rien d’autre de ton Drive.
Étape 4 – Configurer sudo sans mot de passe pour Rclone
Portainer et Nginx Proxy Manager écrivent leurs fichiers en root à l’intérieur du container. Pour que Rclone puisse les lire, il doit s’exécuter avec sudo – y compris quand cron lance le script automatiquement la nuit, sans session interactive.
Note : selon ta configuration Ubuntu, cette étape peut ne pas être nécessaire. Si tu viens de taper ton mot de passe sudo, il est en cache pour quelques minutes. Pour être sûr que cron fonctionnera la nuit sans session ouverte, configure cette règle dans tous les cas.
sudo visudo
Ajoute cette ligne tout en bas :
USER ALL=(ALL) NOPASSWD: /usr/bin/rclone
Sauvegarde avec Ctrl+O puis quitte avec Ctrl+X.
Attention avec visudo : ne ferme jamais le fichier directement avec Ctrl+X sans avoir d’abord sauvegardé avec Ctrl+O. visudo valide la syntaxe avant d’enregistrer – une faute de frappe dans ce fichier pourrait te bloquer hors de sudo.
Étape 5 – Créer le token API Portainer
Le script de sauvegarde interroge l’API Portainer avant chaque sauvegarde pour exporter automatiquement le docker-compose.yml de chaque stack dans son dossier. Ainsi la sauvegarde contient toujours le YAML exact et à jour.
Pour cela il faut créer un token d’accès dans Portainer :
Ouvre Portainer dans ton navigateur
Clique sur ton nom d’utilisateur en haut à droite
Clique sur My account
Descends jusqu’à la section Access tokens
Clique sur Add access token
Donne-lui un nom : backup-script
Copie immédiatement le token affiché – il ne sera plus visible ensuite
Colle ce contenu (remplace USER par ton nom d’utilisateur Linux) :
#!/bin/bash
# ═══════════════════════════════════════════════════════════════
# backup-docker.sh — Sauvegarde Docker vers Google Drive
# Stratégie Grand-Père / Père / Fils (quotidien / hebdo / mensuel / annuel)
# v4 - export automatique des YAML depuis l'API Portainer
# --links pour les symlinks Let's Encrypt
# ═══════════════════════════════════════════════════════════════
# -- Configuration ────────────────────────────────────────────────
SOURCE="/home/ald/docker"
REMOTE="gdrive:"
LOG="/home/ald/rclone-logs/backup-docker.log" # hors /docker/ pour éviter de sauvegarder un fichier en cours d'écriture
RCLONE_CONF="/home/ald/.config/rclone/rclone.conf"
PORTAINER_URL="https://192.168.86.101:9443"
PORTAINER_TOKEN=$(cat /home/ald/docker/scripts/.portainer-token)
DATE=$(date +%Y-%m-%d)
DAY=$(date +%u) # 1=lundi ... 7=dimanche
DOM=$(date +%d) # jour du mois (01-31)
MONTH=$(date +%m) # mois (01-12)
# -- Création du dossier de log si nécessaire ─────────────────────
mkdir -p /home/ald/rclone-logs
# -- Fonction de log ──────────────────────────────────────────────
log() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" >> "$LOG"
}
# -- Commande rclone de base ──────────────────────────────────────
# --exclude "*.db-shm" : exclut les fichiers temporaires SQLite WAL
# --exclude "*.db-wal" : idem - ces fichiers changent en permanence
# et sont inutiles pour une restauration
# --links : copie les liens symboliques comme de vrais fichiers
# indispensable pour les certificats Let's Encrypt de NPM
# Important : ne pas ajouter --log-level, incompatible avec --log-file
RCLONE="sudo rclone --config $RCLONE_CONF --log-file=$LOG --links --exclude *.db-shm --exclude *.db-wal"
log "=== Début sauvegarde ==="
# -- Export automatique des YAML depuis l'API Portainer ───────────
log "Export des YAML depuis Portainer..."
STACKS_JSON=$(curl -sk \
-H "X-API-Key: $PORTAINER_TOKEN" \
"$PORTAINER_URL/api/stacks")
if [ -z "$STACKS_JSON" ] || [ "$STACKS_JSON" = "null" ]; then
log "ERREUR : impossible de contacter l'API Portainer - les YAML ne seront pas mis à jour."
else
STACK_COUNT=$(echo "$STACKS_JSON" | python3 -c "
import sys, json
stacks = json.load(sys.stdin)
print(len(stacks))
" 2>/dev/null)
log "$STACK_COUNT stack(s) trouvée(s) dans Portainer."
echo "$STACKS_JSON" | python3 -c "
import sys, json
stacks = json.load(sys.stdin)
for s in stacks:
print(s['Id'], s['Name'])
" 2>/dev/null | while read stack_id stack_name; do
YAML_CONTENT=$(curl -sk \
-H "X-API-Key: $PORTAINER_TOKEN" \
"$PORTAINER_URL/api/stacks/$stack_id/file" \
| python3 -c "
import sys, json
data = json.load(sys.stdin)
print(data.get('StackFileContent', ''))
" 2>/dev/null)
if [ -n "$YAML_CONTENT" ]; then
DEST="$SOURCE/$stack_name/docker-compose.yml"
mkdir -p "$SOURCE/$stack_name"
echo "$YAML_CONTENT" > "$DEST"
log "YAML exporté : $stack_name/docker-compose.yml"
else
log "ATTENTION : YAML vide ou inaccessible pour la stack $stack_name"
fi
done
fi
# -- Vérification des docker-compose.yml manquants ────────────────
# Le dossier "scripts" est exclu : ce n'est pas un container Docker
# Portainer lui-même ne figure pas dans les stacks - son docker-compose.yml
# doit être créé manuellement une fois (voir article sur le regroupement).
log "Vérification des docker-compose.yml..."
for dir in "$SOURCE"/*/; do
logiciel=$(basename "$dir")
compose="$dir/docker-compose.yml"
if [ ! -f "$compose" ]; then
log "ATTENTION : docker-compose.yml manquant dans $logiciel - à créer manuellement !"
fi
done
# -- Sauvegarde quotidienne ───────────────────────────────────────
log "Copie vers daily/$DATE..."
$RCLONE copy "$SOURCE" "$REMOTE/daily/$DATE"
# -- Sauvegarde hebdomadaire (chaque dimanche) ────────────────────
if [ "$DAY" -eq 7 ]; then
WEEK=$(date +%Y-W%V)
log "Dimanche : création sauvegarde hebdomadaire $WEEK"
$RCLONE copy "$REMOTE/daily/$DATE" "$REMOTE/weekly/$WEEK"
fi
# -- Sauvegarde mensuelle (le 1er de chaque mois) ─────────────────
if [ "$DOM" -eq 01 ]; then
YEARMONTH=$(date +%Y-%m)
log "1er du mois : création sauvegarde mensuelle $YEARMONTH"
$RCLONE copy "$REMOTE/daily/$DATE" "$REMOTE/monthly/$YEARMONTH"
fi
# -- Sauvegarde annuelle (le 1er janvier) ─────────────────────────
if [ "$DOM" -eq 01 ] && [ "$MONTH" -eq 01 ]; then
YEAR=$(date +%Y)
log "1er janvier : création sauvegarde annuelle $YEAR"
$RCLONE copy "$REMOTE/daily/$DATE" "$REMOTE/yearly/$YEAR"
fi
# -- Nettoyage des anciennes sauvegardes sur Drive ────────────────
# Quotidiennes : on garde 7 jours
log "Nettoyage daily > 7 jours..."
RCLONE_CLEAN="sudo rclone --config $RCLONE_CONF --log-file=$LOG"
$RCLONE_CLEAN delete "$REMOTE/daily" --min-age 7d 2>/dev/null
$RCLONE_CLEAN rmdirs "$REMOTE/daily" 2>/dev/null
# Hebdomadaires : on garde 4 semaines
if sudo rclone --config "$RCLONE_CONF" lsd "$REMOTE/weekly" > /dev/null 2>&1; then
log "Nettoyage weekly > 28 jours..."
$RCLONE_CLEAN delete "$REMOTE/weekly" --min-age 28d
$RCLONE_CLEAN rmdirs "$REMOTE/weekly"
else
log "Dossier weekly inexistant sur Drive, nettoyage ignoré."
fi
# Mensuelles : on garde 12 mois
if sudo rclone --config "$RCLONE_CONF" lsd "$REMOTE/monthly" > /dev/null 2>&1; then
log "Nettoyage monthly > 365 jours..."
$RCLONE_CLEAN delete "$REMOTE/monthly" --min-age 365d
$RCLONE_CLEAN rmdirs "$REMOTE/monthly"
else
log "Dossier monthly inexistant sur Drive, nettoyage ignoré."
fi
# Annuelles : conservées indéfiniment, pas de nettoyage automatique
log "=== Sauvegarde terminée ==="
La copie prend plusieurs minutes selon la taille de tes données. C’est normal et rassurant – si ça se termine en moins de 5 secondes, c’est qu’il y a un problème (voir encart erreurs fréquentes ci-dessous).
Cela lance le script tous les jours à 3h du matin. Assure-toi que le Beelink est allumé à cette heure. Sauvegarde avec Ctrl+O puis quitte avec Ctrl+X.
Vérifie que cron a bien enregistré :
crontab -l
Comment vérifier que la sauvegarde automatique a bien tourné
Le lendemain matin, consulte la fin du log :
tail -20 /home/USER/rclone-logs/backup-docker.log
La dernière entrée doit être datée de cette nuit avec === Sauvegarde terminée ===.
Déboguer une sauvegarde qui ne fonctionne pas
Si le log montre une sauvegarde terminée en moins de 5 secondes sans aucune ligne de copie de fichiers, c’est le signe que rclone s’est lancé mais n’a rien fait – souvent à cause d’une erreur silencieuse au démarrage.
La méthode pour diagnostiquer : lance rclone directement en ligne de commande et observe ce qui se passe :
Si cette commande fonctionne, la connexion Drive est bonne. Si elle échoue, le problème est dans la config rclone ou le token Google.
Ensuite relance le script manuellement et surveille le log en temps réel dans un second terminal :
tail -f /home/USER/rclone-logs/backup-docker.log
Erreurs fréquentes
La sauvegarde se termine en moins de 5 secondes Rclone a rencontré une erreur dès le départ et n’a rien copié, mais le script bash a continué jusqu’à la fin. Cause la plus fréquente : un conflit d’options ou un token Google Drive expiré. Diagnostique avec la commande lsd décrite ci-dessus.
« Can’t set -v and –log-level » Ce message apparaît si tu utilises à la fois --verbose et --log-level dans la même commande rclone. Les deux options sont incompatibles. Solution : n’utilise que --log-file sans --log-level – c’est ce que fait le script ci-dessus.
« Can’t follow symlink without -L/–copy-links » Ce message apparaît lors d’une restauration de Nginx Proxy Manager. Les certificats Let’s Encrypt dans letsencrypt/live/ sont des liens symboliques. Lors de la restauration, ajoute --copy-links à la commande rclone. La sauvegarde elle-même est correcte car le script utilise --links.
« Permission denied » sur les fichiers de Portainer ou NPM Ces containers écrivent leurs fichiers en root. Rclone doit s’exécuter avec sudo pour les lire. Vérifie que la ligne NOPASSWD est bien présente dans sudoers (étape 4), et que le chemin /usr/bin/rclone est correct sur ton système (which rclone pour le vérifier).
« Permission denied » lors de l’export du YAML Le fichier docker-compose.yml dans le dossier du logiciel appartient à root (créé avec sudo). Corrige les droits :
Le dossier weekly ou monthly n’apparaît pas C’est normal les premières semaines et les premiers mois. weekly se crée le premier dimanche après la mise en place, monthly le 1er du mois suivant. Le script vérifie leur existence avant de tenter un nettoyage – pas d’erreur à attendre.
Cron ne lance pas le script Vérifie que le service cron tourne : systemctl status cron. S’il est inactif : sudo systemctl enable cron && sudo systemctl start cron. Vérifie aussi que le script est bien exécutable : ls -la /home/USER/docker/scripts/backup-docker.sh doit afficher -rwxr-xr-x.
Dans le prochain article
On verra comment restaurer un container depuis une sauvegarde Google Drive – c’est-à-dire utiliser concrètement tout ce qu’on vient de mettre en place.
J’ai expliqué dans des articles précédents comment j’ai installé des logiciels sous forme de containers Docker sur mon ordinateur Linux. Je veux maintenant pouvoir les sauvegarder automatiquement dans le cloud. Pour cela, il faut d’abord que je sache où sont stockés les fichiers essentiels — et surtout que je les regroupe tous au même endroit..
Pourquoi regrouper les données ?
Si on voit les containers comme des maisons, le fichier YAML (docker-compose.yml) est le plan de construction, mais il ne contient pas les habitants ni les meubles. Pour chaque container, il faut pouvoir localiser :
Le docker-compose.yml : c’est le plan de l’architecte. Si la maison brûle, le plan permet de reconstruire exactement la même structure.
Les volumes (les dossiers sur le Beelink) : ce sont tes meubles, tes photos et tes souvenirs. Si tu reconstruis la maison avec le plan mais que tu n’as plus tes meubles, la maison est vide.
Pour Stirling PDF ce n’est pas très grave de perdre les volumes car rien n’y est stocké de façon critique. Mais pour Portainer, ce serait une catastrophe : le fichier YAML réinstallera le logiciel, mais tu perdras toutes tes stacks, l’historique de tes containers et tes réglages utilisateurs.
L’objectif est donc de tout regrouper dans /home/USER/docker/nom-du-logiciel/ : le docker-compose.yml ET les dossiers de données, pour pouvoir tout sauvegarder d’un seul coup.
Pour toute nouvelle installation, suis la checklist PDF qui résume les 4 étapes à suivre avant de cliquer sur Deploy. Cet article explique comment corriger des installations existantes qui n’ont pas suivi cette discipline dès le départ.
Comment contraindre Docker à utiliser un répertoire spécifique ?
Par défaut, quand on utilise des « named volumes » dans le YAML, Docker stocke les données dans un dossier système caché et protégé – invisible depuis Portainer et inaccessible facilement. Il faut remplacer ces named volumes par des chemins absolus pointant vers ton dossier personnel.
La procédure est différente selon que le container est nouveau ou qu’il tourne déjà.
Cas 1 – Nouveau container (pas encore installé)
Étape 1 – Identifier les volumes dans la documentation
Va sur la page Docker Hub du logiciel et cherche la section « Volumes » ou « Mounts ». Elle liste les chemins internes du container – ce sont eux que tu vas « brancher » sur ton Beelink. Note-les avant de créer la stack.
Tu Tu crées autant de dossiers que de volumes nécessaires. Et tu choisis librement leurs noms. Ce qui compte c’est que le YAML pointe ensuite vers ces mêmes dossiers.
Étape 3 – Écrire le YAML directement avec les chemins absolus
Dans l’éditeur de Stack Portainer, écris les volumes avec les chemins complets dès le départ :
Arrête le container depuis Portainer (Stop), puis copie les données :
# Le /. à la fin copie le contenu du dossier, pas le dossier lui-même
sudo cp -r /var/lib/docker/volumes/stirling-pdf_stirling_trainingData/_data/. /home/USER/docker/stirling-pdf/trainingData/
sudo cp -r /var/lib/docker/volumes/stirling-pdf_stirling_extraConfigs/_data/. /home/USER/docker/stirling-pdf/configs/
sudo cp -r /var/lib/docker/volumes/stirling-pdf_stirling_customFiles/_data/. /home/USER/docker/stirling-pdf/customFiles/
sudo cp -r /var/lib/docker/volumes/stirling-pdf_stirling_logs/_data/. /home/USER/docker/stirling-pdf/logs/
# Redonne les droits à ton utilisateur
sudo chown -R USER:USER /home/USER/docker/stirling-pdf
Étape 4 – Modifier le YAML dans Portainer
Dans l’éditeur de Stack, remplace les named volumes par les chemins absolus :
Supprime la section volumes: en bas du fichier (celle qui listait les noms). Puis clique sur Update the stack.
Pourquoi le chemin complet plutôt que ./ ? Portainer stocke ses fichiers de manière un peu invisible. En écrivant le chemin entier, tu es certain à 100 % de l’endroit où les données atterrissent sur le disque – indispensable pour tes futures sauvegardes.
Cas particulier – Nginx Proxy Manager et les certificats Let’s Encrypt
NPM est indispensable à relocaliser car c’est là que se trouvent tes certificats Let’s Encrypt et toute ta configuration de proxy.
Sa structure de dossiers est la suivante :
nginx-proxy-manager/
├── data/ - base de données, logs, configuration nginx
└── letsencrypt/ - certificats SSL
├── archive/ - les vrais fichiers .pem
├── live/ - liens symboliques vers archive/
└── renewal/ - configuration de renouvellement
Point d’attention important : le dossier letsencrypt/live/ ne contient pas de vrais fichiers mais des liens symboliques (symlinks) qui pointent vers les fichiers dans letsencrypt/archive/. Les deux dossiers doivent être présents dans ta sauvegarde pour que la restauration fonctionne. L’outil de sauvegarde Rclone doit être configuré avec l’option --links pour les copier correctement – c’est détaillé dans l’article sur la sauvegarde automatique.
La procédure de relocalisation est identique au Cas 2, avec ces volumes dans le YAML :
Une fois le container configuré et fonctionnel, crée immédiatement un fichier docker-compose.yml dans son dossier. Ce fichier est indispensable pour pouvoir reconstruire le container depuis zéro en cas de problème – et pour que la sauvegarde automatique soit complète.
Le chown est important : il permet au script de sauvegarde de mettre à jour ce fichier automatiquement à chaque sauvegarde, si tu modifies la stack dans Portainer.
Le script de sauvegarde vérifie à chaque lancement que ce fichier existe dans chaque dossier. Si ce n’est pas le cas, il écrit une ligne ATTENTION dans le log – un rappel quotidien jusqu’à ce que ce soit fait.
Cas particulier – Portainer
Portainer ne s’installe pas via une stack mais via une commande docker run directe – il n’apparaît donc pas dans la liste des stacks de Portainer et son YAML ne peut pas être exporté automatiquement. Crée son fichier manuellement :
Note sur les droits des données Portainer : contrairement aux autres containers, les fichiers dans portainer/data/ doivent appartenir à root (Portainer les crée et les gère en root). Ne fais pas de chown USER sur ce sous-dossier – uniquement sur le docker-compose.yml.
Supprimer les volumes inutilisés
Une fois que tu as vérifié que tout fonctionne avec les nouveaux chemins, supprime les anciens named volumes pour libérer de l’espace disque :
sudo docker volume prune
Cette commande supprime tous les volumes qui ne sont attachés à aucun container (allumé ou éteint). Elle ne touche pas à ce qui est dans ton dossier personnel ni aux volumes actifs.
En résumé, ton nouveau réflexe
« Un nouveau container ? Un nouveau dossier dans /home/USER/docker/ et un chemin complet dans le YAML – plus un docker-compose.yml créé immédiatement. »
C’est cette discipline qui fera que, dans 6 mois, quand tu auras 10 logiciels différents, tu pourras tout sauvegarder sur ton Google Drive d’une seule traite, car tout sera sagement rangé au même endroit.
Dans le prochain article de cette série, nous verrons comment configurer Rclone pour sauvegarder automatiquement tout le dossier /home/USER/docker/ vers Google Drive.
J’ai décrit dans la série « Mon ordinateur Ubuntu » les étapes d’installation d’un logiciel libre de gestion des pdf. Je n’ai pas vraiment parlé du logiciel lui-même car le sujet c’était plutôt l’installation locale dans un container Docker, et accessible depuis l’extérieur. Mais je trouve utile de décrire rapidement ce que je peux faire avec ce nouveau logiciel à ma disposition.
Stirling PDF a d’énormes qualités : il a une multitude de fonctionnalités (cf la copie d’écran de ses outils ci-dessous), il est gratuit, il peut être installé pour plusieurs utilisateurs (avec une limite de 5 cependant).
Stirling PSF est disponible en version « desktop », pas seulement en version serveur hébergé. On peut le télécharger sur le site de Stirling : https://www.stirling.com/download
mais quelques limites cependant
J’utilise actuellement une version payante (wondershare pdf), dont le coût me paraît excessif, tout comme toutes les autres solutions un peu complètes que j’avais trouvé jusqu’à présent.
Je pense que Stirling PDF est parfait pour toutes les manipulations sophistiquées de pdf (fusion, séparation, modifications, compression, conversion, etc). Mais malheureusement il laisse de côté deux fonctions bien utiles : l’impression « pdf » et la gestion du scanner pour générer un pdf.
impression de PDF
Tu as déjà dans ta liste d’imprimantes : « Microsoft Print to PDF ».
Elle fonctionne exactement comme une vraie imprimante : tu fais « Imprimer » depuis n’importe quel logiciel (Word, une page web, un mail), tu choisis cette imprimante, et cela te crée un fichier PDF sur ton bureau.
Pas besoin d’un logiciel pour ça !
utiliser le scanner
lire un pdf
j’utiliserai Edge, qui est intégré à mon ordinateur déjà.
Manipulations Complexes
Là j’utiliserai Stirling PDF, pour l’OCR (reconnaissance de caractères), fusionner des fichiers, protéger par mot de passe, ou convertir un Word.
Améliorations possibles de mes utilisations de logiciel PDF
Il y a une option intéressante dans Stirling pour utiliser son téléphone pour générer des PDF : le téléphone peut également servir de scanner mobile. Voir les explications (en anglais) ici : https://docs.stirlingpdf.com/Functionality/Mobile-Scanner/. Je configurerai prochainement Stirling pour ça.
Avant de suivre ce tutoriel, je te recommande vivement de lire l’article Docker (et Portainer) – regrouper les données qui explique pourquoi il est important de bien organiser les fichiers de tes containers dès le départ. Tu peux aussi télécharger la checklist PDF et la garder sous la main pendant l’installation.
Note pour les lecteurs : le YAML de NPM crée des « named volumes » cachés, qui contiennent des éléments critiques : tes certificats Let’s Encrypt et toute ta configuration de proxy. Il est indispensable de les relocaliser dans /home/USER/docker/nginx-proxy-manager/. La procédure complète est expliquée dans l’article Docker (et Portainer) — regrouper les données, section « Pour Stirling PDF ».
j’ai installé Stirling PDF sur un ordinateur à faible consommation qui restera allumé en permanence. Je veux pouvoir y accéder où que je sois. Je vais donc créer un système pour y accéder comme si c’était un site internet standard https://pdf.DOMAINE.com. Pour cela 6 étapes, plus ou moins difficiles :
Attribuer une IP fixe à l’ordinateur Linux ;
régler mon réseau interne pour que les ports 80 et 443 soient redirigés (autoriser le reverse proxy)
Installer et connecter NGinx Proxy Manager (via Portainer)
Créer le « Pont » dans Nginx Proxy Manager vers https://pdf.DOMAINE.com
installer un certificat Let’s Encrypt
vérifier tout
Les étapes 1 et 2 sont complètement liées à ton installation interne. Ce que je décris est spécifique à moi. C’est l’étape 2 qui a été le plus difficile pour moi. Heureusement que Gemini m’a aidé.
Pour le reste, tout est transférable je pense.
Avant de démarrer
Obtenir un nom de domaine
Pour ma part j’ai acheté un domaine sur infomaniak. On peut le faire avec n’importe quel fournisseur, type OVH, Gandi ou autre. J’aurais aussi pu utiliser un nom de domaine que j’ai déjà puisque j’utiliserai des sous-domaines. Pour ce qui suit on utilisera le nom de domaine DOMAINE.com.
Identifier l’IP de ma box
Depuis ton PC Windows, va sur https://www.mon-ip.com/. mon IP est par exemple 12.123.45.678 Attention, si tu utilises un VPN le site te renverra l’IP de ton VPN et pas celle de ton point d’accès à internet, et rien ne fonctionnera.
Pour vérifier qu’elle est fixe, utiliser https://www.mon-ip.com/ip-dynamique.php . Elle est fixe pour moi. Si elle ne l’était pas, il faudrait que je m’intéresse aux clients DDNS, souvent déjà présents dans les box internet, les Google Mesh, et qui peut aussi être placé dans un conteneur Docker sur mon ordinateur Linux). Le client DDNS informe alors le gestionnaire du nom de domaine de la nouvelle adresse IP à utiliser lorsque le fournisseur internet la change.
Pointer le nom de domaine vers ma box
Comme j’ai acheté le nom de domaine chez Infomaniak, je vais maintenant dans mon manager Infomaniak pour régler la zone DNS du domaine pdf.DOMAINE.com
Chez Infomaniak :
Va dans Domaines > DOMAINE.com > Zone DNS.
Ajoute une entrée (un « Enregistrement A ») :
Nom (ou hôte) : pdf (pour créer pdf.DOMAINE.com).
Cible (ou IP) : Ton adresse IP publique notée plus haut, 12.123.45.678.
Enregistre.
Attention, il faut au moins 1 heure pour que tous les systèmes de routage du monde soient informés.
Dans mon réseau, c’est un Google Mesh qui attribue les adresses IP, pas le routeur de mon opérateur. Je fais donc les réglages sur mon téléphone, dans l’application google Home.
Ouvre l’application Google Home.
Appuie sur l’icône Favoris ou Appareils et cherche ton réseau Wi-Fi.
Va dans Paramètres du réseau > Paramètres avancés > Réseau local (LAN).
Cherche une option nommée « Réservation d’adresse IP » ou « Baux statiques ».
Appuie sur le bouton « + », sélectionne ton Beelink dans la liste et enregistre l’adresse 192.168.86.101 (ou une autre de ton choix).
Redémarrer l’ordinateur
étape 2 : Rediriger les ports 80 et 443
j’ai mis du temps sur cette étape. Je ne comprenais pas tout. Et j’avais oublié que c’est le google Mesh qui gère les accès à mon réseau interne, pas la box du fournisseur d’accès. Il faut donc que je procède en deux temps :
dire à la box du fournisseur d’accès d’autoriser l’accès direct du google mesh à internet (mode DMZ) ;
dire au google mesh d’autoriser les entrées via les ports 80 et 443 (redirection de ports).
régler la box du fournisseur d’accès
Pour la plupart des gens, on ne fait pas ce réglage, on passe tout de suite à la redirection des ports 80 et 443 plus loin.
Pour accéder à ma box internet, ilfaut que je me connecte directement à elle (pas via le boîtier google mesh), par exemple avec un cable ethernet.
Puis de mon ordinateur connecté à cette box : 192.168.1.1 dans un navigateur.
Aattribue une IP fixe au boîtier Google Mesh. Par exemple 192.168.1.100
Ensuite, dans les paramètres de la Livebox, cherche l’option DMZ (Zone Démilitarisée). Active la DMZ pour l’adresse du Google Mesh. Cela signifie : « Livebox, n’essaie pas de filtrer ce qui arrive, envoie tout directement au Google Mesh, c’est lui qui gère la sécurité ».
Ensuite, tu n’auras plus qu’à gérer les redirections de ports (80 et 443) uniquement dans l’application Google Home.
N’oublie pas de reconnecter ton ordinateur Windows derrière le Google Mesh pour être sur le même réseau local que l’ordinateur Ubuntu !
redirection des ports 80 et 443
Pour moi c’est sur le Google Mesh, via l’application Google Home sur mon téléphone. Mais pour la plupart des gens, c’est directement sur la box.
on doit impérativement rediriger le port 80 également, même si on prévoit de n’utiliser que des connexions sécurisées (httpS).
Ouvre l’application Google Home sur ton téléphone.
Va dans Favoris (ou Paramètres du réseau) > Paramètres avancés > Redirection de port.
Crée deux règles pour l’ordinateur sous Linux (IP 192.168.86.101) :
Règle 1 : Port interne 80, Port externe 80, Protocole TCP.
Règle 2 : Port interne 443, Port externe 443, Protocole TCP.
J’ai installé Docker et Portainer précédemment sur mon ordinateur Linux. Voir à ce sujet l’article Docker et Portainer sur ubuntu . Je réalise donc l’installation dans le navigateur de mon ordinateur Windows, par Portainer.
Va dans Stacks (dans le menu de gauche) puis clique sur le bouton + Add stack.
Nomme la stack : nginx-proxy-manager.
Dans l’éditeur, colle le code YAML suivant :
version: '3.8'
services:
npm:
image: 'jc21/nginx-proxy-manager:latest'
container_name: nginx-proxy-manager
restart: unless-stopped
ports:
- '80:80' # Port pour le trafic HTTP et Let's Encrypt
- '81:81' # Port de l'interface d'administration de NPM
- '443:443' # Port pour le trafic HTTPS sécurisé
volumes:
- npm_data:/data
- npm_letsencrypt:/etc/letsencrypt
volumes:
npm_data:
npm_letsencrypt:
Clique sur Deploy the stack. Attends une minute que Docker télécharge l’image et lance le service.
Première connexion et configuration
Une fois que la stack est « Green » (en cours d’exécution) :
Ouvre un nouvel onglet sur ton Windows et tape : http://192.168.86.101:81.
Connecte-toi avec les identifiants par défaut :
Email : admin@example.com
Mot de passe : changeme
Important : NPM va immédiatement te demander de modifier ton nom, ton email d’administrateur et ton mot de passe. Fais-le soigneusement et note bien ces informations.
étape 4 : Créer le « Pont » dans Nginx Proxy Manager
Maintenant, on dit à ton ordinateur Linux quoi faire quand il reçoit une demande pour « pdf ».
Connecte-toi à NPM sur ton navigateur Windows : http://192.168.86.101:81.
Va dans l’onglet Proxy Hosts et clique sur Add Proxy Host.
Onglet « Details » :
Domain Names : pdf.DOMAINE.com (appuie sur Entrée).
Scheme : http.
Forward Name/IP : 192.168.86.101.
Forward Port : 8080.
Coche Block Common Exploits et Websockets Support.
Normalement à ce stade, si je tape https://pdf.DOMAINE.com dans un navigateur, il pointe vers mon ordinateur linux mais rien ne s’affiche car le navigateur bloque l’accès à un site non sécurisé. Il manque en effet un certificat Let’s Encrypt qui garantit que le site est correctement encrypté.
étape 5 : installer un certificat Let’s Encrypt
Tu as maintenant tous les ingrédients : un nom de domaine (DOMAINE.com), un serveur prêt (sous Linux) et un chef d’orchestre (Nginx Proxy Manager).
Voici l’étape indispensable pour que https://pdf.DOMAINE.com affiche ton Stirling PDF avec le cadenas vert. En effet, le cadenas vert ne s’affiche que si mon site a un certificat qui dit que je possède bien le domaine DOMAINE.com et que le navigateur parvient à utiliser un protocole de cryptage moderne (TLS 1.2 ou 1.3) pour l’afficher.
Connecte-toi à NPM sur ton navigateur Windows : http://192.168.86.101:81.
2. Sur la ligne pdf.domaine.com clique sur les trois petits points verticaux tout à droite (sous la colonne « Status »). Clique sur Edit (Modifier). Une fenêtre surgissante (pop-up) va s’ouvrir. Tu y verras alors plusieurs onglets en haut : Details, Custom locations, SSL, et Advanced. Clique sur l’onglet SSL.
Coche HTTP/2 Support et HSTS Enabled (c’est mieux pour la sécurité et la rapidité).
Dans le menu déroulant « SSL Certificate », choisis Request a new SSL Certificate.
Coche Force SSL (pour que personne ne reste en non-sécurisé).
3. Clique sur Save
NPM va mouliner pendant 30 secondes. Il est en train de discuter avec Let’s Encrypt pour prouver que tu es bien le propriétaire de DOMAINE.com
étape 6 : vérifier tout
On a installé un un Proxy Host, quelque chose qui dit « Si quelqu’un demande pdf.DOMAINE.com, envoie-le vers 192.168.86.101 sur le port 8080 (Stirling PDF) »
Maintenant, si je tape pdf.DOMAINE.com dans le navigateur de n’importe quel ordinateur, dans le monde entier, j’ouvrirai un accès à mon logiciel de gestion de pdf, Stirling PDF !
Je peux même créer une application (PWA pour Progressive Web App) qui m’évitera d’utiliser mon navigateur. Il me suffit de cliquer sur « ouvrir dans l’appli » qui aparaît à droite de l’url pdf.DOMAINE.com en haut du navigateur.
Avant de suivre ce tutoriel, je te recommande vivement de lire l’article Docker (et Portainer) – regrouper les données qui explique pourquoi il est important de bien organiser les fichiers de tes containers dès le départ. Tu peux aussi télécharger la checklist PDF et la garder sous la main pendant l’installation.
Note pour les lecteurs : le YAML utilisé ici crée des « named volumes » gérés par Docker (et Portainer) dans un dossier système caché. Si tu veux pouvoir sauvegarder facilement tes données, il faut les relocaliser dans /home/USER/docker/stirling-pdf/. La procédure complète est expliquée dans l’article Docker (et Portainer) — regrouper les données, section « Pour Stirling PDF ».
Cette action a été réalisée après avoir installé Docker et Portainer sur mon PC ubunto (cf l’article Docker et Portainer sur ubuntu). Les actions ont été réalisées à partir de Portainer, dans un navigateur web de mon ordinateur Windows. Mais stirling PDF est installé dans un container Docker sur l’ordinateur Linux.
Maintenant que tu es dans Portainer, on va utiliser ce qu’on appelle un « Stack ». C’est une façon élégante de dire « un fichier de configuration qui installe tout d’un coup ».
Installer Stirling PDF à partir de Portainer
Dans Portainer, clique sur ton environnement « local », puis va dans l’onglet « Stacks » à gauche.
Clique sur le bouton « + Add stack ».
Donne-lui un nom : stirling-pdf.
Dans la zone « Web editor », copie et colle ce bloc de code (c’est le fameux Docker Compose, en YAML) :
Le code contient les instructions pour que Stirling PDF puisse faire de la reconnaissance de caractères (OCR) en anglais et en français. Il prévoit aussi qu’il redémarre tout seul si l’ordinateur Linux redémarre et règle le fuseau horaire sur Europe/Paris.
Le code prévoit aussi que DOCKER_ENABLE_SECURITY=true. Cela obligera toute personne qui accèderai à l’application à entrer un nom d’utilisateur et un mot de passe. Je le prévois tout de suite car on verra plus tard comment je peux accéder à mon logiciel Stirling PDF de partout.
Descends tout en bas et clique sur « Deploy the stack ». Docker va télécharger l’image (cela peut prendre 1 ou 2 minutes selon ta connexion car Stirling PDF est un outil complet).
Utiliser Stirling PDF
Une fois que le statut passe à « Running » (vert) dans Portainer :
Retourne sur ton navigateur Windows.
Ouvre un nouvel onglet et tape : http://[IP_DU_BEELINK]:8080 (ici c’est du http classique, sans le « s »).
Victoire ! Tu devrais voir l’interface magnifique de Stirling PDF.
Identifiants de connexion par défaut
Nom d’utilisateur: admin
Mot de passe: stirling
La page http://192.168.86.152:8080/ me propose de télécharger pour windows. Ne pas le faire car ca crée un programme windows standalone.
Par contre je peux installer une PWA (Progressive Web App) lorsque j’aurai un certificat permettant l’affichage https de stirling PDF.
J’ai décidé d’installer un système de lecture et édition de pdf sur un PC (linux) qui sera accessible en permanence dans mon réseau local et de l’extérieur. J’ai choisi d’installer StirlingPDF, dans un « container », après avoir lu des articles (en particulier sur le site xda-developers.com).
Ajout du 2 mai 2026
Un mot sur l’organisation des données : dans ce tutoriel, Portainer est installé avec un « named volume » (portainer_data) géré automatiquement par Docker. C’est le comportement par défaut — simple à mettre en place, mais qui rend les sauvegardes difficiles car les fichiers sont stockés dans un dossier système caché.
Une fois à l’aise avec Docker, je te recommande de lire l’article Docker (et Portainer) – regrouper les données pour apprendre à tout centraliser au même endroit en vue de sauvegardes automatiques.
c’est quoi un container, Docker et Portainer ?
Claude (IA) a concocté une belle métaphore pour expliquer ça :
Imagine que tu veuilles installer plusieurs petits ateliers spécialisés dans ton entreprise : un pour le découpage, un pour la peinture, un pour l’assemblage. Plutôt que de construire des bâtiments séparés (coûteux et compliqué), tu installes des préfabriqués modulaires dans ton hangar existant. Chaque préfabriqué est indépendant, contient exactement ce dont l’atelier a besoin, et si l’un brûle, les autres continuent de fonctionner.
Docker, c’est le système de préfabriqués. Chaque logiciel (ton outil PDF, ta domotique, ta gestion documentaire) vit dans sa propre boîte étanche appelée « conteneur ». Il n’interfère pas avec les autres, et si tu en as marre, tu jettes la boîte sans laisser de trace.
Portainer, c’est le chef de chantier. Sans lui, tu gérerais tes préfabriqués en tapant des ordres cryptiques dans un terminal. Avec lui, tu as un tableau de bord visuel : tu vois d’un coup d’oeil quels ateliers tournent, tu peux les démarrer, les arrêter, lire leurs journaux de bord, tout ça avec ta souris.
En résumé, Docker permet de créer des compartiments avec tout ce qui est nécessaire à un logiciel. Portainer est une interface de gestion web, pour accéder aux containers de façon simple, sans recourir à la ligne de commandes.
Go ! On installe Docker
Ouvre ton terminal sur Ubuntu et suis ces étapes :
1. Nettoyage et préparation
On s’assure que le système est à jour et qu’il n’y a pas de vieux restes de Docker.
sudo apt update
sudo apt upgrade -y
2. Installation du dépôt officiel Docker
C’est la méthode la plus propre pour avoir une version toujours à jour. Copie et colle ce bloc d’un coup :
C’est indispensable pour ton confort. Cela permet de lancer des commandes Docker sans que l’ordi ne te demande ton mot de passe à chaque fois.
sudo usermod -aG docker $USER
IMPORTANT : Pour que cette modification soit prise en compte, tu dois redémarrer ta session Ubuntu (déconnexion/reconnexion) ou redémarrer carrément le Beelink.
5. Vérification
Une fois que tu as redémarré ta session, ouvre un terminal et tape :
docker run hello-world
Si tu vois un message disant « Hello from Docker ! », c’est gagné : ton Beelink est officiellement un serveur capable de faire tourner des conteneurs.
Ca fonctionne !
Et maintenant, installation de Portainer
Portainer est l’interface de gestion visuelle de Docker.
Portainer est lui-même un conteneur Docker. Il va « surveiller » Docker pour toi et t’offrir une interface web simplifiée.
créer un volume pour les réglages de Portainer
Crée un volume pour que Portainer garde tes réglages en mémoire même si tu redémarres l’ordi :
Ouvre ton navigateur et tape : https://[IP_DU_BEELINK]:9443
Note : Ton navigateur va te dire que la connexion n’est pas privée (car c’est un certificat auto-signé). Clique sur « Paramètres avancés » puis « Continuer vers le site ».
Crée ton compte administrateur (choisis un mot de passe et garde-le bien).
J’ai un ordinateur sous linux que je veux utiliser pour plusieurs activités :
examiner l’offre logicielle Linux pour étudier l’éventualité de quitter complètement l’environnement Windows ;
héberger un système de traitement de pdf interne (pour ne pas acheter des solutions coûteuses et éviter les systèmes en ligne désastreux pour la confidentialité) ;
héberger un système domotique pour ma maison et mon bureau ;
peut-être héberger un système de gestion documentaire ;
apprendre à bien utiliser les moyens modernes d’installation de logiciels (docker, virtualisation, ….) et de sécurisation des réseaux.
J’ai demandé à Claude (Sonnet 4.6) et voici ce qu’elle m’a répondu :
« Docker/Portainer : le bon choix pour toi, maintenant
Tu as eu raison. Voici pourquoi :
Tu gardes un vrai ordinateur. Ton Beelink reste utilisable comme PC Ubuntu au quotidien, ce qui correspond exactement à ton premier objectif : explorer l’écosystème Linux comme alternative à Windows. Avec Proxmox, la machine devient un serveur pur, tu perds cet usage desktop.
La courbe d’apprentissage est progressive. Tu vas déjà apprendre Docker, Portainer, les réseaux, le reverse proxy, les certificats SSL, Samba… C’est déjà substantiel. Proxmox t’aurait ajouté une couche de complexité (gestion des VMs, des bridges réseau, des snapshots) avant même de commencer.
Pour tes usages prévus, Docker suffit largement. Stirling PDF, Home Assistant, Paperless-ngx (gestion documentaire) : tous ont des images Docker maintenues et documentées. Tu n’as pas besoin de l’isolation totale que donne Proxmox. »
Ces arguments m’ont convaincue. J’ai donc décidé de me passer de Proxmox pour l’instant.
Dans les prochains articles je vais explorer Docker et Portainer en installant un système de gestion des PDF, stirlingPDF puis voir comment accéder à stirlingPDF de l’extérieur par un reverse Proxy et un certificat Let’s Encrypt.
J’ai un ordinateur Linux et un ordinateur windows sur le même réseau. J’ai voulu disposer d’un répertoire commun dans lequel je peux échanger simplement des fichiers. Pour cela j’utilise SAMBA dans l’ordinateur Linux. SAMBA c’est l’implémentation du protocole SMB (Server Message Block), le langage standard créé par Microsoft pour le partage de fichiers et d’imprimantes. Ainsi on peut partager des fichiers et des répertoires entre deux systèmes d’exploitation distincts.
Le principe
Un ou plusieurs répertoires du disque dur de mon ordinateur Linux devient un dossier partagé sur ton réseau. Le répertoire est accessible normalement sur l’ordinateur Linux ET sur l’ordinateur Windows (11).
1. Installer Samba sur Ubuntu
Sur l’ordinateur Ubuntu, ouvre un Terminal (raccourci Ctrl + Alt + T) et saisie les commandes suivantes :
Tu peux partager un dossier existant ou en créer un nouveau, par exemple appelé « Partage ».
Crée le dossier : mkdir ~/Partage
Donne-lui les droits pour que tu puisses y copier des fichiers sans blocage : chmod 777 ~/Partage
3. Configurer le partage
On va modifier le fichier de configuration de Samba :
Ouvre le fichier :
sudo nano /etc/samba/smb.conf
Descends tout en bas du fichier avec les flèches de ton clavier et ajoute ceci :
[Beelink-Share]
path = /home/TON_NOM_UTILISATEUR/Partage
browseable = yes
read only = no
guest ok = no
Attention : Remplace TON_NOM_UTILISATEUR par ton vrai nom de session Ubuntu.
Sauvegarde : Ctrl + O, puis Entrée, puis quitte avec Ctrl + X.
Redémarre le service :
sudo systemctl restart smbd
4. Définir un mot de passe Samba
Pour que Windows accepte de se connecter, Samba a besoin de son propre mot de passe (il peut être le même que ta session Ubuntu, mais il doit être enregistré spécifiquement). Tape :
sudo smbpasswd -a TON_NOM_UTILISATEUR
Saisis le mot de passe deux fois. Attention, rien ne s’affiche à l’écran quand tu tapes, c’est normal.
5. Accéder au dossier depuis Windows 11
Comment trouver l’adresse IP de ton Beelink ?
Sur l’ordinateur Linux, dans le terminal, tape : hostname -I. C’est généralement une suite de chiffres comme 192.168.x.x.
Maintenant, retourne sur ton PC principal Windows 11 :
Ouvre l’explorateur de fichiers.
Dans la barre d’adresse en haut, tape : \\ADRESSE_IP_DU_LINUX (ex: \\192.168.1.50).
Windows va te demander un nom d’utilisateur et le mot de passe que tu viens de créer.
Astuce : Fais un clic droit sur le dossier qui apparaît et choisis « Connecter un lecteur réseau ». Il apparaîtra désormais comme un disque dur classique (Z:, Y:, etc.) dans ton poste de travail.
Et voilà !
Ton pont entre Windows et Ubuntu est prêt. Désormais, tout ce que tu glisses dans ce dossier sur Windows sera physiquement sur l’ordinateur Ubuntu et vice versa. Me voici prête pour des tâches plus complexes.
Commentaires récents