একটা মুহূর্ত আসে যখন ম্যানেজড PostgreSQL আর সুবিধাজনক থাকে না: আপনি এমন একটি এক্সটেনশন চান যা টিয়ার দেয় না, আপনি সত্যিকারের কোয়েরি প্ল্যান দেখতে ও work_mem টিউন করতে চান, আপনি সুপারইউজার চান। যখন আপনি Postgres-কে নিজের করতে চান — কনফিগ, সংস্করণ, এক্সটেনশন, ব্যাকআপ সময়সূচি — তখন পূর্ণ root সহ একটি VPS হলো সৎ উত্তর। এটি PostgreSQL-নির্দিষ্ট সেটআপ; বিস্তৃত «ডেটাবেস সেল্ফ-হোস্ট করুন» ছবির (Postgres বনাম Redis, কোথায় শেয়ার্ড মেশিন ভুল) জন্য সাধারণ ডেটাবেস ইউজ-কেস দেখুন।
কেন PostgreSQL সেল্ফ-হোস্ট করবেন
আপনার নিজের মেশিনে আপনি তা পান যা ম্যানেজড টিয়ার রেশন করে দেয়:
- পুরো
postgresql.conf—shared_buffers,work_mem,max_connections, WAL সেটিংস, ভেন্ডর ডিফল্ট নয়, আপনার ওয়ার্কলোড অনুযায়ী টিউন করা। - যেকোনো এক্সটেনশন। এমবেডিংয়ের জন্য
pgvector, জিওস্পেশিয়ালের জন্যPostGIS, টাইম সিরিজের জন্যTimescaleDB,pg_cron,pg_stat_statements— যা দরকার ইনস্টল করুন। এখানেই ম্যানেজড টিয়ার সবচেয়ে বেশি না বলে। - আপনার মেজর সংস্করণ, প্রোভাইডারের নয়, আপনার সময়সূচিতে আপগ্রেড।
- সুপারইউজার আর নিচের OS — ডেটা ডিরেক্টরি সরান, কার্নেল টিউন করুন, দ্বিতীয় মেশিনে স্ট্রিমিং রেপ্লিকেশন চালান।
pgvector যদি আপনার এখানে আসার কারণ হয়, লক্ষ করুন Postgres-প্লাস-pgvector হলো এক মেশিনে একটি পূর্ণ ভেক্টর স্টোর — সেল্ফ-হোস্টেড RAG স্ট্যাক আর এজেন্ট মেমরির পেছনে থাকা সেই একই বিল্ডিং ব্লক।
এটি সেট আপ করুন (Ubuntu 24.04, Docker)
# docker-compose.yml — PostgreSQL 16 (+ pgvector via the pgvector image)
services:
db:
image: pgvector/pgvector:pg16
restart: always
environment:
POSTGRES_USER: app
POSTGRES_PASSWORD: change-me-strong
POSTGRES_DB: app
command: ["postgres", "-c", "shared_buffers=512MB", "-c", "work_mem=32MB"]
volumes: ["/srv/pg:/var/lib/postgresql/data"]
ports: ["127.0.0.1:5432:5432"] # localhost only; see below to expose safely
docker compose up -d
docker compose exec db psql -U app -c "CREATE EXTENSION IF NOT EXISTS vector;"
127.0.0.1-এ বাঁধা, এটি একই মেশিনের একটি অ্যাপকে সেবা দেয়, কিছুই উন্মুক্ত না করে। অন্য সার্ভারদের ঢুকতে দিতে, সেটা পরের অংশ।
অন্য সার্ভারদের সংযোগ করতে দেওয়া — নিরাপদে
যে মুহূর্তে অন্য একটি মেশিনের ডেটাবেস দরকার হয়, দুটো জিনিস বদলায়:
- একটি স্থিতিশীল, রাউটযোগ্য ঠিকানা — একটি ডেডিকেটেড-IPv4 প্ল্যান (Small-IP $16, Medium-IP $20)। NAT প্ল্যান একটি আউটবাউন্ড IP শেয়ার করে, আউটবাউন্ডের জন্য ঠিক আছে কিন্তু অন্যরা যে ডেটাবেসে ডায়াল করে সেটা হওয়ার জন্য নয়।
- কঠোর ফায়ারওয়াল। 5432 শুধু নির্দিষ্ট ক্লায়েন্ট IP-র জন্য খুলুন, কখনও
0.0.0.0/0নয়, আর TLS বাধ্যতামূলক করুন। পাবলিক ইন্টারনেটে খোলা একটি Postgres পোর্ট মিনিটের মধ্যে খুঁজে পাওয়া যায় — একটি UFW ফায়ারওয়াল দিয়ে লক করুন।
ব্যাকআপ আপনার কাজ
সেল্ফ-হোস্টিং মানে ব্যাকআপ আপনার ওপর, আর নিয়ম হলো: দরকার পড়ার আগেই করুন। লজিক্যাল ব্যাকআপের জন্য cron-এ pg_dump, বা আপনি যা পরোয়া করেন তার পয়েন্ট-ইন-টাইম রিকভারির জন্য WAL আর্কাইভিং। ডাম্প মেশিনের বাইরে পাঠান, আর অন্তত একবার একটি রিস্টোর পরীক্ষা করুন — যে ব্যাকআপ আপনি কখনও রিস্টোর করেননি সেটা একটা আশা, ব্যাকআপ নয়। নিজে চালাতে না চাইলে একটি ম্যানেজড-ব্যাকআপ অ্যাড-অন আছে।
PostgreSQL-এর জন্য কেন EQVPS
- পূর্ণ root, সুপারইউজার, আপনার কনফিগ — $8/মাস থেকে, NVMe (RAID1) যা একটি ডেটাবেস আর তার WAL একসঙ্গে লেখার সময়ই কাজে লাগে।
- কোনো KYC নেই, ক্রিপ্টো পেমেন্ট। নিবন্ধনে ইমেল, পেমেন্টে USDC/USDT।
- EU (জার্মানি, ফিনল্যান্ড), ~60 সেকেন্ডে root। আপনার স্কিমা আনুন আর এগোন।
সাধারণ ডেটাবেস ইউজ-কেস (Postgres/Redis সংক্ষিপ্ত চিত্র) → · স্কেলে সেল্ফ-হোস্টেড RAG →
মন্তব্য
এখনো কোনো মন্তব্য নেই। প্রথম হোন।