feat(veille): extension du suivi versions au VPS Contabo et mise a jour DSH/FileBrowser
This commit is contained in:
@@ -0,0 +1,85 @@
|
||||
# DeepSeek Harness (DSH) VPS & FileBrowser — Guide d'Exploitation et MAJ
|
||||
|
||||
Ce document décrit la structure, la configuration et la procédure de mise à jour de la stack **DeepSeek Harness (`dsh-vps`)** et de son compagnon **FileBrowser (`dsh-vps-filebrowser`)** hébergés sur le VPS Contabo (`100.94.90.119`).
|
||||
|
||||
---
|
||||
|
||||
## 1. Architecture et Composants
|
||||
|
||||
```
|
||||
/home/dsh-agent/dsh-vps/
|
||||
├── Dockerfile # node:20-bookworm-slim + @deepseek-ai/dsh pinné + inkstone + patch 0.0.0.0
|
||||
├── docker-compose.yml # Services: dsh-proxy, dsh-vps, dsh-filebrowser
|
||||
├── entrypoint.sh # Script de démarrage dsh-web-app
|
||||
├── nginx.conf # Proxy inverse TLS + Basic Auth (ports 8900 et 8901)
|
||||
├── auth/ # .htpasswd, credentials.txt
|
||||
├── certs/ # Certificats auto-signés TLS
|
||||
└── backups/ # Sauvegardes dsh_vps_home
|
||||
```
|
||||
|
||||
### Services et Ports
|
||||
| Service | Conteneur | Port Interne | Port Public / Tailscale | Auth | Description |
|
||||
|---|---|---|---|---|---|
|
||||
| `dsh-proxy` | `dsh-vps-proxy` | 8900 / 8901 | `100.94.90.119:8900` / `8901` | Basic Auth | Proxy TLS Nginx unifié |
|
||||
| `dsh-vps` | `dsh-vps` | 3080 | Réseau Docker `dsh_vps_net` | Proxy 8900 | Instance DSH Web UI & Agent |
|
||||
| `dsh-filebrowser` | `dsh-vps-filebrowser` | 8080 | Réseau Docker `dsh_vps_net` | Proxy 8901 | Explorateur de fichiers workspace |
|
||||
|
||||
---
|
||||
|
||||
## 2. Points d'Attention & Pièges Techniques
|
||||
|
||||
1. **Version DSH dans Dockerfile** :
|
||||
- La version est explicitement fixée dans le `Dockerfile` à la ligne `RUN npm install -g @deepseek-ai/dsh@<version> @banlan/inkstone`.
|
||||
- Ne jamais utiliser `@latest` sans vérifier les breaking changes.
|
||||
|
||||
2. **Patch de binding `0.0.0.0` dans `startup.js`** :
|
||||
- Par défaut, `@deepseek-ai/dsh-web-app` interdit l'écoute sur `0.0.0.0` (erreur de sécurité native).
|
||||
- Dans le conteneur, l'écoute sur `0.0.0.0` est indispensable pour que le proxy Nginx (`dsh-vps-proxy`) puisse lui transférer les requêtes.
|
||||
- Le `Dockerfile` applique un patch obligatoire :
|
||||
```dockerfile
|
||||
RUN find /usr/local/lib/node_modules -name "startup.js" -path "*/@deepseek-ai/dsh-web-app/*" -exec sed -i 's/if (options.host === "0.0.0.0")/if (false \&\& options.host === "0.0.0.0")/' {} +
|
||||
```
|
||||
- **Vérification post-build impérative** :
|
||||
```bash
|
||||
docker exec dsh-vps sh -c 'grep -n "options.host" $(find /usr/local/lib/node_modules -name startup.js -path "*/@deepseek-ai/dsh-web-app/*")'
|
||||
```
|
||||
|
||||
3. **FileBrowser Entrypoint (`v2.63.23+`)** :
|
||||
- Depuis les versions récentes de l'image `filebrowser/filebrowser`, le binaire est localisé dans `/bin/filebrowser` (et non `/filebrowser`).
|
||||
- L'entrypoint officiel utilise `tini` et `/init.sh` qui tente d'écrire dans `/config` appartenant à `root`.
|
||||
- L'exécution avec `user: "1001:1001"` requiert de surcharger l'entrypoint :
|
||||
```yaml
|
||||
entrypoint: ["/bin/filebrowser"]
|
||||
command: ["--noauth", "-a", "0.0.0.0", "-p", "8080", "-r", "/srv", "-d", "/srv/.filebrowser.db"]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 3. Procédure de Mise à Jour DSH
|
||||
|
||||
1. **Sauvegarde préalable de `dsh_vps_home`** :
|
||||
```bash
|
||||
ssh -i ~/.ssh/vps_dsh_agent dsh-agent@100.94.90.119 \
|
||||
"docker run --rm -v dsh_vps_home:/source:ro -v /home/dsh-agent/dsh-vps/backups:/backup alpine \
|
||||
tar -czf /backup/dsh_vps_home-$(date +%Y%m%d-%H%M%S).tar.gz -C /source ."
|
||||
```
|
||||
|
||||
2. **Mise à jour du Dockerfile** :
|
||||
Modifier le tag de version dans `/home/dsh-agent/dsh-vps/Dockerfile`.
|
||||
|
||||
3. **Rebuild sans cache** :
|
||||
```bash
|
||||
cd /home/dsh-agent/dsh-vps && docker compose build --no-cache dsh-vps
|
||||
```
|
||||
|
||||
4. **Recréation du conteneur** :
|
||||
```bash
|
||||
docker compose up -d --force-recreate dsh-vps
|
||||
```
|
||||
|
||||
5. **Contrôles de conformité** :
|
||||
- Version binaire : `docker exec dsh-vps dsh --version`
|
||||
- Patch actif : `docker exec dsh-vps sh -c 'grep -n "options.host" $(find /usr/local/lib/node_modules -name startup.js -path "*/@deepseek-ai/dsh-web-app/*")'`
|
||||
- Écoute interne : `docker exec dsh-vps curl -s -o /dev/null -w '%{http_code}\n' http://127.0.0.1:3080`
|
||||
- Proxy HTTPS : `curl -sk -u "dsh-admin:..." https://100.94.90.119:8900`
|
||||
- Vérification Bifrost : `docker exec dsh-vps curl -s -H "Authorization: Bearer sk-bf-..." http://100.86.197.88:3086/v1/models`
|
||||
Reference in New Issue
Block a user