Skip to main content

Restic : Déploiement

Docker Restic REST with SSL

Pré-requis :

  • Posséder un binaire restic : apt install restic
  • Posséder la suite openssl : apt install openssl
  • Posséder docker et docker compose : apt install docker docker-compose
  • Savoir lire :)

1) Préparation du répertoire projet

Variable de la documentation :

	NAME_PROJECT=projet
	PATH_PROJECT=/mnt/"${NAME_PROJECT}"
	FOLDER_DATA_NAME=data
	PATH_DATA="${PATH_PROJECT}"/"${FOLDER_DATA_NAME}"
	PORT_EXPOSED=8009
	USER_PROJECT=projet_user
	SRV_RESTIC=127.0.0.1 #TEST EN LOCAL

Créer votre répertoire de projet :

	mkdir /mnt/projet && cd $_

Créer le répertoire de sauvegarde dans le projet =

	mkdir /mnt/projet/data

2) Générer un utilisateut restic

Créer un utilisateur pouvant intéragir avec le répertoire de sauvegarde :

htpasswd -B -c ${PATH_DATA}/.htpasswd projet_user

Un prompt apparaîtra afin de valider votre mot de passe.

3) Générer une paire de clés SSL

Créer un bundle de clés SSL ou importer les vôtre sous le format :

  • public_key
  • private_key

Voici une manière de les générer :

openssl req -newkey rsa:4096  -x509  -sha512  -days 365 -nodes -out ${PATH_DATA}/public_key -keyout ${PATH_DATA}/private_key

4) Préparer votre docker-compose.yml

Créer votre fichier docker-compose.yml en modifiant les valeurs entre "{{ }}" : vim ${PATH_PROJECT}/docker-compose.yml

  services:
  rest_server_{{ NAME_PROJECT }}:
    command:
      - "/entrypoint.sh"
    container_name: "rest_server_{{ NAME_PROJECT }}"
    environment:
      - "OPTIONS=--tls"
      - "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
      - "DATA_DIRECTORY=/data"
      - "PASSWORD_FILE=/data/.htpasswd"
    hostname: "rest_server_{{ NAME_PROJECT }}"
    image: "restic/rest-server"
    ipc: "private"
    labels:
      org.opencontainers.image.source: "https://github.com/restic/rest-server"
      org.opencontainers.image.title: "rest-server"
    logging:
      driver: "json-file"
      options: {}
    ports:
      - "{{ PORT_EXPOSED }}:8000/tcp"
    volumes:
      - "{{ PATH_DATA }}:/data"
version: "3.6"

Lancer ensuite votre instance restic

cd "${PATH_PROJECT}"
docker-compose up -d

5) Initialiser le workspace de sauvegarde

Init : initialiser un répertoire de sauvegarde

restic -r rest:https://${USER_PROJECT}:{{ MOT DE PASSE ETAPE 3 }}@${SRV_RESTIC}:${PORT_EXPOSED} --insecure-tls init

Votre dépôt comporte désormais un répertoire de sauvegarde.