DocuSeal : un logiciel de signature électronique open source
DocuSeal est un logiciel de signature électronique open source qui permet de signer des documents en ligne depuis n'importe quel appareil (ordinateur, tablette, smartphone). Publiée sous licence AGPLv3, cette plateforme de dématérialisation couvre le cycle complet de la signature des documents : création de formulaires PDF, envoi des demandes aux signataires par e-mail, collecte des signatures électroniques et conservation des documents signés. L'interface web est optimisée pour le mobile, et les signataires n'ont besoin d'aucune application pour apposer leur signature.
Auto-héberger cet outil de signature sur un VPS Linux offre un contrôle total sur les documents signés : aucune donnée ne transite par un prestataire tiers. C'est un avantage pour les entreprises, les associations et les administrateurs de serveurs qui traitent des contrats, des bons de commande, des devis acceptés ou des mandats SEPA. Les transactions restent confidentielles, la base de données vous appartient, et les documents signés sont conservés de manière sécurisée sur votre propre infrastructure.
Ce guide couvre le déploiement de DocuSeal avec Docker Compose sur un VPS Linux Ubuntu ou Debian, la configuration HTTPS automatique via Caddy, l'envoi des demandes de signature par SMTP, la sauvegarde de la base PostgreSQL et du volume de données, la mise à jour, le certificat de signature numérique, les types de signatures électroniques définis par le règlement eIDAS et la valeur juridique de la signature électronique en France.
Prérequis
- Un VPS Linux sous Ubuntu 22.04 LTS ou Debian 12 avec un accès root en SSH ;
- Docker et Docker Compose installés (guide d'installation de Docker sur un VPS) ;
- Un nom de domaine avec un enregistrement DNS de type A pointant vers l'adresse IP du VPS (exemple :
sign.exemple.fr) ; - Les ports 80 (HTTP) et 443 (HTTPS) ouverts dans le pare-feu (configurer UFW sur VPS Ubuntu) ;
- Un accès SSH au VPS avec une connexion sécurisée par clé publique.
Déployer DocuSeal avec Docker Compose
Le dépôt officiel DocuSeal (GitHub : docusealco/docuseal) fournit un fichier docker-compose.yml prêt à l'emploi. Il déploie trois services : l'application DocuSeal (le logiciel de signature), une base de données PostgreSQL et un reverse proxy Caddy pour le HTTPS automatique. Créez un répertoire dédié et téléchargez le fichier depuis le terminal :
mkdir -p /opt/docuseal && cd /opt/docuseal
curl -o docker-compose.yml https://raw.githubusercontent.com/docusealco/docuseal/master/docker-compose.yml
Contenu du fichier docker-compose.yml officiel :
services:
app:
depends_on:
postgres:
condition: service_healthy
image: docuseal/docuseal:latest
ports:
- 3000:3000
volumes:
- ./docuseal:/data/docuseal
environment:
- FORCE_SSL=${HOST}
- DATABASE_URL=postgresql://postgres:postgres@postgres:5432/docuseal
postgres:
image: postgres:18
volumes:
- ./pg_data:/var/lib/postgresql/18/docker
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: docuseal
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 5s
timeout: 5s
retries: 5
caddy:
image: caddy:latest
command: caddy reverse-proxy --from $HOST --to app:3000
ports:
- 80:80
- 443:443
- 443:443/udp
volumes:
- ./caddy:/data/caddy
environment:
- HOST=${HOST}
Points importants dans ces configurations Docker Compose :
- HOST : la variable d'environnement passée au démarrage. Elle contient le nom de domaine (
sign.exemple.fr). Caddy l'utilise pour obtenir automatiquement un certificat TLS via Let's Encrypt ; - FORCE_SSL : redirige les requêtes HTTP vers HTTPS pour une connexion sécurisée. La valeur est le nom de domaine, identique à HOST ;
- DATABASE_URL : chaîne de connexion vers la base PostgreSQL. Par défaut, le mot de passe est
postgres. Remplacez-le par un mot de passe fort avant le premier démarrage ; - Volume
./docuseal: stocke les documents PDF, les signatures collectées et les fichiers de configuration de l'application ; - Volume
./pg_data: stocke les données de la base PostgreSQL (comptes, formulaires, métadonnées des documents signés) ; - Caddy : sert de reverse proxy HTTPS. Il obtient et renouvelle automatiquement les certificats TLS via Let's Encrypt. Aucune configuration Nginx ou Apache n'est nécessaire.
Avant de démarrer, remplacez le mot de passe PostgreSQL par défaut dans le fichier docker-compose.yml : modifiez la valeur de POSTGRES_PASSWORD et la partie postgres:postgres@ de DATABASE_URL pour qu'elles correspondent.
Démarrez les trois services en passant votre nom de domaine via la variable HOST :
sudo HOST=sign.exemple.fr docker compose up -d
Caddy obtient automatiquement un certificat TLS si le DNS pointe vers l'adresse IP du VPS et que les ports 80 et 443 sont ouverts. Ouvrez https://sign.exemple.fr dans un navigateur pour accéder à l'interface de création de compte. Le premier utilisateur inscrit devient administrateur de l'instance et peut commencer à signer des documents électroniquement.
Pour la syntaxe Docker Compose et la gestion des volumes : guide Docker Compose sur VPS Linux. Pour la configuration HTTPS d'un service auto-hébergé avec Nginx et Certbot (alternative à Caddy) : publier un service sur un VPS Linux en HTTPS.
Configurer SMTP pour l'envoi des demandes de signature
Sans configuration SMTP, DocuSeal ne peut pas envoyer les demandes de signature par e-mail aux signataires. Le SMTP est configurable depuis l'interface d'administration de DocuSeal (Settings) ou via des variables d'environnement dans le fichier docker-compose.yml.
Pour configurer SMTP via les variables d'environnement, ajoutez les lignes suivantes dans la section environment du service app :
- SMTP_ADDRESS=smtp.exemple.fr
- SMTP_PORT=587
- SMTP_USERNAME=docuseal@exemple.fr
- SMTP_PASSWORD=mot-de-passe-smtp
- SMTP_FROM=docuseal@exemple.fr
- SMTP_AUTHENTICATION=plain
Détail des variables :
- SMTP_ADDRESS : le serveur SMTP (adresse ou nom d'hôte) ;
- SMTP_PORT : le port SMTP, 587 par défaut (STARTTLS). Le chiffrement STARTTLS est activé par défaut ;
- SMTP_USERNAME et SMTP_PASSWORD : les identifiants d'authentification pour le serveur de messagerie ;
- SMTP_FROM : l'adresse expéditeur affichée dans les e-mails envoyés aux signataires ;
- SMTP_AUTHENTICATION : méthode d'authentification (
plainoulogin).
Après modification des configurations, redémarrez les services :
cd /opt/docuseal
sudo HOST=sign.exemple.fr docker compose up -d
Testez l'envoi en créant un formulaire dans l'interface DocuSeal et en envoyant une demande de signature à votre propre adresse e-mail. Si le signataire reçoit le lien et parvient à signer le document, le SMTP est opérationnel.
Sauvegarder le volume et la base PostgreSQL
Deux éléments sont à sauvegarder pour garantir l'intégrité de votre instance DocuSeal : la base de données PostgreSQL (comptes, formulaires, métadonnées des signatures) et le volume de données de l'application (documents PDF signés, formulaires, configurations).
Pour la base PostgreSQL, utilisez pg_dump via le conteneur :
docker compose exec postgres pg_dump -U postgres docuseal > /opt/docuseal/backups/docuseal-$(date +%Y%m%d-%H%M).sql
Pour le volume de données (documents signés, formulaires et fichiers de configuration), archivez le répertoire ./docuseal :
mkdir -p /opt/docuseal/backups
tar czf /opt/docuseal/backups/docuseal-data-$(date +%Y%m%d-%H%M).tar.gz -C /opt/docuseal docuseal
Automatisez ces deux opérations avec une tâche cron (planifier des tâches automatiques avec cron et systemd timers) et synchronisez les sauvegardes vers un stockage distant (sauvegarder un VPS avec rsync). Pour chiffrer les archives avant de les exfiltrer : chiffrer les sauvegardes serveur Linux hors site.
Mettre à jour DocuSeal
La mise à jour du logiciel de signature consiste à tirer la dernière image Docker et à relancer les conteneurs. Les données persistent dans les volumes locaux :
cd /opt/docuseal
docker compose pull
sudo HOST=sign.exemple.fr docker compose up -d
Consultez les notes de version sur le dépôt GitHub docusealco/docuseal avant chaque mise à jour pour vérifier les éventuelles migrations de base de données ou changements de configurations.
Certificat de signature numérique et intégrité des documents
Lorsqu'un signataire appose sa signature électronique via DocuSeal, l'application intègre un certificat électronique dans le PDF signé. Ce certificat numérique repose sur un mécanisme de chiffrement asymétrique : une clé privée, détenue par le serveur, signe le document, et la clé publique correspondante permet à tout lecteur de vérifier que le document signé n'a pas été modifié après signature. Ce procédé de signature garantit l'intégrité du document et l'authentification de son origine.
Par défaut, la version auto-hébergée de DocuSeal utilise un certificat auto-signé généré automatiquement à l'installation. Ce certificat remplit sa fonction technique (intégrité du document signé), mais les lecteurs PDF comme Adobe Acrobat affichent un avertissement car l'autorité de certification n'est pas reconnue comme tiers de confiance.
DocuSeal permet d'importer son propre certificat de signature dans les paramètres de l'application (Settings > E-Signature > Upload Cert). Les formats acceptés sont .p12, .pfx et .der. Si le certificat est protégé par un mot de passe, renseignez-le lors de l'import. Un certificat émis par une autorité de certification reconnue (tiers de confiance) supprime l'avertissement dans Adobe Acrobat et renforce la confiance des signataires dans le document signé.
Les niveaux de signature supérieurs ne sont pas disponibles en version auto-hébergée gratuite (Open Source). Ils sont proposés par DocuSeal dans son offre Pro (sur docuseal.com) :
| Niveau de signature | Auto-hébergé (gratuit, Open Source) | Pro (Cloud ou On-Premises, payant) |
|---|---|---|
| Certificat auto-signé | Inclus par défaut | Inclus |
| Certificat personnalisé (.p12, .pfx, .der) | Importable dans Settings | Importable dans Settings |
| Certificat de confiance (reconnu Adobe) | Non inclus | Inclus |
| Signature qualifiée eIDAS (QeS) | Non disponible | Disponible (2 à 4 $ par signature) |
Les types de signatures électroniques selon le règlement eIDAS
Le règlement européen eIDAS (n° 910/2014), relatif à la signature électronique et aux services de confiance pour les transactions électroniques, définit trois types de signatures électroniques. Comprendre ces niveaux permet de choisir le procédé de signature adapté à chaque usage.
Signature électronique simple
La signature électronique simple désigne toute donnée sous forme électronique utilisée par le signataire pour signer un document. Un clic sur un bouton de validation, une image de signature manuscrite tracée à la souris ou au doigt sur un écran, un nom tapé au clavier : tous ces procédés constituent une signature électronique simple. C'est le type de signature que DocuSeal auto-hébergé produit par défaut.
La signature simple a une valeur légale : elle ne peut pas être refusée comme preuve en justice au seul motif qu'elle est sous forme électronique (eIDAS, article 25, paragraphe 1). En cas de contestation, c'est à celui qui invoque le document signé électroniquement de prouver la fiabilité du procédé utilisé.
Signature électronique avancée
La signature électronique avancée (SEA) répond à quatre exigences définies par l'article 26 du règlement eIDAS : elle est liée au signataire de manière univoque, elle permet de l'identifier formellement, elle est créée avec des données sous le contrôle exclusif du signataire, et elle est liée aux données signées de telle sorte que toute modification ultérieure soit détectable. Ce type de signature nécessite un certificat électronique personnel et un dispositif de création sécurisé pour authentifier le signataire.
La signature électronique avancée est souvent exigée dans les marchés publics et les transactions à enjeu financier significatif. Les prestataires de services de confiance qualifiés, inscrits sur les listes nationales de confiance, délivrent les certificats nécessaires à ce niveau.
Signature électronique qualifiée
La signature électronique qualifiée (SEQ) est le niveau le plus élevé. Elle repose sur un certificat qualifié de signature électronique, délivré par un prestataire de services de confiance qualifié inscrit sur la liste de confiance nationale (en France, la liste est tenue par l'ANSSI). Le signataire doit s'authentifier avec un moyen fort (carte d'identité électronique, vérification vidéo ou en personne) avant d'obtenir son certificat qualifié.
La signature qualifiée a la même valeur juridique que la signature manuscrite dans tous les États membres de l'Union européenne (eIDAS, article 25, paragraphe 2). Elle bénéficie d'une présomption de fiabilité : en cas de litige, c'est à celui qui conteste la signature de prouver qu'elle n'est pas fiable.
DocuSeal auto-hébergé (version Open Source gratuite) produit des signatures simples. Les signatures qualifiées eIDAS sont disponibles dans l'offre Pro de DocuSeal, facturées entre 2 et 4 dollars par signature.
Valeur juridique de la signature électronique en France
Le cadre juridique relatif à la signature électronique en France repose sur le règlement européen eIDAS (n° 910/2014) et le Code civil. Voici les points essentiels pour un administrateur qui déploie un outil de signature électronique sur son serveur.
Principe de non-discrimination (eIDAS, article 25, paragraphe 1) : une signature électronique ne peut pas être refusée comme preuve en justice au seul motif qu'elle est sous forme électronique ou qu'elle ne satisfait pas aux exigences de la signature qualifiée. Signer un document électroniquement avec un logiciel de signature auto-hébergé comme DocuSeal produit une signature juridiquement recevable devant les tribunaux.
L'écrit électronique a la même valeur probante que l'écrit papier (Code civil, article 1366), à condition que la personne dont il émane puisse être identifiée et que le document soit conservé dans des conditions garantissant son intégrité. La dématérialisation d'un contrat ou d'un bon de commande ne réduit pas sa force probante.
La signature électronique (Code civil, article 1367) consiste en l'usage d'un procédé fiable d'identification garantissant le lien de la signature avec l'acte auquel elle s'attache. Lorsqu'une signature simple est contestée, c'est à celui qui s'en prévaut de démontrer la fiabilité du procédé utilisé : identité du signataire, intégrité du document signé, horodatage.
Seule la signature qualifiée bénéficie de la présomption de fiabilité (décret n° 2017-1416 du 28 septembre 2017, relatif à la signature électronique). En cas de contestation, une signature qualifiée est présumée fiable jusqu'à preuve du contraire. Une signature simple exige de son utilisateur qu'il apporte la preuve de sa fiabilité. Pour authentifier un signataire avec certitude dans le cadre d'un litige, seul un certificat qualifié délivré par un prestataire de services de confiance qualifié bénéficie de cette présomption.
Actes exclus (Code civil, article 1175, dans sa version en vigueur depuis le 1er janvier 2022, modifié par l'ordonnance n° 2021-1192 du 15 septembre 2021) : les actes sous seing privé relatifs au droit de la famille et des successions ne peuvent pas être établis sous forme électronique, sauf convention contresignée par avocats en présence des parties et déposée au rang des minutes d'un notaire. Les testaments olographes, les PACS et les mandats de protection future restent exclus de la signature électronique.
En résumé : DocuSeal auto-hébergé produit des signatures électroniques simples, juridiquement recevables en France pour la grande majorité des contrats commerciaux, bons de commande, devis acceptés, mandats SEPA et transactions courantes. La signature manuscrite et la signature électronique simple ont la même valeur probante, à condition de pouvoir prouver la fiabilité du procédé de signature. Pour les actes à fort enjeu financier ou juridique, ou pour les marchés publics exigeant une signature avancée ou qualifiée, consultez un avocat qui évaluera le type de signature adapté à votre situation.
Aller plus loin
DocuSeal est en place, accessible en HTTPS et sauvegardé. Pour compléter le déploiement de votre outil de signature électronique :
- Durcissez le VPS : sécuriser un VPS Ubuntu (SSH, UFW, Fail2ban) ;
- Si vous disposez déjà d'un reverse proxy Nginx ou Apache, retirez le service
caddydu fichierdocker-compose.yml, liez le port 3000 à127.0.0.1et configurez un virtualhost avec un certificat Let's Encrypt ; - Pour une instance légère avec peu de documents, DocuSeal fonctionne aussi avec SQLite : retirez le service
postgreset la variableDATABASE_URL. DocuSeal utilise SQLite par défaut en l'absence de cette variable ; - Consultez les autres guides de la série auto-hébergement Docker : installer Vaultwarden (gestionnaire de mots de passe) et installer Nextcloud (cloud personnel).
FiveM
Minecraft
Rust
RedM
Hytale