ITSkillsCenter
Blog

Affine self-hosted : alternative Notion collaborative — déploiement Coolify 2026

14 min de lecture

Affine self-hosted : alternative Notion collaborative — déploiement Coolify 2026

📍 Article principal du cluster : Productivité PME en self-hosted : la stack open-source 2026

Cet article fait partie du cluster « Productivité self-hosted ». Pour la vue d’ensemble (Penpot, Cal.com, Affine, Excalidraw, AppFlowy), commencez par le pilier.

Introduction

Quand une PME francophone choisit son outil de gestion de connaissances et de prise de notes collaborative, le choix se fait souvent entre Notion (le standard de fait), AppFlowy (alternative légère) et Affine (alternative ambitieuse). Affine se distingue par une promesse différente : combiner dans une même interface les fonctions de prise de notes structurées (style Notion), de tableau blanc visuel (style Whimsical) et de gestion de projets. C’est le seul outil open-source qui propose ces trois modes sans changer d’application, ce qui en fait un candidat sérieux pour les équipes qui veulent réduire le nombre d’outils utilisés au quotidien.

L’autre particularité d’Affine, c’est sa philosophie « local-first ». Toutes vos données vivent d’abord sur votre machine, puis sont synchronisées avec le serveur quand la connexion le permet. Pour une équipe basée à Dakar, Abidjan ou Cotonou où la connexion internet peut être instable, c’est un atout majeur : vous travaillez à pleine vitesse même hors-ligne, et la synchronisation reprend automatiquement. Ce guide vous accompagne dans le déploiement d’Affine self-hosted via Coolify, une plateforme qui simplifie radicalement la gestion d’applications Docker en production. Coolify joue ici le rôle d’un Heroku ou Vercel auto-hébergé, gérant pour vous les certificats TLS, les déploiements et la supervision.

Prérequis

  • VPS : Hetzner CX31 (4 vCPU, 8 Go RAM) recommandé — Affine est plus gourmand qu’Excalidraw
  • Coolify déjà installé sur le VPS (voir tutoriel d’installation Coolify dans le cluster)
  • Nom de domaine : sous-domaine prêt (par exemple notes.votre-pme.sn)
  • Niveau requis : intermédiaire — Coolify simplifie mais comprendre Docker reste utile
  • Temps estimé : 45 minutes à 1 h une fois Coolify opérationnel
  • Stockage : prévoir 20 Go libres pour la base et les pièces jointes

1. Affine vs Notion vs AppFlowy : choisir le bon outil

Il n’existe pas d’outil universel : chaque solution a son créneau. Avant de déployer Affine, prenez cinq minutes pour vous assurer qu’il correspond bien à votre besoin. Affine excelle dans les contextes où votre équipe a besoin de basculer souvent entre la prise de notes structurée et la visualisation libre (cartes mentales, schémas d’architecture, tableaux blancs). À l’inverse, si votre besoin principal est une base de connaissances Wiki classique, AppFlowy ou Outline seront plus directs.

Critère Notion AppFlowy Affine
Mode hors-ligne Limité Bon (desktop) Excellent (local-first natif)
Tableau blanc visuel Non Non Oui (mode Edgeless)
Bases de données Très riche Bon Bon
Maturité (2026) 10 ans 4 ans 3 ans
Self-hosting Impossible Stable Stable depuis 2024
Apprentissage Moyen Facile Moyen (multi-modes)

Pour une PME de cinq à vingt collaborateurs qui veut centraliser documentation, schémas d’architecture et compte-rendus de réunion, Affine offre le meilleur rapport fonctionnalités/simplicité. Pour une équipe purement développeurs qui rédige beaucoup de notes techniques en Markdown, AppFlowy peut être préférable car son éditeur Markdown est plus direct.

2. Pourquoi Coolify pour Affine

Coolify est une plateforme open-source d’auto-hébergement qui rend le déploiement d’applications Docker presque aussi simple que Heroku. Concrètement, vous installez Coolify une seule fois sur votre VPS, puis vous gérez tous vos services (Affine, Cal.com, Penpot, n8n…) depuis une interface web unique : déploiement, mise à jour, logs, sauvegardes, certificats TLS. Cette centralisation change la donne pour une PME qui ne dispose pas de DevOps dédié.

Sans Coolify, déployer Affine demande de comprendre Docker Compose, Nginx ou Traefik, Certbot, et de configurer chaque pièce manuellement — comptez deux à trois heures pour la première installation. Avec Coolify, le même déploiement se fait en cinq clics et quinze minutes. La différence devient encore plus marquée pour les mises à jour : Coolify détecte les nouvelles versions, propose le déploiement et gère le rollback en cas d’échec, alors qu’une mise à jour manuelle peut casser la production si on oublie une étape de migration de base.

