EQVPS

Docker Compose för AI-agenter: en fullständig självhostad stack på en VPS

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

En AI-agent är sällan en enda process. Det finns agentloopen själv, en vektorlagring för minne, en cache, oftast en databas för tillstånd, och kanske en liten dashboard. Att köra var och en för hand — starta dem, starta om dem efter en reboot, komma ihåg vilken port som är vilken — blir snabbt tröttsamt. Docker Compose beskriver hela alltet i en fil och kör det med ett kommando. Detta är kopiera-och-klistra-stacken för att sätta en agent på en VPS på ett snyggt sätt.

Om du bara vill ha deploy-utan-Docker-versionen täcker guiden köra en AI-agent dygnet runt systemd i stället. Denna sida är den container-nativa versionen.

Stacken

En typisk självhostad agent vill ha fyra saker bredvid sig: agentprocessen, Qdrant (vektorminne), Redis (cache / köer) och Postgres (tillstånd). Här är en docker-compose.yml som kör allt det, med interna tjänster hållna borta från det publika 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: {} }

Hemligheter bor i .env, inte compose-filen:

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

Dra upp den:

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

Varje intern tjänst (Qdrant, Redis, Postgres) är nåbar bara på compose-nätverket via tjänstenamnet — ingen av dem är publicerad till internet. Agenten pratar med dem över det privata nätverket, och inget på de portarna vetter mot världen.

Detaljerna som spelar roll

Delen som faktiskt är vår: agenten kan bygga sin egen maskin

Eftersom EQVPS erbjuder en MCP-server kan en agent som kör den här stacken tillhandahålla ytterligare en ren VPS på egen hand — beställa den, få root, riva den — och betala från ett förbetalt krypto-saldo. En compose-stack som behöver en ny sandbox kan dra upp en utan människa i loopen.

Varför EQVPS för en dockeriserad agent

VPS för AI-agenter (översikten) → · VPS för Docker → · Hosta en vektor-DB för agentminne →

FAQ

Varför köra en AI-agent med Docker Compose i stället för nakna processer?

En agent är sällan bara en process — det är agentloopen plus en vektorlagring, en cache och oftast en databas. Compose beskriver hela stacken i en fil, drar upp allt med ett kommando, startar om varje del vid krasch eller reboot, och håller interna tjänster (Postgres, Redis, Qdrant) på ett privat nätverk så att bara det du väljer exponeras. Det är det snyggaste sättet att självhosta en agent med rörliga delar.

Vilket plan behöver en agent-stack?

För en API-baserad agent (modellen kör hos din leverantör) är stacken lätt — agentloopen, Qdrant, Redis och Postgres får rum bekvämt på vår Small ($8/mån) eller AI-Agent-planen ($10/mån, 4 GB). Du behöver bara mer RAM om du håller ett stort vektorindex i minnet eller kör en lokal modell, vilket är en annan, tyngre uppsättning.

Var lägger jag API-nycklarna — i compose-filen?

Nej. Håll hemligheter i en .env-fil (git-ignorerad) och referera dem som miljövariabler i compose, eller använd Docker secrets. Committa aldrig nycklar till docker-compose.yml. Bind interna tjänster enbart till compose-nätverket; publicera bara agentens port (eller ingen alls, om den bara gör utgående anrop).

Kommer containrarna tillbaka efter en omstart?

Bara om du säger till dem. Sätt restart: unless-stopped (eller always) på varje tjänst och aktivera Docker vid uppstart; då överlever docker compose up -d omstarter och krascher. Utan en omstartspolicy stannar en container nere efter att servern startats om.

Kräver ni KYC eller kort?

Nej. En e-post för att registrera dig, betalning i USDC eller USDT — inga dokument, inget kort. Root på ungefär en minut.

← Tillbaka till bloggenSe planer & priser →

Kommentarer

Inga kommentarer än. Bli först.

Lämna en kommentar

Kommentarer modereras innan de visas.