Outils pour utilisateurs

Outils du site


software:applications:restic:installer-restic-rest-server-sous-debian13

Installer le serveur REST HTTP du projet restic

Installation et premier démarrage

On peut installer le serveur via le gestionnaire de paquets apt :

apt install -y restic-rest-server

Le service n'est pas immédiatement démarré après l'installation. Il faut faire quelques paramétrages.

Dans le fichier /etc/default/restic-rest-server définir la variable BACKUP_DIR

...

# Directory to store backups.
# Note: the server will not start unless this variable is defined.
BACKUP_DIR = /srv/restic/backups/

...

Créer le répertoire et donner les droits d'écriture à l'utilisateur exécutant le service :

mkdir -p /srv/restic/backups
chown -R restic-rest-server:restic-rest-server /srv/restic/
chmod -R g-w,o-rwx /srv/restic/

Ajouter un utilisateur. L'authentification auprès du serveur REST est gérée via les entrées dans le fichier .htpasswd /etc/restic-rest-server/users.htpasswd.

Pour ajouter des entrées dans le fichier, utiliser la commande htpasswd du paquet apache2-utils :

apt install -y apache2-utils
 
# Créer un nouvel enregistrement dans le fichier
htpasswd -B /etc/restic-rest-server/users.htpasswd myUserName

On peut maintenant démarrer le service :

systemctl enable restic-rest-server.service --now

Si firewalld :

# Autoriser les connexions entrantes sur le port TCP 8000
firewall-cmd --add-port=8000/tcp

Test de connexion

export RESTIC_REPOSITORY="rest:http://user:pass@host:8000/my-test-repo/"
restic init

Chiffrement TLS

Les échanges entre le serveur REST HTTP et les clients restic peuvent être chiffrés. Pour cela il faudra générer un certificat TLS pour le serveur puis paramétrer le service pour utiliser la clé privée et le certificat.

# Déplacer la clé privée et le certificat
mv rstore01.kvm.internal.key rstore01.kvm.internal.pem /etc/restic-rest-server/
chown restic-rest-server: /etc/restic-rest-server/rstore01.kvm.internal.*

Modifier le fichier de configuration du service /etc/default/restic-rest-server

restic-rest-server
# TCP or UNIX listen address.
#LISTEN = unix:/run/restic-rest-server
LISTEN = :8000
 
# Directory to store backups.
# Note: the server will not start unless this variable is defined.
BACKUP_DIR = /srv/restic/backups/
 
# Extra arguments to pass to the server. Run `restic-rest-server --help` to see
# available options. By default, basic authentication is enabled.
ARGS = "\
  --htpasswd-file /etc/restic-rest-server/users.htpasswd \
  --tls --tls-key /etc/restic-rest-server/rstore01.kvm.internal.key \
  --tls-cert /etc/restic-rest-server/rstore01.kvm.internal.cert.pem \
"

Redémarrer le service :

systemctl restart restic-rest-server.service

Depuis un poste client, valider la connexion :

export RESTIC_REPOSITORY="rest:https://user:pass@host:8000/my-test-repo/"
export RESTIC_CACERT="/absolute/path/to/ca-chain.cert"
restic init

Confidentialité des identifiants

Pour éviter que les identifiants apparaissent sur la ligne de commande ou les variables d'environnement, on peut utiliser des fichiers avec accès restreint.

mkdir -p ~/.config/restic
chmod a-rwx,u+rwx ~/.config/restic
 
echo "rest:https://user:pass@server.fqdn:8000/my-repo/" > ~/.config/restic/repo
echo "my-repo-password" > ~/.config/restic/pass
 
# Lecture seule pour l' utilisateur propriétaire
chmod a-rwx,u+r ~/.config/restic/repo ~/.config/restic/pass
 
export RESTIC_REPOSITORY_FILE="/absolute/path/to/.config/restic/repo" 
export RESTIC_PASSWORD_FILE="/absolute/path/to/.config/restic/pass"

Dépannages

Écouter sur le port 443

Impossible de démarrer le service en utilisant un port réservé (comme 80 ou 443).

Après modification du fichier de configuration et redémarrage du service on obtient une erreur du type :

Aug 08 12:01:00 rstore01 restic-rest-server[974]: error: unable to listen: listen on :443 failed: listen tcp :443: bind: permission denied

Plusieurs solutions ont été testées :

  • utiliser la commande setcap 'cap_net_bind_service=+ep' /usr/bin/restic-rest-server pour autoriser le binaire : KO ;
  • Modifier la configuration du service systemd : KO ;
  • Rediriger le trafic entrer via des règles de filtrage nftables 443 → 8000

Avec firewalld :

# Déterminer les zones actives et par celle par défaut
firewall-cmd --get-active-zones
firewall-cmd --get-default-zone
 
# Dans cette exemple, l'interface du serveur est dans la zone public
firewall-cmd --zone=public --add-forward-port=port=443:proto=tcp:toport=8000
 
# Une fois la configuration validée
firewall-cmd --runtime-to-permanent

Références

software/applications/restic/installer-restic-rest-server-sous-debian13.txt · Dernière modification : 2026/08/08 12:50 de yoann