Déploiement de Outline Wiki pour la promotion BTS SIO d'IRIS Mediaschool Nice. Production : https://wiki.iris.a3n.fr:4433
Ce repo contient uniquement la configuration de déploiement (Docker Compose, variables d'environnement, documentation). Le code source d'Outline reste à l'amont sur outline/outline.
Problématique : Première promotion BTS SIO à IRIS Nice — pas de plateforme centralisée pour la documentation technique et pédagogique. Documentation dispersée (Google Docs, Notion, locale), pas de collaboration temps réel, besoin de permissions granulaires (SISR / SLAM / formateurs / admin) et d'authentification unifiée.
Solution déployée : Outline (wiki collaboratif open-source moderne) en stack Docker Compose, derrière un reverse proxy Traefik avec TLS Let's Encrypt, authentification SSO/OIDC via Keycloak, stockage S3-compatible MinIO.
Réalisation : Semaine intensive SISR — Février 2026 — binôme.
┌──────────────────────────┐
Internet ───► │ Traefik (reverse proxy) │ TLS Let's Encrypt
│ :443 admin_proxy net │
└────────────┬──────────────┘
│
┌───────────▼───────────┐
│ Outline (Node.js) │ :3000 (interne)
│ saidmkd router │
└─┬─────────┬───────────┘
│ │
▼ ▼
┌─────────────┐ ┌──────────────┐
│ PostgreSQL │ │ Redis (cache)│
└─────────────┘ └──────────────┘
┌─────────────────────────────┐
│ MinIO (S3 self-hosted) │ stockage fichiers
└─────────────────────────────┘
┌─────────────────────────────┐
│ Keycloak (SSO/OIDC externe) │ authentification
└─────────────────────────────┘
Services orchestrés dans docker-compose.yml :
- outline — l'application (image officielle
outlinewiki/outline:latest) - postgres — base de données principale
- redis — cache + queues + collaboration temps réel
Services externes (déployés à part sur le serveur IRIS) :
- traefik — reverse proxy + TLS (réseau Docker
admin_proxy) - keycloak — fournisseur d'identité OIDC
- minio — stockage S3 pour les fichiers uploadés
- Docker Engine + Docker Compose v2
- Un réseau Docker externe
admin_proxy(créé par Traefik) - Un domaine pointant vers le serveur (ex :
iris.a3n.fr) - Un realm Keycloak configuré (client OIDC pour Outline)
# 1. Cloner le repo
git clone https://github.com/sdjbrl/wiki-iris.git
cd wiki-iris
# 2. Copier le template d'environnement
cp .env.sample .env
# 3. Générer les clés secrètes
openssl rand -hex 32 # → SECRET_KEY
openssl rand -hex 32 # → UTILS_SECRET
# 4. Éditer .env (URL, base de données, OIDC, S3)
nano .env
# 5. Créer le réseau Traefik si non existant
docker network create admin_proxy
# 6. Lancer la stack
docker compose up -d
# 7. Vérifier
docker compose ps
docker compose logs -f outline| Variable | Description | Exemple |
|---|---|---|
URL |
URL publique du wiki | https://wiki.iris.a3n.fr:4433 |
DOMAIN_NAME |
Domaine pour Traefik | iris.a3n.fr |
SECRET_KEY |
Clé de chiffrement (32 bytes hex) | openssl rand -hex 32 |
UTILS_SECRET |
Clé secondaire (32 bytes hex) | openssl rand -hex 32 |
DATABASE_URL |
Chaîne de connexion PostgreSQL | postgres://user:pass@postgres:5432/outline |
REDIS_URL |
Chaîne de connexion Redis | redis://redis:6379 |
OIDC_CLIENT_ID |
Client ID Keycloak | outline |
OIDC_CLIENT_SECRET |
Client secret Keycloak | (depuis Keycloak admin) |
OIDC_AUTH_URI |
Endpoint d'autorisation | https://kc.iris.a3n.fr/realms/iris/protocol/openid-connect/auth |
OIDC_TOKEN_URI |
Endpoint de token | https://kc.iris.a3n.fr/realms/iris/protocol/openid-connect/token |
OIDC_USERINFO_URI |
Endpoint userinfo | https://kc.iris.a3n.fr/realms/iris/protocol/openid-connect/userinfo |
AWS_S3_* |
Configuration MinIO (S3) | endpoint, bucket, credentials |
Voir .env.sample pour la liste complète.
- TLS automatique via Let's Encrypt (Traefik)
- SSO/OIDC via Keycloak — pas de comptes locaux
- Permissions par collection (groupes Keycloak mappés : SISR, SLAM, formateurs, admin)
- Secrets jamais commités (
.envdans.gitignore) - Réseau Docker isolé (
admin_proxyexterne, services internes enexposeuniquement)
- B1.2 — Mettre à disposition des utilisateurs un service informatique
- B2.2 — Installer, tester et déployer une solution d'infrastructure réseau
- B2.3 — Exploiter, dépanner et superviser une solution d'infrastructure réseau
- B3.1 — Protéger les données à caractère personnel (SSO + permissions par groupe)
- B3.2 — Préserver l'identité numérique de l'organisation (TLS Traefik + OIDC)
wiki-iris/
├── docker-compose.yml # Orchestration des services
├── .env.sample # Template de configuration (sans secrets)
├── .gitignore # Exclusions (.env, data, etc.)
└── README.md # Ce fichier
Saïd-Djibril Ahmed Moussa — BTS SIO SISR · IRIS Mediaschool Nice Portfolio · LinkedIn
Réalisé en binôme dans le cadre d'une semaine intensive SISR (Février 2026).
La configuration de déploiement de ce repo est publiée sous MIT. Le code source d'Outline reste sous BSL 1.1 — voir outline/outline/LICENSE.