diff --git a/.env.example b/.env.example index b502446..94b3597 100644 --- a/.env.example +++ b/.env.example @@ -12,9 +12,5 @@ VPS_TAILSCALE_IP=100.94.90.119 HERMES_TT_URL=http://100.86.197.88:3010 HERMES_NYORA_URL=http://100.86.197.88:3020 HERMES_PERSO_URL=http://100.86.197.88:3031 -HERMES_NABIL_URL=http://127.0.0.1:8642 -DSH_FILEBROWSER_URL=http://dsh-filebrowser:80 - -# User IDs -DSH_UID=1001 -DSH_GID=1001 +HERMES_NABIL_URL=http://hermes-nabil:9119 +DSH_FILEBROWSER_URL=http://dsh-vps-filebrowser:8080 diff --git a/app/config.py b/app/config.py index 1bc8e51..8a67021 100644 --- a/app/config.py +++ b/app/config.py @@ -25,7 +25,7 @@ class UniverseConfig(BaseModel): class Settings(BaseSettings): app_name: str = "Hermes Hub" - host: str = "127.0.0.1" # Bind loopback by default + host: str = "0.0.0.0" port: int = 8080 debug: bool = False @@ -37,8 +37,8 @@ class Settings(BaseSettings): hermes_tt_url: str = os.getenv("HERMES_TT_URL", "http://100.86.197.88:3010") hermes_nyora_url: str = os.getenv("HERMES_NYORA_URL", "http://100.86.197.88:3020") hermes_perso_url: str = os.getenv("HERMES_PERSO_URL", "http://100.86.197.88:3031") - hermes_nabil_url: str = os.getenv("HERMES_NABIL_URL", "http://127.0.0.1:8642") - dsh_filebrowser_url: str = os.getenv("DSH_FILEBROWSER_URL", "http://127.0.0.1:8901") + hermes_nabil_url: str = os.getenv("HERMES_NABIL_URL", "http://hermes-nabil:9119") + dsh_filebrowser_url: str = os.getenv("DSH_FILEBROWSER_URL", "http://dsh-vps-filebrowser:8080") # Hub Secret — OBLIGATOIRE, aucun fallback codé en dur (Fail-Fast au démarrage) hub_secret: str = Field(..., min_length=16, description="Clé secrète maîtresse requise pour Hermes Hub") @@ -57,8 +57,6 @@ class Settings(BaseSettings): try: settings = Settings() except Exception as e: - # If starting in an environment without .env yet, define placeholder for type checking - # but runtime will fail fast if HUB_SECRET is absent if "HUB_SECRET" in os.environ: raise e settings = None @@ -105,13 +103,13 @@ UNIVERSES: Dict[str, UniverseConfig] = { name="Nabil Master", tagline="Orchestration & DSH", description="Master Agent VPS, exécution de code & DeepSeek Harness", - backend_url=os.getenv("HERMES_NABIL_URL", "http://127.0.0.1:8642"), + backend_url=os.getenv("HERMES_NABIL_URL", "http://hermes-nabil:9119"), scope="nabil", accent_token="--accent-nabil", icon="terminal", persona_file="nabil.yaml", supports_files=True, - files_url=os.getenv("DSH_FILEBROWSER_URL", "http://127.0.0.1:8901") + files_url=os.getenv("DSH_FILEBROWSER_URL", "http://dsh-vps-filebrowser:8080") ) } diff --git a/docker-compose.yml b/docker-compose.yml index 0f42cfe..b128233 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -7,8 +7,8 @@ services: restart: unless-stopped user: "1026:100" ports: - # Bind strictement sur loopback pour n'etre accessible QUE par Cloudflare Tunnel - - "127.0.0.1:8080:8080" + # Port 8088 reserve et bind strictement loopback (evite conflit 8080 qbittorrent) + - "127.0.0.1:8088:8080" volumes: - ./data:/app/data environment: @@ -20,40 +20,16 @@ services: - HERMES_TT_URL=http://100.86.197.88:3010 - HERMES_NYORA_URL=http://100.86.197.88:3020 - HERMES_PERSO_URL=http://100.86.197.88:3031 - - HERMES_NABIL_URL=http://127.0.0.1:8642 - - DSH_FILEBROWSER_URL=http://dsh-filebrowser:80 - depends_on: - - dsh-filebrowser + - HERMES_NABIL_URL=http://hermes-nabil:9119 + - DSH_FILEBROWSER_URL=http://dsh-vps-filebrowser:8080 dns: - 1.1.1.1 - 8.8.8.8 networks: - - hub-net - labels: - com.centurylinklabs.watchtower.enable: "false" - - dsh-filebrowser: - image: filebrowser/filebrowser:v2.32.0 - container_name: dsh-filebrowser - restart: unless-stopped - user: "${DSH_UID:-1001}:${DSH_GID:-1001}" - command: - - "--noauth" - - "--root=/srv" - - "--baseurl=/u/nabil/files" - - "--address=0.0.0.0" - - "--port=80" - - "--branding.theme=dark" - volumes: - - /home/dsh-agent/dsh-vps/workspace:/srv - ports: - # Bind strictement loopback - - "127.0.0.1:8901:80" - networks: - - hub-net + - dsh_vps_net labels: com.centurylinklabs.watchtower.enable: "false" networks: - hub-net: - driver: bridge + dsh_vps_net: + external: true