パブリッシング · KYC不要
Ghost をオフショアVPSでホスト
Ghostは高速でモダンなパブリッシングプラットフォームで、オフショアVPS上に数分でセルフホストでき、あなたの文章、購読者、そして決済をサードパーティのクラウドから切り離しておくことができます。
概要
Ghostはブログ、ニュースレター、会員制サイト向けに構築されたオープンソースのNode.js製CMSで、ネイティブのメール購読機能、有料プラン、そしてシンプルなMarkdownエディタを備えています。公式のDockerイメージとして提供され、MySQL 8をバックエンドに使用し、リバースプロキシの背後で専用ポート経由でサイトを配信します。
オフショアでホストする理由
no-KYCで暗号資産決済に対応したVPS上でGhostを運用すれば、あなたの出版物は本人確認と紐付けられたり、プラットフォームから排除されたり、要求に応じて引き渡されたりする可能性のあるアカウントに縛られることがありません。オフショアのプライバシー重視のロケーションと無制限の帯域幅により、ホスティングプロバイダーにあなたの言葉を検閲されることなく、コンテンツ、会員リスト、Stripeでの支払いを完全にコントロールし続けられます。
デプロイ
実際に動作するリファレンス構成
これを新しいChainVPSインスタンスにコピーしてください。プレースホルダーを置き換えてから起動します。
services:
ghost:
image: ghost:5-alpine
restart: always
ports:
# Bind to localhost only; terminate TLS in a reverse proxy (nginx/Caddy)
- "127.0.0.1:2368:2368"
environment:
url: https://blog.example.com
NODE_ENV: production
database__client: mysql
database__connection__host: db
database__connection__port: 3306
database__connection__user: ghost
database__connection__password: CHANGE_ME_DB_PASSWORD
database__connection__database: ghostdb
# Optional outbound SMTP for member/newsletter email:
# mail__transport: SMTP
# mail__options__host: smtp.example.com
# mail__options__port: 587
# mail__options__auth__user: [email protected]
# mail__options__auth__pass: CHANGE_ME_SMTP
volumes:
- ghost-content:/var/lib/ghost/content
depends_on:
- db
db:
image: mysql:8.0
restart: always
command: --default-authentication-plugin=caching_sha2_password
environment:
MYSQL_ROOT_PASSWORD: CHANGE_ME_ROOT_PASSWORD
MYSQL_DATABASE: ghostdb
MYSQL_USER: ghost
MYSQL_PASSWORD: CHANGE_ME_DB_PASSWORD
volumes:
- ghost-db:/var/lib/mysql
volumes:
ghost-content:
ghost-db:
# Deploy:
# apt-get update && apt-get install -y docker.io docker-compose-v2
# docker compose up -d
# Then point a reverse proxy (Caddy/nginx) at 127.0.0.1:2368 to add HTTPS,
# and set `url:` to your real https:// domain before first boot.
ファイアウォール
開放するポート
| ポート | プロトコル | 用途 |
|---|---|---|
| 2368 | TCP | Ghost HTTPアプリケーションポート - 127.0.0.1にバインドしたままリバースプロキシ経由で公開し、直接インターネットに公開しないこと |
| 443 | TCP | リバースプロキシ(Caddy/nginx)経由で公開するHTTPS |
| 80 | TCP | ACME/Let's Encrypt証明書の発行と443へのリダイレクト用HTTP |
| 3306 | TCP | MySQL - Docker内部ネットワーク専用。ホストに公開しないこと |
適正サイジング
必要なプラン
VPS Nano/Small (1-2 vCPU, 2 GB RAM)
個人ブログや小規模なニュースレターに最適。Ghost + MySQLは余裕を持って収まりますが、念のため1GBのswapを追加してください。
VPS Pro (2-4 vCPU, 4-8 GB RAM)
有料会員制度があり、画像を多用した投稿や定期的なメール配信を行うアクティブな出版物向け。MySQLキャッシュやトラフィックの急増にも余裕があります。
Dedicated(専用コア、16 GB以上のRAM、NVMe)
トラフィックの多いサイトや、大容量のメディアライブラリを持つ複数ブログ構成に。MySQLを分離し、メディアはキャッシュ経由で配信することで、レイテンシを安定させます。
最適なロケーション: 削除要求の圧力にかかわらずオンラインであり続ける必要がある出版物には、ChainVPSのプライバシー重視ロケーションを選んでください:アイスランド (IS)、スイス (CH)、ルーマニア (RO)、モルドバ (MD)、オランダ (NL)、またはルクセンブルク (LU)。CHとISは報道・言論の保護とプライバシー法が強力であり、NLとLUは画像やニュースレターを多用するサイト向けに、無制限の帯域幅でヨーロッパの読者層への低レイテンシなアクセスを提供します。
セキュリティを固める
セキュリティ強化チェックリスト
- ポート2368や3306を0.0.0.0に公開しないこと。Ghostは127.0.0.1にバインドしたままにし、MySQLはDocker内部ネットワークのみにとどめてください。サイトの公開はTLSリバースプロキシ経由のみに限定します(CaddyはLet's Encrypt証明書を自動発行します。あるいはnginx + certbotを使用してください)。
- 初回起動前に、`url` 環境変数を実際のhttps://ドメインに設定してください。GhostはURLをリソースリンクに組み込むため、後から変更するにはデータベースの更新とキャッシュのクリアが必要になります。
- 管理画面を保護してください:初回セットアップ時に長く一意なパスワードを設定し、固定の場所から運用している場合はプロキシ側で /ghost/ をIP許可リストまたはBasic認証で制限します。Ghost組み込みのスタッフ向け2FAも有効にしてください。
- 両方のボリュームを定期的にバックアップしてください:MySQLをダンプし(`docker compose exec db mysqldump -u ghost -p ghostdb`)、画像やテーマを保持するコンテンツボリューム(`/var/lib/ghost/content`)をアーカイブします。暗号化したバックアップはChainVPSのストレージ、または外部へ送りましょう。
- イメージタグ(ghost:5-alpine、mysql:8.0)を固定し、`docker compose pull && docker compose up -d` で計画的に更新してください。メジャーバージョンを一気に上げる前にテーマや連携機能の互換性をテストし、プランに標準搭載されているDDoS防御をエッジで有効にしたままにしておきましょう。
質問
ホスティング Ghost — FAQ
GhostにはMySQLが必要ですか?それともSQLiteを使えますか?
Ghost 5は本番環境でMySQL 8を公式に必須としています。上記のcomposeファイルはMySQL 8を自動的に設定します。SQLiteはローカル開発でのみサポートされており、実運用のオフショア環境へのデプロイには推奨されません。
HTTPSを追加するにはどうすればよいですか?
Ghost自体はポート2368で通常のHTTPを配信します。手前にリバースプロキシを配置してください - Caddyが最もシンプルで(Let's Encrypt証明書を自動発行・更新します)、あるいはnginx + certbotも使用できます。127.0.0.1:2368に向け、Ghostの `url` をあなたのhttps://ドメインに設定してください。
サードパーティに身元の痕跡を残さずにニュースレターを送信できますか?
Ghostは任意のSMTPプロバイダーまたはMailgunを通じて会員向けメールを送信します。プライバシーを重視した構成では、暗号資産決済や最小限の登録で利用できるSMTPリレーを使用し、`mail__` 環境変数を通じて設定してください。それでもトランザクションメールには、SPF/DKIMを備えた到達性のある送信ドメインが必要です。
ディスク容量はどれくらい必要ですか?
GhostのコアとMySQLは小さく(数百MB程度)、実際の容量増加はコンテンツボリュームにアップロードされる画像や動画から生じます。軽量なブログであれば20〜40GBで十分ですが、画像を多用するサイトや会員制サイトはNVMeストレージと、コンテンツボリュームの定期的なバックアップを計画してください。
トラフィックの急増やDDoS攻撃にサイトは耐えられますか?
ChainVPSのプランにはネットワークエッジでのDDoS防御が含まれており、帯域幅も無制限なので、投稿がバズっても超過料金が発生することはありません。純粋なリクエストの急増に対しては、プロキシレベルでのページビューキャッシュを有効にし、常に高い同時接続数が見られる場合はVPS Proまたは専用プランへの移行を検討してください。
セルフホストをもっと見る