Files
sans.pub/CLAUDE.md

3.7 KiB

Serveur sans.pub

Lorsque tu interroges le serveur, ne lances que des commandes en LECTURE SEULE (non destructrices). Sauf à la demande explicite de l'utilisateur.

Accès

Infrastructure

  • OS: Debian 9 (kernel 4.9.0-12-amd64)
  • Docker: 19.03.12 (mode Swarm)
  • Disque: 914 Go total, ~193 Go utilisés (23%)
  • RAM: 23 Go (~6 Go utilisés, swap quasi vide — vérifié 2026-02-19)

Structure Caprover

  • /captain/data/ - données persistantes
  • /captain/generated/ - configs générées
  • /captain/temp/ - fichiers temporaires

Services actifs (~40 services)

Outils collaboratifs

  • etherpad - éditeur collaboratif
  • ethercalc - tableur collaboratif
  • cryptpad - suite bureautique chiffrée
  • nextcloud - cloud personnel

Développement

  • gitea - forge Git
  • adminer - gestion BDD

Communication

  • writefreely - blog
  • peertube - vidéos
  • rss + rss-bridge - flux RSS

Sécurité/Outils

  • bitwarden - gestionnaire mots de passe
  • privatebin - partage de texte chiffré
  • ots - secrets temporaires
  • it-tools - boîte à outils
  • cyberchef - manipulation de données

Sites perso

  • pierre-martin - site perso
  • sans-pub-site - site principal
  • une-espace - autre projet

Enquêtes

  • limesurvey - sondages

Services en erreur

Aucun service en erreur connu (vérifié 2026-02-19). mail tourne correctement (1/1, poste.io).

Commandes et skills Claude

Commande

  • /supervision - analyse complète de la santé du serveur (invocation manuelle)

Skill (auto-activé)

  • caprover - gestion des apps via API CapRover
    • list : lister les apps
    • info NOM : détails d'une app
    • env NOM : variables d'environnement
    • scale NOM N : changer le nombre d'instances
    • restart NOM : redémarrer une app

Prérequis : définir CAPROVER_PASSWORD dans .env (voir .envrc)

Suivi des tâches

Voir todo.txt (format todo.txt standard)

Mettre à jour une app CapRover

TOUJOURS passer par l'API CapRover — jamais via docker service update directement (CapRover ne le verrait pas).

Procédure

  1. Login (obtenir un token) :
import urllib.request, json

data = json.dumps({'password': 'CAPROVER_PASSWORD'}).encode()
req = urllib.request.Request('https://captain.cloud.sans.pub/api/v2/login', data=data, headers={'Content-Type': 'application/json'}, method='POST')
with urllib.request.urlopen(req) as r:
    token = json.loads(r.read().decode())['data']['token']
  1. Déployer une nouvelle image :
headers = {'Content-Type': 'application/json', 'x-captain-auth': token, 'x-namespace': 'captain'}
captain_def = json.dumps({'schemaVersion': 2, 'imageName': 'IMAGE:TAG'})
payload = json.dumps({'appName': 'NOM_APP', 'captainDefinitionContent': captain_def, 'gitHash': ''}).encode()
req = urllib.request.Request('https://captain.cloud.sans.pub/api/v2/user/apps/appData/NOM_APP', data=payload, headers=headers, method='POST')
with urllib.request.urlopen(req) as r:
    print(r.read().decode())  # {"status":100,"description":"Deploy is done"}

Note : curl a un problème d'encodage dans cet environnement — utiliser python3 à la place.

Commandes utiles

# Voir les logs d'un service
ssh cloud@sans.pub "docker service logs srv-captain--NOM --tail 100"

# Espace disque des volumes
ssh cloud@sans.pub "docker system df -v"

# Nettoyer les images inutilisées
ssh cloud@sans.pub "docker image prune -a"

Attention

  • Debian 9 est obsolète (fin de support LTS)
  • RAM : surveiller si ajout de nouveaux services (mail = 1,78 Go, scenari = 862 Mo)