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

222 lines
5.9 KiB
Markdown

# 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:<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
```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)