- この記事は、Hetzner と Coolify を使った VPS セルフホスティング の手順を、段階ごとに詳しく文書化したチェックリスト
- Hetzner は ヨーロッパでの低遅延、優れた 価格性能比、透明な料金体系 により推奨されている
- セキュリティ重視の 初期サーバーセットアップ、SSH セキュリティ、ファイアウォール、自動更新の設定方法 など、実務でよく直面する課題も含む
- Node.js アプリを安全にデプロイするための 本番環境の構成、監視、バックアップ、トラブルシューティング方法 などを詳しく案内
- 自分でサーバーを構築しながら、DevOps のスキル と 自由な運用管理能力 を身につけられる実践的なガイド
VPS セットアップ準備チェックリスト
- VPS サービスプロバイダーを選ぶ項目では、Hetzner が 価格/性能 の面で推奨候補として言及されている
- 最低 1GB RAM、20GB ストレージを備えた構成を選び、サーバーの IP アドレス と root アカウント情報 を記録しておく必要がある
- ローカルマシンに SSH クライアントを準備し、強力なパスワード生成ツール を活用すること
VPS プロバイダーを選ぶ理由
- Hetzner Cloud は ヨーロッパ地域 では安価で高速かつ信頼性が高い
- 代替案: DigitalOcean(オンボーディング/ドキュメントが優秀、価格は上昇傾向)、AWS Lightsail(AWS への依存が強く、初心者には難易度が高い)、Linode(安定しているが価格競争力は低い)、Render/Fly.io(PaaS として便利だがコストと制約が多い)
- Hetzner は同等スペック比で 2〜3 倍安く、不透明な課金がなく、ヨーロッパのデータセンターに強みがある
初期サーバーセットアップチェックリスト
初回接続とシステム更新
- パッケージ一覧の更新と システムアップグレード
- システム情報を確認するためのコマンドを提供(例: uname -a, cat /etc/os-release)
root アカウントのセキュリティ設定
- 複雑なパスワード を設定し、安全に保管する必要がある
- 'admin'、'user' のような慣習的なアカウント名ではなく、固有のユーザーアカウント を作成する
- 新しいアカウントに sudo 権限 を付与し、正しく反映されているか確認する
SSH 鍵認証の構成
- ローカルマシンで Ed25519(推奨)または RSA の鍵ペアを生成
- 公開鍵をサーバーの .ssh/authorized_keys に追加した後、権限を設定する
- SSH 鍵ログインが正常に動作することを確認する(パスワード入力なしで接続できるか)
- パスワード認証を無効化し、必要に応じて cloud-init の別ファイルも確認する
- SSH デーモンを再起動し、正常動作していることを確認する
- root ログインを無効化 して、リモートからの root 接続が遮断されていることを確認する
ファイアウォール設定チェックリスト
UFW の基本設定
- すべての受信接続をデフォルトで拒否し、送信接続は許可
- SSH、HTTP(80)、HTTPS(443) ポートを許可し、UFW が適用されていることを確認する
- オプション: SSH ポートを特定 IP に制限し、ポート番号を変更(セキュリティ強化目的) して防御層を追加する
自動更新設定チェックリスト
Unattended Upgrades の構成
- unattended-upgrades、apt-listchanges パッケージをインストールし、基本利用への同意を選択
- セキュリティ更新項目のコメントアウトを解除 し、メール通知や自動再起動オプションを構成できる
- 自動更新の動作をテストし、状態を確認する
本番アプリケーション配備チェックリスト
Node.js 運用環境の構成
- Node.js LTS をインストールし、バージョンを確認する
- アプリケーションファイルをサーバーにアップロードした後、依存関係をインストール して本番運用の準備を行う
プロセスマネージャー(PM2)の活用
- PM2 でアプリを production モードで実行し、クラスタリングオプションを利用する
- PM2 の起動時自動開始を設定し、再起動/監視コマンドを提供する
リバースプロキシ(Nginx)の設定
- Nginx のサイト設定ファイルを作成し、proxy_pass を適用する
- サイトを有効化し、Nginx を再起動する
SSL 証明書設定チェックリスト
Let's Encrypt と Certbot
- certbot、python3-certbot-nginx をインストールした後、ドメインベースの SSL 証明書を自動発行 する
- 更新の自動化オプションと、証明書の有効性テスト
監視と保守チェックリスト
基本的な監視方法
- htop、iotop などの システムリソース確認ツール をインストール
- syslog、auth.log のリアルタイムログ監視と、ログローテーションポリシー(logrotate)の設定
バックアップ戦略
- tar を使って アプリケーションおよびデータベースのバックアップスクリプト を作成
- スケジュール(crontab)に従って定期的にバックアップを実行する
トラブルシューティングチェックリスト
SSH 接続の問題
- ファイアウォール設定、SSH サービスの状態、認証ログ、ネットワークを確認する
権限関連のエラー
- ファイル/フォルダー権限、グループ、sudo 設定を点検する
サービスが起動しない場合
- systemctl、journalctl で状態とログを確認し、設定ファイルの構文を確認する
リソース使用量の増大
- プロセス/ディスク/ネットワーク/アプリケーションログを分析する
最終検証チェックリスト
セキュリティ検証
- SSH 鍵認証/パスワードログイン/root ログイン/ファイアウォール/自動更新/本番モード/SSL/バックアップなど、全項目が動作しているか確認する
パフォーマンステスト
- Apache Bench で 負荷テスト を行い、リソース監視とログエラーを確認する
すぐ参照できるコマンド一覧
システム情報の確認
- htop, df -h, free -h, uname -a
プロセス管理
- pm2 status, pm2 restart all, pm2 logs, pm2 monit
セキュリティ関連
- sudo ufw status, sudo fail2ban-client status, sudo lynis audit system
サービス管理
- sudo systemctl status nginx, sudo systemctl restart nginx, sudo journalctl -u nginx
まとめ
- このチェックリストは 完全な VPS セットアップ・管理手順 を提供する
- 低コストだけでなく、自分で管理する力と学習、DevOps の自律性 も得られる
- Hetzner と Coolify によるセルフホスティングは、実践経験を通じた信頼感と自由度 をもたらす
- VPS ホスティングに挑戦したい人にとって、実用的なガイドの役割 を果たすコンテンツ
1件のコメント
Hacker Newsのコメント
初心者の自分にとって本当に良い要約だと思うので、ぜひブックマークしておきたい。
ただ残念なのは、タイトルでCoolifyに触れているのに本文ではほとんど言及がないこと。
似たテーマの有益な記事としては「Setting up a Production-Ready VPS from Scratch」があり、下のリンクをブックマークしている。
https://dreamsofcode.io/blog/setting-up-a-production-ready-vps-from-scratch
こういうテーマをもう少し深く理解したいときは、たいてい記事のリンクをLLMに入れて、
"これは『テーマ/タイトル』についての記事です: https://article.link. 内容をしっかり把握して分析したうえで、各セクションをあなたの知識で拡張し、関連する追加セクションも含めてください"
というプロンプトで学んでいる。
https://www.youtube.com/watch?v=taJlPG82Ucw
この構成で1年ほど運用していて、初めてセルフホスティングに自信が持てた。
OVHもHetznerと同じくらい信頼できるし、今はずっと安いプランがある。
https://us.ovhcloud.com/vps/configurator/?planCode=vps-2025-model3&brick=VPS%2BModel%2B3&pricing=upfront12&processor=%20&vcore=8__vCore&storage=200__SSD__NVMe
Coolifyを使うなら、どのディストリビューションを選ぶべきか悩んでいる。
Ubuntu 24.04とDebian 13のどちらがより良い選択なのか迷っている。
OVH VPSは24 vCPU(またはスレッド)、96GB RAMで月$53.4。
Hetzner VPS(AMDオプション基準)は16vCPU、32GBで月$54.9。
DO Dropletは16vCPU、64GB RAMで月$504。
LinodeとUpcloudも24〜20vCPU、96GB RAMで月$576と、OVHに比べるとかなり高い。
OVHがどんなCPUを使っているのかは分からないが、この価格差を考えれば、たとえIntel E-Core CPUだとしてもかなり良い条件だと思う。
参考までに、Hetznerにはもっと安いIntel vCPUオプションもあるが、古いハードウェアで、他の顧客の解約があったときだけ空きが出る。
なので比較対象には最新のAMDオプションだけを入れた。
OVHの唯一の問題は、VPS(月30ドル前後)を借りるには身分証明書のコピーを送らなければならないこと。
そんなふうに個人情報を配りたくなかったので、結局もっと高いところを選んだ。
自分の経験では(といってもそれほど長くはないが)、HetznerのクラウドサーバーはOVHのVPSより性能面ではるかに良かった。
どちらも満足して使っている。
OVHとHetznerが他社に比べてここまで安い理由が気になる。
VPSのほうが他より共有率が高いのだろうと考えればある程度理解できるが、この2社は専用サーバーもかなり安い。
何かの撒き餌商品なのかと思ってしまうし、OVHの価格が最近変わったのかも気になる。
数年前はHetznerより高かった記憶がある。
ここで言及されているCPUはどれも、実質的には共有リソースである可能性が高い。
そして実際にどの程度共有されているかは公開されていない。
Hetznerには同じコア数なのに価格が半額のサーバーもある。
表向きには見えないが、実際に性能をテストすると、安いサーバーは本当に性能が半分しか出ない。
CSS設定では、以下の2つを無効にしたらブログのUI/UXがものすごく良くなった。
pre {
margin: 2rem 0 !important;
padding: 1rem !important;
}
コードブロックのパディングとマージンが大きすぎて、画面に3行しか表示されなかった。
それにWebmin/Virtualminをインストールすれば、新しいサブドメインやユーザーの追加といった作業がずっと簡単になる。
Coolifyが気になってクリックしたが、実際にはタグや導入、締めくくりで触れられているだけで、本文には内容がない。
Coolifyが言及されていること自体が不適切だと思う。
この記事は実際には、CoolifyをデプロイするためのVPS準備方法についての内容だ。
Coolify自体のインストールについては扱っていない。
自分はずっとVM上でDocker Composeを使ってすべてのサービスを管理しているので、Coolifyがこれより明確に優れた代替になるのか気になってクリックした。
しかしCoolifyそのものについての実質的な内容はまったくなく、Coolifyの準備のための手作業のほうがむしろ複雑に見えた。
「Docker Composeのベースイメージを使って、いくつか手を入れるだけで済む」自分のやり方のほうがずっと簡単に思えたので、
今の方法はまだ十分使い続けられると感じた。
良い点は、ホスト間の移行もDocker ComposeのYAMLファイルを1つコピーすれば99%解決すること。
数か月前にCoolifyを試してみたが、複数のコンテナがComposeでつながっていると、いろいろな問題が起きた。
たとえば、あるコンテナが起動しているのを忘れて重複起動してしまったり、両方動いているのにCoolifyでは片方しか認識しなかったりした。
各サービスを個別にCoolifyへ登録すれば、まだそれなりにうまく動く。
結局、自分もDocker Composeベースの単独構成に戻り、むしろそのほうがずっと運用しやすかった。
Coolifyのような試み自体は本当に必要だと思うが、現時点ではまだ本番運用に使うには物足りないレベルだと思う。
Coolifyや類似プロジェクトがDBバックアップとストリーミングレプリケーションをサポートしない限り、結局は趣味の領域にとどまると思う。
自分はDocker Composeとbashスクリプトで2台のVMを運用していて、S3への毎時バックアップ、wal streaming、PGとRedisのストリーミングレプリケーションなどを設定するだけで、本番運用の最低要件は満たせると考えている。
用途次第ではあるが、自分はCoolifyとCapRoverの両方を使ったことがある。
最終的にはCapRoverを選んだ。Git Hookでコミットのたびに自動ビルドされて、Node.jsアプリをより速く立ち上げられたからだ。
どちらもこの機能はサポートしているが、CapRoverのほうが摩擦が少ない。
機能自体はCoolifyのほうが多い。
CoolifyはTraefikとDockerの上で動いていて、実態としてはその上にUIを載せたものだ。
バックアップまわりの必須機能がかなり欠けており(resticのようなもので補える)、UXもまあ使えるという程度だ。
Coolifyは今でもインストール時にroot権限が必要。
root権限なしでインストールできるブランチを開発中だと聞いた。
sshでサーバーに接続してCoolifyをインストールし、その後rootログインを無効にすればよいはずだ。
サーバーを吹き飛ばして最初からセットアップし直す覚悟があるなら、それでも可能だ。
自分も最近、Coolifyのデプロイを完全にゼロから試したが、sshキーで何度もエラーが出た。
別のサーバーで複数プロジェクトを問題なくデプロイしているが、「docker composeファイルを渡すだけでよい」というアプローチが実際にうまく動いたことは一度もない。
最近FreeBSDサーバーをHetznerへ移したが、とても簡単だった。
唯一の変数は、請求サイクルが完全に終わるまではメールサーバー用ポートがブロックされることだった。
この方針自体は理解できるが、開始時点で明確に案内されていなかったので戸惑った。
ちなみに、クレジットカードの有効期限が切れるとHetznerはネットワーク自体をすぐ切断するので注意。
事前警告はなく、実際の顧客かスタッフから連絡が来て初めて気づいた。
自分も実際にこれを経験した。
Hetznerのチームにトラフィックの種類を説明して問い合わせれば、ポートを事前に開けてくれることもある。
自分は移行予定のプロジェクトを証拠として見せたら、すぐ開けてくれた。
Coolifyのようなツール(Dokployなど)も悪くなさそうだが、サーバーの状態がコードとして残らないのがいつも惜しい。
そのためNixOSやAnsibleのほうを好むが、実際の本番構築にはボイラープレートやカスタマイズが多すぎる。
Kubernetesではない形で、もっと宣言的で、本番サーバーを簡単に管理できるInfrastructure as Codeのフレームワークを知っている人がいれば気になる。
Coolifyでバックアップすべき設定はほとんどなく、アプリケーション設定はすべて
/data/coolifyに入っている。ボリューム全体はkopiaでバックアップしている。
これはきれいに作られた方法ではなく、やや力技ではあるが、災害復旧には使えるやり方だ。
良いガイドだ。
ただし、特にHetznerを使う場合のファイアウォール設定には賛成できない。
簡単な設定だけでよいなら、Hetzner提供のファイアウォールだけで十分だし、「アウトソースする」効果も大きい。
もっとカスタムに使いたければAPIでも設定できる。
https://docs.hetzner.cloud/reference/cloud#firewalls
Hetznerのファイアウォールに致命的な欠点があるのか気になる。
「SSHは自分のIPからだけ許可しろ(任意だが推奨)」という助言は危険だと思う。
IPが変わったら完全にアクセス不能になる可能性がある。
Hetznerのダッシュボードからリセットすることもできるが、変わり続ける自宅IPに縛るより、Tailscaleのようなものを使うか、
固定された外部VPN IPを用意するほうがよい。
SSHは鍵認証を使うだけで、ほとんどのセキュリティ問題を防げる。
さらにログのノイズを減らすレイヤーを追加するのもよいし、SSH以外で外部公開する必要のないサービスがあるなら、
VPNなどで閉じておくのがよいと思う。
実際のところ、サーバー上ではSSHより脆弱なサービスのほうがたいてい多い。
確かに危険ではある。
自宅で動的IPを使っている人は多い。
SSH鍵を設定してrootログインだけ無効にしておけば十分安全だと思う。
本番アプリのセットアップ部分はDockerに置き換えたほうがよいと思う。
今はDockerのほうがずっと再現性が高く、構成もしやすい。