PostgreSQL একটি কমান্ডে ইনস্টল হয়। মানুষ ভুল করেন রিমোট প্রবেশে: পোর্ট 5432 সারা বিশ্বের জন্য খুলে দেন, পাসওয়ার্ড বসান, তারপর অবাক হন লগ কেন লগইনের চেষ্টায় ভরা। এই গাইড Ubuntu 24.04-এ Postgres ইনস্টল করে, একটি ডেটাবেস তৈরি করে এবং বাইরে থেকে যুক্ত হওয়ার দুটি নিরাপদ উপায় দেখায়।
১. ইনস্টল
apt update && apt install -y postgresql
systemctl status postgresql --no-pager
Ubuntu 24.04-এ এটি PostgreSQL 16। ডিফল্টভাবে এটি শুধু localhost-এ শোনে; কোনো কারণ না থাকলে এভাবেই রাখুন।
২. একজন ব্যবহারকারী আর একটি ডেটাবেস তৈরি করুন
sudo -u postgres psql <<'SQL'
CREATE USER app WITH PASSWORD 'use-a-long-random-password';
CREATE DATABASE appdb OWNER app;
SQL
একই সার্ভারের অ্যাপগুলো postgresql://app:PASSWORD@localhost:5432/appdb দিয়ে যুক্ত হয়।
৩. ল্যাপটপ থেকে যুক্ত হন: SSH টানেল (প্রস্তাবিত)
কিছু খুলতে হবে না, সার্ভারে কিছু কনফিগার করতে হবে না। টানেলটি SSH-এর মাধ্যমে একটি লোকাল পোর্ট ফরওয়ার্ড করে:
ssh -N -L 5433:localhost:5432 root@203.0.113.10
NAT প্ল্যানে প্যানেল থেকে আপনার ব্যক্তিগত SSH পোর্ট যোগ করুন:
ssh -N -p 20123 -L 5433:localhost:5432 root@your-nat-host
টানেল চালু থাকা অবস্থায় আপনার ডেটাবেস ক্লায়েন্টকে localhost:5433-এর দিকে নির্দেশ করুন। SSH সবকিছু এনক্রিপ্ট করে আর পোর্ট 5432 ইন্টারনেটের জন্য বন্ধ থাকে। DBeaver আর pgAdmin-এর মতো গ্রাফিক্যাল টুলে একটি “SSH টানেল” ট্যাব থাকে যা একই কাজ করে।
৪. অন্য সার্ভারের জন্য সরাসরি প্রবেশ (অনুমতি তালিকা)
অন্য কোথাও থাকা কোনো অ্যাপ সার্ভারকে সরাসরি যুক্ত হতে হলে শুধু তার IP-কে অনুমতি দিন। এর জন্য ডেটাবেস সার্ভারকে ডেডিকেটেড IP-সহ প্ল্যানে থাকতে হবে, কারণ NAT প্ল্যান SSH ছাড়া কোনো আসা সংযোগ গ্রহণ করে না।
/etc/postgresql/16/main/postgresql.conf-এ:
listen_addresses = '*'
/etc/postgresql/16/main/pg_hba.conf-এর শেষে:
hostssl appdb app 198.51.100.20/32 scram-sha-256
শুধু ওই একটি ঠিকানার জন্য ফায়ারওয়াল খুলুন এবং রিস্টার্ট করুন:
ufw allow from 198.51.100.20 to any port 5432 proto tcp
systemctl restart postgresql
hostssl এনক্রিপ্টেড সংযোগ বাধ্যতামূলক করে; Ubuntu প্যাকেজে একটি self-signed সার্টিফিকেট থাকে, তাই ক্লায়েন্টদের sslmode=require দিয়ে যুক্ত হওয়া উচিত।
৫. যুক্তিসঙ্গত প্রাথমিক সেটিংস
2 GB RAM-এর সার্ভারের জন্য, postgresql.conf-এ:
shared_buffers = 512MB
effective_cache_size = 1536MB
work_mem = 8MB
পরিবর্তনের পর রিস্টার্ট করুন। বেশিরভাগ ছোট অ্যাপের জন্য এটুকুই যথেষ্ট; আসল কোয়েরি দেখার পর সূক্ষ্মভাবে টিউন করুন।
৬. ব্যাকআপ
প্রতি রাতে একটি ডাম্প, এক সপ্তাহ রাখা হয়:
mkdir -p /var/backups/pg && chown postgres /var/backups/pg
cat > /etc/cron.d/pg-backup <<'EOF'
30 3 * * * postgres pg_dump -Fc appdb > /var/backups/pg/appdb-$(date +\%u).dump
EOF
-Fc একটি সংকুচিত ডাম্প তৈরি করে, যা pg_restore দিয়ে রিস্টোর করা হয়। ডাম্পগুলো সার্ভারের বাইরেও কপি করুন; Managed Backups পুরো মেশিনের দৈনিক রিস্টোর পয়েন্ট যোগ করে।
মন্তব্য
এখনো কোনো মন্তব্য নেই। প্রথম হোন।