Initial commit - Migration documentation 2026
This commit is contained in:
70
docs/vault/README.md
Normal file
70
docs/vault/README.md
Normal file
@@ -0,0 +1,70 @@
|
||||
# 🗄️ Vault - Archive Documentation v1.0
|
||||
|
||||
Cette section contient l'archive de la documentation de l'infrastructure Talloires **v1.0** (pré-migration du 30 décembre 2025).
|
||||
|
||||
---
|
||||
|
||||
## ⚠️ Archive Historique
|
||||
|
||||
**Cette documentation est archivée à titre de référence.**
|
||||
|
||||
Pour la documentation actuelle de l'infrastructure v2.0, voir:
|
||||
- [Page d'accueil v2.0](../index.md)
|
||||
- [Services v2.0](../services/overview.md)
|
||||
- [Infrastructure v2.0](../infra/overview.md)
|
||||
|
||||
---
|
||||
|
||||
## 📚 Contenu v1.0 Archivé
|
||||
|
||||
### [Documentation v1.0](index-v1.md)
|
||||
Page d'accueil originale de la documentation v1.0.
|
||||
|
||||
### [Services v1.0](services-v1/)
|
||||
Documentation des services de l'infrastructure v1.0 (25+ services).
|
||||
|
||||
### [Configuration v1.0](config/)
|
||||
Fichiers de configuration et références techniques v1.0.
|
||||
|
||||
### [Référence v1.0](reference/)
|
||||
Documentation de référence et guides v1.0.
|
||||
|
||||
---
|
||||
|
||||
## 🔄 Migration v1.0 → v2.0
|
||||
|
||||
**Date**: 30 décembre 2025
|
||||
**Stratégie**: Refonte complète (60% réduction services)
|
||||
|
||||
### Services Conservés et Migrés
|
||||
- ✅ Jellyfin (data restaurée)
|
||||
- ✅ Gitea (repos restaurés)
|
||||
- ✅ Transmission (nouvelle config VPN)
|
||||
- ✅ MkDocs (architecture renouvelée)
|
||||
|
||||
### Services Retirés
|
||||
- ❌ Authelia (SSO supprimé)
|
||||
- ❌ Portainer (CLI preferred)
|
||||
- ❌ Crowdsec (simplification)
|
||||
- ❌ Dockge
|
||||
- ❌ 15+ autres services
|
||||
|
||||
### Architecture Changée
|
||||
- **v1.0**: 25+ containers, Authelia SSO, ZeroTier VPN
|
||||
- **v2.0**: 10 containers, Auth native, Tailscale VPN, Go-links
|
||||
|
||||
---
|
||||
|
||||
## 📦 Backup Complet v1.0
|
||||
|
||||
Archive complète disponible sur Annecy NAS:
|
||||
```
|
||||
/mnt/annecy/talloires/migration-v2/
|
||||
├── talloires-v1-docker-20251230-191258.tar.gz (65 MB)
|
||||
├── mkdocs-v1-archive-20251230.tar.gz (12 KB)
|
||||
└── critical-configs-20251230-191758.tar.gz (3.5 KB)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
*Retour à la [documentation v2.0](../index.md)*
|
||||
58
docs/vault/config/caddy.md
Normal file
58
docs/vault/config/caddy.md
Normal file
@@ -0,0 +1,58 @@
|
||||
# Caddy - Reverse Proxy
|
||||
|
||||
## Configuration
|
||||
|
||||
Caddy gère le reverse proxy et les certificats SSL internes pour tous les services.
|
||||
|
||||
### Principes clés
|
||||
|
||||
1. **Domaines .local** : Utilisent Authelia pour l'authentification (réseau local)
|
||||
2. **Domaines .tailfd281f.ts.net** : Accès ZeroTier sans Authelia (services ont leur propre auth)
|
||||
3. **Certificats** : Auto-générés par Caddy (CA interne)
|
||||
|
||||
### Services sans Authelia
|
||||
|
||||
Ces services ont leur propre authentification :
|
||||
|
||||
- **Gitea** : OIDC via Authelia
|
||||
- **Outline** : OIDC via Authelia
|
||||
- **Linkwarden** : Auth intégrée
|
||||
- **Vikunja** : Auth intégrée
|
||||
- **Jellyfin** : Auth intégrée
|
||||
- **Home Assistant** : Auth intégrée
|
||||
|
||||
### Snippet Authelia
|
||||
|
||||
```caddyfile
|
||||
(authelia) {
|
||||
forward_auth authelia:9091 {
|
||||
uri /api/authz/forward-auth
|
||||
copy_headers Remote-User Remote-Groups Remote-Email Remote-Name
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### WebSocket Support
|
||||
|
||||
Pour Home Assistant et Dockge :
|
||||
|
||||
```caddyfile
|
||||
homeassistant.talloires.local {
|
||||
reverse_proxy homeassistant:8123 {
|
||||
header_up Host {host}
|
||||
}
|
||||
tls internal
|
||||
}
|
||||
```
|
||||
|
||||
### Problèmes connus
|
||||
|
||||
| Problème | Solution |
|
||||
|----------|----------|
|
||||
| Safari refuse certificats | Importer CA dans Trousseau macOS |
|
||||
| 400 Bad Request | Vérifier que le service n'a pas double auth |
|
||||
| Page blanche | Vérifier WebSocket headers |
|
||||
|
||||
### Fichier
|
||||
|
||||
`~/docker/caddy/Caddyfile`
|
||||
63
docs/vault/config/docker-stacks.md
Normal file
63
docs/vault/config/docker-stacks.md
Normal file
@@ -0,0 +1,63 @@
|
||||
# Docker Stacks
|
||||
|
||||
## Organisation
|
||||
|
||||
Les services sont organisés en stacks modulaires :
|
||||
|
||||
| Stack | Répertoire | Services |
|
||||
|-------|------------|----------|
|
||||
| Core | ~/docker/core | Caddy, Authelia, CrowdSec, Portainer, Dockge |
|
||||
| Monitoring | ~/docker/monitoring | Uptime Kuma, Netdata, Grafana, Loki, Promtail |
|
||||
| Media | ~/docker/media | Jellyfin, Transmission |
|
||||
| Productivity | ~/docker/productivity | Gitea, MkDocs, Vikunja, LanguageTool |
|
||||
| Homelab | ~/docker/homelab | Home Assistant, Watchtower |
|
||||
| Linkwarden | ~/docker/linkwarden | Linkwarden + PostgreSQL |
|
||||
| Outline | ~/docker/outline | Outline + PostgreSQL + Redis |
|
||||
|
||||
## Réseau
|
||||
|
||||
Tous les containers utilisent le réseau externe `talloires_net` :
|
||||
|
||||
```yaml
|
||||
networks:
|
||||
talloires_net:
|
||||
external: true
|
||||
```
|
||||
|
||||
## Volumes
|
||||
|
||||
### Volumes nommés (préfixés)
|
||||
|
||||
Attention lors des migrations : les volumes Docker sont préfixés par le nom du répertoire.
|
||||
|
||||
Exemple : `transmission_config` dans `~/docker/talloires` devient `talloires_transmission_config`.
|
||||
|
||||
**Solution** : Utiliser `external: true` pour les volumes existants :
|
||||
|
||||
```yaml
|
||||
volumes:
|
||||
talloires_transmission_config:
|
||||
external: true
|
||||
```
|
||||
|
||||
### Volumes bind mount
|
||||
|
||||
Préférer les bind mounts pour les données importantes :
|
||||
|
||||
```yaml
|
||||
volumes:
|
||||
- /home/lionel/docker/gitea:/data
|
||||
```
|
||||
|
||||
## Commandes utiles
|
||||
|
||||
```bash
|
||||
# Démarrer un stack
|
||||
cd ~/docker/media && docker compose up -d
|
||||
|
||||
# Voir les logs
|
||||
docker logs -f jellyfin
|
||||
|
||||
# Recréer un container
|
||||
docker compose up -d --force-recreate jellyfin
|
||||
```
|
||||
105
docs/vault/config/network.md
Normal file
105
docs/vault/config/network.md
Normal file
@@ -0,0 +1,105 @@
|
||||
# Architecture Réseau
|
||||
|
||||
## Vue d'ensemble
|
||||
|
||||
|
||||
|
||||
## Composants
|
||||
|
||||
### Tailscale
|
||||
|
||||
VPN mesh reliant tous les appareils de la famille.
|
||||
|
||||
| Machine | IP Tailscale | OS |
|
||||
|---------|--------------|-----|
|
||||
| talloires | 100.116.198.105 | Raspberry Pi 5 (Debian) |
|
||||
| annecy | 100.118.210.128 | Synology DS620slim |
|
||||
| olympou | 100.125.242.58 | macOS |
|
||||
| pentamodi | 100.78.237.78 | iOS |
|
||||
| perce | 100.69.7.78 | tvOS (Apple TV) |
|
||||
|
||||
**Tailnet:** tailfd281f.ts.net
|
||||
|
||||
### dnsmasq
|
||||
|
||||
Serveur DNS local sur Talloires, résout les domaines internes.
|
||||
|
||||
**Config:** `/etc/dnsmasq.d/tailscale.conf`
|
||||
|
||||
|
||||
|
||||
**Commandes:**
|
||||
|
||||
|
||||
|
||||
### cloudflared
|
||||
|
||||
Proxy DNS-over-HTTPS vers AdGuard DNS avec profil personnel.
|
||||
|
||||
**Config:** `/etc/cloudflared/config.yml`
|
||||
|
||||
|
||||
|
||||
**Commandes:**
|
||||
|
||||
|
||||
|
||||
## Configuration Tailscale Admin
|
||||
|
||||
Dans Tailscale Admin Console → DNS → Nameservers :
|
||||
|
||||
- **Global nameserver:** 100.116.198.105 (Talloires)
|
||||
- **Override local DNS:** activé
|
||||
|
||||
Cela force tous les appareils Tailscale à utiliser dnsmasq sur Talloires.
|
||||
|
||||
## Domaines
|
||||
|
||||
| Domaine | Usage |
|
||||
|---------|-------|
|
||||
| `*.talloires.local` | Services sur Talloires (recommandé) |
|
||||
| `*.talloires.tailfd281f.ts.net` | Alternative Tailscale |
|
||||
| `go` | Raccourcis Shlink |
|
||||
|
||||
## Dépannage
|
||||
|
||||
### Test résolution DNS
|
||||
|
||||
Server: 100.116.198.105
|
||||
Address: 100.116.198.105#53
|
||||
|
||||
Name: go
|
||||
Address: 100.116.198.105
|
||||
|
||||
Server: 100.116.198.105
|
||||
Address: 100.116.198.105#53
|
||||
|
||||
Name: docs.talloires.local
|
||||
Address: 100.116.198.105
|
||||
|
||||
Server: 100.116.198.105
|
||||
Address: 100.116.198.105#53
|
||||
|
||||
Non-authoritative answer:
|
||||
Name: google.com
|
||||
Address: 142.250.27.138
|
||||
Name: google.com
|
||||
Address: 142.250.27.100
|
||||
Name: google.com
|
||||
Address: 142.250.27.101
|
||||
Name: google.com
|
||||
Address: 142.250.27.102
|
||||
Name: google.com
|
||||
Address: 142.250.27.113
|
||||
Name: google.com
|
||||
Address: 142.250.27.139
|
||||
|
||||
### Services ne répondent pas
|
||||
|
||||
1. Vérifier que dnsmasq tourne: `sudo systemctl status dnsmasq`
|
||||
2. Vérifier que cloudflared tourne: `sudo systemctl status cloudflared-dns`
|
||||
3. Vérifier que Caddy tourne: `docker ps | grep caddy`
|
||||
|
||||
### Cache DNS
|
||||
|
||||
|
||||
74
docs/vault/config/troubleshooting.md
Normal file
74
docs/vault/config/troubleshooting.md
Normal file
@@ -0,0 +1,74 @@
|
||||
# Troubleshooting
|
||||
|
||||
## Problèmes connus
|
||||
|
||||
### Certificats SSL
|
||||
|
||||
**Symptôme** : Safari affiche "Can't establish secure connection"
|
||||
|
||||
**Cause** : CA Caddy non trusté par macOS
|
||||
|
||||
**Solution** :
|
||||
```bash
|
||||
# Exporter le CA
|
||||
ssh lionel@10.144.221.22 "docker exec caddy cat /data/caddy/pki/authorities/local/root.crt" > ~/Downloads/caddy-root-ca.crt
|
||||
|
||||
# Importer dans macOS
|
||||
sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain ~/Downloads/caddy-root-ca.crt
|
||||
```
|
||||
|
||||
### Gitea OAuth "500 Internal Server Error"
|
||||
|
||||
**Cause** : URL OAuth pointe vers hostname Docker interne
|
||||
|
||||
**Vérifier** :
|
||||
```bash
|
||||
docker exec gitea sqlite3 /data/gitea/gitea.db "SELECT cfg FROM login_source WHERE type=6;"
|
||||
```
|
||||
|
||||
**Corriger** :
|
||||
```bash
|
||||
docker exec gitea sqlite3 /data/gitea/gitea.db "UPDATE login_source SET cfg = REPLACE(cfg, 'http://authelia:9091', 'https://auth.talloires.local') WHERE type=6;"
|
||||
docker restart gitea
|
||||
```
|
||||
|
||||
### Container ne trouve pas l'URL externe
|
||||
|
||||
**Cause** : Container ne peut pas résoudre ou valider le certificat SSL
|
||||
|
||||
**Solution** : Monter le CA Caddy dans le container :
|
||||
```yaml
|
||||
volumes:
|
||||
- /home/lionel/docker/caddy-root-ca.crt:/etc/ssl/certs/caddy-root-ca.crt:ro
|
||||
environment:
|
||||
- SSL_CERT_FILE=/etc/ssl/certs/caddy-root-ca.crt
|
||||
```
|
||||
|
||||
### Outline "400 Bad Request"
|
||||
|
||||
**Cause** : Double authentification (Authelia + OIDC Outline)
|
||||
|
||||
**Solution** : Ne pas utiliser `import authelia` pour Outline dans Caddyfile
|
||||
|
||||
### Volumes disparus après migration
|
||||
|
||||
**Cause** : Nom du volume change avec le répertoire (préfixe)
|
||||
|
||||
**Solution** : Utiliser `external: true` ou lister les volumes existants :
|
||||
```bash
|
||||
docker volume ls | grep transmission
|
||||
```
|
||||
|
||||
### Home Assistant page blanche
|
||||
|
||||
**Cause** : WebSocket non supporté ou mauvais reverse proxy
|
||||
|
||||
**Vérifier** :
|
||||
```bash
|
||||
curl -s http://localhost:8123 | head -5
|
||||
```
|
||||
|
||||
**Solution** : Utiliser le nom du container, pas l'IP :
|
||||
```caddyfile
|
||||
reverse_proxy homeassistant:8123
|
||||
```
|
||||
77
docs/vault/index-v1.md
Normal file
77
docs/vault/index-v1.md
Normal file
@@ -0,0 +1,77 @@
|
||||
# Talloires - Home Server
|
||||
|
||||
Bienvenue sur le portail de documentation de **Talloires**, le serveur domestique Raspberry Pi 5.
|
||||
|
||||
## 🚀 Go Links (Raccourcis)
|
||||
|
||||
Accès rapide via `https://go/xxx` :
|
||||
|
||||
| Raccourci | Service | Raccourci | Service |
|
||||
|-----------|---------|-----------|---------|
|
||||
| [go/ha](https://go/ha) | Home Assistant | [go/jf](https://go/jf) | Jellyfin |
|
||||
| [go/lw](https://go/lw) | Linkwarden | [go/lt](https://go/lt) | LanguageTool |
|
||||
| [go/docs](https://go/docs) | Documentation | [go/git](https://go/git) | Gitea |
|
||||
| [go/grafana](https://go/grafana) | Grafana | [go/dockge](https://go/dockge) | Dockge |
|
||||
| [go/shlink](https://go/shlink) | Admin Go Links | [go/auth](https://go/auth) | Authelia |
|
||||
|
||||
**Tous les go-links :** ha, homeassistant, jf, jellyfin, lw, linkwarden, docs, git, auth, grafana, dockge, portainer, transmission, netdata, uptime, cockpit, vikunja, outline, lt, languagetool, shlink, annecy
|
||||
|
||||
[Créer un nouveau go-link](https://go/shlink)
|
||||
|
||||
---
|
||||
|
||||
## Services
|
||||
|
||||
### Media
|
||||
| Service | Go Link | URL |
|
||||
|---------|---------|-----|
|
||||
| Jellyfin | [go/jf](https://go/jf) | jellyfin.talloires.local |
|
||||
| Transmission | [go/transmission](https://go/transmission) | transmission.talloires.local |
|
||||
|
||||
### Productivité
|
||||
| Service | Go Link | URL |
|
||||
|---------|---------|-----|
|
||||
| Vikunja | [go/vikunja](https://go/vikunja) | vikunja.talloires.local |
|
||||
| Outline | [go/outline](https://go/outline) | outline.talloires.local |
|
||||
| Linkwarden | [go/lw](https://go/lw) | linkwarden.talloires.local |
|
||||
| LanguageTool | [go/lt](https://go/lt) | languagetool.talloires.local |
|
||||
|
||||
### Infrastructure
|
||||
| Service | Go Link | URL |
|
||||
|---------|---------|-----|
|
||||
| Portainer | [go/portainer](https://go/portainer) | portainer.talloires.local |
|
||||
| Dockge | [go/dockge](https://go/dockge) | dockge.talloires.local |
|
||||
| Gitea | [go/git](https://go/git) | git.talloires.local |
|
||||
| MkDocs | [go/docs](https://go/docs) | docs.talloires.local |
|
||||
| Shlink | [go/shlink](https://go/shlink) | shlink.talloires.local |
|
||||
|
||||
### Monitoring
|
||||
| Service | Go Link | URL |
|
||||
|---------|---------|-----|
|
||||
| Grafana | [go/grafana](https://go/grafana) | grafana.talloires.local |
|
||||
| Netdata | [go/netdata](https://go/netdata) | netdata.talloires.local |
|
||||
| Uptime Kuma | [go/uptime](https://go/uptime) | uptime.talloires.local |
|
||||
| Cockpit | [go/cockpit](https://go/cockpit) | cockpit.talloires.local |
|
||||
|
||||
### Domotique
|
||||
| Service | Go Link | URL |
|
||||
|---------|---------|-----|
|
||||
| Home Assistant | [go/ha](https://go/ha) | homeassistant.talloires.local |
|
||||
|
||||
### Sécurité
|
||||
| Service | Go Link | URL |
|
||||
|---------|---------|-----|
|
||||
| Authelia | [go/auth](https://go/auth) | auth.talloires.local |
|
||||
| CrowdSec | - | (service interne) |
|
||||
|
||||
---
|
||||
|
||||
## Accès rapide
|
||||
|
||||
- [Vue ensemble des services](services/overview.md)
|
||||
- [Architecture réseau](config/network.md)
|
||||
- [Configuration Shlink](services/shlink.md)
|
||||
- [Configuration SSO](services/authelia.md)
|
||||
- [Backup](services/backup.md)
|
||||
- [Ports utilisés](reference/ports.md)
|
||||
- [Commandes utiles](reference/commands.md)
|
||||
7
docs/vault/javascripts/external-links.js
Normal file
7
docs/vault/javascripts/external-links.js
Normal file
@@ -0,0 +1,7 @@
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
var links = document.querySelectorAll('a[href^="http"]');
|
||||
links.forEach(function(link) {
|
||||
link.setAttribute('target', '_blank');
|
||||
link.setAttribute('rel', 'noopener noreferrer');
|
||||
});
|
||||
});
|
||||
118
docs/vault/reference/commands.md
Normal file
118
docs/vault/reference/commands.md
Normal file
@@ -0,0 +1,118 @@
|
||||
# Commandes utiles
|
||||
|
||||
## Docker
|
||||
|
||||
```bash
|
||||
# Status de tous les containers
|
||||
docker ps -a
|
||||
|
||||
# Logs dun service
|
||||
docker logs -f <container>
|
||||
|
||||
# Redémarrer un service
|
||||
docker restart <container>
|
||||
|
||||
# Recréer un service (après modif compose)
|
||||
cd ~/docker/talloires && docker compose up -d <service>
|
||||
|
||||
# Tout redémarrer
|
||||
cd ~/docker/talloires && docker compose down && docker compose up -d
|
||||
|
||||
# Shell dans un container
|
||||
docker exec -it <container> sh
|
||||
```
|
||||
|
||||
## Caddy
|
||||
|
||||
```bash
|
||||
# Recharger la config
|
||||
docker exec caddy caddy reload --config /etc/caddy/Caddyfile
|
||||
|
||||
# Voir les logs
|
||||
docker logs caddy -f
|
||||
|
||||
# Tester la config
|
||||
docker exec caddy caddy validate --config /etc/caddy/Caddyfile
|
||||
```
|
||||
|
||||
## Authelia
|
||||
|
||||
```bash
|
||||
# Logs
|
||||
docker logs authelia -f
|
||||
|
||||
# Générer un hash de mot de passe
|
||||
docker exec authelia authelia crypto hash generate argon2 --password "motdepasse"
|
||||
|
||||
# Générer un hash pour OIDC secret
|
||||
docker exec authelia authelia crypto hash generate pbkdf2 --password "secret"
|
||||
```
|
||||
|
||||
## Backup
|
||||
|
||||
```bash
|
||||
# Lancer un backup manuel
|
||||
~/backup-to-annecy.sh
|
||||
|
||||
# Voir le log
|
||||
cat ~/backup.log
|
||||
|
||||
# Lister les backups sur Annecy
|
||||
sudo ssh -i /root/.ssh/id_ed25519 rsync-talloires@10.171.171.50 "ls -lh /volume1/Backups/talloires/"
|
||||
```
|
||||
|
||||
## Système
|
||||
|
||||
```bash
|
||||
# Espace disque
|
||||
df -h
|
||||
|
||||
# Mémoire
|
||||
free -h
|
||||
|
||||
# Température CPU
|
||||
vcgencmd measure_temp
|
||||
|
||||
# Services systemd
|
||||
sudo systemctl status docker
|
||||
sudo systemctl status cockpit
|
||||
|
||||
# Logs système
|
||||
journalctl -f
|
||||
```
|
||||
|
||||
## Réseau
|
||||
|
||||
```bash
|
||||
# IP des containers
|
||||
docker network inspect talloires_net | grep -A2 Name
|
||||
|
||||
# Test DNS Docker
|
||||
docker exec caddy nslookup authelia
|
||||
|
||||
# Connecter un container au réseau
|
||||
docker network connect talloires_net <container>
|
||||
```
|
||||
|
||||
## CrowdSec
|
||||
|
||||
```bash
|
||||
# Status
|
||||
docker exec crowdsec cscli metrics
|
||||
|
||||
# Décisions actives (bans)
|
||||
docker exec crowdsec cscli decisions list
|
||||
|
||||
# Ajouter un ban manuel
|
||||
docker exec crowdsec cscli decisions add --ip 1.2.3.4 --reason "test"
|
||||
```
|
||||
|
||||
## Certificats
|
||||
|
||||
```bash
|
||||
# Exporter le CA Caddy (pour clients)
|
||||
docker exec caddy cat /data/caddy/pki/authorities/local/root.crt > caddy-ca.crt
|
||||
|
||||
# Installer sur Mac
|
||||
security add-trusted-cert -d -r trustRoot -k ~/Library/Keychains/login.keychain-db caddy-ca.crt
|
||||
```
|
||||
98
docs/vault/reference/ports.md
Normal file
98
docs/vault/reference/ports.md
Normal file
@@ -0,0 +1,98 @@
|
||||
# Ports utilises
|
||||
|
||||
## Ports exposes (accessibles via reseau)
|
||||
|
||||
| Port | Service | Protocol | Notes |
|
||||
|------|---------|----------|-------|
|
||||
| 80 | Caddy (redirect HTTPS) | TCP | Redirige vers 443 |
|
||||
| 443 | Caddy (reverse proxy) | TCP | Point entree principal |
|
||||
| 8096 | Jellyfin | TCP | Acces direct (optionnel) |
|
||||
| 3030 | Gitea HTTP | TCP | Mappe depuis 3000 interne |
|
||||
| 2222 | Gitea SSH | TCP | Mappe depuis 22 interne |
|
||||
| 8123 | Home Assistant | TCP | Mode host network |
|
||||
| 9090 | Cockpit | TCP | Admin systeme |
|
||||
| 1514 | Syslog-ng | TCP/UDP | Collecte syslog |
|
||||
| 51413 | Transmission P2P | TCP/UDP | BitTorrent |
|
||||
|
||||
## Ports internes Docker (talloires_net)
|
||||
|
||||
| Port | Service(s) | Notes |
|
||||
|------|------------|-------|
|
||||
| 3001 | Uptime Kuma | |
|
||||
| 3100 | Loki | Agregation logs |
|
||||
| 3456 | Vikunja | |
|
||||
| 5001 | Dockge | |
|
||||
| 5432 | PostgreSQL | Linkwarden-db, Outline-db |
|
||||
| 6379 | Redis | Outline-redis |
|
||||
| 8000 | MkDocs | |
|
||||
| 8010 | LanguageTool | |
|
||||
| 8080 | Shlink, Shlink-web | Go Links |
|
||||
| 9000 | Portainer | |
|
||||
| 9091 | Authelia, Transmission Web | |
|
||||
| 19999 | Netdata | |
|
||||
|
||||
## Go Links
|
||||
|
||||
Acces rapide a tous les services via `https://go/xxx`
|
||||
|
||||
| Go Link | Service |
|
||||
|---------|---------|
|
||||
| go/ha | Home Assistant |
|
||||
| go/jf | Jellyfin |
|
||||
| go/lw | Linkwarden |
|
||||
| go/lt | LanguageTool |
|
||||
| go/docs | Documentation |
|
||||
| go/git | Gitea |
|
||||
| go/auth | Authelia |
|
||||
| go/grafana | Grafana |
|
||||
| go/dockge | Dockge |
|
||||
| go/portainer | Portainer |
|
||||
| go/shlink | Admin Go Links |
|
||||
|
||||
[Liste complete et creation de nouveaux liens](../services/shlink.md)
|
||||
|
||||
## URLs par domaine
|
||||
|
||||
### Acces local (.talloires.local) - avec Authelia
|
||||
|
||||
| Service | URL | Authentification |
|
||||
|---------|-----|------------------|
|
||||
| Go Links | https://go | Shlink |
|
||||
| Homepage | https://talloires.local | Authelia |
|
||||
| Auth | https://auth.talloires.local | - |
|
||||
| Shlink Admin | https://shlink.talloires.local | Authelia |
|
||||
| Git | https://git.talloires.local | OIDC Authelia |
|
||||
| Jellyfin | https://jellyfin.talloires.local | Authelia |
|
||||
| Grafana | https://grafana.talloires.local | Header Auth |
|
||||
| Portainer | https://portainer.talloires.local | Authelia |
|
||||
| Dockge | https://dockge.talloires.local | Authelia |
|
||||
| Docs | https://docs.talloires.local | Authelia |
|
||||
| Vikunja | https://vikunja.talloires.local | Authelia |
|
||||
| Outline | https://outline.talloires.local | OIDC Authelia |
|
||||
| Linkwarden | https://linkwarden.talloires.local | Authelia |
|
||||
| LanguageTool | https://languagetool.talloires.local | Authelia |
|
||||
| Transmission | https://transmission.talloires.local | Authelia |
|
||||
| Netdata | https://netdata.talloires.local | Authelia |
|
||||
| Uptime Kuma | https://uptime.talloires.local | Authelia |
|
||||
| Cockpit | https://cockpit.talloires.local | Authelia |
|
||||
| Home Assistant | https://homeassistant.talloires.local | Authelia |
|
||||
|
||||
### Acces ZeroTier (.talloires.tailfd281f.ts.net) - sans Authelia
|
||||
|
||||
Ces URLs sont accessibles depuis exterieur via le reseau ZeroTier.
|
||||
|
||||
| Service | URL | Auth native |
|
||||
|---------|-----|-------------|
|
||||
| Go Links | https://go | Shlink |
|
||||
| Vikunja | https://vikunja.talloires.tailfd281f.ts.net | Vikunja login |
|
||||
| Outline | https://outline.talloires.tailfd281f.ts.net | OIDC Authelia |
|
||||
| Linkwarden | https://linkwarden.tailfd281f.ts.net | Linkwarden login |
|
||||
| LanguageTool | https://languagetool.talloires.tailfd281f.ts.net | Aucune (API) |
|
||||
|
||||
## Reseau ZeroTier
|
||||
|
||||
| Serveur | IP ZeroTier | Role |
|
||||
|---------|-------------|------|
|
||||
| Talloires | 10.144.221.22 | Serveur principal (Pi5) |
|
||||
| Annecy | 10.144.78.193 | NAS Synology (backup) |
|
||||
| Olympou | 10.144.46.46 | Mac de travail |
|
||||
56
docs/vault/reference/scripts.md
Normal file
56
docs/vault/reference/scripts.md
Normal file
@@ -0,0 +1,56 @@
|
||||
# Scripts de maintenance
|
||||
|
||||
Scripts utilitaires pour la gestion de Talloires.
|
||||
|
||||
## update-containers.sh
|
||||
|
||||
Met à jour tous les containers Docker en parcourant les répertoires avec un fichier docker-compose.
|
||||
|
||||
**Emplacement** :
|
||||
|
||||
=== Pulling latest images ===
|
||||
|
||||
**Usage** :
|
||||
|
||||
|
||||
---
|
||||
|
||||
## transmission-toggle.sh
|
||||
|
||||
Active/désactive le container Transmission à la demande (économie de ressources).
|
||||
|
||||
**Emplacement** :
|
||||
|
||||
🔴 Transmission is STOPPED
|
||||
|
||||
**Usage** :
|
||||
|
||||
|
||||
---
|
||||
|
||||
## backup-to-annecy.sh
|
||||
|
||||
Sauvegarde les configs Docker vers le NAS Synology (Annecy).
|
||||
|
||||
**Emplacement** :
|
||||
|
||||
|
||||
|
||||
**Planification** : Cron à 3h00 quotidien
|
||||
|
||||
|
||||
**Vérifier les backups** :
|
||||
|
||||
|
||||
---
|
||||
|
||||
## Watchtower (automatique)
|
||||
|
||||
Watchtower vérifie et met à jour automatiquement les containers à 4h00.
|
||||
|
||||
**Configuration** : Dans
|
||||
|
||||
|
||||
|
||||
**Logs** :
|
||||
|
||||
141
docs/vault/services-v1/authelia.md
Normal file
141
docs/vault/services-v1/authelia.md
Normal file
@@ -0,0 +1,141 @@
|
||||
# Authelia - SSO
|
||||
|
||||
Authelia fournit l authentification unique (SSO) pour tous les services Talloires.
|
||||
|
||||
## Acces
|
||||
|
||||
| Parametre | Valeur |
|
||||
|-----------|--------|
|
||||
| URL | [auth.talloires.local](https://auth.talloires.local) |
|
||||
| Utilisateur | lionel |
|
||||
| Email | dflected@dflected.org |
|
||||
| 2FA | TOTP active |
|
||||
|
||||
## Matrice de protection des services
|
||||
|
||||
| Service | Authelia | Raison |
|
||||
|---------|----------|--------|
|
||||
| **docs** | ✅ | Documentation interne |
|
||||
| **portainer** | ✅ | Admin Docker |
|
||||
| **dockge** | ✅ | Admin Docker Compose |
|
||||
| **transmission** | ✅ | Client torrent |
|
||||
| **netdata** | ✅ | Monitoring systeme |
|
||||
| **grafana** | ✅ | Dashboards / Logs |
|
||||
| **uptime** | ✅ | Monitoring disponibilite |
|
||||
| **cockpit** | ✅ | Admin systeme |
|
||||
| **languagetool** | ✅ | API grammaire |
|
||||
| **auth** | ❌ | C est Authelia lui-meme |
|
||||
| **git** | ❌ | Auth OIDC propre |
|
||||
| **jellyfin** | ❌ | Auth propre |
|
||||
| **homeassistant** | ❌ | Auth propre |
|
||||
| **linkwarden** | ❌ | Auth propre |
|
||||
| **vikunja** | ❌ | Auth propre |
|
||||
| **outline** | ❌ | Auth OIDC propre |
|
||||
|
||||
> **Note** : Cette protection s applique aux domaines `.local` ET `.tailfd281f.ts.net`
|
||||
|
||||
## Services avec OAuth/OIDC
|
||||
|
||||
Ces services utilisent Authelia comme provider OpenID Connect :
|
||||
|
||||
### Gitea
|
||||
| Parametre | Valeur |
|
||||
|-----------|--------|
|
||||
| Client ID | gitea |
|
||||
| Redirect URI | https://git.talloires.local/user/oauth2/Authelia/callback |
|
||||
| Scopes | openid, email, profile |
|
||||
|
||||
### Outline
|
||||
| Parametre | Valeur |
|
||||
|-----------|--------|
|
||||
| Client ID | outline |
|
||||
| Redirect URI | https://outline.talloires.local/auth/oidc.callback |
|
||||
| Scopes | openid, offline_access, profile, email |
|
||||
|
||||
### Grafana (Header Auth)
|
||||
Grafana utilise l authentification par header via Authelia (pas OIDC) :
|
||||
|
||||
| Header | Valeur |
|
||||
|--------|--------|
|
||||
| Remote-User | Utilisateur authentifie |
|
||||
| Remote-Email | Email de l utilisateur |
|
||||
|
||||
## Configuration
|
||||
|
||||
### Fichiers
|
||||
| Fichier | Usage |
|
||||
|---------|-------|
|
||||
| ~/docker/authelia/config/configuration.yml | Config principale |
|
||||
| ~/docker/authelia/config/users_database.yml | Base utilisateurs |
|
||||
| ~/docker/authelia/config/oidc.key | Cle privee OIDC |
|
||||
|
||||
### SMTP (Proton Mail)
|
||||
| Parametre | Valeur |
|
||||
|-----------|--------|
|
||||
| Serveur | smtp.protonmail.ch:465 |
|
||||
| Protocol | TLS implicite |
|
||||
| From | Talloires <dflected@dflected.org> |
|
||||
|
||||
## Integration Caddy
|
||||
|
||||
### Snippet forward_auth
|
||||
```
|
||||
(authelia) {
|
||||
forward_auth authelia:9091 {
|
||||
uri /api/authz/forward-auth
|
||||
copy_headers Remote-User Remote-Groups Remote-Email Remote-Name
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Usage dans Caddyfile
|
||||
```
|
||||
monservice.talloires.local, monservice.talloires.tailfd281f.ts.net {
|
||||
import authelia
|
||||
reverse_proxy backend:port
|
||||
tls internal
|
||||
}
|
||||
```
|
||||
|
||||
## Ajouter un client OIDC
|
||||
|
||||
1. Generer le hash du secret :
|
||||
```bash
|
||||
docker exec authelia authelia crypto hash generate pbkdf2 --password "mon-secret"
|
||||
```
|
||||
|
||||
2. Ajouter dans configuration.yml :
|
||||
```yaml
|
||||
- client_id: nouveau_client
|
||||
client_name: Mon Service
|
||||
client_secret: "$pbkdf2-sha512$..."
|
||||
public: false
|
||||
authorization_policy: two_factor
|
||||
redirect_uris:
|
||||
- https://service.talloires.local/callback
|
||||
scopes:
|
||||
- openid
|
||||
- email
|
||||
- profile
|
||||
```
|
||||
|
||||
3. Redemarrer Authelia :
|
||||
```bash
|
||||
docker restart authelia
|
||||
```
|
||||
|
||||
## Commandes utiles
|
||||
|
||||
```bash
|
||||
# Logs
|
||||
docker logs authelia -f
|
||||
|
||||
# Hash mot de passe utilisateur
|
||||
docker exec authelia authelia crypto hash generate argon2 --password "motdepasse"
|
||||
|
||||
# Hash OIDC client secret
|
||||
docker exec authelia authelia crypto hash generate pbkdf2 --password "secret"
|
||||
|
||||
# Valider la configuration
|
||||
docker exec authelia authelia validate-config
|
||||
```
|
||||
76
docs/vault/services-v1/backup.md
Normal file
76
docs/vault/services-v1/backup.md
Normal file
@@ -0,0 +1,76 @@
|
||||
# Backup
|
||||
|
||||
Sauvegarde automatique de Talloires vers Annecy (Synology NAS).
|
||||
|
||||
## Configuration
|
||||
|
||||
| Paramètre | Valeur |
|
||||
|-----------|--------|
|
||||
| Script | ~/backup-to-annecy.sh |
|
||||
| Destination | rsync-talloires@10.171.171.50:/volume1/Backups/talloires/ |
|
||||
| Méthode | tar over SSH (rsync SUID bloqué sur Synology DSM 7) |
|
||||
| Schedule | Cron quotidien à 3h00 |
|
||||
| Rétention | 7 derniers backups |
|
||||
| Log | ~/backup.log |
|
||||
|
||||
## Données sauvegardées
|
||||
|
||||
- ~/docker/ (toutes les configs Docker)
|
||||
|
||||
### Exclusions
|
||||
- *.log
|
||||
- */cache/*
|
||||
- */logs/*
|
||||
- */__pycache__/*
|
||||
|
||||
## Authentification SSH
|
||||
|
||||
- Clé privée (root): /root/.ssh/id_ed25519
|
||||
- Clé privée (lionel): ~/.ssh/id_ed25519
|
||||
- Utilisateur distant: rsync-talloires
|
||||
- Fingerprint: SHA256:CxpeBfvrBV/s+RNE49SwrY3WsG28Du3nyQ/2D9lApU8
|
||||
|
||||
## Commandes
|
||||
|
||||
### Lancer un backup manuel
|
||||
```bash
|
||||
~/backup-to-annecy.sh
|
||||
```
|
||||
|
||||
### Vérifier le log
|
||||
```bash
|
||||
cat ~/backup.log
|
||||
```
|
||||
|
||||
### Vérifier les backups sur Annecy
|
||||
```bash
|
||||
sudo ssh -i /root/.ssh/id_ed25519 rsync-talloires@10.171.171.50 "ls -lh /volume1/Backups/talloires/"
|
||||
```
|
||||
|
||||
### Restaurer un backup
|
||||
```bash
|
||||
# Sur Talloires
|
||||
sudo ssh -i /root/.ssh/id_ed25519 rsync-talloires@10.171.171.50 "cat /volume1/Backups/talloires/docker-backup-YYYYMMDD-HHMMSS.tar.gz" | sudo tar -xzf - -C /home/lionel/
|
||||
```
|
||||
|
||||
## Cron
|
||||
|
||||
```bash
|
||||
# Voir le cron
|
||||
sudo crontab -l
|
||||
|
||||
# Modifier
|
||||
sudo crontab -e
|
||||
```
|
||||
|
||||
Entrée actuelle :
|
||||
```
|
||||
0 3 * * * /home/lionel/backup-to-annecy.sh
|
||||
```
|
||||
|
||||
## Notes techniques
|
||||
|
||||
Le rsync classique ne fonctionne pas avec Synology DSM 7 car :
|
||||
- rsync est SUID root sur DSM
|
||||
- Les utilisateurs non-admin nont pas de shell par défaut
|
||||
- Solution: tar over SSH fonctionne parfaitement
|
||||
3
docs/vault/services-v1/grafana.md
Normal file
3
docs/vault/services-v1/grafana.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# Grafana - Monitoring & Alertes
|
||||
|
||||
## Vue densemble
|
||||
148
docs/vault/services-v1/overview.md
Normal file
148
docs/vault/services-v1/overview.md
Normal file
@@ -0,0 +1,148 @@
|
||||
# Vue ensemble des services
|
||||
|
||||
## Architecture
|
||||
|
||||
```
|
||||
Client (Mac/iPhone)
|
||||
|
|
||||
| HTTPS (certificat Caddy CA)
|
||||
v
|
||||
[Caddy] :443
|
||||
|
|
||||
+-- forward_auth --> [Authelia] :9091
|
||||
| |
|
||||
| (si authentifié)
|
||||
| |
|
||||
+-------------------------+
|
||||
|
|
||||
v
|
||||
Services Docker
|
||||
```
|
||||
|
||||
## Services actifs (24 containers)
|
||||
|
||||
### 🎬 Média
|
||||
| Service | Container | Port | Description |
|
||||
|---------|-----------|------|-------------|
|
||||
| Jellyfin | jellyfin | 8096 | Streaming vidéo avec transcodage hardware (VideoCore) |
|
||||
| Transmission | transmission | 9091, 51413 | Client BitTorrent avec web UI |
|
||||
|
||||
### ✅ Productivité
|
||||
| Service | Container | Port | Description |
|
||||
|---------|-----------|------|-------------|
|
||||
| Vikunja | vikunja | 3456 | Gestion de tâches style Todoist/Trello avec CalDAV |
|
||||
| Outline | outline + outline-db + outline-redis | 3000 | Wiki collaboratif avec OIDC (PostgreSQL + Redis) |
|
||||
| Linkwarden | linkwarden + linkwarden-db | 3000 | Gestionnaire de bookmarks avancé avec archivage |
|
||||
| LanguageTool | languagetool | 8010 | Serveur de correction grammaticale (FR/EN/DE) |
|
||||
|
||||
### 🔧 Infrastructure
|
||||
| Service | Container | Port | Description |
|
||||
|---------|-----------|------|-------------|
|
||||
| Portainer | portainer | 9000 | Interface de gestion Docker |
|
||||
| Dockge | dockge | 5001 | Interface Docker Compose |
|
||||
| Gitea | gitea | 3000, 22 | Serveur Git avec SSO Authelia |
|
||||
| MkDocs | mkdocs | 8000 | Cette documentation |
|
||||
|
||||
### 📊 Monitoring
|
||||
| Service | Container | Port | Description |
|
||||
|---------|-----------|------|-------------|
|
||||
| Grafana | grafana | 3000 | Dashboards et visualisation (header auth via Authelia) |
|
||||
| Netdata | netdata | 19999 | Monitoring système temps réel |
|
||||
| Uptime Kuma | uptime-kuma | 3001 | Surveillance uptime des services |
|
||||
| Loki | loki | 3100 | Agrégation de logs |
|
||||
| Promtail | promtail | - | Collecte de logs pour Loki |
|
||||
| Syslog-ng | syslog-ng | 1514 | Collecte syslog centralisée |
|
||||
|
||||
### 🏠 Domotique
|
||||
| Service | Container | Port | Description |
|
||||
|---------|-----------|------|-------------|
|
||||
| Home Assistant | homeassistant | 8123 | Automatisation domotique (mode host network) |
|
||||
|
||||
### 🔐 Sécurité
|
||||
| Service | Container | Port | Description |
|
||||
|---------|-----------|------|-------------|
|
||||
| Authelia | authelia | 9091 | SSO, 2FA, OIDC provider |
|
||||
| CrowdSec | crowdsec | - | IDS/IPS collaboratif |
|
||||
| Caddy | caddy | 80, 443 | Reverse proxy avec TLS automatique |
|
||||
|
||||
### 🔄 Maintenance
|
||||
| Service | Container | Port | Description |
|
||||
|---------|-----------|------|-------------|
|
||||
| Watchtower | watchtower | 8080 | Mise à jour auto des containers (4h00) |
|
||||
|
||||
## Répertoires Docker
|
||||
|
||||
```
|
||||
~/docker/
|
||||
├── authelia/ # Config SSO
|
||||
├── caddy/ # Caddyfile + certificats
|
||||
├── crowdsec/ # Config IDS
|
||||
├── dockge/ # Stacks Dockge
|
||||
├── docs/ # MkDocs (cette doc)
|
||||
├── gitea/ # Config + data Gitea
|
||||
├── grafana/ # Dashboards
|
||||
├── homeassistant/ # Config HA
|
||||
├── languagetool/ # Config LT
|
||||
├── linkwarden/ # Config Linkwarden
|
||||
├── outline/ # Config Outline
|
||||
├── syslog-ng/ # Config syslog
|
||||
├── talloires/ # Stack principal (docker-compose.yml)
|
||||
├── uptime-kuma/ # Data Uptime Kuma
|
||||
├── vikunja/ # Config Vikunja
|
||||
└── zeronsd/ # DNS ZeroTier
|
||||
```
|
||||
|
||||
## Réseau
|
||||
|
||||
| Réseau | Plage | Usage |
|
||||
|--------|-------|-------|
|
||||
| ZeroTier | 10.144.0.0/16 | Accès distant |
|
||||
| Docker talloires_net | 172.20.0.0/16 | Inter-containers |
|
||||
| LAN physique | 10.171.171.0/24 | Réseau local |
|
||||
|
||||
### Adresses ZeroTier clés
|
||||
| Serveur | IP |
|
||||
|---------|-----|
|
||||
| Talloires (Pi5) | 10.144.221.22 |
|
||||
| Annecy (Synology) | 10.144.78.193 |
|
||||
| Olympou (Mac) | 10.144.46.46 |
|
||||
|
||||
## Stockage
|
||||
|
||||
| Mount | Source | Usage |
|
||||
|-------|--------|-------|
|
||||
| /mnt/mediaserver | USB SSD 4TB | Films, Séries, Downloads, Databases |
|
||||
| ~/docker | SD Card | Configs Docker légères |
|
||||
|
||||
### Structure USB (/mnt/mediaserver)
|
||||
```
|
||||
/mnt/mediaserver/
|
||||
├── databases/
|
||||
│ ├── languagetool/ngrams/ # N-grams FR/EN/DE (~8GB)
|
||||
│ └── outline/
|
||||
│ ├── data/ # Fichiers Outline
|
||||
│ ├── postgres/ # PostgreSQL Outline
|
||||
│ └── redis/ # Redis Outline
|
||||
├── downloads/ # Transmission
|
||||
├── movies/ # Films (Jellyfin)
|
||||
└── series/ # Séries (Jellyfin)
|
||||
```
|
||||
|
||||
## Backup
|
||||
|
||||
| Paramètre | Valeur |
|
||||
|-----------|--------|
|
||||
| Destination | Annecy (Synology) |
|
||||
| Schedule | 3h00 quotidien |
|
||||
| Rétention | 7 jours |
|
||||
| Méthode | tar over SSH |
|
||||
|
||||
Voir [Scripts de maintenance](../reference/scripts.md) pour les détails.
|
||||
|
||||
## Maintenance automatique
|
||||
|
||||
| Tâche | Schedule | Outil |
|
||||
|-------|----------|-------|
|
||||
| Mise à jour containers | 4h00 | Watchtower |
|
||||
| Backup vers Annecy | 3h00 | backup-to-annecy.sh (cron) |
|
||||
| Nettoyage images | Après update | docker image prune |
|
||||
109
docs/vault/services-v1/shlink.md
Normal file
109
docs/vault/services-v1/shlink.md
Normal file
@@ -0,0 +1,109 @@
|
||||
# Shlink - Go Links
|
||||
|
||||
Shlink est un service de raccourcissement d URL qui permet de creer des go-links personnalises.
|
||||
|
||||
## Acces
|
||||
|
||||
| Interface | URL |
|
||||
|-----------|-----|
|
||||
| Go Links | `https://go/xxx` |
|
||||
| Admin | [go/shlink](https://go/shlink) |
|
||||
|
||||
## Go Links disponibles
|
||||
|
||||
| Raccourci | Destination |
|
||||
|-----------|-------------|
|
||||
| go/ha | Home Assistant |
|
||||
| go/homeassistant | Home Assistant |
|
||||
| go/jf | Jellyfin |
|
||||
| go/jellyfin | Jellyfin |
|
||||
| go/lw | Linkwarden |
|
||||
| go/linkwarden | Linkwarden |
|
||||
| go/lt | LanguageTool |
|
||||
| go/languagetool | LanguageTool |
|
||||
| go/docs | Documentation |
|
||||
| go/git | Gitea |
|
||||
| go/auth | Authelia |
|
||||
| go/grafana | Grafana |
|
||||
| go/dockge | Dockge |
|
||||
| go/portainer | Portainer |
|
||||
| go/transmission | Transmission |
|
||||
| go/netdata | Netdata |
|
||||
| go/uptime | Uptime Kuma |
|
||||
| go/cockpit | Cockpit |
|
||||
| go/vikunja | Vikunja |
|
||||
| go/outline | Outline |
|
||||
| go/cryptpad | CryptPad |
|
||||
| go/shlink | Admin Shlink |
|
||||
|
||||
## Creer un nouveau go-link
|
||||
|
||||
### Via interface web
|
||||
|
||||
1. Aller sur [go/shlink](https://go/shlink)
|
||||
2. Cliquer sur "Create short URL"
|
||||
3. Entrer l URL longue et le slug personnalise
|
||||
|
||||
### Via CLI
|
||||
|
||||
```bash
|
||||
docker exec shlink shlink short-url:create https://example.com --custom-slug=example
|
||||
```
|
||||
|
||||
### Lister tous les liens
|
||||
|
||||
```bash
|
||||
docker exec shlink shlink short-url:list
|
||||
```
|
||||
|
||||
### Supprimer un lien
|
||||
|
||||
```bash
|
||||
docker exec shlink shlink short-url:delete <short-code>
|
||||
```
|
||||
|
||||
## Configuration
|
||||
|
||||
- **Domaine** : go
|
||||
- **Base de donnees** : SQLite
|
||||
- **Statistiques** : Activees (visites trackees)
|
||||
|
||||
## Docker Compose
|
||||
|
||||
Emplacement : `~/docker/shlink/docker-compose.yml`
|
||||
|
||||
```yaml
|
||||
services:
|
||||
shlink:
|
||||
image: shlinkio/shlink:stable
|
||||
container_name: shlink
|
||||
environment:
|
||||
- DEFAULT_DOMAIN=go
|
||||
- IS_HTTPS_ENABLED=true
|
||||
- DB_DRIVER=sqlite
|
||||
volumes:
|
||||
- ./data:/etc/shlink/data
|
||||
networks:
|
||||
- talloires_net
|
||||
|
||||
shlink-web:
|
||||
image: shlinkio/shlink-web-client:stable
|
||||
container_name: shlink-web
|
||||
networks:
|
||||
- talloires_net
|
||||
```
|
||||
|
||||
## Caddy
|
||||
|
||||
```
|
||||
go, go.local, go.tailfd281f.ts.net {
|
||||
reverse_proxy shlink:8080
|
||||
tls internal
|
||||
}
|
||||
|
||||
shlink.talloires.local, shlink.talloires.tailfd281f.ts.net {
|
||||
import authelia
|
||||
reverse_proxy shlink-web:8080
|
||||
tls internal
|
||||
}
|
||||
```
|
||||
177
docs/vault/services-v1/transmission.md
Normal file
177
docs/vault/services-v1/transmission.md
Normal file
@@ -0,0 +1,177 @@
|
||||
# Transmission - Torrent Client
|
||||
|
||||
## Vue d'ensemble
|
||||
|
||||
Transmission est le client BitTorrent utilisé sur Talloires, configuré pour router **tout son trafic via ProtonVPN** afin de protéger la vie privée et masquer l'activité de téléchargement à l'ISP.
|
||||
|
||||
!!! success "Configuration VPN"
|
||||
Le trafic de Talloires (10.171.171.7) est automatiquement routé via ProtonVPN sur Theseus, garantissant que Transmission est invisible pour l'ISP.
|
||||
|
||||
## Informations de connexion
|
||||
|
||||
| Paramètre | Valeur |
|
||||
|-----------|--------|
|
||||
| **URL locale** | http://talloires.local:9091 |
|
||||
| **URL Tailscale** | http://talloires.tailfd281f.ts.net:9091 |
|
||||
| **Container** | `transmission` |
|
||||
| **Réseau Docker** | `talloires_net` |
|
||||
| **IP Container** | 172.20.0.17 |
|
||||
|
||||
## Configuration
|
||||
|
||||
### Docker Compose
|
||||
|
||||
```yaml
|
||||
transmission:
|
||||
image: linuxserver/transmission:latest
|
||||
container_name: transmission
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- 51413:51413
|
||||
- 51413:51413/udp
|
||||
expose:
|
||||
- 9091
|
||||
environment:
|
||||
- PUID=1026
|
||||
- PGID=100
|
||||
- TZ=Europe/Luxembourg
|
||||
volumes:
|
||||
- talloires_transmission_config:/config
|
||||
- /mnt/mediaserver/downloads:/downloads
|
||||
networks:
|
||||
- talloires_net
|
||||
```
|
||||
|
||||
### Vérification VPN
|
||||
|
||||
Le trafic de Transmission passe par ProtonVPN :
|
||||
|
||||
```bash
|
||||
# Vérifier l'IP publique de Transmission
|
||||
docker exec transmission sh -c "curl -s ipinfo.io"
|
||||
```
|
||||
|
||||
Résultat attendu :
|
||||
```json
|
||||
{
|
||||
"ip": "5.253.204.205",
|
||||
"city": "Brussels",
|
||||
"country": "BE",
|
||||
"org": "AS9009 M247 Europe SRL"
|
||||
}
|
||||
```
|
||||
|
||||
!!! warning "IP différente de l'ISP"
|
||||
L'IP normale de l'ISP est `87.240.228.220` (POST Luxembourg). Si Transmission montre cette IP, le VPN ne fonctionne pas correctement.
|
||||
|
||||
## Script de contrôle
|
||||
|
||||
Un script de gestion est disponible pour démarrer/stopper Transmission facilement.
|
||||
|
||||
### Emplacement
|
||||
|
||||
```bash
|
||||
/home/lionel/scripts/transmission-control.sh
|
||||
```
|
||||
|
||||
### Utilisation
|
||||
|
||||
```bash
|
||||
# Stopper Transmission
|
||||
~/scripts/transmission-control.sh stop
|
||||
|
||||
# Démarrer Transmission
|
||||
~/scripts/transmission-control.sh start
|
||||
|
||||
# Redémarrer Transmission
|
||||
~/scripts/transmission-control.sh restart
|
||||
|
||||
# Voir le statut et les statistiques
|
||||
~/scripts/transmission-control.sh status
|
||||
```
|
||||
|
||||
### Exemple de sortie
|
||||
|
||||
```bash
|
||||
$ ~/scripts/transmission-control.sh status
|
||||
=== Transmission Status ===
|
||||
1b69f36ee669 linuxserver/transmission:latest Up 3 days transmission
|
||||
|
||||
=== Network Stats ===
|
||||
CONTAINER ID NAME CPU % MEM USAGE / LIMIT NET I/O
|
||||
1b69f36ee669 transmission 0.05% 45MiB / 7.68GiB 16.8GB / 813MB
|
||||
```
|
||||
|
||||
## Monitoring
|
||||
|
||||
### Vérifier l'état du tunnel VPN
|
||||
|
||||
Sur Theseus :
|
||||
|
||||
```bash
|
||||
# Voir les statistiques du tunnel WireGuard
|
||||
ssh -l root theseus.local 'wg show wgclt1'
|
||||
```
|
||||
|
||||
### Logs Transmission
|
||||
|
||||
```bash
|
||||
# Logs en temps réel
|
||||
docker logs -f transmission
|
||||
|
||||
# Dernières 50 lignes
|
||||
docker logs transmission --tail 50
|
||||
```
|
||||
|
||||
## Dépannage
|
||||
|
||||
### Transmission ne télécharge pas
|
||||
|
||||
1. Vérifier que le VPN est actif :
|
||||
```bash
|
||||
ssh -l root theseus.local 'wg show wgclt1 | grep handshake'
|
||||
```
|
||||
|
||||
2. Vérifier l'IP de Transmission :
|
||||
```bash
|
||||
docker exec transmission sh -c "curl -s ipinfo.io | grep ip"
|
||||
```
|
||||
|
||||
3. Redémarrer Transmission :
|
||||
```bash
|
||||
~/scripts/transmission-control.sh restart
|
||||
```
|
||||
|
||||
### Vitesse lente
|
||||
|
||||
Le routage via VPN peut réduire la vitesse. Vérifier :
|
||||
|
||||
1. **Latence du tunnel** :
|
||||
```bash
|
||||
ssh -l root theseus.local 'ping -c 3 10.2.0.1' # Gateway VPN
|
||||
```
|
||||
|
||||
2. **Charge CPU de Talloires** :
|
||||
```bash
|
||||
docker stats transmission --no-stream
|
||||
```
|
||||
|
||||
## Sécurité
|
||||
|
||||
### Isolation réseau
|
||||
|
||||
Talloires est configuré comme **DMZ** :
|
||||
|
||||
- ✅ Accès sortant uniquement via ProtonVPN
|
||||
- ❌ Pas d'accès vers les autres devices du LAN (Annecy, Olympou)
|
||||
- ✅ ACL Tailscale bloque les connexions depuis Talloires
|
||||
|
||||
### Kill Switch
|
||||
|
||||
Si le VPN tombe, Talloires **perd l'accès Internet** (pas de fallback sur l'IP ISP), garantissant qu'aucun trafic torrent ne fuite.
|
||||
|
||||
## Ressources
|
||||
|
||||
- [Transmission Web UI](http://talloires.local:9091)
|
||||
- [LinuxServer Transmission Docs](https://docs.linuxserver.io/images/docker-transmission)
|
||||
- Configuration complète : `/home/lionel/docker/media/docker-compose.yml`
|
||||
Reference in New Issue
Block a user