Étape 1 — Prérequis Coolify et préparation

Cette étape suppose que Coolify est déjà installé sur votre VPS. Si ce n’est pas le cas, l’installation officielle se fait avec une seule commande shell, mais elle dépasse le cadre de ce tutoriel — référez-vous au guide Coolify dédié dans le cluster productivité. Une fois Coolify accessible sur https://coolify.votre-pme.sn, connectez-vous avec votre compte administrateur. La première chose à faire est de vous assurer que vous avez configuré au moins un « Server » (votre VPS) et un « Project » dans Coolify.

# Sur votre machine locale, vérifier que le DNS est bien configuré
# pour notes.votre-pme.sn pointant vers l'IP du VPS
dig notes.votre-pme.sn +short

# Doit retourner l'IP de votre VPS (par exemple 195.201.x.x)
# Sinon ajoutez l'enregistrement A chez votre registrar avant de continuer

# Optionnel : tester que Coolify accède bien à GitHub depuis le VPS
ssh deploy@<IP_VPS> 'curl -I https://github.com/toeverything/AFFiNE'

La commande dig doit retourner l’IP attendue dans les secondes qui suivent. Si elle ne retourne rien, c’est que la propagation DNS n’a pas encore eu lieu — patientez 10 à 30 minutes selon votre registrar (Cloudflare propage en moins de 5 minutes, OVH peut prendre jusqu’à 1 heure). Tant que le DNS n’est pas propagé, Coolify ne pourra pas obtenir le certificat TLS automatique de Let’s Encrypt.

Étape 2 — Créer la ressource Affine dans Coolify

Coolify propose un système de « ressources » qui correspondent chacune à une application déployée. Pour Affine, plutôt que de créer une ressource personnalisée from scratch, on utilise le mode « Public Repository » qui clone le dépôt officiel Affine et utilise son docker-compose.yml de production. C’est l’approche la plus maintenable : à chaque mise à jour upstream, vous bénéficiez automatiquement des corrections.

# Dans l'interface Coolify, naviguer vers :
# Project > New Resource > Docker Compose > Public Repository
#
# Champs à remplir :
# Repository URL : https://github.com/toeverything/AFFiNE
# Branch         : canary (ou master pour stable)
# Compose file   : .github/deployment/self-host/compose.yml
# Domain         : https://notes.votre-pme.sn

# Variables d'environnement essentielles à ajouter dans l'onglet Environment :
AFFINE_SERVER_EXTERNAL_URL=https://notes.votre-pme.sn
AFFINE_SERVER_HTTPS=true
AFFINE_SERVER_HOST=notes.votre-pme.sn
DATABASE_URL=postgresql://affine:STRONG_PASSWORD_HERE@postgres:5432/affine
REDIS_SERVER_HOST=redis
NODE_ENV=production
NEXTAUTH_URL=https://notes.votre-pme.sn
# Générer NEXTAUTH_SECRET avec : openssl rand -hex 32
NEXTAUTH_SECRET=<32_random_hex_chars>

Le NEXTAUTH_SECRET sécurise les sessions utilisateurs : ne réutilisez jamais une valeur d’exemple, générez la vôtre. Le mot de passe PostgreSQL doit également être fort (minimum 24 caractères aléatoires). Coolify détecte les variables sensibles et les chiffre automatiquement dans sa base de configuration, donc vous pouvez les saisir directement dans l’interface sans craindre la fuite par logs.

Étape 3 — Lancer le déploiement et suivre la progression

Une fois la ressource créée et les variables d’environnement renseignées, cliquez sur « Deploy » dans Coolify. La plateforme effectue alors plusieurs opérations en chaîne : clone du dépôt, build des images Docker (Affine compile son frontend lors du build), démarrage des conteneurs PostgreSQL et Redis, puis du serveur Affine. La première fois, comptez 10 à 20 minutes selon la puissance de votre VPS, principalement à cause du build Node.js d’Affine qui est lourd.

# Pendant le déploiement, vous pouvez suivre les logs depuis Coolify :
# Resource > Logs (onglet) > Live tail

# Ou en SSH direct sur le VPS, repérer le conteneur affine et suivre :
ssh deploy@<IP_VPS>
docker ps | grep affine
docker logs -f <container_id_affine_server>

# Une fois le déploiement vert, tester l'accès :
curl -I https://notes.votre-pme.sn
# Doit retourner HTTP/2 200

