Files
_Assistant_Lead_Tech/knowledge/infra/risques/tailscale.md
T
MaksTinyWorkshop ef24d85d57 capitalisation: triage 95_a_capitaliser + création domaine infra
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.
2026-06-25 10:31:22 +02:00

2.3 KiB


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.


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.


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