Beszelは、複数のサーバーのCPU、RAM、ディスク、ネットワークのメトリクスをリアルタイムで可視化できるセルフホスト型のサーバーモニタリングダッシュボードです。非常に軽量で(512 MB RAMで動作)、SQLiteをストレージに使用し、Dockerを使って数分で展開可能です。本ガイドでは、VPSの選定から最初のリモートサーバーの監視設定まで全てをカバーします。
前提条件
開始する前に必要なもの:
- VPS - 最低1 GB RAM、1 vCPU、10 GBストレージ。推奨プロバイダー:
- Hetzner Cloud - 4.15 EUR/月、4 GB RAM、40 GB NVMe(EUで最良のコストパフォーマンス)
- Contabo VPS - 5.99 EUR/月、8 GB RAM、200 GB NVMe(ストレージ最優先)
- DigitalOcean - 6 USD/月、1 GB RAM(初心者向け)
- Ubuntu 22.04またはDebian 12がVPSにインストールされていること
- SSHアクセスができること
- Docker(または直接Beszelのバイナリをダウンロード)
- ポート8090をファイアウォールで開放
ステップ1:VPSへの接続
ssh root@your-vps-ip
パッケージを更新します:
apt update && apt upgrade -y
ステップ2:Dockerのインストール
curl -fsSL https://get.docker.com | sh
systemctl enable --now docker
Dockerが正しく動作していることを確認します:
docker --version
ステップ3:ファイアウォールのポート8090を開放
UbuntuでUFWを使う場合:
ufw allow 8090/tcp
ufw reload
Debianでiptablesを使う場合:
iptables -A INPUT -p tcp --dport 8090 -j ACCEPT
ステップ4:Beszelハブの展開
オプションA:Docker run (クイックスタート)
docker run -d \
--name beszel \
--restart unless-stopped \
-p 8090:8090 \
-v beszel_data:/beszel_data \
henrygd/beszel
オプションB:Docker Compose(推奨)
プロジェクト用ディレクトリを作成します:
mkdir -p /opt/beszel && cd /opt/beszel
docker-compose.ymlを作成します:
services:
beszel:
image: henrygd/beszel:latest
container_name: beszel
restart: unless-stopped
ports:
- "8090:8090"
volumes:
- beszel_data:/beszel_data
volumes:
beszel_data:
サービスを起動します:
docker compose up -d
動作確認:
docker compose ps
docker compose logs -f
オプションC:バイナリインストール(Dockerなし)
最新リリースをアーキテクチャに合わせてダウンロード:
curl -sL https://api.github.com/repos/henrygd/beszel/releases/latest \
| grep "browser_download_url.*linux_amd64" \
| cut -d '"' -f 4 \
| xargs curl -Lo /usr/local/bin/beszel
chmod +x /usr/local/bin/beszel
/etc/systemd/system/beszel.serviceにシステムdサービスを作成:
[Unit]
Description=Beszel監視ハブ
After=network.target
[Service]
ExecStart=/usr/local/bin/beszel serve
WorkingDirectory=/var/lib/beszel
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
有効化と起動:
mkdir -p /var/lib/beszel
systemctl daemon-reload
systemctl enable --now beszel
ステップ5:初回ログイン
ブラウザを開いてアクセス:
http://your-vps-ip:8090
最初の起動時に管理者アカウント作成を促されます。強力なパスワードを設定してください。これがSQLiteデータベースに最初のユーザーとして登録されます。
ステップ6:監視対象サーバーを追加
Beszelは、監視したい各サーバーにインストールする軽量エージェントを利用します。
6.1 エージェントキーの生成
Beszelダッシュボードで:
- **Add Server(サーバー追加)**をクリック。
- 名前とサーバーのホスト名またはIPを入力。
- 生成された**Agent Key(エージェントキー)**をコピー - これを監視するサーバー側で使用します。
6.2 監視対象サーバーにエージェントをインストール
監視したいサーバーにSSHで入り、次を実行します:
Dockerの場合:
docker run -d \
--name beszel-agent \
--restart unless-stopped \
--network host \
-e KEY="<エージェントキーを貼り付け>" \
henrygd/beszel-agent
バイナリの場合:
curl -sL https://api.github.com/repos/henrygd/beszel/releases/latest \
| grep "browser_download_url.*beszel-agent.*linux_amd64" \
| cut -d '"' -f 4 \
| xargs curl -Lo /usr/local/bin/beszel-agent
chmod +x /usr/local/bin/beszel-agent
/etc/systemd/system/beszel-agent.serviceを作成:
[Unit]
Description=Beszel監視エージェント
After=network.target
[Service]
ExecStart=/usr/local/bin/beszel-agent
Environment=KEY=<あなたのエージェントキー>
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
有効化と起動:
systemctl daemon-reload
systemctl enable --now beszel-agent
数秒後にサーバーがBeszelダッシュボードの「Connected(接続済み)」として表示されるはずです。
ステップ7:(オプション)Beszelをリバースプロキシに設定
HTTPSでのアクセスにはCaddyやNginxを使って前段に設定します。
Caddyの例(/etc/caddy/Caddyfile):
monitor.yourdomain.com {
reverse_proxy localhost:8090
}
Nginxの例(/etc/nginx/sites-available/beszel):
server {
listen 80;
server_name monitor.yourdomain.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name monitor.yourdomain.com;
ssl_certificate /etc/letsencrypt/live/monitor.yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/monitor.yourdomain.com/privkey.pem;
location / {
proxy_pass http://localhost:8090;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
トラブルシューティング
| 問題 | 解決策 |
|---|---|
| ダッシュボードにアクセスできない | ファイアウォール設定(ufw status)を確認、コンテナが動作しているか(docker ps)も確認 |
| エージェントが接続しない | KEY環境変数が正しいか確認、エージェントのログ(docker logs beszel-agent)も確認 |
| ディスクの使用量が高い | Beszel設定でメトリクスの保持期間を短く設定 |
| コンテナが起動しない | ログを確認:docker compose logs beszel |
よくある質問(FAQs)
Beszelのデータはどうバックアップすればいいですか?
Beszelの状態は全てDockerのボリュームbeszel_dataに保存されます(バイナリの場合は/var/lib/beszel)。SQLiteのデータベースファイルをバックアップするには:
docker exec beszel sqlite3 /beszel_data/beszel.db ".backup /beszel_data/beszel.db.bak"
その後、/beszel_data/beszel.db.bakをrsyncやscpを使ってサーバー外にコピーします。
WindowsサーバーもBeszelで監視できますか?
BeszelエージェントはLinux、macOS、Windowsに対応しています。Windowsバイナリをインストールし、Windowsサービスとして登録します。あとはBeszelのハブをそのエージェントに向けます。
Beszelはインターネット接続が必要ですか?
いいえ。Beszelは完全に自己完結型です。ハブとエージェント同士が通信するだけで、外部通信は不要です。プライベートネットワークまたはVPN上だけで動作します。