378 lines
7.0 KiB
Markdown
378 lines
7.0 KiB
Markdown
---
|
||
title: Déployer DocuSeal sur Debian 13
|
||
description: Procédure permettant de déployer DocuSeal sur une machine virtuelle Debian 13 (Trixie) hébergée dans Proxmox, en utilisant Docker Compose.
|
||
tags:
|
||
- docuseal
|
||
- pdf
|
||
- signature
|
||
- autohebergement
|
||
date: 2026-03-12 20:26
|
||
lastmod: 2026-03-12 20:39
|
||
type:
|
||
- article
|
||
category:
|
||
- "[[Guide]]"
|
||
status: brouillon
|
||
---
|
||
|
||
# Déployer DocuSeal sur Debian 13
|
||
|
||
Ce document décrit la procédure complète permettant de déployer **DocuSeal** sur une machine virtuelle **Debian 13 (Trixie)** hébergée dans **Proxmox**, en utilisant **Docker Compose**.
|
||
|
||
L’objectif est d’obtenir une instance **auto-hébergée et souveraine** du service de signature électronique accessible via le domaine `sign.a5l.fr`.
|
||
|
||
L’utilisation de Docker permet :
|
||
|
||
- d’isoler l’application du système hôte,
|
||
|
||
- de simplifier les mises à jour,
|
||
|
||
- de faciliter les sauvegardes et la portabilité de l’instance.
|
||
|
||
|
||
---
|
||
|
||
# 1. Création du conteneur LXC dans Proxmox
|
||
|
||
Créer une conteneur Debian 13 dans Proxmox.
|
||
|
||
Ressources recommandées :
|
||
|
||
- **2 vCPU**
|
||
|
||
- **2 Go de RAM**
|
||
|
||
- **10 Go de stockage minimum**
|
||
|
||
|
||
DocuSeal reste relativement léger, mais la mémoire est utile lors du traitement de documents PDF.
|
||
|
||
---
|
||
|
||
# 2. Installation de l’agent Proxmox
|
||
|
||
Se connecter au conteneur via SSH ou via la console Proxmox, puis mettre le système à jour :
|
||
|
||
```bash
|
||
sudo apt update
|
||
sudo apt upgrade -y
|
||
```
|
||
|
||
Il est également conseillé d’installer quelques outils utiles :
|
||
|
||
```bash
|
||
apt install -y curl ca-certificates gnupg
|
||
```
|
||
|
||
---
|
||
|
||
# 3. Installation de Docker
|
||
|
||
Debian 13 utilise une gestion moderne des dépôts sécurisés.
|
||
La méthode recommandée consiste à utiliser le dépôt officiel Docker.
|
||
|
||
## Ajout de la clé GPG Docker
|
||
|
||
```bash
|
||
sudo install -m 0755 -d /etc/apt/keyrings
|
||
|
||
curl -fsSL https://download.docker.com/linux/debian/gpg \
|
||
| sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
|
||
|
||
sudo chmod a+r /etc/apt/keyrings/docker.gpg
|
||
```
|
||
|
||
## Ajout du dépôt Docker
|
||
|
||
```bash
|
||
echo \
|
||
"deb [arch=$(dpkg --print-architecture) \
|
||
signed-by=/etc/apt/keyrings/docker.gpg] \
|
||
https://download.docker.com/linux/debian \
|
||
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" \
|
||
| sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
|
||
```
|
||
|
||
## Installation du moteur Docker
|
||
|
||
```bash
|
||
sudo apt update
|
||
|
||
sudo apt install -y \
|
||
docker-ce \
|
||
docker-ce-cli \
|
||
containerd.io \
|
||
docker-buildx-plugin \
|
||
docker-compose-plugin
|
||
```
|
||
|
||
## Autoriser l’utilisateur courant à utiliser Docker
|
||
|
||
```bash
|
||
sudo usermod -aG docker $USER
|
||
```
|
||
|
||
Une **déconnexion / reconnexion de session** est nécessaire pour que ce changement prenne effet.
|
||
|
||
---
|
||
|
||
# 4. Déploiement de DocuSeal
|
||
|
||
Créer un répertoire dédié à l’application.
|
||
|
||
```bash
|
||
mkdir -p ~/docuseal/data
|
||
cd ~/docuseal
|
||
```
|
||
|
||
Créer ensuite le fichier de configuration Docker Compose.
|
||
|
||
```bash
|
||
nano docker-compose.yml
|
||
```
|
||
|
||
Contenu recommandé :
|
||
|
||
```yaml
|
||
services:
|
||
docuseal:
|
||
image: docuseal/docuseal:latest
|
||
container_name: docuseal
|
||
restart: unless-stopped
|
||
|
||
ports:
|
||
- "3000:3000"
|
||
|
||
volumes:
|
||
- ./data:/data
|
||
|
||
environment:
|
||
HOST: sign.a5l.fr
|
||
DATABASE_URL: sqlite3:/data/docuseal.db
|
||
FORCE_SSL: true
|
||
```
|
||
|
||
Explications :
|
||
|
||
- **ports 3000:3000**
|
||
expose le service localement.
|
||
|
||
- **volume `./data`**
|
||
contient :
|
||
|
||
- la base SQLite
|
||
|
||
- les documents PDF
|
||
|
||
- les fichiers temporaires
|
||
|
||
- **HOST**
|
||
doit correspondre au nom de domaine utilisé.
|
||
|
||
- **FORCE_SSL**
|
||
impose l’utilisation de HTTPS lorsque l’application est derrière un reverse proxy.
|
||
|
||
|
||
---
|
||
|
||
## Lancement de l’application
|
||
|
||
```bash
|
||
docker compose up -d
|
||
```
|
||
|
||
Vérifier que le conteneur fonctionne :
|
||
|
||
```bash
|
||
docker ps
|
||
```
|
||
|
||
L’application est alors accessible sur :
|
||
|
||
```
|
||
http://IP_DE_LA_VM:3000
|
||
```
|
||
|
||
---
|
||
|
||
# 5. Mise en place du reverse proxy HTTPS
|
||
|
||
Pour sécuriser les signatures électroniques, l’accès doit être protégé par **HTTPS**.
|
||
|
||
On utilise ici **Nginx** et **Let’s Encrypt (Certbot)**.
|
||
|
||
---
|
||
|
||
## Installation
|
||
|
||
```bash
|
||
sudo apt install -y nginx certbot python3-certbot-nginx
|
||
```
|
||
|
||
---
|
||
|
||
## Configuration du virtual host
|
||
|
||
Créer le fichier :
|
||
|
||
```
|
||
/etc/nginx/sites-available/docuseal
|
||
```
|
||
|
||
```nginx
|
||
server {
|
||
|
||
listen 80;
|
||
server_name sign.a5l.fr;
|
||
|
||
location / {
|
||
|
||
proxy_pass http://127.0.0.1:3000;
|
||
|
||
proxy_set_header Host $host;
|
||
proxy_set_header X-Real-IP $remote_addr;
|
||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||
proxy_set_header X-Forwarded-Proto $scheme;
|
||
|
||
client_max_body_size 50M;
|
||
}
|
||
}
|
||
```
|
||
|
||
Cette configuration :
|
||
|
||
- redirige les requêtes HTTP vers DocuSeal
|
||
|
||
- transmet l’IP réelle de l’utilisateur
|
||
|
||
- autorise l’envoi de documents PDF volumineux.
|
||
|
||
|
||
---
|
||
|
||
## Activation du site
|
||
|
||
```bash
|
||
sudo ln -s /etc/nginx/sites-available/docuseal /etc/nginx/sites-enabled/
|
||
sudo nginx -t
|
||
sudo systemctl reload nginx
|
||
```
|
||
|
||
---
|
||
|
||
## Génération du certificat SSL
|
||
|
||
```bash
|
||
sudo certbot --nginx -d sign.a5l.fr
|
||
```
|
||
|
||
Certbot :
|
||
|
||
- configure automatiquement HTTPS
|
||
|
||
- installe un renouvellement automatique du certificat.
|
||
|
||
|
||
Une fois terminé, l’interface est accessible via :
|
||
|
||
```
|
||
https://sign.a5l.fr
|
||
```
|
||
|
||
---
|
||
|
||
# 6. Sauvegardes et maintenance
|
||
|
||
## Sauvegarde des données
|
||
|
||
Les données importantes se trouvent dans :
|
||
|
||
```
|
||
~/docuseal/data
|
||
```
|
||
|
||
Ce dossier contient :
|
||
|
||
- la base SQLite
|
||
|
||
- les documents signés
|
||
|
||
- les métadonnées.
|
||
|
||
|
||
Il est recommandé de :
|
||
|
||
- sauvegarder ce dossier régulièrement
|
||
|
||
- utiliser les sauvegardes Proxmox.
|
||
|
||
|
||
---
|
||
|
||
## Mise à jour de DocuSeal
|
||
|
||
La mise à jour de l’application est simple :
|
||
|
||
```bash
|
||
cd ~/docuseal
|
||
|
||
docker compose pull
|
||
docker compose up -d
|
||
```
|
||
|
||
Avant toute mise à jour, il est recommandé de créer un **snapshot Proxmox**.
|
||
|
||
---
|
||
|
||
# 7. Configuration SMTP
|
||
|
||
Pour que DocuSeal puisse envoyer les invitations à signer, un serveur SMTP doit être configuré dans les paramètres de l’application.
|
||
|
||
Les informations à fournir :
|
||
|
||
- serveur SMTP
|
||
|
||
- port
|
||
|
||
- utilisateur
|
||
|
||
- mot de passe
|
||
|
||
- chiffrement TLS ou SSL
|
||
|
||
|
||
Sans configuration SMTP, les invitations par email ne fonctionneront pas.
|
||
|
||
---
|
||
|
||
# 8. Points de sécurité recommandés
|
||
|
||
Plusieurs bonnes pratiques améliorent la sécurité de l’instance :
|
||
|
||
- limiter l’accès SSH à des clés publiques
|
||
|
||
- activer un pare-feu (`ufw` ou `nftables`)
|
||
|
||
- restreindre l’accès direct au port **3000**
|
||
|
||
- maintenir Debian et Docker à jour
|
||
|
||
- effectuer des sauvegardes régulières.
|
||
|
||
|
||
---
|
||
|
||
# 9. Avantages de DocuSeal en auto-hébergement
|
||
|
||
DocuSeal présente plusieurs avantages pour un déploiement auto-hébergé :
|
||
|
||
- **Souveraineté des données** : les documents restent sur votre infrastructure.
|
||
|
||
- **Légèreté** : fonctionnement possible sur une petite VM.
|
||
|
||
- **Déploiement simple** grâce à Docker.
|
||
|
||
- **Maintenance limitée** : les mises à jour ne modifient pas le système hôte.
|
||
|
||
|
||
Cette architecture permet de disposer d’un service de signature électronique fiable, isolé et facilement maintenable dans une infrastructure Proxmox. |