# 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`: ```yaml 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**: ```bash 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**: ```bash # 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) ```bash # 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: ```bash # 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**: ```bash 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/`: ```yaml --- 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:` - 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 ```bash # 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 - [Documentation Quartz](https://quartz.jzhao.xyz/) - [Gitea Actions Docs](https://docs.gitea.com/usage/actions/overview) - [Gitea Container Registry](https://docs.gitea.com/usage/packages/container)