EQVPS

Docker Compose voor AI-agents: een volledige zelf-gehoste stack op één VPS

6 sep 2026 · 3 min lezen · EQVPS Team

Een AI-agent is zelden een enkel proces. Er is de agent-lus zelf, een vectoropslag voor geheugen, een cache, meestal een database voor status, en misschien een klein dashboard. Elk daarvan met de hand draaien — ze starten, herstarten na een reboot, onthouden welke poort welke is — wordt snel vervelend. Docker Compose beschrijft het hele geval in één bestand en draait het met één commando. Dit is de copy-paste-stack om een agent netjes op een VPS te zetten.

Wil je alleen de deploy-zonder-Docker-versie, dan behandelt de gids een AI-agent 24/7 draaien in plaats daarvan systemd. Deze pagina is de container-native versie.

De stack

Een typische zelf-gehoste agent wil vier dingen naast zich: het agent-proces, Qdrant (vectorgeheugen), Redis (cache / queues) en Postgres (status). Hier is een docker-compose.yml die dat allemaal draait, met interne diensten weg van het openbare internet:

# /opt/agent/docker-compose.yml
services:
  agent:
    build: .                      # your agent image (or image: your/agent:latest)
    restart: unless-stopped
    env_file: [.env]              # OPENAI/ANTHROPIC keys etc. — never in this file
    environment:
      QDRANT_URL: http://qdrant:6333
      REDIS_URL: redis://redis:6379
      DATABASE_URL: postgres://agent:${DB_PASSWORD}@postgres:5432/agent
    depends_on: [qdrant, redis, postgres]
    # no ports: — this agent only makes outbound calls. Publish one only if it serves webhooks.

  qdrant:
    image: qdrant/qdrant:latest
    restart: unless-stopped
    volumes: ["qdrant:/qdrant/storage"]   # internal only — not published

  redis:
    image: redis:7-alpine
    restart: unless-stopped
    command: ["redis-server", "--save", "60", "1"]
    volumes: ["redis:/data"]

  postgres:
    image: postgres:16-alpine
    restart: unless-stopped
    environment:
      POSTGRES_USER: agent
      POSTGRES_PASSWORD: ${DB_PASSWORD}
      POSTGRES_DB: agent
    volumes: ["pg:/var/lib/postgresql/data"]

volumes: { qdrant: {}, redis: {}, pg: {} }

Secrets leven in .env, niet in het compose-bestand:

# /opt/agent/.env  (chmod 600, never committed)
ANTHROPIC_API_KEY=sk-ant-...
DB_PASSWORD=a-long-random-string

Breng hem omhoog:

apt update && apt install -y docker.io docker-compose-v2
systemctl enable --now docker
cd /opt/agent && docker compose up -d
docker compose logs -f agent

Elke interne dienst (Qdrant, Redis, Postgres) is alleen op het compose-netwerk bereikbaar via de dienstnaam — geen ervan is gepubliceerd op het internet. De agent praat met ze over dat privénetwerk, en niets op die poorten kijkt naar de wereld.

De details die ertoe doen

Het deel dat echt van ons is: de agent kan zijn eigen machine bouwen

Omdat EQVPS een MCP-server biedt, kan een agent die deze stack draait zelf een andere schone VPS provisioneren — hem bestellen, root krijgen, afbreken — betaald vanuit een prepaid crypto-saldo. Een compose-stack die een verse sandbox nodig heeft kan er een opstarten zonder mens in de lus.

Waarom EQVPS voor een gedockeriseerde agent

VPS voor AI-agents (het overzicht) → · VPS voor Docker → · Een vector-DB voor agentgeheugen hosten →

FAQ

Waarom een AI-agent met Docker Compose draaien in plaats van kale processen?

Een agent is zelden één proces — het is de agent-lus plus een vectoropslag, een cache en meestal een database. Compose beschrijft de hele stack in één bestand, brengt alles omhoog met één commando, herstart elk onderdeel bij een crash of reboot, en houdt interne diensten (Postgres, Redis, Qdrant) op een privénetwerk zodat alleen wat je kiest wordt blootgesteld. Het is de netste manier om een agent met bewegende delen zelf te hosten.

Welk plan heeft een agent-stack nodig?

Voor een API-gebaseerde agent (het model draait bij je provider) is de stack licht — de agent-lus, Qdrant, Redis en Postgres passen comfortabel op onze Small ($8/mnd) of het AI-Agent-plan ($10/mnd, 4 GB). Je hebt alleen meer RAM nodig als je een grote vectorindex in geheugen houdt of een lokaal model draait, wat een andere, zwaardere opzet is.

Waar zet ik de API-sleutels — in het compose-bestand?

Nee. Houd secrets in een .env-bestand (git-genegeerd) en verwijs ernaar als omgevingsvariabelen in compose, of gebruik Docker secrets. Commit nooit sleutels in docker-compose.yml. Bind interne diensten alleen aan het compose-netwerk; publiceer alleen de poort van de agent (of niets, als hij alleen uitgaande calls maakt).

Komen de containers terug na een reboot?

Alleen als je het ze zegt. Zet restart: unless-stopped (of always) op elke dienst en schakel Docker in bij het opstarten; dan overleeft docker compose up -d reboots en crashes. Zonder herstartbeleid blijft een container uit na het herstarten van de server.

Vragen jullie om KYC of een kaart?

Nee. Een e-mail om je aan te melden, betalen in USDC of USDT — geen documenten, geen kaart. Root in ongeveer een minuut.

← Terug naar blogBekijk plannen & prijzen →

Reacties

Nog geen reacties. Wees de eerste.

Laat een reactie achter

Reacties worden gemodereerd voordat ze verschijnen.