−25%

kwa Windows ya mwaka, hadi 31 Okt. Tazama mipango

EQVPS
Anza

Jinsi ya kusakinisha PostgreSQL kwenye VPS na kuunganika kwa usalama

Sakinisha PostgreSQL 16 kwenye Ubuntu, unda hifadhidata na mtumiaji, na uunganike kwa mbali bila kuanika bandari 5432 kwa intaneti: kwa handaki la SSH au orodha ya ruhusa.

PostgreSQL inasakinishwa kwa amri moja. Watu wanakosea kwenye ufikiaji wa mbali: wanafungua bandari 5432 kwa ulimwengu mzima, wanaweka nenosiri, kisha wanashangaa kwa nini logs zimejaa majaribio ya kuingia. Mwongozo huu unasakinisha Postgres kwenye Ubuntu 24.04, unaunda hifadhidata, na unaonyesha njia mbili salama za kuunganika kutoka nje.

1. Usakinishaji

apt update && apt install -y postgresql
systemctl status postgresql --no-pager

Kwenye Ubuntu 24.04 hii ni PostgreSQL 16. Kwa chaguo-msingi inasikiliza localhost pekee; iache hivyo isipokuwa una sababu.

2. Unda mtumiaji na hifadhidata

sudo -u postgres psql <<'SQL'
CREATE USER app WITH PASSWORD 'use-a-long-random-password';
CREATE DATABASE appdb OWNER app;
SQL

Programu kwenye seva hiyohiyo zinaunganika kwa postgresql://app:PASSWORD@localhost:5432/appdb.

3. Unganika kutoka laptop yako: handaki la SSH (linapendekezwa)

Hakuna cha kufungua, hakuna cha kusanidi kwenye seva. Handaki linapeleka bandari ya ndani kupitia SSH:

ssh -N -L 5433:localhost:5432 root@203.0.113.10

Kwenye mpango wa NAT ongeza bandari yako binafsi ya SSH kutoka kwenye paneli:

ssh -N -p 20123 -L 5433:localhost:5432 root@your-nat-host

Wakati handaki liko wazi, elekeza mteja wako wa hifadhidata kwenye localhost:5433. SSH inasimba kila kitu na bandari 5432 inabaki imefungwa kwa intaneti. Zana za picha kama DBeaver na pgAdmin zina kichupo cha «SSH tunnel» kinachofanya jambo hilohilo.

4. Ufikiaji wa moja kwa moja kwa seva nyingine (orodha ya ruhusa)

Ikiwa seva ya programu iliyo mahali pengine inahitaji kuunganika moja kwa moja, ruhusu IP yake pekee. Hili linahitaji seva ya hifadhidata iwe kwenye mpango wenye dedicated IP, kwa sababu mipango ya NAT haikubali muunganisho unaoingia isipokuwa SSH.

Kwenye /etc/postgresql/16/main/postgresql.conf:

listen_addresses = '*'

Mwishoni mwa /etc/postgresql/16/main/pg_hba.conf:

hostssl  appdb  app  198.51.100.20/32  scram-sha-256

Fungua firewall kwa anwani hiyo moja tu na uwashe upya:

ufw allow from 198.51.100.20 to any port 5432 proto tcp
systemctl restart postgresql

hostssl inalazimisha muunganisho uliosimbwa; kifurushi cha Ubuntu kinakuja na cheti self-signed, kwa hivyo wateja wanapaswa kuunganika kwa sslmode=require.

5. Mipangilio ya kuanzia ya busara

Kwa seva yenye RAM ya 2 GB, kwenye postgresql.conf:

shared_buffers = 512MB
effective_cache_size = 1536MB
work_mem = 8MB

Washa upya baada ya kubadilisha. Kwa programu nyingi ndogo hiyo inatosha; rekebisha kwa undani baada ya kuona maswali halisi.

6. Nakala za akiba

Dump kila usiku, inayohifadhiwa kwa wiki moja:

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 inaunda dump iliyobanwa inayorejeshwa kwa pg_restore. Nakili dumps nje ya seva pia; Managed Backups zinaongeza pointi za kurejesha za kila siku za mashine nzima.

Inayohusiana

Maswali

Je nifungue bandari 5432 kwa intaneti?

Ni bora usifungue. Bandari za hifadhidata zilizo wazi zinachunguzwa na kushambuliwa kwa kukisia nenosiri bila kukoma. Unganika kupitia handaki la SSH, au ikiwa seva ya programu inahitaji kuunganika moja kwa moja, ruhusu IP yake tu, kwenye pg_hba.conf na kwenye firewall.

Je naweza kutumia PostgreSQL kwenye mpango wa NAT?

Ndiyo. Programu kwenye seva hiyohiyo zinaunganika ndani, na wewe unafikia hifadhidata kutoka kwenye laptop yako kupitia handaki la SSH kwenye bandari yako binafsi ya SSH. Kile ambacho mpango wa NAT hauwezi ni kukubali muunganisho wa moja kwa moja unaoingia kwenye 5432 kutoka seva nyingine.

PostgreSQL inahitaji RAM kiasi gani?

Inaendeshwa kwa megabaiti mia chache na inatumia chochote unachoipa kama cache. Mahali pa kawaida pa kuanzia ni kuweka shared_buffers kuwa takriban 25% ya RAM. Kwa hifadhidata ya programu ndogo, seva yenye RAM ya 2 GB inatosha zaidi ya kutosha.

Nachukuaje nakala ya akiba ya hifadhidata?

Tumia pg_dump katika muundo maalum ('pg_dump -Fc') na uiendeshe kutoka cron. Hifadhi nakala nje ya seva pia. Managed Backups zinaongeza pointi za kurejesha za kila siku za seva nzima.

Nitapata toleo gani la PostgreSQL?

Ubuntu 24.04 inakuja na PostgreSQL 16, na Debian 12 na 15. Kwa toleo kubwa jipya zaidi, ongeza hifadhi rasmi ya apt ya PostgreSQL (apt.postgresql.org).

Maoni

Bado hakuna maoni. Kuwa wa kwanza.

Acha maoni

Maoni yanakaguliwa kabla ya kuonekana.