Le statut « Healthy » dans Coolify n’apparaît qu’une fois que le serveur Affine répond correctement aux health checks internes — ce qui peut prendre 60 à 90 secondes après que les conteneurs sont up. Si après 5 minutes vous voyez encore « Unhealthy » ou « Restarting », inspectez les logs : la cause est presque toujours une variable d’environnement manquante ou une connexion à la base de données qui échoue. Les messages d’erreur d’Affine sont relativement explicites en 2026, contrairement aux versions plus anciennes.

Étape 4 — Création du compte administrateur et premier espace

À la première connexion sur https://notes.votre-pme.sn, Affine vous propose de créer un compte. Le tout premier compte créé devient automatiquement administrateur de l’instance — créez-le immédiatement après le déploiement réussi avant que quelqu’un d’autre n’accède à l’URL. Une fois connecté, vous arrivez dans un workspace personnel par défaut. Pour une utilisation en équipe, créez un workspace partagé : depuis le menu de gauche, « New Workspace » puis choisissez « Cloud Workspace » pour activer la synchronisation serveur entre membres.

Affine propose deux types de documents : « Page » pour la prise de notes structurée façon Notion, et « Edgeless » pour le tableau blanc libre où vous pouvez disposer du texte, des formes, des images et des connexions visuelles n’importe où sur un canvas infini. Les deux modes coexistent dans le même document : vous pouvez démarrer en mode page pour rédiger un compte-rendu, puis basculer en mode edgeless pour dessiner un schéma d’architecture, sans changer de fichier. C’est cette fluidité qui fait l’unicité d’Affine.

Étape 5 — Inviter votre équipe et configurer les permissions

Pour inviter des collaborateurs, ils doivent d’abord créer leur compte sur votre instance Affine — il n’y a pas d’invitation par email automatique en self-hosted (cette fonctionnalité existe sur la version cloud d’Affine.pro mais demande un service mail configuré que vous n’avez probablement pas encore). Le workflow d’invitation se fait donc en deux temps : vous communiquez l’URL https://notes.votre-pme.sn et un mot de passe initial à votre collègue par un canal sécurisé (Signal, e-mail chiffré), il crée son compte, puis vous l’ajoutez au workspace partagé depuis l’interface admin.

# Dans Affine, après connexion en tant qu'admin :
# 1. Cliquer sur le nom du workspace (en haut à gauche)
# 2. "Members" > "Invite member"
# 3. Saisir l'email du collègue
# 4. Choisir le rôle : Owner / Admin / Member / Reader

# Pour une PME, structurer ainsi :
# - 1 Owner (vous, le déployant)
# - 2 à 3 Admins (chefs d'équipe, ils peuvent gérer les membres)
# - Le reste en Member (peut éditer, ne peut pas supprimer le workspace)
# - Stagiaires/externes en Reader (lecture seule)

Si vous voulez activer l’invitation automatique par email, il faudra configurer un serveur SMTP dans les variables d’environnement Coolify (MAILER_HOST, MAILER_PORT, MAILER_USER, MAILER_PASSWORD). Pour une petite équipe de moins de dix personnes, l’inscription manuelle reste largement acceptable. Pour des équipes plus larges, l’investissement dans une configuration SMTP (via Sendgrid, Mailgun ou un Postal self-hosted) devient rentable rapidement.

Adaptation au contexte ouest-africain

Affine présente plusieurs avantages spécifiques pour les PME francophones d’Afrique de l’Ouest. Le mode local-first est particulièrement pertinent : un collaborateur en mission terrain à Saint-Louis ou Bobo-Dioulasso peut prendre des notes complètes sans connexion, et tout se synchronise au retour au bureau. Cette approche change radicalement l’expérience comparée à Notion qui exige une connexion permanente pour fonctionner correctement.

Le coût est l’autre argument fort. Une instance Affine sur Hetzner CX31 coûte environ 5 200 FCFA par mois et héberge confortablement 30 à 50 utilisateurs simultanés. Notion équivalent à 8 USD par utilisateur représente 240 USD par mois pour 30 utilisateurs, soit environ 145 000 FCFA — vingt-huit fois plus cher. Sur trois ans, l’économie cumulée dépasse cinq millions de FCFA, sans compter la valeur stratégique de la souveraineté des données.

Enfin, la possibilité d’exporter les données en Markdown standard à tout moment vous protège contre tout enfermement propriétaire futur. Si dans deux ans vous décidez de migrer vers un autre outil, ou si Affine pivote dans une direction qui ne vous convient plus, vous récupérez l’intégralité de votre base de connaissances dans un format universel. Cette portabilité n’est pas garantie avec les solutions SaaS commerciales qui peuvent à tout moment limiter ou facturer l’export.

Erreurs fréquentes

