Documentation complète: infrastructure, réseau, issues, recommandations

This commit is contained in:
Lionel
2025-12-31 20:38:04 +01:00
parent 891d5f1a7d
commit cf5669b1fa
8 changed files with 641 additions and 802 deletions

View File

@@ -1,152 +1,47 @@
# 🏔️ Talloires v2.0 Documentation
# Talloires Infrastructure v2
Bienvenue dans la documentation de l'infrastructure Talloires v2.0 - Migration complétée le 30 décembre 2025.
Documentation complète de l'infrastructure Talloires hébergée sur Raspberry Pi 5.
---
## Quick Links
## 🚀 Quick Links (Go-Links)
| Service | URL | Description |
|---------|-----|-------------|
| [Jellyfin](https://jellyfin.talloires.local) | Media Server | Streaming vidéo/audio |
| [Gitea](https://git.talloires.local) | Git Server | Repositories privés |
| [Home Assistant](https://homeassistant.talloires.local) | Domotique | Automatisation maison |
| [Transmission](https://transmission.talloires.local) | BitTorrent | Via VPN ProtonVPN |
| [MkDocs](https://docs.talloires.local) | Documentation | Ce site |
| [Arcane](https://arcane.talloires.local) | Docker Management | Gestion containers |
| [Dozzle](https://dozzle.talloires.local) | Logs Viewer | Logs Docker temps réel |
| [Shlink](https://go.talloires.local) | URL Shortener | Short URLs |
| [Netdata](https://netdata.talloires.local) | Monitoring | Métriques système |
Accès rapide aux services via les go-links:
## Architecture
| Go-Link | Service | Description |
|---------|---------|-------------|
| [**go**](https://go){:target="_blank"} | Shlink Web | Gestion des liens courts |
| [**go/jf**](https://go/jf){:target="_blank"} | Jellyfin | Serveur média (films, séries) |
| [**go/trn**](https://go/trn){:target="_blank"} | Transmission | Client BitTorrent (VPN) |
| [**go/git**](https://go/git){:target="_blank"} | Gitea | Hébergement Git |
| [**go/docs**](https://go/docs){:target="_blank"} | MkDocs | Cette documentation |
| [**go/ha**](https://go/ha){:target="_blank"} | Home Assistant | Domotique |
| [**go/net**](https://go/net){:target="_blank"} | Netdata | Monitoring système |
| [**go/sig**](https://go/sig){:target="_blank"} | Signal API | Notifications |
| [**go/arcane**](https://go/arcane){:target="_blank"} | 🆕 Arcane | Docker Management UI |
| [**go/logs**](https://go/logs){:target="_blank"} | 🆕 Dozzle | Docker Logs Viewer |
---
## 📊 Architecture v2.0
### Infrastructure
- **Serveur**: Raspberry Pi 5 (8GB) - Talloires
- **Stockage**: Synology DS620slim - Annecy (NFS)
- **VPN**: Tailscale (WireGuard)
- **Réseau**: UniFi Dream Router 7 (Theseus)
### Stack Logicielle
- **Containerisation**: Docker + Docker Compose
- **Reverse Proxy**: Caddy (HTTPS local)
- **DNS Local**: dnsmasq
- **VPN Tunnel**: ProtonVPN (WireGuard)
- **Management**: Arcane (Web UI) + Lazydocker (TUI)
---
## 🗂️ Sections
### [Services](services/overview.md)
Documentation détaillée de chaque service déployé.
### [Infrastructure](infra/overview.md)
Configuration réseau, VPN, DNS, backups.
### [Vault v1.0](vault/index-v1.md)
Archive de la documentation v1.0 (référence historique).
---
## 📈 Migration v1.0 → v2.0
**Date**: 30 décembre 2025
**Durée**: ~3h30
**Downtime**: ~30 minutes
**Services migrés**: 10/10 (100%)
**Réduction infrastructure**: 60% (de 25 à 10 services)
### Services Déployés (v2.0)
✅ [**Jellyfin**](https://go/jf){:target="_blank"} - Serveur média (2.3 GB restauré)
✅ [**Transmission + WireGuard**](https://go/trn){:target="_blank"} - BitTorrent avec VPN kill-switch
✅ [**Gitea**](https://go/git){:target="_blank"} - Hébergement Git (repos restaurés)
✅ [**Home Assistant**](https://go/ha){:target="_blank"} - Domotique (nouvelle installation)
✅ [**MkDocs**](https://go/docs){:target="_blank"} - Documentation (cette page!)
✅ [**Netdata**](https://go/net){:target="_blank"} - Monitoring système
✅ [**Signal API**](https://go/sig){:target="_blank"} - Notifications
✅ [**Shlink**](https://go){:target="_blank"} - URL shortener
✅ [**Caddy**] - Reverse proxy HTTPS
### 🆕 Services Ajoutés (31 décembre 2025)
✅ [**Arcane**](https://go/arcane){:target="_blank"} - Docker Management UI (BSD-3-Clause)
✅ [**Dozzle**](https://go/logs){:target="_blank"} - Real-time Docker Logs Viewer (MIT)
**Lazydocker** - Terminal UI pour Docker (MIT) - Installé sur Talloires & Annecy
### Services Retirés
**Authelia** - Remplacé par auth native de chaque service
**Portainer** - Remplacé par Arcane (open source BSD-3)
**Crowdsec** - Simplification sécurité
**Dockge** - Remplacé par Arcane + Lazydocker
**15+ autres services** - Nettoyage architecture
---
## 🔐 Sécurité
- ✅ VPN WireGuard actif (ProtonVPN Luxembourg)
- ✅ Kill-switch Transmission (network_mode)
- ✅ Accès Tailscale uniquement (pas d'exposition Internet)
- ✅ Firewall UFW actif
- ✅ Certificats HTTPS locaux (Caddy)
- ✅ Backup automatique vers Annecy (NFS)
---
## 🛠️ Maintenance
### Docker Management
**Web UI** - [Arcane](https://go/arcane){:target="_blank"}
- Gestion containers, images, volumes, networks
- Interface moderne SvelteKit
- Templates Docker Compose
- Monitoring en temps réel
**Logs** - [Dozzle](https://go/logs){:target="_blank"}
- Logs en temps réel multi-containers
- Search & filter
- Ultra-léger
**Terminal UI** - Lazydocker
```bash
# Sur Talloires
ssh lionel@talloires.local
lazydocker
# Sur Annecy (Synology)
ssh lionel@100.69.227.96
~/.local/bin/lazydocker
```
┌─────────────────────────────────────────────────────────────────┐
│ INTERNET │
└─────────────────────────────────────────────────────────────────┘
┌─────────┴─────────┐
│ UniFi DR7 │
│ (Theseus) │
│ 192.168.1.1 │
└─────────┬─────────┘
┌────────────────────┼────────────────────┐
│ │ │
┌────────┴────────┐ ┌────────┴────────┐ ┌───────┴───────┐
│ Raspberry Pi 5 │ │ Synology NAS │ │ Clients │
│ (Talloires) │ │ (Annecy) │ │ Mac/iOS │
│ 192.168.1.100 │ │ 192.168.1.50 │ │ │
│ 10.171.171.1 │ │ 10.171.171.50 │ │ │
└─────────────────┘ └─────────────────┘ └───────────────┘
```
### Backups
- **Location**: `/mnt/annecy/talloires/`
- **Fréquence**: Quotidien (automatique)
- **Rétention**: 30 jours
- **Services backupés**: Jellyfin, Gitea, MkDocs, Configurations
## Sections
### Monitoring
- **Netdata**: [go/net](https://go/net){:target="_blank"}
- **Arcane**: [go/arcane](https://go/arcane){:target="_blank"}
- **Dozzle**: [go/logs](https://go/logs){:target="_blank"}
- **Logs Docker**: `docker logs <container>`
- **Health checks**: Docker healthchecks
---
## 📞 Contact
**Administrateur**: Lionel
**Infrastructure**: Talloires (production)
**Backup**: Annecy (NAS Synology)
---
*Dernière mise à jour: 31 décembre 2025 - Ajout Arcane, Dozzle, Lazydocker*
- [Infrastructure](infra/overview.md) - Architecture détaillée
- [Services](services/overview.md) - Configuration des services
- [Changelog](changelog/2025-12-31.md) - Journal des modifications
- [Vault](vault/README.md) - Configurations et secrets

View File

@@ -0,0 +1,145 @@
# Problèmes rencontrés - 31 décembre 2025
Session de maintenance majeure pour réparer l'infrastructure après réorganisation.
## 1. Shlink - URLs cassées
**Symptôme** : Les short URLs (`go/ts`, `go/ui`, etc.) ne fonctionnaient plus.
**Cause** : Le Caddyfile contenait des redirections manuelles au lieu d'un reverse proxy vers Shlink.
**Solution** :
```caddyfile
# AVANT (cassé)
go.talloires.local {
redir /ts https://tailscale.com permanent
redir /ui https://unifi.ui.com permanent
}
# APRÈS (fonctionnel)
go.talloires.local {
reverse_proxy shlink:8080
}
```
**Fichiers modifiés** :
- `/mnt/mediaserver/talloires/caddy/Caddyfile`
- `/home/lionel/talloires-v2/shlink-web/servers.json`
---
## 2. Arcane - Crash loop
**Symptôme** : Container en restart permanent.
**Cause** : `ENCRYPTION_KEY` invalide (31 caractères au lieu de 32+).
**Solution** :
```bash
# Générer nouvelles clés
openssl rand -base64 32
# Mettre à jour docker-compose.yml
ENCRYPTION_KEY=fY+ln5hq7XMkDR+cU/pxu3Kf11LgUkjYXdM+QSwU3jM=
SESSION_SECRET=QDGWo1nA9Qa4fRT2ektsjQ0oUbuAwUz4V8xsBfZYiWw=
```
**Note** : Authelia désactivé temporairement pour Arcane.
---
## 3. Jellyfin - Médias non montés
**Symptôme** : Bibliothèques vides, médias inaccessibles.
**Cause** : Volumes Docker pointaient vers `/mnt/annecy` au lieu de `/mnt/mediaserver`.
**Solution** : Correction des bind mounts dans `docker-compose.yml`.
---
## 4. Gitea + Authelia - OIDC cassé
**Symptôme** : `500 Internal Server Error` lors du login Authelia.
**Cause** : Gitea ne faisait pas confiance au certificat SSL de Caddy (nouveau CA après régénération).
**Solution** :
```bash
# Copier le CA dans Gitea
docker exec caddy cat /data/caddy/pki/authorities/local/root.crt > /tmp/caddy-root.crt
docker cp /tmp/caddy-root.crt gitea:/usr/local/share/ca-certificates/
docker exec gitea update-ca-certificates
docker restart gitea
```
---
## 5. Authelia - Base de données read-only
**Symptôme** : `Could not save the consent session`
**Cause** : Le dossier `/home/lionel/docker/authelia/config/` avait été supprimé lors du nettoyage, mais le container montait encore ce chemin.
**Solution** :
```bash
# Restaurer depuis l'archive
tar xzf /mnt/mediaserver/backups/docker-v1-archive-20251231.tar.gz \
-C /home/lionel docker/authelia
docker restart authelia
```
---
## 6. Home Assistant - Onboarding inattendu
**Symptôme** : Page de création de compte au lieu du login.
**Cause** : Le container montait `/mnt/mediaserver/talloires/homeassistant` mais la config restaurée était dans `/home/lionel/talloires-v2/homeassistant`.
**Solution** :
```bash
# Copier la config restaurée vers le bon emplacement
cp -a /home/lionel/talloires-v2/homeassistant /mnt/mediaserver/talloires/homeassistant
docker restart homeassistant
```
---
## 7. Transmission - HTTP 502
**Symptôme** : Bad Gateway lors de l'accès.
**Cause** : Caddy cherchait `transmission:9091` mais Transmission utilise `network_mode: service:wireguard`.
**Solution** :
```caddyfile
# Dans Caddyfile
reverse_proxy wireguard:9091 # Pas transmission:9091
```
---
## 8. Dozzle - Non accessible
**Symptôme** : URL ne fonctionnait pas.
**Cause** : Dozzle n'était pas configuré dans le Caddyfile.
**Solution** :
```caddyfile
dozzle.talloires.local, dozzle.talloires.tailfd281f.ts.net {
import authelia
reverse_proxy dozzle:8080
import internal_tls
}
```
---
## Leçons apprises
1. **Toujours vérifier les points de montage** avant de supprimer des dossiers
2. **Les certificats CA** doivent être installés dans chaque container qui fait des requêtes HTTPS internes
3. **Documenter les chemins réels** utilisés par chaque service
4. **Garder une archive** avant toute réorganisation majeure

114
docs/infra/network.md Normal file
View File

@@ -0,0 +1,114 @@
# Réseau & Accès
## Tailscale VPN
Tailscale remplace ZeroTier depuis décembre 2025 pour le mesh VPN.
### Configuration
| Machine | IP Tailscale | Hostname |
|---------|--------------|----------|
| Talloires (RPi5) | 10.171.171.1 | talloires.tailfd281f.ts.net |
| Annecy (Synology) | 10.171.171.50 | annecy.tailfd281f.ts.net |
| Mac Lionel | 100.x.x.x | (dynamique) |
### DNS MagicDNS
Tailscale fournit la résolution DNS automatique :
```
*.talloires.tailfd281f.ts.net → Services Talloires
```
### Accès aux services
Tous les services sont accessibles via deux domaines :
| Type | Domaine | Exemple |
|------|---------|---------|
| LAN | `*.talloires.local` | `jellyfin.talloires.local` |
| Tailscale | `*.talloires.tailfd281f.ts.net` | `jellyfin.talloires.tailfd281f.ts.net` |
## Accès LAN
### Prérequis
1. **Certificat CA Caddy** installé sur le client
2. **DNS local** configuré (dnsmasq ou /etc/hosts)
### Installation du certificat
```bash
# Sur Talloires
docker exec caddy cat /data/caddy/pki/authorities/local/root.crt > caddy-root.crt
# Sur Mac
sudo security add-trusted-cert -d -r trustRoot \
-k /Library/Keychains/System.keychain caddy-root.crt
```
### Configuration DNS
Option 1 : **dnsmasq** sur le routeur
```
address=/talloires.local/192.168.1.100
```
Option 2 : **/etc/hosts** sur chaque client
```
192.168.1.100 jellyfin.talloires.local
192.168.1.100 git.talloires.local
192.168.1.100 homeassistant.talloires.local
# etc.
```
## Ports exposés
| Port | Service | Protocole |
|------|---------|-----------|
| 443 | Caddy (HTTPS) | TCP |
| 80 | Caddy (HTTP → HTTPS) | TCP |
| 2222 | Gitea SSH | TCP |
| 8123 | Home Assistant (interne) | TCP |
## Sécurité
### Authelia SSO
La plupart des services sont protégés par Authelia :
```
Client → Caddy → Authelia → Service
```
Services protégés par Authelia :
- Transmission
- Netdata
- Dozzle
- Cockpit
Services avec auth propre (bypass Authelia) :
- Jellyfin (auth interne)
- Gitea (OIDC via Authelia)
- Home Assistant (auth interne)
- Arcane (désactivé temporairement)
### ProtonVPN (WireGuard)
Transmission utilise un tunnel WireGuard vers ProtonVPN :
```
Transmission → WireGuard container → ProtonVPN → Internet
Kill switch intégré
(network_mode: service:wireguard)
```
Vérification IP :
```bash
# IP Transmission (doit être ProtonVPN)
docker exec transmission curl -s ifconfig.me
# IP locale
curl -s ifconfig.me
```

View File

@@ -1,382 +1,94 @@
# Infrastructure Talloires v2.0
# Infrastructure Overview
Documentation de l'infrastructure réseau, VPN, DNS, et backups.
## Hardware
---
### Talloires (Raspberry Pi 5 - 8GB)
## 🖥️ Serveurs
| Composant | Détails |
|-----------|---------|
| CPU | Broadcom BCM2712 (4x Cortex-A76 @ 2.4GHz) |
| RAM | 8 GB LPDDR4X |
| Stockage | SD Card 64GB + SSD 4TB USB |
| Réseau | Ethernet 1Gbps |
| OS | Raspberry Pi OS (Debian 12 Bookworm) |
### Talloires (Production)
- **Type**: Raspberry Pi 5 (8GB RAM)
- **OS**: Raspberry Pi OS (Debian 12)
- **IP Tailscale**: `100.116.198.105`
- **Hostname**: `talloires.tailfd281f.ts.net`
- **Rôle**: Serveur principal (Docker)
### Annecy (Synology DS620slim)
### Annecy (Storage)
- **Type**: Synology DS620slim
- **OS**: DSM 7.x
- **IP Tailscale**: `100.69.227.96`
- **Hostname**: `annecy.tailfd281f.ts.net`
- **Rôle**: NAS, Backups
| Composant | Détails |
|-----------|---------|
| Stockage | 6x SSD en RAID |
| Rôle | NAS backup, stockage long terme |
| Accès | NFS via Tailscale |
### Theseus (Network)
- **Type**: UniFi Dream Router 7
- **Rôle**: Gateway, Firewall, DHCP
### Theseus (UniFi Dream Router 7)
---
| Rôle | Détails |
|------|---------|
| Routeur | Gateway réseau domestique |
| WiFi | WiFi 7 (BE) |
| DHCP | 192.168.1.0/24 |
## 🐳 Outils Docker Management
## Points de montage
### 🎨 Arcane - Web UI
**URL**: [go/arcane](https://go/arcane)
**License**: BSD-3-Clause
**Status**: ✅ Opérationnel
**Fonctionnalités:**
- Gestion containers, images, volumes, networks
- Docker Compose templates & projects
- Monitoring temps réel (CPU/RAM)
- Interface moderne & responsive
- Multi-serveurs (via agents)
**Usage:**
```bash
# Accès web
https://go/arcane
# SD Card (OS + configs)
/dev/mmcblk0p2 → / # 58 GB
# Credentials par défaut
Username: arcane
Password: arcane-admin
# SSD externe (données)
/dev/sda1 → /mnt/mediaserver # 4 TB
# NFS Synology (backups)
10.171.171.50:/volume1/Backups → /mnt/annecy
```
**Alternative à:** Portainer (proprietary), Dockge (unstable)
## Structure des fichiers
---
```
/home/lionel/
└── talloires-v2/ # Configurations Docker
├── infra/ # Caddy, Authelia
├── media/ # Jellyfin compose
├── monitoring/ # Netdata, Dozzle
├── tools/ # Shlink, Gitea compose
├── docker-mgmt/ # Arcane
├── automation/ # Home Assistant
├── transmission/ # Transmission + WireGuard
├── mkdocs/ # Cette documentation
├── jellyfin/ # Config Jellyfin (3.6GB)
├── homeassistant/ # Config HA (dupliqué sur SSD)
└── arcane/ # Config Arcane
### 📋 Dozzle - Logs Viewer
/mnt/mediaserver/
├── talloires/ # Données services
│ ├── caddy/ # Caddyfile + certs
│ ├── gitea/ # Repos git + DB
│ ├── homeassistant/ # Config active HA
│ └── authelia/ # (si présent)
├── jellyfin-cache/ # Cache Jellyfin
├── netdata-cache/ # Cache Netdata
├── movies/ # Bibliothèque films
├── series/ # Bibliothèque séries
├── musicvideos/ # Clips musicaux
├── lionel/ # Médias Lionel
├── fiona/ # Médias Fiona
└── backups/ # Archives
```
**URL**: [go/logs](https://go/logs)
**License**: MIT
**Status**: ✅ Opérationnel
## Réseaux Docker
**Fonctionnalités:**
- Real-time log streaming
- Multi-container view
- Search & filter
- Ultra-léger (~30 MB RAM)
- Aucune base de données
**Usage:**
```bash
# Accès web
https://go/logs
# Réseau principal pour tous les services
talloires_net (172.18.0.0/16)
# Pas d'authentification requise (Tailscale VPN only)
# Services connectés :
- caddy, authelia, gitea, jellyfin, homeassistant
- mkdocs, shlink, shlink-web, arcane, dozzle
- netdata, signal-api, transmission, wireguard
```
**Use cases:** Debug, troubleshooting, monitoring logs
## Adresses IP
---
### ⚡ Lazydocker - Terminal UI
**License**: MIT
**Status**: ✅ Installé sur Talloires & Annecy
**Version**: 0.24.3
**Installation:**
```bash
# Talloires
lazydocker --version
# Location: /usr/local/bin/lazydocker
# Annecy (Synology)
~/.local/bin/lazydocker --version
```
**Fonctionnalités:**
- TUI (Terminal User Interface)
- Stats en temps réel (CPU/RAM)
- Logs interactifs
- Actions rapides (start/stop/restart)
- Fonctionne via SSH
**Usage:**
```bash
# Sur Talloires
ssh lionel@talloires.local
lazydocker
# Sur Annecy
ssh lionel@100.69.227.96
~/.local/bin/lazydocker
```
**Navigation:**
- `↑/↓`: Sélection
- `Enter`: Actions
- `l`: Logs
- `e`: Exec shell
- `q`: Quitter
---
### 📊 Comparaison Outils
| Feature | Arcane | Dozzle | Lazydocker |
|---------|--------|--------|------------|
| **Type** | Web UI | Web UI | TUI |
| **Containers** | ✅ Full mgmt | ❌ View only | ✅ Full mgmt |
| **Logs** | ✅ | ✅ | ✅ |
| **Compose** | ✅ Templates | ❌ | ✅ View |
| **Stats** | ✅ | ❌ | ✅ |
| **Remote** | ✅ Multi-host | ❌ Single | ❌ Single |
| **SSH** | ❌ | ❌ | ✅ Works |
| **RAM** | ~100 MB | ~30 MB | ~50 MB |
**Recommandations:**
- **Arcane**: Gestion quotidienne, templates, multi-serveurs
- **Dozzle**: Quick log inspection, debugging
- **Lazydocker**: SSH access, TUI lovers, remote management
---
## 🌐 Réseau
### Tailscale VPN
- **Type**: WireGuard mesh VPN
- **MagicDNS**: Désactivé (dnsmasq preferred)
- **Subnet**: `100.64.0.0/10`
### DNS Local (dnsmasq)
**Config**: `/etc/dnsmasq.d/tailscale.conf`
```
# Machines
address=/talloires.local/100.116.198.105
address=/annecy.local/100.69.227.96
# Wildcards
address=/.talloires.local/100.116.198.105
# Go-links
address=/go/100.116.198.105
# Upstream DNS
server=127.0.0.1#5053
```
### AdGuard DNS (DoH)
- **Port**: 5053
- **Upstream**: AdGuard DNS-over-HTTPS
- **Config**: `cloudflared` tunnel
---
## 🔐 VPN Tunnel (ProtonVPN)
### Configuration WireGuard
- **Server**: Luxembourg (LU#44)
- **Public IP**: 5.253.204.190
- **Endpoint**: 5.253.204.162:51820
- **Config**: `/home/lionel/talloires-v2/transmission/wireguard/wg0.conf`
### Kill-Switch
Transmission utilise `network_mode: service:wireguard` → Impossible de leak l'IP réelle.
### Monitoring VPN
- Vérification automatique IP publique
- Alertes Telegram si VPN down (<30s)
- Health checks Docker
---
## 💾 Backups
### Structure NFS
```
/mnt/annecy/talloires/
├── migration-v2/ # Backups migration
│ ├── jellyfin-config-*.tar.gz # 2.3 GB
│ ├── gitea-data-*.tar.gz # Repos Git
│ ├── mkdocs-v1-archive-*.tar.gz # 12 KB
│ └── critical-configs-*.tar.gz # 3.5 KB
└── daily/ # Backups quotidiens (TODO)
```
### NFS Mount
```bash
sudo mount -t nfs 100.69.227.96:/volume1/talloires /mnt/annecy -o rw,hard,intr,rsize=8192,wsize=8192
```
**Fstab**:
```
100.69.227.96:/volume1/talloires /mnt/annecy nfs rw,hard,intr,rsize=8192,wsize=8192 0 0
```
### Backup Automatique (Cron)
TODO: Mettre à jour cron pour v2.0 structure.
---
## 🔒 Sécurité
### Firewall (UFW)
```bash
sudo ufw status
```
Ports ouverts:
- 80, 443: HTTP/HTTPS (Caddy)
- 2222: SSH Gitea
- 8096: Jellyfin (direct access)
- 22: SSH (Tailscale only)
### Certificats HTTPS
- **CA**: Caddy Local Authority
- **Cert**: `/data/caddy/pki/authorities/local/root.crt`
- **Installation**: Importer dans macOS Keychain → Always Trust
### Accès
- Tailscale VPN uniquement
- Pas d'exposition Internet directe
- SSH keys only (no password)
---
## 📊 Monitoring
### Stack Monitoring
**Netdata** - System metrics
- **URL**: `https://go/net`
- **Métriques**: CPU, RAM, Disk, Network, Docker
- **Alertes**: À configurer (optionnel)
**Arcane** - Docker monitoring
- **URL**: `https://go/arcane`
- **Métriques**: Containers stats (CPU/RAM)
- **Features**: Dashboard, projects, logs
**Dozzle** - Logs viewer
- **URL**: `https://go/logs`
- **Features**: Real-time logs, search, filter
**Lazydocker** - Terminal monitoring
```bash
ssh lionel@talloires.local
lazydocker
```
### Docker Health Checks
Tous les containers ont des health checks configurés.
### Logs
```bash
# CLI
docker logs <container>
docker logs <container> --follow
docker logs <container> --tail 100
# Web UI (Dozzle)
https://go/logs
# TUI (Lazydocker)
lazydocker
```
---
## 🛠️ Maintenance
### Docker Management
**Via Arcane (Web):**
```
https://go/arcane
→ Containers → Start/Stop/Restart
→ Images → Pull/Delete
→ Projects → Manage Compose stacks
```
**Via Lazydocker (TUI):**
```bash
ssh lionel@talloires.local
lazydocker
# Navigate avec arrows, Enter pour actions
```
**Via CLI:**
```bash
# Update containers
cd /home/lionel/talloires-v2/core
docker compose pull
docker compose up -d
# Restart service
docker restart <container>
# View logs
docker logs <container> --tail 100
```
### Backup Manuel
```bash
# Jellyfin
tar -czf /mnt/annecy/talloires/manual/jellyfin-$(date +%Y%m%d).tar.gz \\
/home/lionel/talloires-v2/jellyfin/config
# Gitea
tar -czf /mnt/annecy/talloires/manual/gitea-$(date +%Y%m%d).tar.gz \\
/home/lionel/talloires-v2/gitea/
# Arcane database
tar -czf /mnt/annecy/talloires/manual/arcane-$(date +%Y%m%d).tar.gz \\
/home/lionel/talloires-v2/docker-mgmt/arcane-data
```
### Restart Services
```bash
docker restart <container>
docker compose restart
```
---
## 📁 Fichiers de Configuration
### Docker Management
```
/home/lionel/talloires-v2/docker-mgmt/
├── docker-compose.yml # Arcane + Dozzle
└── arcane-data/ # Arcane database
```
### Caddy
```
/home/lionel/talloires-v2/caddy/
├── Caddyfile # Reverse proxy config
└── Caddyfile.backup-* # Backups automatiques
```
### Services
```
/home/lionel/talloires-v2/
├── core/ # Caddy, Shlink
├── jellyfin/ # Media server
├── transmission/ # BitTorrent + WireGuard
├── gitea/ # Git hosting
├── homeassistant/ # Domotique
├── mkdocs/ # Documentation
├── netdata/ # Monitoring
├── signal-api/ # Notifications
└── docker-mgmt/ # Arcane + Dozzle
```
---
*Voir [Services](../services/overview.md) pour configuration applicative.*
*Dernière mise à jour: 31 décembre 2025*
| Service | IP Locale | Tailscale |
|---------|-----------|-----------|
| Talloires | 192.168.1.100 | 10.171.171.1 |
| Annecy | 192.168.1.50 | 10.171.171.50 |

View File

@@ -0,0 +1,136 @@
# Recommandations & Next Steps
## Priorité haute 🔴
### 1. Migration SD → SSD 512GB
**Situation actuelle** :
- SD Card 64GB : 69% utilisé (OS + configs)
- SSD 4TB : données uniquement
**Recommandation** : Boot sur SSD 512GB pour :
- Meilleure fiabilité (SD cards = points de défaillance)
- Meilleures performances I/O
- Plus d'espace pour les configs Docker
**Étapes** :
```bash
# 1. Cloner la SD vers le SSD
sudo dd if=/dev/mmcblk0 of=/dev/sdX bs=4M status=progress
# 2. Étendre la partition
sudo raspi-config # Advanced > Expand Filesystem
# 3. Configurer le boot USB
sudo raspi-config # Advanced > Boot Order > USB Boot
# 4. Modifier /boot/cmdline.txt si nécessaire
```
### 2. Migrer Jellyfin config vers SSD
**Situation** : 3.6 GB de config Jellyfin sur SD card
```bash
# Déplacer vers SSD
mv /home/lionel/talloires-v2/jellyfin /mnt/mediaserver/talloires/jellyfin
# Mettre à jour docker-compose.yml
volumes:
- /mnt/mediaserver/talloires/jellyfin:/config
```
### 3. Réactiver Authelia pour Arcane
Actuellement désactivé pour contourner un problème d'accès.
```caddyfile
# Dans Caddyfile, réactiver :
arcane.talloires.local {
import authelia # Décommenter
reverse_proxy arcane:3000
}
```
---
## Priorité moyenne 🟡
### 4. Corriger l'erreur SMTP Home Assistant
```yaml
# configuration.yaml - utiliser un app password ProtonMail
notify:
- platform: smtp
server: 127.0.0.1 # Via ProtonMail Bridge
port: 1025
sender: xxx@protonmail.com
username: xxx
password: !secret smtp_password
```
### 5. Unifier les chemins de configuration
Actuellement dispersés entre :
- `/home/lionel/talloires-v2/` (configs Docker Compose)
- `/mnt/mediaserver/talloires/` (données services)
- `/home/lionel/docker/` (ancien, à migrer)
**Recommandation** : Tout consolider sur le SSD après migration.
### 6. Backup automatisé des configs
```bash
# Ajouter au cron
0 4 * * * tar czf /mnt/annecy/talloires-config-$(date +%Y%m%d).tar.gz \
/home/lionel/talloires-v2 \
/mnt/mediaserver/talloires
```
### 7. Monitoring des backups
Ajouter des alertes si les backups échouent :
- Healthchecks.io pour le cron
- Telegram bot pour alertes critiques
---
## Priorité basse 🟢
### 8. SNMP monitoring Synology
Ajouter le monitoring RAID et disques du NAS Annecy.
### 9. Documentation continue
- Mettre à jour MkDocs après chaque modification
- Sync bidirectionnelle avec Gitea fonctionne ✅
### 10. Nettoyer les anciennes archives
```bash
# Après validation de la migration SSD
rm /mnt/mediaserver/backups/docker-v1-archive-20251231.tar.gz
```
---
## Améliorations futures
### Infrastructure
- [ ] Cluster Raspberry Pi pour haute disponibilité
- [ ] Déploiement distribué chez famille (Paris, Annecy)
- [ ] Cache intelligent multi-sites pour Jellyfin
### Sécurité
- [ ] Audit Lynis régulier (actuellement 63/100)
- [ ] Fail2ban pour les services exposés
- [ ] Rotation automatique des secrets
### Services
- [ ] Upgrade Gitea → dernière version
- [ ] Ajouter Vaultwarden (password manager)
- [ ] Intégration DevonThink si Mac Mini M1

View File

@@ -1,272 +1,119 @@
# Services Talloires v2.0
# Services
Documentation des services déployés sur l'infrastructure v2.0.
## Vue d'ensemble
---
| Service | Stack | Port interne | Auth |
|---------|-------|--------------|------|
| Caddy | infra | 443, 80 | - |
| Authelia | infra | 9091 | - |
| Jellyfin | media | 8096 | Propre |
| Gitea | tools | 3000 | OIDC Authelia |
| Shlink | tools | 8080 | - |
| Shlink-web | tools | 8080 | - |
| Home Assistant | automation | 8123 | Propre |
| Transmission | transmission | 9091 | Authelia |
| WireGuard | transmission | - | - |
| Netdata | monitoring | 19999 | Authelia |
| Dozzle | monitoring | 8080 | Authelia |
| Arcane | docker-mgmt | 3000 | Désactivé |
| MkDocs | mkdocs | 8000 | - |
| Signal-API | tools | 8080 | - |
## 🐳 Arcane - Docker Management UI
## Docker Compose Stacks
**URL**: `https://go/arcane`
**Port Direct**: `3552`
**Status**: ✅ Opérationnel
**License**: BSD-3-Clause (Open Source)
### Fonctionnalités
- ✅ Gestion containers (start/stop/restart/delete)
- ✅ Gestion images (pull/delete/inspect)
- ✅ Gestion volumes & networks
- ✅ Docker Compose templates
- ✅ Monitoring temps réel (CPU/RAM)
- ✅ Interface moderne SvelteKit
- ✅ Mobile responsive
### Credentials
```
Username: arcane
Password: arcane-admin
```
**⚠️ Important**: Changer le mot de passe par défaut lors de la première connexion.
### Configuration
### infra (`/home/lionel/talloires-v2/infra/`)
```yaml
# /home/lionel/talloires-v2/docker-mgmt/docker-compose.yml
services:
arcane:
image: ghcr.io/getarcaneapp/arcane:latest
container_name: arcane
networks:
- talloires_net
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./arcane-data:/app/data
environment:
- APP_ENV=production
- PUBLIC_SESSION_SECRET=<generated>
- ENCRYPTION_KEY=<generated>
- TZ=Europe/Luxembourg
- caddy # Reverse proxy + SSL
- authelia # SSO
```
### Features Clés
- **Projects**: Organiser les stacks Docker Compose
- **Templates**: Déploiement rapide de services
- **Logs**: Vue intégrée des logs containers
- **Stats**: Métriques CPU/RAM en temps réel
- **Remote Hosts**: Support multi-serveurs (via agents)
### Alternative À
- ❌ Portainer (proprietary license)
- ❌ Dockge (stability issues)
- ✅ Arcane = Open source + moderne + stable
---
## 📋 Dozzle - Docker Logs Viewer
**URL**: `https://go/logs`
**Port Direct**: `8080`
**Status**: ✅ Opérationnel
**License**: MIT (Open Source)
### Fonctionnalités
- ✅ Logs en temps réel (live tailing)
- ✅ Multi-container view
- ✅ Search & filter
- ✅ Dark/light mode
- ✅ Ultra-léger (~30 MB RAM)
- ✅ Aucune base de données requise
### Configuration
### media (`/home/lionel/talloires-v2/media/`)
```yaml
# /home/lionel/talloires-v2/docker-mgmt/docker-compose.yml
services:
dozzle:
image: amir20/dozzle:latest
container_name: dozzle
networks:
- talloires_net
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
environment:
- DOZZLE_LEVEL=info
- DOZZLE_FILTER=status=running
- TZ=Europe/Luxembourg
- jellyfin # Media server
```
### Use Cases
- 🔍 Debugging rapide de containers
- 📊 Monitoring logs en temps réel
- 🐛 Troubleshooting incidents
- 📈 Analyse de patterns
### tools (`/home/lionel/talloires-v2/tools/`)
```yaml
services:
- gitea # Git server
- shlink # URL shortener
- shlink-web # Shlink UI
- signal-api # Signal messaging
```
### Features
- **Real-time**: Logs streaming instantané
- **Search**: Recherche textuelle puissante
- **Filter**: Par container, niveau, temps
- **Lightweight**: Aucun overhead
### automation (`/home/lionel/talloires-v2/automation/`)
```yaml
services:
- homeassistant
```
---
### transmission (`/home/lionel/talloires-v2/transmission/`)
```yaml
services:
- wireguard # VPN tunnel
- transmission # BitTorrent client
```
## 🎬 Jellyfin - Serveur Média
### monitoring (`/home/lionel/talloires-v2/monitoring/`)
```yaml
services:
- netdata
- dozzle
```
**URL**: `https://go/jf`
**Port Direct**: `8096`
**Status**: ✅ Opérationnel
**Data**: 2.3 GB restauré depuis v1.0
### docker-mgmt (`/home/lionel/talloires-v2/docker-mgmt/`)
```yaml
services:
- arcane
```
### Configuration
- Accès Infuse: `100.116.198.105:8096`
- Authentification: Compte Jellyfin (lionel)
- Backup: Quotidien vers Annecy
### mkdocs (`/home/lionel/talloires-v2/mkdocs/`)
```yaml
services:
- mkdocs
```
---
## Dépendances
## 📥 Transmission - BitTorrent
```mermaid
graph TD
Internet --> Caddy
Caddy --> Authelia
Caddy --> Jellyfin
Caddy --> Gitea
Caddy --> HomeAssistant[Home Assistant]
Caddy --> Transmission
Caddy --> Netdata
Caddy --> Dozzle
Caddy --> Arcane
Caddy --> MkDocs
Caddy --> Shlink
Authelia --> |OIDC| Gitea
Authelia --> |Forward Auth| Transmission
Authelia --> |Forward Auth| Netdata
Authelia --> |Forward Auth| Dozzle
Transmission --> WireGuard
WireGuard --> ProtonVPN
Gitea --> |Sync| MkDocs
```
**URL**: `https://go/trn`
**Status**: ✅ Opérationnel + VPN Kill-switch
**VPN**: ProtonVPN Luxembourg (LU#44)
## Commandes utiles
### Sécurité VPN
- Network mode: `service:wireguard`
- Public IP: 5.253.204.190 (ProtonVPN)
- Kill-switch: Actif (pas de leak possible)
- Monitoring: Alertes Telegram si VPN down
### Configuration
- Watch directory: `/config/watch`
- Downloads: `/downloads`
- Web UI: Port 9091 (via WireGuard container)
---
## 💾 Gitea - Hébergement Git
**URL**: `https://go/git`
**SSH Port**: `2222`
**Status**: ✅ Opérationnel
### Comptes
- **admin**: lionel.dupre@pm.me (Admin)
- **lionel**: dflected@dflected.org (User)
### Clonage SSH
```bash
git clone ssh://git@talloires.local:2222/user/repo.git
# Status de tous les containers
docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"
# Redémarrer un service
docker restart jellyfin
# Logs en temps réel
docker logs -f jellyfin
# Entrer dans un container
docker exec -it jellyfin bash
```
### Données Restaurées
- Tous les repositories v1.0
- Clés SSH utilisateurs
- Configuration complète
---
## 🏠 Home Assistant
**URL**: `https://go/ha`
**Status**: ✅ Nouvelle installation (config requise)
### Configuration Initiale
1. Ouvrir `https://go/ha`
2. Créer compte admin
3. Configurer devices
---
## 📚 MkDocs - Documentation
**URL**: `https://go/docs`
**Status**: ✅ Opérationnel v2.0
### Structure
- Documentation v2.0 (active)
- Archive v1.0 (vault/)
---
## 📊 Netdata - Monitoring
**URL**: `https://go/net`
**Status**: ✅ Opérationnel
### Métriques Disponibles
- CPU, RAM, Disk I/O
- Network traffic
- Docker containers
- System load
### Netdata Cloud
Optionnel - Nécessite `NETDATA_CLAIM_TOKEN`
---
## 📱 Signal API - Notifications
**URL**: `https://go/sig`
**Port Direct**: `8080`
**Status**: ✅ Opérationnel
### Utilisation
```bash
# Envoyer notification
curl -X POST https://go/sig/v2/send \\
-H "Content-Type: application/json" \\
-d '{"message":"Test","number":"+33...","recipients":["+33..."]}'
```
---
## 🔗 Shlink - URL Shortener
**Web UI**: `https://go`
**API**: `https://api.shlink.talloires.local`
**Status**: ✅ Opérationnel
### Features
- Liens courts personnalisés
- Statistiques de clics
- QR codes
- API REST
---
## 🌐 Caddy - Reverse Proxy
**Status**: ✅ Opérationnel
**Protocole**: HTTPS (certificats internes)
### Fonctions
- Reverse proxy pour tous les services
- HTTPS automatique (certificats Caddy)
- Go-links routing
- Gestion certificats
### Configuration
```bash
/home/lionel/talloires-v2/caddy/Caddyfile
```
---
## 📊 Récapitulatif Services
| Service | URL | License | Status |
|---------|-----|---------|--------|
| **Arcane** | go/arcane | BSD-3 | ✅ |
| **Dozzle** | go/logs | MIT | ✅ |
| Jellyfin | go/jf | GPL-2 | ✅ |
| Transmission | go/trn | GPL-2 | ✅ |
| Gitea | go/git | MIT | ✅ |
| Home Assistant | go/ha | Apache-2 | ✅ |
| MkDocs | go/docs | BSD-2 | ✅ |
| Netdata | go/net | GPL-3 | ✅ |
| Signal API | go/sig | AGPL-3 | ✅ |
| Shlink | go | MIT | ✅ |
| Caddy | - | Apache-2 | ✅ |
**Total**: 11 services opérationnels
---
*Dernière mise à jour: 31 décembre 2025*

View File

@@ -1,68 +1,56 @@
site_name: Talloires v2.0 Documentation
site_description: Documentation infrastructure Talloires v2.0
site_name: Talloires Documentation
site_description: Infrastructure documentation for Talloires homelab
site_author: Lionel
site_url: http://docs.talloires.local
theme:
name: material
language: fr
palette:
# Light mode
- media: "(prefers-color-scheme: light)"
scheme: default
primary: indigo
accent: indigo
toggle:
icon: material/brightness-7
name: Switch to dark mode
# Dark mode
- media: "(prefers-color-scheme: dark)"
scheme: slate
primary: indigo
accent: indigo
toggle:
icon: material/brightness-4
name: Switch to light mode
scheme: slate
primary: blue
accent: cyan
features:
- navigation.instant
- navigation.tracking
- navigation.tabs
- navigation.sections
- navigation.expand
- navigation.top
- search.suggest
- search.highlight
- content.code.copy
- toc.integrate
nav:
- Home: index.md
- Infrastructure:
- Overview: infra/overview.md
- Réseau & Accès: infra/network.md
- Problèmes 2025-12-31: infra/issues-2025-12-31.md
- Recommandations: infra/recommendations.md
- Services:
- Overview: services/overview.md
- Changelog:
- 2025-12-31: changelog/2025-12-31.md
- Vault:
- README: vault/README.md
- Config:
- Caddy: vault/config/caddy.md
- Docker Stacks: vault/config/docker-stacks.md
- Network: vault/config/network.md
- Troubleshooting: vault/config/troubleshooting.md
- Reference:
- Commands: vault/reference/commands.md
- Ports: vault/reference/ports.md
- Scripts: vault/reference/scripts.md
markdown_extensions:
- pymdownx.highlight
- pymdownx.superfences:
custom_fences:
- name: mermaid
class: mermaid
format: !!python/name:pymdownx.superfences.fence_code_format
- pymdownx.tabbed
- admonition
- pymdownx.details
- pymdownx.superfences
- pymdownx.tabbed:
alternate_style: true
- pymdownx.emoji:
emoji_index: !!python/name:material.extensions.emoji.twemoji
emoji_generator: !!python/name:material.extensions.emoji.to_svg
- tables
- toc:
permalink: true
- attr_list # Enable target="_blank" for links
nav:
- Changelog:
- 2025-12-31: changelog/2025-12-31.md
- Accueil: index.md
- Services:
- Vue d'ensemble: services/overview.md
- Infrastructure:
- Vue d'ensemble: infra/overview.md
- Vault (v1.0):
- Archive v1.0: vault/README.md
- Documentation v1.0: vault/index-v1.md
- Services v1.0: vault/services-v1/overview.md
- Configuration v1.0: vault/config/docker-stacks.md
extra:
social:
- icon: fontawesome/brands/github
link: https://git.talloires.local
link: https://git.talloires.local/lionel

View File

@@ -111,3 +111,5 @@ Wed 31 Dec 20:30:01 CET 2025: Pulled changes from Gitea
Wed 31 Dec 20:30:01 CET 2025: Pushed local changes to Gitea
Wed 31 Dec 20:30:02 CET 2025: Triggered MkDocs rebuild
Wed 31 Dec 20:35:01 CET 2025: Pulled changes from Gitea
Wed 31 Dec 20:35:02 CET 2025: Pushed local changes to Gitea
Wed 31 Dec 20:35:02 CET 2025: Triggered MkDocs rebuild