EQVPS

AI এজেন্টের জন্য Docker Compose: একটি VPS-এ সম্পূর্ণ সেল্ফ-হোস্টেড স্ট্যাক

Sep 6, 2026 · 3 মিনিট পড়া · EQVPS Team

একটি 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 নেটওয়ার্কে সার্ভিস নামে পৌঁছানো যায় — কোনোটিই ইন্টারনেটে প্রকাশিত নয়। এজেন্ট সেই প্রাইভেট নেটওয়ার্কের মধ্য দিয়ে তাদের সঙ্গে কথা বলে, আর সেই পোর্টগুলোর কিছুই বাইরের দিকে মুখ করা নেই।

যে বিস্তারিত গুরুত্বপূর্ণ

যে অংশটি আসলে আমাদের: এজেন্ট নিজের মেশিন বানাতে পারে

যেহেতু EQVPS একটি MCP সার্ভার প্রকাশ করে, এই স্ট্যাক চালানো একটি এজেন্ট নিজেই আরেকটি পরিষ্কার VPS প্রভিশন করতে পারে — অর্ডার করা, root পাওয়া, মুছে ফেলা — একটি প্রিপেইড ক্রিপ্টো ব্যালেন্স থেকে পেমেন্ট করে। যে compose স্ট্যাকের একটি নতুন স্যান্ডবক্স দরকার, সে লুপে কোনো মানুষ ছাড়াই একটি তুলতে পারে।

Docker-চালিত এজেন্টের জন্য কেন EQVPS

AI এজেন্টের জন্য VPS (অবলোকন) → · Docker-এর জন্য VPS → · এজেন্ট মেমরির জন্য ভেক্টর DB হোস্ট করুন →

FAQ

নগ্ন প্রসেসের বদলে AI এজেন্ট Docker Compose দিয়ে কেন চালাব?

একটি এজেন্ট খুব কমই একটিমাত্র প্রসেস — এটি এজেন্ট লুপ প্লাস একটি ভেক্টর স্টোর, একটি ক্যাশ এবং সাধারণত একটি ডেটাবেস। Compose সম্পূর্ণ স্ট্যাক একটি ফাইলে বর্ণনা করে, সব একটি কমান্ডে তোলে, ক্র্যাশ বা রিবুটে প্রতিটি অংশ রিস্টার্ট করে, এবং অভ্যন্তরীণ সার্ভিস (Postgres, Redis, Qdrant) একটি প্রাইভেট নেটওয়ার্কে রাখে যাতে আপনি যা বেছে নেন কেবল তা-ই এক্সপোজ হয়। চলমান অংশযুক্ত এজেন্ট সেল্ফ-হোস্ট করার এটি সবচেয়ে পরিপাটি উপায়।

একটি এজেন্ট স্ট্যাকের কোন প্ল্যান দরকার?

API-নির্ভর এজেন্টের (মডেল আপনার প্রোভাইডারে চলে) জন্য স্ট্যাক হালকা — এজেন্ট লুপ, Qdrant, Redis ও Postgres আমাদের Small ($8/মাস) বা AI-Agent প্ল্যান ($10/মাস, 4 GB)-এ স্বচ্ছন্দে ধরে। বেশি RAM শুধু তখন দরকার যখন আপনি মেমরিতে একটি বড় ভেক্টর ইনডেক্স রাখেন বা একটি লোকাল মডেল চালান, যা একটি আলাদা, ভারী সেটআপ।

API কী কোথায় রাখব — compose ফাইলে?

না। সিক্রেট একটি .env ফাইলে রাখুন (git-ignored) এবং compose-এ এগুলো এনভায়রনমেন্ট ভেরিয়েবল হিসেবে রেফার করুন, বা Docker secrets ব্যবহার করুন। কী কখনো docker-compose.yml-এ কমিট করবেন না। অভ্যন্তরীণ সার্ভিস কেবল compose নেটওয়ার্কে বাঁধুন; কেবল এজেন্টের পোর্ট প্রকাশ করুন (বা কিছুই না, যদি এটি শুধু আউটবাউন্ড কল করে)।

কন্টেইনার কি রিবুটের পর ফিরে আসে?

শুধু আপনি বললে। প্রতিটি সার্ভিসে restart: unless-stopped (বা always) সেট করুন ও বুটে Docker চালু করুন; তখন docker compose up -d রিবুট ও ক্র্যাশ টিকে থাকে। রিস্টার্ট নীতি ছাড়া সার্ভার রিস্টার্টের পর কন্টেইনার বন্ধ থাকে।

আপনারা কি KYC বা কার্ড চান?

না। সাইন আপে একটি ইমেল, USDC বা USDT-তে পেমেন্ট — কোনো নথি নয়, কোনো কার্ড নয়। প্রায় এক মিনিটে root।

← ব্লগে ফিরুনপ্ল্যান ও মূল্য দেখুন →

মন্তব্য

এখনো কোনো মন্তব্য নেই। প্রথম হোন।

একটি মন্তব্য দিন

মন্তব্য প্রকাশের আগে মডারেট করা হয়।