Files
wiki/DEPLOYMENT.md
2026-01-05 22:41:39 +01:00

5.9 KiB

Déploiement Quartz Wiki

Ce document explique comment déployer le site Quartz sur votre infrastructure homelab.

📋 Prérequis

  • Instance Gitea avec Gitea Actions activé
  • Gitea Container Registry configuré
  • Secret REGISTRY_TOKEN configuré dans votre dépôt Gitea
  • Serveur avec Docker et Docker Compose
  • Traefik configuré comme reverse proxy (réseau public)

🔧 Configuration Initiale

1. Créer le Token Registry Gitea

  1. Aller dans Settings → Applications de votre compte Gitea
  2. Créer un nouveau token avec les permissions write:package
  3. Ajouter ce token comme secret REGISTRY_TOKEN dans votre dépôt

2. Configurer Traefik (Optionnel)

Si vous utilisez Traefik, ajoutez ces labels dans docker-compose.yml:

services:
  quartz:
    image: gitea.vorpax.dev/vorpax/quartz-wiki:latest
    container_name: quartz-wiki
    restart: unless-stopped

    networks:
      - public

    labels:
      # Enable Traefik
      - "traefik.enable=true"

      # HTTP Router
      - "traefik.http.routers.quartz.rule=Host(`wiki.vorpax.dev`)"
      - "traefik.http.routers.quartz.entrypoints=websecure"
      - "traefik.http.routers.quartz.tls=true"
      - "traefik.http.routers.quartz.tls.certresolver=letsencrypt"

      # Service
      - "traefik.http.services.quartz.loadbalancer.server.port=80"

      # HTTP to HTTPS redirect
      - "traefik.http.routers.quartz-http.rule=Host(`wiki.vorpax.dev`)"
      - "traefik.http.routers.quartz-http.entrypoints=web"
      - "traefik.http.routers.quartz-http.middlewares=redirect-to-https"

🚀 Déploiement

Workflow Automatique (Recommandé)

  1. Commit et Push vers v4:

    git add .
    git commit -m "Update content"
    git push origin v4
    
  2. Le workflow Gitea Actions va automatiquement:

    • Builder l'image Docker
    • Pusher vers gitea.vorpax.dev/vorpax/quartz-wiki
    • Tagger avec latest, v4, et le SHA du commit
  3. Sur votre serveur de production:

    # Se connecter au registry Gitea
    docker login gitea.vorpax.dev
    
    # Pull la nouvelle image
    docker compose pull
    
    # Redémarrer le container
    docker compose up -d
    

Build Local (Pour Testing)

# Build l'image localement
docker compose build

# Ou utiliser Dockerfile.prod directement
docker build -f Dockerfile.prod -t quartz-wiki:local .

# Lancer
docker compose up -d

Développement Local

Pour le développement avec hot-reload:

# Option 1: npx quartz
npx quartz build --serve
# Accessible sur http://localhost:8080

# Option 2: Docker dev
docker build -f Dockerfile.dev -t quartz-dev .
docker run -p 8080:8080 quartz-dev

📁 Structure du Projet

.
├── content/                    # Contenu du site
│   ├── blog/                  # Articles de blog
│   ├── homelab/               # Documentation homelab
│   │   ├── hardware/          # Pages hardware
│   │   ├── infrastructure/    # Infra docs
│   │   ├── services/          # Services docs
│   │   └── guides/            # Guides
│   └── templates/             # Templates Templater (non publiés)
├── quartz/                    # Code source Quartz
├── quartz.config.ts           # Configuration Quartz
├── quartz.layout.ts           # Layout et composants
├── Dockerfile.prod            # Dockerfile production (Nginx)
├── Dockerfile.dev             # Dockerfile dev (--serve)
├── nginx.conf                 # Config Nginx
├── docker-compose.yml         # Orchestration Docker
└── .gitea/workflows/          # CI/CD Gitea Actions

🔄 Workflow de Publication

Avec Obsidian

  1. Éditer dans Obsidian:

    • Ouvrir le vault pointant vers /content
    • Utiliser les templates dans content/templates/
    • Ajouter publish: true dans le frontmatter
  2. Utiliser Templater:

    • Installer le plugin Templater dans Obsidian
    • Configurer le dossier de templates: content/templates
    • Créer une nouvelle note avec un template (Ctrl+P → "Templater: Create new note from template")
  3. Publier:

    git add content/
    git commit -m "Add new blog post"
    git push origin v4
    

Sans Obsidian

Créer un fichier markdown dans content/blog/ ou content/homelab/:

---
title: "Mon Article"
publish: true
date: 2026-01-05
tags:
  - homelab
  - docker
description: "Description courte"
---

# Contenu ici

🏷️ Tags d'Images Disponibles

Le workflow crée plusieurs tags:

  • gitea.vorpax.dev/vorpax/quartz-wiki:latest - Dernière version de la branche v4
  • gitea.vorpax.dev/vorpax/quartz-wiki:v4 - Tag de branche
  • gitea.vorpax.dev/vorpax/quartz-wiki:<sha> - Tag par commit SHA

🔍 Troubleshooting

L'image ne se build pas dans Gitea Actions

Vérifier que:

  • Le secret REGISTRY_TOKEN est configuré
  • Gitea Container Registry est activé
  • Le runner Gitea Actions fonctionne

Les changements n'apparaissent pas

# Forcer un nouveau pull
docker compose down
docker compose pull
docker compose up -d

# Vérifier les logs
docker logs quartz-wiki

404 sur certaines pages

Vérifier que:

  • La page a publish: true dans le frontmatter
  • Le fichier est dans content/
  • Les wikilinks utilisent le bon chemin

📊 Métriques

Le site est configuré avec Plausible Analytics sur wiki.vorpax.dev. Vérifiez quartz.config.ts:15-17 pour la configuration.

🔐 Sécurité

  • Les fichiers dans content/templates/ ne sont jamais publiés
  • Les fichiers dans content/private/ sont exclus du build
  • Le dossier .obsidian/ n'est pas versionné
  • Nginx inclut des headers de sécurité (X-Frame-Options, X-Content-Type-Options, etc.)

📚 Resources