PostgreSQL 설치는 명령 하나면 됩니다. 사람들이 실수하는 곳은 원격 접속입니다. 5432 포트를 전 세계에 열고 비밀번호를 설정한 다음, 로그가 왜 로그인 시도로 가득한지 의아해합니다. 이 가이드는 Ubuntu 24.04에 Postgres를 설치하고, 데이터베이스를 만들고, 외부에서 연결하는 안전한 방법 두 가지를 보여 줍니다.
1. 설치
apt update && apt install -y postgresql
systemctl status postgresql --no-pager
Ubuntu 24.04에서는 PostgreSQL 16입니다. 기본적으로 localhost에서만 수신합니다. 특별한 이유가 없다면 그대로 두세요.
2. 사용자와 데이터베이스 만들기
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로 연결합니다.
3. 노트북에서 연결하기: 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 같은 GUI 도구에는 같은 일을 하는 “SSH 터널” 탭이 있습니다.
4. 다른 서버의 직접 접속(허용 목록)
다른 곳에 있는 애플리케이션 서버가 직접 연결해야 한다면 그 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 패키지에는 자체 서명 인증서가 들어 있으므로 클라이언트는 sslmode=require로 연결해야 합니다.
5. 합리적인 첫 설정
RAM 2 GB 서버라면 postgresql.conf에서:
shared_buffers = 512MB
effective_cache_size = 1536MB
work_mem = 8MB
변경 후 재시작하세요. 대부분의 작은 앱에는 이 정도면 충분하고, 실제 쿼리를 보고 나서 조정하면 됩니다.
6. 백업
매일 밤 덤프를 뜨고 일주일 동안 보관합니다.
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가 서버 전체의 일일 복원 지점을 더해 줍니다.
댓글
아직 댓글이 없습니다. 첫 번째가 되세요.