Erreur Cause Solution
Build Coolify échoue (timeout) VPS sous-dimensionné, build Node.js trop lourd Augmenter temporairement à CX41 (8 vCPU) le temps du build, puis revenir à CX31
Erreur DATABASE_URL connection refused Conteneur postgres pas encore prêt au démarrage du serveur Ajouter un depends_on avec healthcheck dans le compose, ou redéployer une fois
Synchronisation entre clients ne fonctionne pas WebSocket bloqué par Coolify proxy Vérifier dans les paramètres Coolify que les WebSockets sont activés pour la ressource
« Workspace not found » pour collègue invité Cache navigateur ou compte non confirmé Vider le cache, vérifier que le compte est bien créé dans la liste Members
Pièces jointes manquantes après backup Volume Docker des uploads pas inclus dans la sauvegarde Ajouter explicitement le volume affine_storage dans le script de backup

Sauvegarde et restauration

Coolify ne sauvegarde rien automatiquement par défaut — c’est de votre responsabilité. Pour Affine, deux éléments doivent être sauvegardés : la base de données PostgreSQL (qui contient toutes les pages, les permissions, les utilisateurs) et le volume des uploads (les pièces jointes, images intégrées dans les pages). Programmez un script cron quotidien qui fait le dump et le copie sur un stockage distant — Hetzner Storage Box est l’option la plus économique pour rester dans l’écosystème.

#!/bin/bash
DATE=$(date +%Y%m%d-%H%M)
BACKUP_DIR=/var/backups/affine
mkdir -p $BACKUP_DIR

# Dump PostgreSQL via le conteneur postgres
docker exec $(docker ps -q -f name=postgres) \
  pg_dump -U affine affine | gzip > $BACKUP_DIR/affine-db-$DATE.sql.gz

# Snapshot uploads (volume Docker)
tar czf $BACKUP_DIR/affine-uploads-$DATE.tar.gz \
  -C /var/lib/docker/volumes/affine_storage/_data .

# Synchroniser vers Storage Box Hetzner
rsync -az $BACKUP_DIR/ \
  u123456@u123456.your-storagebox.de:/affine-backups/

# Conserver 14 jours sur le VPS, 90 jours sur Storage Box
find $BACKUP_DIR -mtime +14 -delete

Testez la restauration au moins une fois par trimestre sur un VPS jetable : c’est la seule manière de s’assurer que vos backups sont réellement utilisables. Une procédure de restauration documentée et testée transforme un incident potentiellement catastrophique en simple gêne de quelques heures. Sans cette discipline, vous risquez de découvrir au pire moment que vos sauvegardes sont corrompues ou incomplètes.

Tutoriels frères du cluster

FAQ

Affine peut-il remplacer Notion + Miro en un seul outil ?
Pour 80% des cas d’usage PME oui. Les fonctionnalités essentielles des deux mondes sont là (pages structurées + tableau blanc libre). Pour les fonctions très avancées de Miro (templates de design thinking complexes, intégrations externes très riches), Affine reste en retrait.

Mes données restent-elles privées avec Affine self-hosted ?
Oui. Toutes les données sont stockées sur votre VPS, dans votre base PostgreSQL et votre volume Docker. Aucune donnée ne transite par les serveurs d’Affine.pro en mode self-hosted.

Combien d’utilisateurs un Hetzner CX31 supporte-t-il ?
Pour un usage typique PME (15 à 30 collaborateurs, 50 à 100 documents par utilisateur), un CX31 absorbe sans difficulté. Au-delà de 50 utilisateurs simultanés actifs, montez sur un CX41 ou externalisez PostgreSQL.

Le mode hors-ligne fonctionne-t-il sur navigateur ou seulement sur le client desktop ?
Le mode local-first d’Affine fonctionne dans le navigateur via les API IndexedDB, mais il est plus fiable sur le client desktop (Electron). Pour une utilisation hors-ligne fréquente, le client desktop est recommandé.

Comment migrer depuis Notion vers Affine ?
Affine accepte l’import depuis Notion via fichiers Markdown ZIP exportés. Notion permet l’export en Markdown depuis les paramètres workspace. Les bases de données complexes peuvent nécessiter des ajustements manuels après import.

Pour aller plus loin

Mots-clés : affine self-hosted, alternative notion miro, coolify deploy, base de connaissances pme, tableau blanc collaboratif, local-first afrique de l’ouest.

Besoin d'un site web ?

Confiez-nous la Création de Votre Site Web

Site vitrine, e-commerce ou application web — nous transformons votre vision en réalité digitale. Accompagnement personnalisé de A à Z.

À partir de 250.000 FCFA
Parlons de Votre Projet
Publicité