یک عامل هوش مصنوعی بهندرت یک پروسهٔ واحد است. خودِ حلقهٔ عامل هست، یک ذخیرهسازِ برداری برای حافظه، یک کش، معمولاً یک پایگاه داده برای وضعیت، و شاید یک داشبورد کوچک. اجرای هرکدام از اینها با دست — شروعشان، ریاستارتشان پس از ریبوت، بهخاطرسپردنِ اینکه کدام پورت کدام است — سریع خستهکننده میشود. Docker Compose کل ماجرا را در یک فایل توصیف میکند و آن را با یک فرمان اجرا میکند. این همان استک کپی-پیست برای گذاشتن یک عامل روی VPS بهشکل تمیز است.
اگر فقط نسخهٔ استقرارِ بدون Docker را میخواهی، راهنمای اجرای عامل هوش مصنوعی بهصورت شبانهروزی بهجایش systemd را پوشش میدهد. این صفحه نسخهٔ کانتینر-نیتیو است.
استک
یک عامل خودمیزبانِ معمولی چهار چیز را در کنارش میخواهد: پروسهٔ عامل، Qdrant (حافظهٔ برداری)، Redis (کش / صفها) و Postgres (وضعیت). این یک docker-compose.yml است که همهٔ اینها را اجرا میکند، با سرویسهای داخلیِ نگهداشتهشده دور از اینترنت عمومی:
# /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: {} }
سکرتها در .env زندگی میکنند، نه در فایل compose:
# /opt/agent/.env (chmod 600, never committed)
ANTHROPIC_API_KEY=sk-ant-...
DB_PASSWORD=a-long-random-string
بالا بیاورش:
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
هر سرویس داخلی (Qdrant، Redis، Postgres) فقط روی شبکهٔ compose با نام سرویس قابلدسترسی است — هیچکدام به اینترنت منتشر نشدهاند. عامل از طریق آن شبکهٔ خصوصی با آنها حرف میزند و هیچ چیزی روی آن پورتها رو به دنیا ندارد.
جزئیاتی که مهماند
restart: unless-stoppedروی هر سرویس — همین است که از ریبوت یا کرش جان سالم بهدر میبرد. Docker را هنگام بوت فعال کن و کل استک خودش برمیگردد.- کلیدها در
.env، نه در YAML. بهصورت متغیرهای env به آنها ارجاع بده؛.envرا رویchmod 600و بیرون از git نگه دار. یک فایل compose لو رفته با کلید زنده اشتباهِ کلاسیک است. - هیچ چیزی را که مجبور نیستی منتشر نکن. عاملی که فقط API مدلها و سرویسهای خودش را صدا میزند اصلاً به پورت ورودی نیاز ندارد — پس یک طرح NAT کار میکند. IP اختصاصی را فقط وقتی اضافه کن که وبهوک یا داشبورد سرو میکند.
- بر اساس حافظه اندازه بگیر، نه هسته. عاملهای متکی بر API سبکاند. اگر ایندکس Qdrant بزرگ شود یا مدل محلی اضافه کنی، آن وقت است که بالا میروی — VPS پرحافظه برای عاملها را ببین.
بخشی که واقعاً مال ماست: عامل میتواند ماشین خودش را بسازد
چون EQVPS یک سرور MCP در اختیار میگذارد، عاملی که این استک را اجرا میکند میتواند خودش یک VPS تمیزِ دیگر تأمین کند — آن را سفارش دهد، root بگیرد، خرابش کند — با پرداخت از یک موجودیِ ارز دیجیتالِ پیشپرداخت. یک استک compose که به سندباکس تازه نیاز دارد میتواند بدون انسانی در حلقه یکی را بالا بیاورد.
چرا EQVPS برای یک عاملِ داکرایزشده
- ایمیجهای تمیز، root در ~۶۰ ثانیه. Ubuntu/Debian؛
docker compose upو استک زنده است. - بدون KYC، پرداخت با ارز دیجیتال. ایمیل برای ثبتنام، USDC/USDT برای پرداخت — هیچ چیزی ماشین را به هویت تو گره نمیزند.
- NVMe + ۱ گیگابیت بر ثانیهٔ بیشمارش، اتحادیهٔ اروپا (آلمان/فنلاند). کشیدن ایمیجها و فرستادن لاگها صورتحساب غافلگیرکننده نمیسازد.
VPS برای عاملهای هوش مصنوعی (نمای کلی) → · VPS برای Docker → · میزبانیِ پایگاه دادهٔ برداری برای حافظهٔ عامل →
نظرات
هنوز نظری نیست. اولین نفر باشید.