SPB Git

Repository Public

operations.md 4.4 KB 85 lines markdown

1# SP Drive — exploitation23Nœud : **m5ma** (épinglé). Répertoire : `~/apps/sp-drive` (clone git, source de vérité). Données : `~/sp-drive-data`.4Clé maîtresse : `~/.config/sp-drive/master.key`. Sauvegardes : `~/backups/sp-drive`. Sur le nœud, toujours5`export PATH=/opt/homebrew/bin:$PATH` (les sessions ssh non interactives n'ont pas `pm2`).67## Processus PM289| Nom | Rôle |10|---|---|11| `sp-drive` | API + web, port 8660 |12| `sp-drive-worker` | antivirus, aperçus, portails, ménage |13| `sp-drive-clamd` | démon ClamAV (socket `~/sp-drive-data/run/clamd.sock`) |14| `sp-drive-freshclam` | mise à jour des signatures toutes les 6 h |15| `sp-drive-backup` | sauvegarde nocturne à 03 h 40 |1617Variables à passer aux commandes manuelles (elles sont dans l'environnement PM2, pas dans le shell) :1819```20cd ~/apps/sp-drive21export DATABASE_URL=postgres://127.0.0.1/sp_drive SPD_ORIGIN=https://drive.spboucher.ai SPD_RP_ID=drive.spboucher.ai22```2324## Santé2526- `curl -s localhost:8660/api/v1/health/ready` → `{ok, db, storage, antivirus}` ; 503 si l'un manque.27- Dans l'application : Administration → État du système (espace disque, file de travaux, travaux en échec).28- Journaux : `pm2 logs sp-drive --lines 100` (JSON ; les jetons des URL publiques y sont remplacés par `[redacted]`).2930## Mettre à jour3132```33cd ~/apps/sp-drive && git pull && pnpm install --frozen-lockfile && pnpm build34pm2 restart sp-drive sp-drive-worker        # redémarrer l'API seulement après la fin du build web35git push                                     # si la modification a été faite sur le nœud36```3738Les migrations s'appliquent au démarrage. Avant une version qui en contient : `zsh scripts/backup.sh`.39Retour arrière : `git checkout <commit précédent> && pnpm build && pm2 restart …` ; si une migration doit être40annulée : `node dist/cli.mjs migrate-down --yes-drop-data` **après sauvegarde** (elle supprime les tables de la41migration ; pour `001_init` cela signifie tout).4243## Comptes4445- Première invitation ou invitation de secours : `node dist/cli.mjs invite --email <adresse> --admin` → lien à usage unique (72 h).46- Propriétaire sans passkey ni code de récupération : `node dist/cli.mjs reset-access --email <adresse>` → un code de47  récupération ; ses sessions sont révoquées et le TOTP retiré. À n'utiliser qu'après vérification de l'identité.4849## Sauvegarde et restauration5051`scripts/backup.sh` : copie incrémentale des objets chiffrés, puis dump PostgreSQL chiffré avec la clé maîtresse52(30 derniers conservés). `SPD_BACKUP_REMOTE=hôte:chemin` ajoute une copie par rsync.5354**La clé maîtresse n'est pas dans la sauvegarde.** Sans elle, ni les objets ni les dumps ne sont lisibles. Copies à55tenir : dossier de secrets du propriétaire + un support hors ligne.5657Test de restauration (ne touche pas la production) : `zsh scripts/restore-test.sh` → restaure le dernier dump dans58une base temporaire, déchiffre et re-hache chaque objet, affiche `RESTORE TEST OK`.5960Restauration réelle sur un nœud neuf :61621. `mld prepare <nœud>` ; installer `postgresql@17 clamav ffmpeg` et LibreOffice.632. Recopier `~/backups/sp-drive` et la clé maîtresse (`~/.config/sp-drive/master.key`, mode 600).643. `createdb sp_drive` ; `openssl enc -d -aes-256-ctr -pbkdf2 -iter 200000 -pass file:$HOME/.config/sp-drive/master.key -in <dump> | pg_restore --no-owner -d sp_drive`.654. `rsync -a ~/backups/sp-drive/blobs/ ~/sp-drive-data/blobs/`.665. Déployer l'application (`mld deploy sp-drive --node <nœud>` après avoir changé `placement.pin`), puis `node dist/cli.mjs verify --deep`.6768## Antivirus6970- État : `pm2 logs sp-drive-clamd --lines 20` ; signatures : `ls -l ~/sp-drive-data/clamav-db`.71- Si `clamd` est arrêté, les dépôts des portails restent en quarantaine (statut « analyse en cours ») et sont repris72  automatiquement à son retour ; les fichiers du propriétaire restent « en attente d'analyse ».7374## Rotation de la clé maîtresse7576`node dist/cli.mjs rotate-master-key` (ré-enveloppe les clés de données, les fichiers ne sont pas réécrits), puis77`pm2 restart sp-drive sp-drive-worker`, puis **sauvegarder la nouvelle clé** et refaire `scripts/backup.sh`. Les dumps78antérieurs restent chiffrés avec l'ancienne clé (`master.key.previous`) : la conserver tant qu'ils existent.7980## Ne pas faire8182- `mld move sp-drive` : les données et la clé ne suivent pas.83- Supprimer `~/sp-drive-data/blobs` ou la clé maîtresse.84- Modifier une copie de l'application ailleurs que sur le nœud.85
Files main
Menu

Theme