mirror of
https://github.com/MaksTinyWorkshop/_Assistant_Lead_Tech
synced 2026-06-28 01:53:40 +02:00
ef24d85d57
Triage des 27 propositions du buffer de capitalisation (skill capitalisation-triage), avec vérification des doublons contre la base. Intégré dans knowledge/ (23 entrées): - backend: redis (compensation incrBy non-atomique), nestjs (injection cassée sous tsx watch; guard write mode dégradé), async (test rollback pipeline multi-fichiers), contracts (idempotence POST), auth (disclosure comptes soft-deleted), prisma (index partial soft-delete), llm-providers (nouveau: OAuth vs API key, prompt caching). - frontend: tests (garde-fous parking Later), navigation (fichiers non-route sous src/app Expo Router), general (type client vs payload backend), state (fallback catch-all mapping DB→UI). - workflow: story-tracking (statut BMAD vs narratif obsolète). - product: general (nouveau: doc feature store sans UI). - infra: NOUVEAU DOMAINE (traefik, tailscale, docker, docker-networking, reverse-proxy-paths, sidecar tailscale) + 00_INDEX.md. Autres: - 90_debug_et_postmortem.md: post-mortem réseau Docker partagé hors compose. - Rejeté 3 doublons (types enum contracts, getter PrismaService, $transaction). - Buffer 95_a_capitaliser.md purgé et restauré à son état initial. - _projects.conf: MAJ statuts epics + ajout app-rl799.
59 lines
2.3 KiB
Markdown
59 lines
2.3 KiB
Markdown
---
|
|
title: Infra — Risques & vigilance : Tailscale
|
|
domain: infra
|
|
bucket: risques
|
|
tags: [tailscale, cert, magicdns, tls, letsencrypt, systemd]
|
|
applies_to: [architecture, implementation, debug]
|
|
severity: medium
|
|
validated_on: 2026-06-25
|
|
source_projects: [_Assistant_Cuisine]
|
|
---
|
|
|
|
# Infra — Risques & vigilance : Tailscale
|
|
|
|
> Extrait de la base de connaissance Lead_tech. Voir `knowledge/infra/risques/README.md` pour l'index complet.
|
|
|
|
---
|
|
|
|
<a id="risque-tailscale-cert-fqdn-exact"></a>
|
|
## `tailscale cert` ne couvre QUE le FQDN exact du host
|
|
|
|
### Risques
|
|
|
|
- `tailscale cert <fqdn>` génère un certificat Let's Encrypt valide **uniquement** pour le FQDN passé, qui doit être le hostname Tailscale du device courant (ex. `nuc.wyvern-snapper.ts.net`). Toute attente de sous-domaines ou de wildcard est fausse.
|
|
|
|
### Symptômes
|
|
|
|
- Sous-domaines arbitraires (`cuisine.nuc.wyvern-snapper.ts.net`) : pas de cert auto, et MagicDNS ne route pas non plus.
|
|
- Wildcard : non supporté.
|
|
- FQDN d'un autre device : non couvert.
|
|
|
|
### Bonnes pratiques / mitigations
|
|
|
|
Pour un reverse-proxy multi-apps, deux options :
|
|
|
|
- **Path-based routing** sous le FQDN unique (`/cuisine`, `/code`, etc.) — voir `knowledge/infra/patterns/reverse-proxy-paths.md`.
|
|
- **Vrai domaine** avec challenge DNS-01 (Cloudflare, OVH, etc.) côté Traefik pour obtenir des sous-domaines réels.
|
|
|
|
**Règle** : `tailscale cert` est OK pour un homelab qui sert tout sous un seul FQDN avec routing par path. Pour des sous-domaines réels, prévoir un domaine perso.
|
|
|
|
---
|
|
|
|
<a id="risque-tailscale-cert-renouvellement"></a>
|
|
## `tailscale cert` nécessite un renouvellement périodique
|
|
|
|
### Risques
|
|
|
|
- Le cert est valide ~3 mois (Let's Encrypt). Sans renouvellement automatisé, expiration silencieuse → TLS cassé sur toutes les apps servies sous ce FQDN.
|
|
|
|
### Symptômes
|
|
|
|
- Erreur de certificat expiré côté navigateur après ~90 j sans intervention.
|
|
|
|
### Bonnes pratiques / mitigations
|
|
|
|
- **Pattern** : systemd timer hebdomadaire qui appelle `tailscale cert --cert-file ... --key-file ...` sur le FQDN du host. `tailscale cert` est **idempotent** et ne renouvelle qu'à moins de 30 j de la fin — aucun coût à le lancer souvent.
|
|
- Le reverse proxy doit watcher le fichier pour reload auto (le file provider de Traefik le fait nativement).
|
|
|
|
- Contexte technique : Tailscale cert / MagicDNS / systemd — _Assistant_Cuisine 04-05-2026
|