EQVPS

Docker Compose til AI-agenter: en komplet selv-hostet stak på én VPS

6. sep. 2026 · 3 min. læsning · EQVPS Team

En AI-agent er sjældent en enkelt proces. Der er selve agentloopet, et vektorlager til hukommelse, en cache, som regel en database til tilstand, og måske et lille dashboard. At køre hver af dem i hånden — starte dem, genstarte dem efter et reboot, huske hvilken port er hvilken — bliver hurtigt trættende. Docker Compose beskriver det hele i én fil og kører det med én kommando. Dette er copy-paste-stakken til at sætte en agent på en VPS på den ryddelige måde.

Vil du kun have deploy-uden-Docker-versionen, dækker guiden kør en AI-agent 24/7 systemd i stedet. Denne side er den container-native version.

Stakken

En typisk selv-hostet agent vil have fire ting ved sin side: agentprocessen, Qdrant (vektorhukommelse), Redis (cache / køer) og Postgres (tilstand). Her er en docker-compose.yml, der kører det hele, med interne tjenester holdt væk fra det offentlige 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: {} }

Hemmeligheder bor i .env, ikke i compose-filen:

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

Kør den op:

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

Hver intern tjeneste (Qdrant, Redis, Postgres) er kun nåbar compose-netværket via tjenestenavnet — ingen af dem er udgivet til internettet. Agenten taler med dem over det private netværk, og intet på de porte vender mod verden.

Detaljerne, der betyder noget

Delen, der faktisk er vores: agenten kan bygge sin egen maskine

Fordi EQVPS udstiller en MCP-server, kan en agent, der kører denne stak, selv tilvejebringe endnu en ren VPS — bestille den, få root, rive den ned — betalt fra en forudbetalt krypto-saldo. En compose-stak, der har brug for en frisk sandkasse, kan køre en op uden et menneske i loopet.

Hvorfor EQVPS til en Dockeriseret agent

VPS til AI-agenter (oversigten) → · VPS til Docker → · Host en vektor-DB til agenthukommelse →

FAQ

Hvorfor køre en AI-agent med Docker Compose i stedet for nøgne processer?

En agent er sjældent bare én proces — det er agentloopet plus et vektorlager, en cache og som regel en database. Compose beskriver hele stakken i én fil, kører det hele op med én kommando, genstarter hver del ved nedbrud eller reboot, og holder interne tjenester (Postgres, Redis, Qdrant) på et privat netværk, så kun det, du vælger, eksponeres. Det er den ryddeligste måde at selv-hoste en agent med bevægelige dele.

Hvilket plan behøver en agent-stak?

Til en API-baseret agent (modellen kører hos din udbyder) er stakken let — agentloopet, Qdrant, Redis og Postgres passer bekvemt på vores Small (8 $/md.) eller AI-Agent-planen (10 $/md., 4 GB). Du behøver kun mere RAM, hvis du holder et stort vektorindeks i hukommelsen eller kører en lokal model, hvilket er en anden, tungere opsætning.

Hvor lægger jeg API-nøglerne — i compose-filen?

Nej. Hold hemmeligheder i en .env-fil (git-ignoreret) og referér dem som miljøvariabler i compose, eller brug Docker secrets. Commit aldrig nøgler til docker-compose.yml. Bind interne tjenester kun til compose-netværket; udgiv kun agentens port (eller ingen, hvis den kun laver udgående kald).

Kommer containerne tilbage efter et reboot?

Kun hvis du siger det. Sæt restart: unless-stopped (eller always) på hver tjeneste og aktivér Docker ved boot; så overlever docker compose up -d reboots og nedbrud. Uden en genstartspolitik forbliver en container nede efter serveren genstarter.

Beder I om KYC eller kort?

Nej. En e-mail for at tilmelde dig, betaling i USDC eller USDT — ingen dokumenter, intet kort. Root på cirka et minut.

← Tilbage til blogSe planer & priser →

Kommentarer

Ingen kommentarer endnu. Vær den første.

Skriv en kommentar

Kommentarer modereres, før de vises.