Documentation complète: infrastructure, réseau, issues, recommandations
This commit is contained in:
183
docs/index.md
183
docs/index.md
@@ -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
|
||||
|
||||
145
docs/infra/issues-2025-12-31.md
Normal file
145
docs/infra/issues-2025-12-31.md
Normal 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
114
docs/infra/network.md
Normal 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
|
||||
```
|
||||
@@ -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 |
|
||||
|
||||
136
docs/infra/recommendations.md
Normal file
136
docs/infra/recommendations.md
Normal 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
|
||||
@@ -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*
|
||||
|
||||
86
mkdocs.yml
86
mkdocs.yml
@@ -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
|
||||
|
||||
2
sync.log
2
sync.log
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user