マネージド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——データディレクトリを移動し、カーネルを調整し、2台目のマシンへストリーミングレプリケーションを実行。
pgvectorがここに来た理由なら、Postgres足すpgvectorは1台のマシン上の完全なベクトルストアであることに注目してください——セルフホストの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にバインドされ、何も公開せずに同じマシン上のアプリに提供します。他のサーバーを入れるには、それが次のセクションです。
他のサーバーを接続させる——安全に
別のマシンがデータベースを必要とした瞬間、2つのことが変わります。
- 安定してルーティング可能なアドレス——専用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から、データベースとそのWALが同時に書き込むと効いてくるNVMe(RAID1)。
- KYCなし、暗号通貨支払い。 登録にメール、支払いにUSDC/USDT。
- EU(ドイツ、フィンランド)、約60秒でroot。スキーマを持ち込んで始めましょう。
コメント
まだコメントはありません。最初になりましょう。