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
restart: unless-stoppedpå varje tjänst — det är det som överlever en reboot eller krasch. Aktivera Docker vid uppstart och hela stacken kommer tillbaka av sig själv.- Nycklar i
.env, inte i YAML. Referera dem som env-variabler; håll.envpåchmod 600och utanför git. En läckt compose-fil med en giltig nyckel är det klassiska misstaget. - Publicera inget du inte måste. En agent som bara anropar modell-API:er och sina egna tjänster behöver ingen inkommande port alls — så ett NAT-plan fungerar. Lägg till en dedikerad IP bara om den betjänar webhooks eller en dashboard.
- Dimensionera efter minne, inte kärnor. API-baserade agenter är lätta. När Qdrants index växer eller du lägger till en lokal modell, då går du upp — se högminnes-VPS för agenter.
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
- Rena avbildningar, root på ~60 sekunder. Ubuntu/Debian;
docker compose upoch stacken är igång. - Ingen KYC, betalning i krypto. E-post för att registrera dig, USDC/USDT för att betala — inget knyter maskinen till din identitet.
- NVMe + omätad 1 Gbit/s, EU (Tyskland/Finland). Att dra avbildningar och skicka loggar ger ingen överraskningsräkning.
VPS för AI-agenter (översikten) → · VPS för Docker → · Hosta en vektor-DB för agentminne →
Kommentarer
Inga kommentarer än. Bli först.