Wiki.js est l'outil de documentation interne hébergé sur l'infrastructure LORVA. Il sert de base de connaissances centralisée pour les projets, procédures et références techniques.
/docker/wiki/traefik-public)Le service est défini dans /docker/wiki/docker-compose.yml. Il comprend deux conteneurs :
| Service | Image | Rôle |
|---|---|---|
wiki |
ghcr.io/requarks/wiki:2 |
Application Wiki.js |
wiki-db |
postgres:16 |
Base de données PostgreSQL |
Wiki.js est exposé via Traefik grâce aux labels Docker. Le conteneur wiki doit être rattaché au réseau externe traefik-public.
Configuration typique des labels :
labels:
- "traefik.enable=true"
- "traefik.http.routers.wiki.rule=Host(`wiki.lorva.dev`)"
- "traefik.http.routers.wiki.entrypoints=websecure"
- "traefik.http.routers.wiki.tls.certresolver=letsencrypt"
- "traefik.http.services.wiki.loadbalancer.server.port=3000"
La langue par défaut configurée est en (anglais).
La locale française (fr) n'est pas encore installée. Pour l'activer :
frssh lorva-public
cd /docker/wiki
ssh lorva-public
cd /docker/wiki
docker compose restart
Pour redémarrer uniquement le service applicatif (sans la base de données) :
docker compose restart wiki
ssh lorva-public
cd /docker/wiki
docker compose logs -f wiki
Filtrer les erreurs uniquement :
docker compose logs wiki 2>&1 | grep -i error
# Arrêter
docker compose down
# Démarrer
docker compose up -d
# Vérifier l'état
docker compose ps
ssh lorva-public
cd /docker/wiki
docker exec wiki-wiki-db-1 pg_dump -U wiki wiki > backup.sql
Le fichier backup.sql est créé dans le répertoire courant (/docker/wiki/).
docker exec wiki-wiki-db-1 pg_dump -U wiki wiki > backup_$(date +%Y%m%d_%H%M%S).sql
# Arrêter Wiki.js (pas la DB)
docker compose stop wiki
# Restaurer le dump
docker exec -i wiki-wiki-db-1 psql -U wiki wiki < backup.sql
# Redémarrer
docker compose start wiki
https://wiki.lorva.dev/graphql
L'API utilise un Bearer token dans l'en-tête HTTP :
Authorization: Bearer <token>
Le token s'obtient dans l'interface d'administration : Admin > API Access > New API Key.
Mutation GraphQL pages.create :
mutation {
pages {
create(
content: "Contenu de la page en Markdown"
description: "Description courte de la page"
editor: "markdown"
isPrivate: false
isPublished: true
locale: "en"
path: "chemin/de/la/page"
tags: ["tag1", "tag2"]
title: "Titre de la page"
) {
responseResult {
succeeded
errorCode
message
}
page {
id
path
title
}
}
}
}
Champs requis pour pages.create :
| Champ | Type | Description |
|---|---|---|
content |
String |
Contenu de la page (Markdown, HTML, etc.) |
description |
String |
Description courte (métadonnées) |
editor |
String |
Éditeur utilisé : markdown, wysiwyg, code |
isPrivate |
Boolean |
Visibilité restreinte aux utilisateurs connectés |
isPublished |
Boolean |
Page publiée ou en brouillon |
locale |
String |
Code de langue (en, fr, etc.) |
path |
String |
Chemin URL de la page (sans slash initial) |
tags |
[String] |
Liste de tags |
title |
String |
Titre affiché de la page |
curl -s -X POST https://wiki.lorva.dev/graphql \
-H "Authorization: Bearer <TOKEN>" \
-H "Content-Type: application/json" \
-d '{
"query": "mutation { pages { create(content: \"# Test\", description: \"test\", editor: \"markdown\", isPrivate: false, isPublished: true, locale: \"en\", path: \"test/page\", tags: [], title: \"Test Page\") { responseResult { succeeded message } page { id path } } } }"
}'
mutation {
pages {
update(
id: 42
content: "Nouveau contenu"
description: "Nouvelle description"
editor: "markdown"
isPrivate: false
isPublished: true
locale: "en"
path: "chemin/de/la/page"
tags: ["tag1"]
title: "Nouveau titre"
) {
responseResult {
succeeded
errorCode
message
}
}
}
}
query {
pages {
singleByPath(path: "chemin/de/la/page", locale: "en") {
id
title
path
content
updatedAt
}
}
}
query {
pages {
list(orderBy: TITLE) {
id
title
path
locale
updatedAt
}
}
}
ssh lorva-public
cd /docker/wiki
# Récupérer la nouvelle image
docker compose pull wiki
# Redémarrer avec la nouvelle image
docker compose up -d wiki
Wiki.js applique les migrations de base de données automatiquement au démarrage.
Les mises à jour majeures de PostgreSQL (ex. 16 → 17) nécessitent un dump/restore manuel. Ne pas faire docker compose pull sur wiki-db sans avoir sauvegardé la base au préalable.
ssh lorva-public
df -h /docker
docker system df
docker exec -it wiki-wiki-db-1 psql -U wiki wiki
Commandes psql utiles :
-- Lister les tables
\dt
-- Compter les pages
SELECT COUNT(*) FROM pages;
-- Vérifier la taille de la base
SELECT pg_size_pretty(pg_database_size('wiki'));
-- Quitter
\q
docker compose psdocker compose logs -f wikiDatabase connection established au démarragedocker compose restart wikiwiki est Up et healthytraefik-public : docker network inspect traefik-publicisPublished: true est bien passé dans la mutation| Variable | Description |
|---|---|
DB_TYPE |
postgres |
DB_HOST |
Nom du service Docker (wiki-db) |
DB_PORT |
5432 |
DB_USER |
wiki |
DB_PASS |
Mot de passe PostgreSQL |
DB_NAME |
wiki |
Par défaut, les fichiers uploadés sont stockés dans la base de données ou sur le disque local. Vérifier la configuration dans Admin > Storage pour s'assurer que les assets sont persistés en dehors du conteneur (volume Docker).