Déployer Ackify en 5 minutes avec Docker Compose
Publié le 8 novembre 2025
Ackify est conçu pour un déploiement simple. Ce guide vous accompagne de l'installation à la mise en production avec HTTPS automatique.
Prérequis
- Un serveur Linux (Ubuntu 22.04 recommandé)
- Docker et Docker Compose installés
- Un nom de domaine pointant vers votre serveur
- Un compte OAuth2 (Google, GitHub, ou GitLab)
Étape 1 : Cloner le repository
git clone https://github.com/btouchard/ackify-ce.git
cd ackify-ce
Étape 2 : Configurer les variables d'environnement
Copiez le fichier d'exemple et éditez-le :
cp .env.example .env
nano .env
Variables obligatoires :
# URL publique de votre instance
APP_BASE_URL="https://ackify.votre-domaine.com"
# Base de données
DB_DSN="postgres://ackify:votre-mot-de-passe@postgres:5432/ackify?sslmode=disable"
# OAuth2 (exemple avec Google)
OAUTH_PROVIDER="google"
OAUTH_CLIENT_ID="votre-client-id.apps.googleusercontent.com"
OAUTH_CLIENT_SECRET="votre-client-secret"
OAUTH_COOKIE_SECRET="$(openssl rand -base64 32)"
# Optionnel : restreindre aux emails de votre domaine
OAUTH_ALLOWED_DOMAIN="@votre-entreprise.com"
Étape 3 : Configurer OAuth2
- Accédez à la Console Google Cloud
- Créez un projet ou sélectionnez-en un existant
- APIs & Services → Credentials → Create Credentials → OAuth Client ID
- Type : Web application
- Authorized redirect URIs :
https://ackify.votre-domaine.com/oauth2/callback - Copiez Client ID et Client Secret dans
.env
GitHub
- Accédez à GitHub Developer Settings
- OAuth Apps → New OAuth App
- Authorization callback URL :
https://ackify.votre-domaine.com/oauth2/callback - Copiez Client ID et Client Secret
- Dans
.env:OAUTH_PROVIDER="github"
GitLab
- Dans votre instance GitLab : Admin → Applications
- Redirect URI :
https://ackify.votre-domaine.com/oauth2/callback - Scopes :
read_user - Dans
.env:OAUTH_PROVIDER="gitlab" OAUTH_GITLAB_URL="https://gitlab.votre-entreprise.com"
Étape 4 : Générer la clé Ed25519
Cette clé sert à signer cryptographiquement les confirmations :
openssl genpkey -algorithm Ed25519 -out ed25519.pem
cat ed25519.pem | base64 -w 0
Ajoutez le résultat dans .env :
ED25519_PRIVATE_KEY_B64="votre-clé-base64"
Important : conservez une sauvegarde sécurisée de cette clé. Sa perte invaliderait la vérification des signatures existantes.
Étape 5 : Lancer les services
docker compose up -d
Vérifiez que tout fonctionne :
docker compose ps
docker compose logs -f ackapp
Étape 6 : Configurer Traefik (HTTPS)
Si vous utilisez Traefik comme reverse proxy, ajoutez les labels dans docker-compose.yml :
services:
ackapp:
image: btouchard/ackify-ce:latest
labels:
- "traefik.enable=true"
- "traefik.http.routers.ackify.rule=Host(`ackify.votre-domaine.com`)"
- "traefik.http.routers.ackify.entrypoints=websecure"
- "traefik.http.routers.ackify.tls.certresolver=letsencrypt"
Étape 7 : Tester l'installation
# Health check
curl https://ackify.votre-domaine.com/healthz
# Page de signature
open https://ackify.votre-domaine.com/sign?doc=test
Authentifiez-vous via OAuth2 et confirmez la lecture du document "test".
Configuration avancée
SMTP pour les rappels
SMTP_HOST="smtp.votre-provider.com"
SMTP_PORT="587"
SMTP_USER="notifications@votre-domaine.com"
SMTP_PASSWORD="votre-mot-de-passe"
SMTP_FROM="Ackify <notifications@votre-domaine.com>"
Provider OAuth2 personnalisé
Pour un SSO d'entreprise (Keycloak, Auth0, etc.) :
OAUTH_PROVIDER="" # Laisser vide
OAUTH_AUTH_URL="https://sso.entreprise.com/oauth/authorize"
OAUTH_TOKEN_URL="https://sso.entreprise.com/oauth/token"
OAUTH_USERINFO_URL="https://sso.entreprise.com/userinfo"
OAUTH_SCOPES="openid,email,profile"
PostgreSQL externe
Pour utiliser une base PostgreSQL existante :
DB_DSN="postgres://user:pass@db.entreprise.com:5432/ackify?sslmode=require"
Et commentez le service postgres dans docker-compose.yml.
Mises à jour
docker compose pull
docker compose up -d
Les migrations de base de données s'exécutent automatiquement au démarrage.
Dépannage
Erreur OAuth2 "redirect_uri_mismatch"
Vérifiez que l'URL de callback dans votre provider OAuth2 correspond exactement à APP_BASE_URL/oauth2/callback.
Erreur de connexion à PostgreSQL
Attendez quelques secondes que PostgreSQL démarre, puis relancez :
docker compose restart ackapp
Logs détaillés
docker compose logs -f ackapp
Conclusion
En 5 minutes, vous disposez d'une instance Ackify fonctionnelle avec HTTPS. Vos équipes peuvent commencer à confirmer la lecture de vos documents internes.
➡️ Documentation complète — pour aller plus loin.