222 lines
5.9 KiB
Markdown
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)
|