একটি AI এজেন্ট খুব কমই একটিমাত্র প্রসেস। আছে এজেন্ট লুপ নিজেই, মেমরির জন্য একটি ভেক্টর স্টোর, একটি ক্যাশ, সাধারণত স্টেটের জন্য একটি ডেটাবেস, এবং হয়তো একটি ছোট ড্যাশবোর্ড। এদের প্রতিটি হাতে চালানো — শুরু করা, রিবুটের পর আবার তোলা, কোন পোর্ট কোনটা মনে রাখা — দ্রুত ক্লান্তিকর হয়ে ওঠে। Docker Compose পুরো ব্যাপারটি একটি ফাইলে বর্ণনা করে ও একটি কমান্ডে চালায়। এটি একটি এজেন্টকে VPS-এ পরিপাটিভাবে রাখার কপি-পেস্ট স্ট্যাক।
আপনি যদি শুধু Docker-ছাড়া ডিপ্লয় সংস্করণ চান, AI এজেন্ট 24/7 চালানোর গাইড এর বদলে 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 তখনই যোগ করুন যখন এটি webhook বা ড্যাশবোর্ড সার্ভ করে।
- কোর নয়, মেমরির হিসাবে আকার নিন। API-নির্ভর এজেন্ট হালকা। Qdrant-এর ইনডেক্স বড় হলে বা লোকাল মডেল যোগ করলে — তখনই উপরে ওঠেন — দেখুন এজেন্টের জন্য হাই-মেমরি VPS।
যে অংশটি আসলে আমাদের: এজেন্ট নিজের মেশিন বানাতে পারে
যেহেতু EQVPS একটি MCP সার্ভার প্রকাশ করে, এই স্ট্যাক চালানো একটি এজেন্ট নিজেই আরেকটি পরিষ্কার VPS প্রভিশন করতে পারে — অর্ডার করা, root পাওয়া, মুছে ফেলা — একটি প্রিপেইড ক্রিপ্টো ব্যালেন্স থেকে পেমেন্ট করে। যে compose স্ট্যাকের একটি নতুন স্যান্ডবক্স দরকার, সে লুপে কোনো মানুষ ছাড়াই একটি তুলতে পারে।
Docker-চালিত এজেন্টের জন্য কেন EQVPS
- পরিষ্কার ইমেজ, ~60 সেকেন্ডে root। Ubuntu/Debian;
docker compose upআর স্ট্যাক লাইভ। - কোনো KYC নেই, ক্রিপ্টোতে পেমেন্ট। রেজিস্টারে ইমেল, পেমেন্টে USDC/USDT — কিছুই মেশিনকে আপনার পরিচয়ে বাঁধে না।
- NVMe + আনমিটারড 1 Gbit/s, EU (জার্মানি/ফিনল্যান্ড)। ইমেজ টানা ও লগ পাঠানো কোনো অবাক-করা বিল তৈরি করবে না।
AI এজেন্টের জন্য VPS (অবলোকন) → · Docker-এর জন্য VPS → · এজেন্ট মেমরির জন্য ভেক্টর DB হোস্ট করুন →
মন্তব্য
এখনো কোনো মন্তব্য নেই। প্রথম হোন।