Skip to content

Zensical

Zensical est un générateur de sites statiques Markdown utilisé pour servir la documentation du serveur. Le site est hébergé dans un conteneur Docker dans le LXC 101 (Management).

Configuration

  • Conteneurs : zensical-builder (build + watcher) + zensical (nginx, serving)
  • Image builder : zensical/zensical:latest
  • Image web : nginx:alpine
  • Port : 800180 (nginx)
  • URL : http://192.168.1.101:8001
  • Volumes :
    • /mnt/lxc-data/101-admin/zensical (Proxmox) → /build (builder)
    • /mnt/lxc-data/101-admin/zensical/docs (read-only) → /build/docs (builder)
    • /mnt/lxc-data/101-admin/zensical/site (read-only) → /usr/share/nginx/html (nginx)
  • Fichier compose : /mnt/lxc-data/101-admin/docker-compose.yaml
  • Mode : build + polling watcher (toutes les 30s) — nginx pour le serving

Pourquoi pas zensical serve ? Le mode serve est un serveur de développement qui consomme 100% CPU en continu. Il est explicitement documenté comme non adapté à la production. On utilise à la place un build statique servi par nginx.

Docker Compose

zensical-builder:
    image: zensical/zensical:latest
    container_name: zensical-builder
    volumes:
        - ./zensical:/build
        - ./zensical/docs:/build/docs:ro
    working_dir: /build
    entrypoint: python3
    command: /build/watch.py
    restart: unless-stopped

zensical:
    image: nginx:alpine
    container_name: zensical
    ports:
        - 8001:80
    volumes:
        - ./zensical/site:/usr/share/nginx/html:ro
    depends_on:
        - zensical-builder
    restart: unless-stopped

Watcher (watch.py)

Fichier : /mnt/lxc-data/101-admin/zensical/watch.py

Script Python qui : 1. Lance un zensical build au démarrage 2. Vérifie toutes les 30 secondes si des fichiers de /build/docs ont été modifiés depuis le dernier build 3. Si oui, relance un zensical build

Structure

/mnt/lxc-data/101-admin/zensical/
├── zensical.toml           # Configuration Zensical
├── watch.py                # Watcher Python (build + polling)
├── docs/                   # Fichiers Markdown (read-only)
│   ├── index.md
│   ├── applications/
│   ├── infrastructure/
│   └── ...
├── site/                   # Site statique généré (servi par nginx)
├── .last_build             # Sentinelle timestamp du dernier build
└── .cache/                 # Cache Zensical

Configuration (zensical.toml)

Fichier : /mnt/lxc-data/101-admin/zensical/zensical.toml

Configuration du thème avec features Material Design :

  • Navigation instantanée avec barre de progression
  • Tracking et path navigation
  • Recherche avec suggestions et highlight
  • Code copy et annotations
  • Dark/light mode automatique

Commandes

Gestion du service

# Redémarrer les conteneurs
pct exec 101 -- bash -c "cd /opt/docker && docker compose restart zensical-builder zensical"

# Forcer un rebuild immédiat
pct exec 101 -- bash -c "rm -f /opt/docker/zensical/.last_build && docker restart zensical-builder"

# Arrêter/démarrer
pct exec 101 -- bash -c "cd /opt/docker && docker compose stop zensical-builder zensical"
pct exec 101 -- bash -c "cd /opt/docker && docker compose start zensical-builder zensical"

Logs et débogage

# Logs du builder (build output)
pct exec 101 -- docker logs -f zensical-builder

# Logs nginx
pct exec 101 -- docker logs -f zensical

# Vérifier le statut
pct exec 101 -- docker ps --filter name=zensical

Inspection

# Vérifier que le site a bien été généré
pct exec 101 -- ls -la /opt/docker/zensical/site/

# Vérifier le timestamp du dernier build
pct exec 101 -- cat /opt/docker/zensical/.last_build

# Vérifier le port nginx
curl http://192.168.1.101:8001

Résolution de problèmes

Le site ne charge pas

# Vérifier les conteneurs
pct exec 101 -- docker ps --filter name=zensical
pct exec 101 -- docker logs --tail 30 zensical
pct exec 101 -- docker logs --tail 30 zensical-builder

# Vérifier le port
pct exec 101 -- ss -tuln | grep 8001
curl http://192.168.1.101:8001

Erreurs de build

# Vérifier les logs du builder pour erreurs
pct exec 101 -- docker logs zensical-builder

# Vérifier le montage du volume docs
pct exec 101 -- ls -la /opt/docker/zensical/docs/

Maintenance

Mise à jour des images

pct exec 101 -- bash -c "cd /opt/docker && docker compose pull zensical-builder zensical"
pct exec 101 -- bash -c "cd /opt/docker && docker compose up -d zensical-builder zensical"

Sauvegarde

Les fichiers sources sont sauvegardés via le système de backup Proxmox (LXC).

Le site généré (site/) peut être régénéré depuis les sources à tout moment.