Aller au contenu principal

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

Google

  1. Accédez à la Console Google Cloud
  2. Créez un projet ou sélectionnez-en un existant
  3. APIs & Services → Credentials → Create Credentials → OAuth Client ID
  4. Type : Web application
  5. Authorized redirect URIs : https://ackify.votre-domaine.com/oauth2/callback
  6. Copiez Client ID et Client Secret dans .env

GitHub

  1. Accédez à GitHub Developer Settings
  2. OAuth Apps → New OAuth App
  3. Authorization callback URL : https://ackify.votre-domaine.com/oauth2/callback
  4. Copiez Client ID et Client Secret
  5. Dans .env : OAUTH_PROVIDER="github"

GitLab

  1. Dans votre instance GitLab : Admin → Applications
  2. Redirect URI : https://ackify.votre-domaine.com/oauth2/callback
  3. Scopes : read_user
  4. 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.

Prêt à sécuriser vos preuves de prise de connaissance ?

Créez votre compte en 30 secondes et commencez à tracer la lecture de vos documents critiques.