Héberger Outline : votre base de connaissances collaborative (alternative à Notion)
Une base de connaissances collaborative en temps réel, moderne comme Notion, mais chez vous. Outline le permet. Voici comment l'héberger, avec son vrai prérequis : l'authentification externe.
Outline est une base de connaissances collaborative open source pensée pour centraliser la documentation d’une équipe. Son interface moderne, son éditeur riche et la collaboration en temps réel en font une alternative crédible à Notion ou Confluence pour les PME qui souhaitent conserver la maîtrise de leurs données.
L’application permet de structurer les connaissances sans transformer le wiki en arborescence illisible. En contrepartie, son auto-hébergement demande davantage de préparation qu’une solution comme BookStack, notamment à cause de son système d’authentification externe obligatoire.
Que permet de faire Outline ?
Outline organise les contenus en collections, puis en documents et sous-documents. Une collection peut représenter un service, un projet, un produit ou un espace documentaire réservé à certains collaborateurs.
Son éditeur prend en charge la mise en forme riche, les tableaux, les listes, les blocs de code, les pièces jointes et les liens internes. Plusieurs utilisateurs peuvent modifier un document simultanément, avec une synchronisation en temps réel. L’historique permet de retrouver des versions précédentes et de comprendre l’évolution d’une procédure.
La recherche plein texte facilite l’accès à l’information, y compris lorsque la documentation contient plusieurs centaines de pages. Les permissions peuvent être définies au niveau des collections, des groupes et des utilisateurs. Il est également possible de partager certains documents publiquement si cette fonction est autorisée par les administrateurs.
Outline fournit enfin une API utile pour automatiser la création de documents, connecter un outil interne ou intégrer la base de connaissances dans un workflow métier.
Le point critique : Outline exige une authentification externe
Outline ne propose pas, par défaut, de système classique avec adresse email et mot de passe stockés directement dans l’application. Il faut impérativement connecter un fournisseur d’identité externe.
Cette exigence est le principal obstacle pour les débutants. Déployer PostgreSQL, Redis et le conteneur Outline ne suffit pas : sans fournisseur d’identité correctement configuré, aucun utilisateur ne pourra se connecter.
Plusieurs approches sont possibles :
- utiliser Google comme fournisseur d’identité ;
- connecter un fournisseur compatible OpenID Connect, ou OIDC ;
- auto-héberger Authelia, Keycloak ou Authentik ;
- utiliser un fournisseur d’identité déjà présent dans l’entreprise.
Pour une infrastructure totalement maîtrisée, Authentik ou Keycloak constituent des choix courants. Authelia peut également convenir lorsqu’il fait déjà partie de la couche d’authentification de l’entreprise. Le fournisseur doit être opérationnel avant le premier accès à Outline.
Prérequis pour héberger Outline
Une installation complète comprend quatre composants : l’application Outline, PostgreSQL, Redis et un espace de stockage pour les fichiers.
Prévoyez les éléments suivants :
- un serveur Linux avec une marge de mémoire suffisante pour Outline, PostgreSQL, Redis et le reverse proxy ;
- Docker et le module Docker Compose (voir installer Docker sur un VPS) ;
- un nom de domaine ou un sous-domaine, par exemple
wiki.example.fr; - un enregistrement DNS pointant vers le serveur ;
- un fournisseur OIDC déjà configuré et accessible ;
- un reverse proxy capable de gérer HTTPS et les connexions WebSocket ;
- une stratégie de sauvegarde hors du serveur.
Outline ne nécessite pas de GPU. Les performances reposent surtout sur la mémoire disponible, le processeur, PostgreSQL et la rapidité du stockage. Des disques NVMe réduisent notamment la latence des accès à la base et aux fichiers.
Pour les organisations recherchant un hébergement français, TalCloud propose une offre VPS à partir de 4,99 € par mois, avec des serveurs situés en France, une infrastructure adaptée aux exigences RGPD, du stockage NVMe, une protection Anti-DDoS Netrix et un support humain.
Générer les secrets de l’application
Outline utilise deux secrets distincts. SECRET_KEY protège les données sensibles de l’application, tandis que UTILS_SECRET sert à différents mécanismes internes.
Générez chaque valeur séparément :
openssl rand -hex 32
openssl rand -hex 32
Copiez les résultats dans un fichier .env sans les réutiliser ailleurs :
SECRET_KEY=remplacer_par_le_premier_secret
UTILS_SECRET=remplacer_par_le_second_secret
POSTGRES_USER=outline
POSTGRES_PASSWORD=remplacer_par_un_mot_de_passe_robuste
POSTGRES_DB=outline
DATABASE_URL=postgres://outline:remplacer_par_un_mot_de_passe_robuste@postgres:5432/outline
REDIS_URL=redis://redis:6379
URL=https://wiki.example.fr
OIDC_CLIENT_ID=outline
OIDC_CLIENT_SECRET=remplacer_par_le_secret_oidc
OIDC_AUTH_URI=https://auth.example.fr/application/o/authorize/
OIDC_TOKEN_URI=https://auth.example.fr/application/o/token/
OIDC_USERINFO_URI=https://auth.example.fr/application/o/userinfo/
Protégez ce fichier, par exemple avec chmod 600 .env, et ne l’ajoutez jamais au dépôt Git. Une modification ultérieure de SECRET_KEY ou de UTILS_SECRET peut invalider des données ou des sessions existantes.
Déployer Outline avec Docker Compose
Créez un fichier compose.yml dans un répertoire réservé au service :
services:
postgres:
image: postgres:16-alpine
restart: unless-stopped
environment:
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DB: ${POSTGRES_DB}
volumes:
- postgres_data:/var/lib/postgresql/data
redis:
image: redis:7-alpine
restart: unless-stopped
command: redis-server --appendonly yes
volumes:
- redis_data:/data
outline:
image: outlinewiki/outline:latest
restart: unless-stopped
env_file:
- .env
environment:
NODE_ENV: production
PGSSLMODE: disable
FILE_STORAGE: local
FILE_STORAGE_LOCAL_ROOT_DIR: /var/lib/outline/data
OIDC_DISPLAY_NAME: Connexion entreprise
OIDC_SCOPES: openid profile email
ports:
- "127.0.0.1:3000:3000"
volumes:
- outline_data:/var/lib/outline/data
depends_on:
- postgres
- redis
volumes:
postgres_data:
redis_data:
outline_data:
Le port est uniquement exposé sur l’interface locale. Le reverse proxy sera donc le seul point d’entrée public.
Lancez ensuite la migration de la base, puis les services :
docker compose pull
docker compose run --rm outline yarn db:migrate --env=production-ssl-disabled
docker compose up -d
docker compose logs -f outline
La commande de migration peut évoluer entre les versions majeures. Avant une mise à jour, vérifiez les notes de version de l’image utilisée et évitez les mises à niveau automatiques non supervisées.
Pour un environnement plus prévisible, remplacez latest par une version précise. Cela empêche une nouvelle version majeure d’être installée involontairement lors d’un simple docker compose pull.
Configurer l’authentification OIDC
Dans le fournisseur d’identité, créez un client OIDC confidentiel destiné à Outline. Déclarez l’URL de redirection suivante :
https://wiki.example.fr/auth/oidc.callback
Cette adresse doit correspondre exactement au domaine défini dans URL. Une différence de protocole, de domaine, de port ou de chemin provoquera généralement une erreur de redirection.
Reportez ensuite dans .env l’identifiant du client, son secret et les trois endpoints OIDC :
OIDC_AUTH_URIpour l’autorisation ;OIDC_TOKEN_URIpour l’échange du code contre un jeton ;OIDC_USERINFO_URIpour récupérer le profil de l’utilisateur.
Le fournisseur doit transmettre au minimum les scopes openid, profile et email. L’adresse email doit être présente et, idéalement, vérifiée. Selon le fournisseur, vous devrez aussi définir OIDC_USERNAME_CLAIM si le nom d’utilisateur repose sur une propriété particulière comme preferred_username.
Redémarrez Outline après toute modification :
docker compose up -d --force-recreate outline
docker compose logs --tail=100 outline
Si la connexion échoue, contrôlez d’abord l’URL de callback, le secret du client, les endpoints et les claims contenus dans le jeton.
Effectuer le premier accès
Ouvrez le domaine public, puis choisissez le bouton correspondant au fournisseur OIDC. Le premier utilisateur autorisé pourra initialiser l’espace de travail selon la configuration retenue.
Créez ensuite les premières collections, par exemple « Procédures internes », « Documentation technique » et « Projets clients ». Définissez les groupes avant d’ajouter de nombreux documents : une structure de permissions simple dès le départ évite les corrections manuelles ultérieures.
Testez également la création, l’édition simultanée, la recherche, l’ajout d’une pièce jointe et la déconnexion. Un second compte non administrateur permet de vérifier que les restrictions de collections fonctionnent réellement.
Activer HTTPS et le temps réel
Placez Outline derrière Nginx, Caddy, Traefik ou un autre reverse proxy. Le certificat TLS doit couvrir le domaine déclaré dans URL.
Le proxy doit transmettre les en-têtes Host, X-Forwarded-For et X-Forwarded-Proto. Il doit aussi accepter la mise à niveau des connexions WebSocket. Sans cette transmission, l’interface peut rester accessible tandis que la collaboration en temps réel devient instable.
N’exposez directement ni PostgreSQL ni Redis sur Internet. Seuls les ports HTTP et HTTPS du reverse proxy doivent être publics. Après activation du certificat, vérifiez qu’aucune redirection ne renvoie vers une adresse locale ou vers HTTP.
Utiliser un stockage S3
Le stockage local convient à une petite installation, à condition de sauvegarder le volume outline_data. Pour faciliter la réplication ou séparer les fichiers du serveur applicatif, Outline peut utiliser un stockage compatible S3.
Dans ce cas, remplacez FILE_STORAGE=local par FILE_STORAGE=s3, puis fournissez les variables du compartiment, de la région, de l’endpoint et des clés d’accès. Utilisez un compte limité au compartiment d’Outline et interdisez l’accès public aux objets.
Une base PostgreSQL sauvegardée sans les pièces jointes ne constitue pas une sauvegarde complète. Le stockage S3 doit avoir sa propre politique de versionnement ou de réplication.
Sécuriser, sauvegarder et mettre à jour
Limitez l’administration d’Outline aux comptes nécessaires et activez l’authentification multifacteur sur le fournisseur OIDC. C’est ce fournisseur qui protège l’accès initial : sa compromission donne potentiellement accès à toute la documentation.
Sauvegardez PostgreSQL régulièrement avec pg_dump :
docker compose exec -T postgres pg_dump -U outline -d outline -Fc > outline.dump
Sauvegardez également le volume des fichiers lorsque FILE_STORAGE=local. Conservez au moins une copie chiffrée sur une autre machine ou dans un stockage objet distinct. Notre guide sur les sauvegardes chiffrées avec restic détaille cette approche. Testez périodiquement la restauration, car une archive jamais restaurée reste une hypothèse, pas une garantie.
Pour mettre à jour une version épinglée, sauvegardez d’abord la base et les fichiers, modifiez le numéro de version, puis exécutez :
docker compose pull
docker compose run --rm outline yarn db:migrate --env=production-ssl-disabled
docker compose up -d
docker compose logs --tail=100 outline
Surveillez enfin l’espace disque, la mémoire, les erreurs PostgreSQL, la disponibilité de Redis et les échecs d’authentification OIDC. Avec cette discipline, Outline fournit une base de connaissances collaborative moderne tout en conservant la maîtrise de l’hébergement, des identités et des données.