履歴データ、Docker 統計、およびアラートを備えた軽量のサーバー リソース監視ハブ。
軽量: 主要なソリューションよりも小さく、リソースの消費量が少なくなります。
シンプル: セットアップが簡単で、公共のインターネットに公開する必要はありません。
Docker stats : 各コンテナーの CPU、メモリ、ネットワーク使用量の履歴を追跡します。
アラート: CPU、メモリ、ディスク、帯域幅、温度、システム ステータスに関する設定可能なアラート。
マルチユーザー: 各ユーザーが独自のシステムを管理します。管理者はユーザー間でシステムを共有できます。
OAuth / OIDC : 複数の OAuth2 プロバイダーをサポートします。パスワード認証を無効にすることもできます。
自動バックアップ: ディスクまたは S3 互換ストレージからデータを保存および復元します。
REST API : 独自のスクリプトやアプリケーションでデータを使用または更新します。
Beszel は、ハブとエージェントという 2 つの主要コンポーネントで構成されます。
ハブ:接続されたシステムを表示および管理するためのダッシュボードを提供する Web アプリケーション。 PocketBase 上に構築されています。
エージェント:監視する各システム上で実行され、システム メトリックをハブに通信するための最小限の SSH サーバーを作成します。
Docker を使用しない場合は、手順 4 ~ 5 をスキップし、バイナリを使用してエージェントを実行します。
ハブを起動します (インストールを参照)。
http://localhost:8090 を開き、管理者ユーザーを作成します。
「システムの追加」をクリックします。監視するシステムの名前とホストを入力します。
「Copy docker compose」をクリックして、エージェントの docker-compose.yml ファイルをクリップボードにコピーします。
エージェント システムで、構成ファイルを作成し、 docker compose up
実行してエージェントを起動します。
ハブに戻り、ダイアログの「システムの追加」ボタンをクリックしてシステムの追加を完了します。
すべてがうまくいけば、システムは緑色に変わるはずです。赤になった場合は、「ログ」ページを確認し、トラブルシューティングのヒントを参照してください。
フランスのチュートリアルを参照して、https://belginux.com/installer-beszel-avec-docker/ を参照してください。
ハブとエージェントは、単一のバイナリとして、または Docker を使用してインストールできます。
ハブ: docker-compose.yml ファイルの例を参照してください。
エージェント: ハブはエージェントの作成コンテンツを提供しますが、サンプルの docker-compose.yml ファイルを参照することもできます。
エージェントはホスト ネットワーク モードを使用してネットワーク インターフェイス統計にアクセスし、ポートを自動的に公開します。必要に応じて、環境変数を使用してポートを変更します。
ネットワーク統計が必要ない場合は、構成ファイルからその行を削除し、ポートを手動でマップします。
ヒント
Linux を使用している場合は、システム サービスとしてハブまたはエージェントをインストールするスクリプトについては、guides/systemd.md を参照してください。これは Web UI にも組み込まれています。
リリース ページから最新のバイナリをダウンロードして実行するか、以下のコマンドを使用します。
カール -sL "https://github.com/henrygd/beszel/releases/latest/download/beszel_$(uname -s)_$(uname -m | sed 's/x86_64/amd64/' | sed 's/ armv7l/arm/' sed 's/aarch64/arm64/').tar.gz" | tar -xz -O ベゼル | tee ./beszel >/dev/null && chmod +x ベゼル && ls ベゼル
ハブを直接実行します。
./ベゼルサーブ
カール -sL "https://github.com/henrygd/beszel/releases/latest/download/beszel-agent_$(uname -s)_$(uname -m | sed 's/x86_64/amd64/' | sed ' s/armv7l/arm/' sed 's/aarch64/arm64/').tar.gz" | tar -xz -O ベゼルエージェント | tee ./beszel-agent >/dev/null && chmod +x beszel-agent && ls beszel-agent
エージェントを直接実行します。
PORT=45876 KEY="{PASTE_YOUR_KEY}" ./beszel-agent
./beszel update
および./beszel-agent update
を使用して最新バージョンに更新します。
名前 | デフォルト | 説明 |
---|---|---|
CSP | 設定を解除する | この値を含む Content-Security-Policy ヘッダーを追加します。 |
DISABLE_PASSWORD_AUTH | 間違い | パスワード認証を無効にします。 |
名前 | デフォルト | 説明 |
---|---|---|
DOCKER_HOST | 設定を解除する | プロキシを使用している場合は、Docker ホスト (docker.sock) をオーバーライドします。 1 |
EXTRA_FILESYSTEMS | 設定を解除する | 追加のディスク、パーティション、またはリモート マウントの監視を参照してください。 |
FILESYSTEM | 設定を解除する | ルートディスク統計に使用するデバイス、パーティション、またはマウントポイント。 |
KEY | 設定を解除する | 認証に使用する公開 SSH キー。ハブで提供されます。 |
LOG_LEVEL | 情報 | ロギングレベル。有効な値: 「デバッグ」、「情報」、「警告」、「エラー」。 |
MEM_CALC | 設定を解除する | デフォルトのメモリ計算をオーバーライドします。 2 |
NICS | 設定を解除する | 帯域幅チャートを監視するネットワーク インターフェイスのホワイトリスト。 |
PORT | 45876 | ポートまたはアドレス:リッスンするポート。 |
SENSORS | 設定を解除する | 監視する温度センサーのホワイトリスト。 |
SYS_SENSORS | 設定を解除する | センサーの SYS パスをオーバーライドします。 #160を参照してください。 |
Beszel は、OpenID Connect および多くの OAuth2 認証プロバイダーをサポートしています (以下のリストを参照)。
「認証プロバイダー」ページにアクセスしてプロバイダーを有効にします。リダイレクト/コールバック URL は
である必要があります。
りんご
ビットバケット
不和
フェイスブック
ギテア
ギティ
GitHub
GitLab
グーグル
インスタグラム
カカオ
ライブチャット
郵便配達員
マイクロソフト
OpenID コネクト
パトレオン (v2)
スポティファイ
ストラバ
けいれん
ツイッター
VK
ヤンデックス
ディスクを追加する方法は、展開方法によって異なります。
lsblk
使用して、パーティションの名前とマウント ポイントを見つけます。問題が発生した場合は、エージェントのログを確認してください。
注: グラフでは、可能な場合はデバイスまたはパーティションの名前が使用され、フォルダー名にフォールバックされます。ネットワークにマウントされたドライブの I/O 統計は取得できません。
ターゲット ファイルシステムからフォルダーをコンテナーの/extra-filesystems
ディレクトリにマウントします。例えば:
ボリューム: - /mnt/disk1/.beszel:/extra-filesystems/sdb1:ro - /dev/mmcblk0/.beszel:/extra-filesystems/mmcblk0:ro
EXTRA_FILESYSTEMS
環境変数を、監視するデバイス、パーティション、またはマウント ポイントのカンマ区切りのリストに設定します。例えば:
EXTRA_FILESYSTEMS="sdb,sdc1,mmcblk0,/mnt/ネットワーク共有"
Beszel は PocketBase 上に構築されているため、PocketBase Web API とクライアント側 SDK を使用して、Beszel 自体の外部からデータを読み取りまたは更新できます。
ハブとエージェントは SSH 経由で通信するため、インターネットに公開する必要はありません。 Authelia などの外部認証ゲートウェイをハブの前に配置した場合でも、ハブとエージェント間の接続が中断されたり切断されたりすることはありません。
ハブが初めて起動されると、ED25519 キー ペアが生成されます。
エージェントの SSH サーバーは、このキーのみを使用した接続を受け入れるように構成されています。疑似端末を提供したり入力を受け付けたりしないため、秘密キーが侵害された場合でもエージェント上でコマンドを実行することはできません。
管理者は、バックアップ、SMTP 設定など、ハブ内の追加リンクにアクセスできます。最初に作成されたユーザーは自動的に管理者となり、PocketBase にログインできます。
ユーザーのロールを変更しても、そのユーザーの PocketBase 管理者アカウントは作成されません。これを行うには、PocketBase で [設定] > [管理者] に移動し、手動で追加します。
ユーザーは独自のシステムとアラートを作成できます。 PocketBase 設定へのリンクはハブには表示されません。
読み取り専用ユーザーはシステムを作成できませんが、管理者によって共有されているシステムを表示したり、アラートを作成したりすることはできます。
エージェントが実行されていると仮定すると、接続はファイアウォールによってブロックされている可能性があります。次の 2 つのオプションがあります。
エージェント システムのファイアウォールに受信ルールを追加して、ポートへの TCP 接続を許可します。 iptables などのアクティブなファイアウォールと、該当する場合はクラウド プロバイダーのファイアウォール設定を確認します。
あるいは、Cloudflare Tunnel、WireGuard、Tailscale などのソフトウェアを使用して、ファイアウォールを安全にバイパスします。
telnet
実行して接続をテストできます。
ハブではなくエージェントにホスト ネットワーク モードを使用する場合は、ホストが使用する内部 IP アドレスに解決されるホスト名host.docker.internal
を使用してシステムを追加します。 docker-compose.yml の例を参照してください。
両方にホスト ネットワーク モードを使用する場合は、ホスト名としてlocalhost
使用できます。
それ以外の場合、両方が同じ Docker ネットワーク内にある場合は、エージェントのcontainer_name
ホスト名として使用します。
FILESYSTEM
環境変数を使用して、ルート ディスク統計のファイル システム/デバイス/パーティションを指定します。
設定されていない場合、エージェントは/
にマウントされているパーティションを見つけて使用しようとします。これはコンテナーでは正しく機能しない可能性があるため、この値を設定することをお勧めします。次のいずれかの方法を使用して、正しいファイルシステムを見つけます。
lsblk
を実行し、「NAME」の下のオプションを選択します。
df -h
を実行し、「ファイルシステム」でオプションを選択します。
sudo fdisk -l
を実行し、「デバイス」の下のオプションを選択します。
コンテナ チャートに空のデータが表示されるか、まったく表示されない場合は、cgroup メモリ アカウンティングを有効にする必要がある場合があります。確認するには、 docker stats
実行します。メモリ使用量がゼロであることが示された場合は、このガイドに従って問題を解決してください。
https://akashrajpurohit.com/blog/resolve-missing-memory-stats-in-docker-stats-on-raspberry-pi/
エージェント システムで Docker バージョンをアップグレードしてみてください。この問題はバージョン 24 を実行しているマシンで発生し、バージョン 27 にアップグレードすることで解決されました。
より長い期間のレコードは、より短い期間の統計を平均することによって作成されます。エージェントは、これらのレコードにデータを入力するための完全なデータセットを中断することなく実行する必要があります。
エージェントを 1 分以上一時停止または一時停止解除すると、データが不完全になり、現在の間隔のタイミングがリセットされます。
ハブとエージェントはどちらも Go で記述されているため、自分で簡単に構築したり、さまざまなプラットフォーム用にクロスコンパイルしたりできます。まだ Go をインストールしていない場合は、まず Go をインストールしてください。
/beszel
でmake
実行します。これにより、バイナリを含むbuild
ディレクトリが作成されます。
CDベゼル&&メイク
さまざまなプラットフォーム用にビルドすることもできます。
OS=freebsd ARCH=arm64 にする
go tool dist list
実行して、有効なオプションのリストを表示します。
CD ベゼル && ゴー モッド ティティ
beszel/cmd/agent
に移動し、次のコマンドを実行して、現在のディレクトリにバイナリを作成します。
CGO_ENABLED=0 go build -ldflags "-w -s" 。
ハブは Web UI をバイナリに埋め込むため、最初に Web サイトを構築する必要があります。私は Bun を使用していますが、必要に応じて Node.js を使用することもできます。
CD ベゼル/サイト バンインストール バンランビルド
次に、 beszel/cmd/hub
で次のようにします。
CGO_ENABLED=0 go build -ldflags "-w -s" 。
GOOS
およびGOARCH
環境変数を使用して、さまざまなプラットフォーム用にクロスコンパイルできます。
たとえば、FreeBSD ARM64 用にビルドするには:
GOOS=freebsd GOARCH=arm64 CGO_ENABLED=0 go build -ldflags "-w -s" 。
go tool dist list
実行して、有効なオプションのリストを表示します。
貢献は歓迎されますが、何か重要なことを行う予定がある場合は、最初にディスカッション/問題で私たちに確認することをお勧めします。
翻訳の管理には Crowdin を使用しています。新しい言語や既存の翻訳の改善を歓迎します。
近い将来、Beszel への貢献に関するさらに役立つ情報が提供される予定です。
Beszel は MIT ライセンスに基づいてライセンスを取得しています。詳細については、LICENSE ファイルを参照してください。
Beszel はコンテナ情報を読み取るためのアクセスのみを必要とします。 linuxserver/docker-socket-proxy の場合は、 CONTAINERS=1
を設定します。 ↩
使用済みメモリのデフォルト値は gopsutil の Used 計算に基づいており、 free
とほぼ一致するはずです。 MEM_CALC
htop
に設定して、htop の計算と一致させます。 ↩