mirror of
https://github.com/Alkatrazz24/Funk-lab.git
synced 2026-07-08 09:44:42 +02:00
* feat(wireguard): accès distant au lab via VPN (Freebox 51820/udp → s01) - rôle wireguard : serveur wg0 (10.99.0.0/24) sur storage-01, profils clients générés dans /etc/wireguard/clients/ (fichier .conf / QR code) - gateway : filtrage nftables par pair — full (tout le lab) / portal (uniquement Traefik :80 = portail Guacamole), masquerade VPN→cluster - dnsmasq : bind-dynamic + écoute wg0 → *.lab.local résolu dans le tunnel - pairs initiaux : alkatrazz (full), invite-01 (portal) - vault : clés WireGuard + reprise de l'archive Authentik (remplace #78) - doc : admin/infra/wireguard.md (onboarding pair, pièges, exploitation) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * feat(portal): accès Internet direct — kaya.freeboxos.fr:9080 Choix simplicité (2026-07-07) : exposition directe du portail plutôt que le VPN (WireGuard reste déployé mais dormant, sans redirection Freebox). - gateway : DNAT 9080/tcp → Traefik (192.168.10.200:80) + rate-limit 30 connexions neuves/min sur le trafic Internet (LAN non concerné) - IngressRoute guacamole : host kaya.freeboxos.fr accepté - Guacamole : formulaire local en premier ("*, openid") — l'accès externe passe par des comptes locaux, Authentik n'est pas exposé (SSO = LAN) - doc : section « Accès externe » dans admin/k8s/auth-portal.md Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> --------- Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
87 lines
3.1 KiB
YAML
87 lines
3.1 KiB
YAML
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: guacamole
|
|
namespace: auth
|
|
spec:
|
|
replicas: 1
|
|
selector:
|
|
matchLabels:
|
|
app: guacamole
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app: guacamole
|
|
spec:
|
|
containers:
|
|
- name: guacamole
|
|
image: guacamole/guacamole:1.6.0
|
|
ports:
|
|
- containerPort: 8080
|
|
env:
|
|
- name: GUACD_HOSTNAME
|
|
value: "guacd"
|
|
- name: GUACD_PORT
|
|
value: "4822"
|
|
# Base sur storage-01 (schéma posé par le Job guacamole-initdb)
|
|
- name: POSTGRESQL_HOSTNAME
|
|
value: "192.168.10.1"
|
|
- name: POSTGRESQL_DATABASE
|
|
value: "guacamole"
|
|
- name: POSTGRESQL_USERNAME
|
|
value: "guacamole"
|
|
- name: POSTGRESQL_PASSWORD
|
|
valueFrom:
|
|
secretKeyRef:
|
|
name: guacamole-secret
|
|
key: pg-password
|
|
# Les comptes venant d'Authentik sont créés automatiquement dans la base
|
|
# (sinon un utilisateur OIDC arrive sans aucune connexion assignable)
|
|
- name: POSTGRESQL_AUTO_CREATE_ACCOUNTS
|
|
value: "true"
|
|
# Servir sur / plutôt que /guacamole
|
|
- name: WEBAPP_CONTEXT
|
|
value: "ROOT"
|
|
# --- SSO OIDC → Authentik (app « guacamole » à créer dans l'UI Authentik) ---
|
|
# Endpoints navigateur : via l'IngressRoute ; JWKS : appel serveur→serveur,
|
|
# on passe par le Service interne pour ne pas dépendre du DNS lab.local des pods
|
|
- name: OPENID_AUTHORIZATION_ENDPOINT
|
|
value: "http://auth.lab.local/application/o/authorize/"
|
|
- name: OPENID_JWKS_ENDPOINT
|
|
value: "http://authentik.auth.svc.cluster.local:9000/application/o/guacamole/jwks/"
|
|
- name: OPENID_ISSUER
|
|
value: "http://auth.lab.local/application/o/guacamole/"
|
|
- name: OPENID_CLIENT_ID
|
|
value: "guacamole"
|
|
- name: OPENID_REDIRECT_URI
|
|
value: "http://portail.lab.local/"
|
|
- name: OPENID_USERNAME_CLAIM_TYPE
|
|
value: "preferred_username"
|
|
- name: OPENID_SCOPE
|
|
value: "openid profile email"
|
|
# Formulaire local en premier : requis pour l'accès Internet
|
|
# (kaya.freeboxos.fr:9080 — comptes locaux Guacamole, Authentik n'étant
|
|
# pas exposé). Le lien « OpenID » reste dispo pour le SSO depuis le LAN.
|
|
- name: EXTENSION_PRIORITY
|
|
value: "*, openid"
|
|
- name: TZ
|
|
value: "Europe/Paris"
|
|
resources:
|
|
requests:
|
|
cpu: 200m
|
|
memory: 512Mi
|
|
limits:
|
|
cpu: 1000m
|
|
memory: 1Gi
|
|
readinessProbe:
|
|
httpGet:
|
|
path: /
|
|
port: 8080
|
|
initialDelaySeconds: 30
|
|
periodSeconds: 15
|
|
livenessProbe:
|
|
httpGet:
|
|
path: /
|
|
port: 8080
|
|
initialDelaySeconds: 60
|
|
periodSeconds: 30
|