Files
nas-runbooks/common/dsh-vps-procedure.md
T

4.2 KiB

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 :
      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 :
      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 :
      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 :

    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 :

    cd /home/dsh-agent/dsh-vps && docker compose build --no-cache dsh-vps
    
  4. Recréation du conteneur :

    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