Aller au contenu

Bonnes pratiques

Secrets

  • Jamais dans git, même dans un repo privé : .env, clés, tokens, mots de passe vont dans .gitignore.
  • Sur le serveur, ils vivent dans un fichier chmod 600 hors du repo (par exemple /etc/<projet>/env), chargé par le service systemd.
  • Dans la documentation, on écrit où est rangé un secret, jamais sa valeur.
  • Un secret qui a été commité doit être considéré comme fuité : on le change, le supprimer de l'historique ne suffit pas.

Accès GitHub depuis une CT

  • Une deploy key en lecture seule par repo, générée dans la CT. Jamais une clé liée à un compte personnel.
  • Si une deploy key a besoin d'écrire (premier push par exemple), retirer le droit d'écriture juste après.

Avant de toucher à quelque chose

  • pct snapshot <CTID> <nom_explicite> avant une intervention risquée, et pct delsnapshot une fois validé : un snapshot oublié occupe de la place indéfiniment.
  • Les commandes longues (apt, copies de gros fichiers) se lancent avec nohup ou dans un tmux, pour survivre à une coupure SSH.

Données

  • Les gros volumes (médias, bases importées, fichiers générés) vont dans un dataset ZFS monté dans la CT, pas dans son disque système. Voir Créer une CT.
  • Les logs doivent être limités en taille (logrotate, ou journald) : une appli qui écrit un fichier de log par démarrage peut remplir un disque.

Sécurité

  • CT non privilégiées par défaut. Jamais de lxc.apparmor.profile: unconfined ni de lxc.cgroup2.devices.allow: a sans en avoir discuté.
  • Rien n'est exposé directement sur Internet : les sites passent par Nginx en HTTPS, les jeux par une redirection de port décidée avec l'admin.
  • Une appli doit tourner sous un utilisateur dédié dès que possible, pas en root.

Mises à jour

  • apt update && apt full-upgrade régulièrement dans chaque CT.
  • Une version de Debian qui n'est plus supportée se monte de version, elle ne se garde pas « tant que ça marche ».

Documenter

  • Une procédure générique (comment faire X) : ici, dans ce site public.
  • L'état réel (ce qui tourne où, ses problèmes, ses accès) : dans le repo privé de l'infra.
  • Chaque CT a une description dans Proxmox : à quoi elle sert, qui s'en occupe, où est son code.