VPS上にMongoDBインスタンスを作成する方法

VPS(Virtual Private Server)上にMongoDBをデプロイすることで、データベースインフラストラクチャを完全に制御でき、パフォーマンス、柔軟性、データ主権を重視する開発者、スタートアップ、組織に最適です。このガイドでは、VPS上にMongoDBをインストール、構成、セキュリティ設定、最適化するための高度な手順を説明します。

🛠️ ステップ1: システムを更新する

sudo apt update && sudo apt upgrade -y

ホスト名とタイムゾーンを設定します:

hostnamectl set-hostname mongodb-server
timedatectl set-timezone UTC

📦 ステップ2: MongoDBをインストールする

1. MongoDB GPGキーをインポートする

wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo gpg --dearmor -o /usr/share/keyrings/mongodb-server-6.0.gpg

2. MongoDBリポジトリを追加する

echo "deb [ signed-by=/usr/share/keyrings/mongodb-server-6.0.gpg ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list

注: Ubuntu 22.04を使用している場合は、focaljammyまたはあなたのバージョンに置き換えてください。

3. MongoDBをインストールする

sudo apt update
sudo apt install -y mongodb-org

🧪 ステップ3: MongoDBを起動して有効にする

sudo systemctl start mongod
sudo systemctl enable mongod

ステータスを確認します:

sudo systemctl status mongod

🔐 ステップ4: MongoDBサーバーをセキュリティ設定する

デフォルトでは、MongoDBは127.0.0.1にバインドされています。リモートアクセスを希望する場合:

1. 設定を編集する

sudo nano /etc/mongod.conf

net:の下にあるbindIp行を見つけて、修正します:

bindIp: 127.0.0.1,0.0.0.0

2. 認証を有効にする

security:セクションの下に、次を追加します:

security:
authorization: enabled

MongoDBを再起動します:

sudo systemctl restart mongod

👤 ステップ5: 管理ユーザーを作成する

MongoDBシェルにアクセスします:

mongosh

管理ユーザーを作成します:

use admin
db.createUser({
user: "admin",
pwd: "StrongPassword123!",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
})

exitで終了し、その後ログインをテストします:

mongosh -u admin -p --authenticationDatabase admin

🛡️ ステップ6: VPSとMongoDBを強化する

1. UFWファイアウォール

sudo ufw allow OpenSSH
sudo ufw allow 27017/tcp
sudo ufw enable

単一のIPからのリモートアクセスの場合:

sudo ufw allow from YOUR.IP.ADDRESS to any port 27017

2. Fail2Ban(SSH保護)

sudo apt install fail2ban -y
sudo systemctl enable fail2ban

⚙️ ステップ7: 高度な最適化(オプション)

1. 高可用性のためのレプリカセット

/etc/mongod.confを修正します:

replication:
replSetName: "rs0"

初期化します:

mongosh
rs.initiate()

2. バックアップ戦略

バックアップにはmongodumpを使用します:

mongodump --out /var/backups/mongodb/$(date +%F)

cronで自動化します:

crontab -e
# Daily at 2 AM
0 2 * * * /usr/bin/mongodump --out /var/backups/mongodb/$(date +%F)

3. 暗号化された接続のためにTLS/SSLを使用する

証明書を生成し、net.sslセクションをmongod.confに設定します。これには、より多くの設定と信頼できる証明書機関(CA)が必要です。

🧪 ステップ8: デプロイメントをテストする

リモート接続をテストできます:

mongosh "mongodb://admin:StrongPassword123!@your-server-ip:27017/admin"

your-server-ipをあなたのVPSのIPまたはドメイン名に置き換えてください。

📊 ステップ9: MongoDBを監視する

次のようなツールを検討してください:

  • MongoDB Atlas Monitoring Agent(オプション)

  • Prometheus + Grafanaとエクスポータ

  • cronとlogwatchによるカスタムアラート

ログを直接監視することもできます:

sudo tail -f /var/log/mongodb/mongod.log

✅ 最終チェックリスト

  • MongoDBがインストールされ、実行中

  • リモートアクセスがセキュリティ設定されている

  • 管理者認証が強制されている

  • ファイアウォールが設定されている

  • バックアップが整っている

  • オプションの監視が有効になっている

🧩 結論

VPS上でMongoDBを実行することで、比類のない柔軟性を得ることができますが、セキュリティ、バックアップ、パフォーマンスに注意を払う必要があります。このガイドに従うことで、セキュアで本番環境に適したMongoDBインスタンスを作成し、アプリケーションの成長に合わせてスケールできる準備が整いました。