feat: add headscale test deployment artifacts
This commit is contained in:
@@ -0,0 +1,233 @@
|
||||
# Headscale / Headscale UI sur QNAP — finalisation
|
||||
|
||||
## Ce qui a déjà été déployé
|
||||
|
||||
Stack Portainer : `headscale-test`
|
||||
|
||||
Services :
|
||||
- `headscale`
|
||||
- `headscale-ui`
|
||||
- `headscale-init`
|
||||
|
||||
Chemins NAS :
|
||||
- `/share/ZFS24_DATA/docker/headscale-test/config`
|
||||
- `/share/ZFS24_DATA/docker/headscale-test/data`
|
||||
|
||||
Ports de test actuels :
|
||||
- API Headscale : `192.168.1.150:8086`
|
||||
- Metrics : `192.168.1.150:9096`
|
||||
- UI HTTP : `192.168.1.150:18087`
|
||||
- UI HTTPS auto-signé : `192.168.1.150:18447`
|
||||
- gRPC : `192.168.1.150:50443`
|
||||
|
||||
Domaine cible configuré dans `config.yaml` :
|
||||
- `https://hs.nucleon.fr`
|
||||
|
||||
Base domain MagicDNS de test :
|
||||
- `internal.hs.nucleon.fr`
|
||||
|
||||
## Important
|
||||
|
||||
`headscale-ui` doit idéalement être servi **sur le même sous-domaine que Headscale**, typiquement :
|
||||
- `https://hs.nucleon.fr/` → Headscale
|
||||
- `https://hs.nucleon.fr/web` → Headscale UI
|
||||
|
||||
Sinon il faudra gérer CORS proprement au reverse proxy.
|
||||
|
||||
---
|
||||
|
||||
## Étapes restantes pour finaliser l'installation
|
||||
|
||||
### 1) Créer le sous-domaine DNS
|
||||
|
||||
Créer un enregistrement DNS pour :
|
||||
- `hs.nucleon.fr`
|
||||
|
||||
Il doit pointer vers l'IP publique qui arrive sur ton reverse proxy.
|
||||
|
||||
---
|
||||
|
||||
### 2) Mettre en place le reverse proxy HTTPS
|
||||
|
||||
Objectif : exposer **le même host** pour Headscale et l'UI.
|
||||
|
||||
Routing recommandé :
|
||||
- `/web` → `http://headscale-ui:8080`
|
||||
- `/` → `http://headscale:8080`
|
||||
|
||||
Si tu le fais via SWAG/Nginx Proxy Manager/Caddy, garde bien cette logique de **même sous-domaine**.
|
||||
|
||||
### Exemple logique de proxy
|
||||
|
||||
- `https://hs.nucleon.fr/web` → UI
|
||||
- `https://hs.nucleon.fr` → API Headscale
|
||||
|
||||
Sans ça, l'UI peut afficher des erreurs de preflight / CORS.
|
||||
|
||||
---
|
||||
|
||||
### 3) Vérifier la conf Headscale
|
||||
|
||||
Fichier actuel :
|
||||
- `/share/ZFS24_DATA/docker/headscale-test/config/config.yaml`
|
||||
|
||||
Points déjà posés :
|
||||
- `server_url: https://hs.nucleon.fr`
|
||||
- SQLite locale
|
||||
- MagicDNS activé
|
||||
- ACL de test très ouverte
|
||||
- DERP public Tailscale utilisé pour commencer
|
||||
|
||||
À ajuster plus tard si besoin :
|
||||
- DNS interne personnalisé
|
||||
- OIDC / SSO
|
||||
- DERP perso
|
||||
- ACL plus stricte
|
||||
|
||||
---
|
||||
|
||||
### 4) Créer le premier user / namespace
|
||||
|
||||
Dans le conteneur `headscale`, créer ton premier user.
|
||||
|
||||
Exemple logique :
|
||||
- user principal : `christophe`
|
||||
|
||||
Commande type à exécuter dans le conteneur :
|
||||
|
||||
```bash
|
||||
headscale users create christophe
|
||||
headscale users list
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 5) Générer une API key pour l'UI
|
||||
|
||||
Headscale UI a besoin d'une API key Headscale.
|
||||
|
||||
Commande type :
|
||||
|
||||
```bash
|
||||
headscale apikeys create
|
||||
```
|
||||
|
||||
Ensuite, dans Headscale UI :
|
||||
- renseigner l'URL du serveur : `https://hs.nucleon.fr`
|
||||
- coller l'API key générée
|
||||
|
||||
Tant que le reverse proxy n'est pas proprement en place, l'UI peut être capricieuse.
|
||||
|
||||
---
|
||||
|
||||
### 6) Générer des preauth keys pour connecter les machines
|
||||
|
||||
Pour enregistrer une machine dans Headscale :
|
||||
|
||||
```bash
|
||||
headscale preauthkeys create --user christophe --reusable --expiration 24h
|
||||
```
|
||||
|
||||
Selon le besoin, tu peux faire :
|
||||
- des clés temporaires
|
||||
- des clés réutilisables
|
||||
- des clés taggées
|
||||
|
||||
---
|
||||
|
||||
### 7) Reconfigurer les clients Tailscale vers Headscale
|
||||
|
||||
Sur chaque machine, il faudra connecter le client Tailscale à ton serveur Headscale.
|
||||
|
||||
Principe :
|
||||
- se déconnecter proprement si besoin
|
||||
- se reconnecter avec ton login server Headscale
|
||||
- utiliser une preauth key quand nécessaire
|
||||
|
||||
Le point clé côté client sera ton serveur :
|
||||
- `https://hs.nucleon.fr`
|
||||
|
||||
---
|
||||
|
||||
### 8) Vérifier la remontée des nodes
|
||||
|
||||
Après connexion des clients :
|
||||
|
||||
```bash
|
||||
headscale nodes list
|
||||
```
|
||||
|
||||
Vérifier :
|
||||
- IPs attribuées
|
||||
- nom des machines
|
||||
- routes annoncées
|
||||
- statut en ligne
|
||||
|
||||
---
|
||||
|
||||
### 9) Durcir les ACL
|
||||
|
||||
La policy actuelle est volontairement permissive pour les tests :
|
||||
- tout le monde peut parler à tout le monde
|
||||
|
||||
Fichier :
|
||||
- `/share/ZFS24_DATA/docker/headscale-test/config/acl.hujson`
|
||||
|
||||
Avant passage en production, définir :
|
||||
- users
|
||||
- tags
|
||||
- groupes
|
||||
- accès par rôle
|
||||
- restrictions SSH
|
||||
- accès subnet routers / exit nodes
|
||||
|
||||
---
|
||||
|
||||
### 10) Préparer la migration depuis Tailscale
|
||||
|
||||
Avant remplacement complet, valider :
|
||||
- connexion d'au moins 2-3 machines
|
||||
- DNS interne
|
||||
- accès entre machines
|
||||
- subnet router si besoin
|
||||
- exit node si besoin
|
||||
- stabilité mobile
|
||||
- performance générale
|
||||
|
||||
Migration prudente recommandée :
|
||||
1. Monter Headscale en parallèle
|
||||
2. Tester avec quelques machines
|
||||
3. Reproduire les usages critiques
|
||||
4. Basculer progressivement
|
||||
5. Couper Tailscale quand tout est validé
|
||||
|
||||
---
|
||||
|
||||
## Remarques d'architecture
|
||||
|
||||
Pour les tests, le choix Docker/QNAP est bon.
|
||||
|
||||
Mon avis :
|
||||
- **pour tester** → stack Docker dédiée sur le QNAP, très bien
|
||||
- **plus tard** → on pourra décider si ça reste autonome ou si on le rattache à une stack plus globale
|
||||
|
||||
Je penche plutôt pour **le laisser séparé** d'OpenClaw :
|
||||
- responsabilités plus claires
|
||||
- moins de couplage
|
||||
- maintenance plus simple
|
||||
- migration / rollback plus propres
|
||||
|
||||
---
|
||||
|
||||
## Checklist courte
|
||||
|
||||
- [ ] DNS `hs.nucleon.fr`
|
||||
- [ ] Reverse proxy HTTPS même host pour `/` et `/web`
|
||||
- [ ] Création user `christophe`
|
||||
- [ ] Génération API key UI
|
||||
- [ ] Connexion UI
|
||||
- [ ] Génération preauth keys
|
||||
- [ ] Connexion des premières machines
|
||||
- [ ] Validation réseau
|
||||
- [ ] Durcissement ACL
|
||||
- [ ] Migration progressive hors Tailscale
|
||||
Reference in New Issue
Block a user