Pourquoi auto-héberger Outline sur un VPS
Outline stocke souvent ce qu'une entreprise a de plus stratégique : procédures internes, runbooks, décisions d'architecture, onboarding. Sur la version SaaS, vous payez au siège et vos contenus vivent sur une infrastructure tierce. En l'installant sur votre propre VPS, vous fixez vous-même les règles : authentification SSO via votre fournisseur, sauvegardes de la base PostgreSQL selon votre politique, rétention illimitée et nombre d'utilisateurs non facturé. Outline reste léger en lecture mais s'appuie sur une stack précise (PostgreSQL pour les documents, Redis pour les sessions et les websockets temps réel, un stockage compatible S3 pour les pièces jointes). Un VPS dédié vous laisse dimensionner chacun de ces composants et déployer la pile complète avec un seul fichier docker-compose.yml.
Ce que vous gagnez concrètement
- Utilisateurs illimités sans facturation par siège, contrairement aux offres SaaS.
- SSO intégré avec votre identité d'entreprise (Google Workspace, OIDC, Azure AD) sous votre contrôle.
- Recherche plein texte performante directement servie par votre PostgreSQL, sans dépendance externe.
- Pièces jointes et exports stockés sur votre propre bucket S3 ou MinIO auto-hébergé.
- Édition collaborative temps réel grâce à Redis, sans aucune donnée transitant par un tiers.
- Sauvegardes et restauration maîtrisées : un
pg_dumpsuffit à archiver toute la base documentaire.
Prérequis matériels et logiciels
Outline est confortable avec 2 vCPU et 4 Go de RAM pour une équipe de 20 à 50 personnes : PostgreSQL et Redis consomment peu au repos, mais l'édition temps réel et la recherche montent en charge ponctuellement. Comptez 20 Go de disque pour la base et les logs, davantage si vous stockez les pièces jointes localement plutôt que sur S3. Côté logiciel : Docker Engine et le plugin docker compose v2, un nom de domaine pointé vers l'IP du VPS (par exemple wiki.votreentreprise.ma), et un compte SMTP pour les e-mails d'invitation. Outline exige obligatoirement un fournisseur d'authentification : prévoyez les identifiants OAuth (Google, Slack ou un serveur OIDC) avant de démarrer, car il n'y a pas de connexion par simple mot de passe.
Déployer Outline étape par étape
Préparer le VPS et Docker
Mettez le système à jour avec apt update && apt upgrade -y, installez Docker via le script officiel, puis vérifiez avec docker compose version. Créez un dossier /opt/outline qui hébergera votre configuration.
Générer les secrets et le fichier d'environnement
Outline requiert deux clés : générez-les avec openssl rand -hex 32 pour SECRET_KEY et UTILS_SECRET. Renseignez dans le .env les variables DATABASE_URL, REDIS_URL, URL=https://wiki.votreentreprise.ma et les identifiants OAuth de votre fournisseur.
Définir la stack PostgreSQL, Redis et Outline
Dans docker-compose.yml, déclarez trois services : postgres (image postgres:15 avec un volume persistant), redis (image redis:7) et outline (image outlinewiki/outline:latest). Liez Outline aux deux backends via les variables d'environnement et exposez le port 3000 en interne uniquement.
Initialiser la base de données
Lancez les migrations avant le premier démarrage avec docker compose run --rm outline yarn db:migrate --env=production-ssl-disabled. Cette commande crée le schéma documentaire dans PostgreSQL ; sans elle, Outline refusera de démarrer.
Placer un reverse proxy avec SSL
Mettez Caddy ou Traefik devant le service outline. Avec Caddy, une ligne wiki.votreentreprise.ma { reverse_proxy outline:3000 } génère et renouvelle automatiquement le certificat Let's Encrypt. Veillez à transmettre les en-têtes WebSocket pour l'édition temps réel.
Démarrer et créer le premier espace
Lancez la pile avec docker compose up -d, puis ouvrez https://wiki.votreentreprise.ma. Connectez-vous via votre fournisseur OAuth : le premier compte authentifié devient administrateur de l'espace de travail.
Activez le stockage S3 plutôt que local pour les pièces jointes : pointez AWS_S3_UPLOAD_BUCKET_URL vers un MinIO auto-hébergé sur le même VPS. Vous découplez ainsi le volume des fichiers de la base PostgreSQL, ce qui rend les pg_dump rapides et légers, et vous permet de monter en charge sans gonfler le conteneur applicatif.