コンテンツにスキップ

インストール

Pingclair は単一の Linux バイナリとして配布されます。このページでは導入し、 インストーラが何を残したかを示し、サーバーが応答することを確認します。現在の リリースは v0.2.0-rc.3(リリース候補)で、このサイトの全ページがその リリースを説明しています。

  • x86_64 または aarch64 の Linux ホスト。どちらにもリリースバイナリが 公開されています。
  • sudo または root。インストーラは /usr/local/bin/etc/Pingclair/var/lib/pingclair/etc/systemd/system に書き込みます。
  • サービスとして動かす場合は systemd。ない場合は Docker か、フォアグラウンド での起動を使います(どちらも以下で扱います)。
  • 公開証明書が必要なら、インターネットから 80 と 443 に到達できること (HTTPS)。クラウドのインスタンスでは、プロバイダ側の ファイアウォールも開ける必要があります。

macOS でのソースビルドは開発用にサポートされます。macOS は出荷対象では ありません。

📦 リリースバイナリからのインストール

Section titled “📦 リリースバイナリからのインストール”
ターミナルウィンドウ
curl -fsSL https://pingclair.com/install.sh | sudo bash

スクリプトは releases.pingclair.com のリリースチャネルを読み、導入しようと しているタグを表示し、そのチャネルが公開している SHA-256 とアーカイブを照合 します——一致しないアーカイブは展開せずに拒否します。このホストに到達できない 場合は GitHub のリリース API とアーカイブの隣に公開されているチェックサム ファイルに退避するので、導入が一つの提供元に依存しません。続いてサービス用 ユーザーを作成し、低いポートにバインドする権限を与え、既定の設定を書き、 ユニットを導入してサービスを開始します。最後まで進むと次のように終わります。

Detected architecture: x86_64
Installing v0.2.0-rc.3 — a release candidate, not a final release.
Downloading https://releases.pingclair.com/pingclair/releases/0.2.0-rc.3/pingclair-linux-x86_64.tar.gz (from releases.pingclair.com)...
✅ sha256 matches the release channel document
Creating system user 'pingclair'...
Setting capabilities...
Configuring directories and assets...
Fetching default landing page...
Creating default Pingclairfile...
Installing Systemd service...
Creating 'pc' symlink...
✅ Installation Complete!
Use pc service status to check the service.
Config: /etc/Pingclair/Pingclairfile

未リリースの修正が必要なときは、リリースバイナリではなく main を導入します。

ターミナルウィンドウ
curl -fsSL https://pingclair.com/install.sh | sudo bash -s -- --main

--main はホスト上でクローンしてコンパイルします。Rust 1.98 以降と、 BoringSSL と jemalloc が必要とする C ツールチェーン(cmakeclanglibclang-devg++git)が要ります。これらのパッケージは apt でも dnf でもスクリプトが導入します。BoringSSL をソースからビルドするため、 初回は数分かかります。

🗂️ インストーラが残したもの

Section titled “🗂️ インストーラが残したもの”
パス 内容
/usr/local/bin/pingclair サーバーのバイナリ。
/usr/local/bin/pc 同じバイナリへのシンボリックリンク(短い名前)。
/etc/Pingclair/Pingclairfile サービスが実行する設定。
/etc/Pingclair/Pingclairfile.example コメント付きの例。アップグレードでも上書きされません。
/var/lib/pingclair/.local/share/pingclair 証明書ストア。サービスアカウントのデータディレクトリで、バイナリの既定です。
/var/lib/pingclair/html ポート 80 で配信される案内ページ。
/var/log/pingclair log シンクを設定したときに書き出される場所。
/etc/systemd/system/pingclair.service 有効化され、起動済みのユニット。

スクリプトが終わった時点でサービスはすでに応答しています。動いている設定は 案内用のもので、1 画面に収まります。

# 🦀 Pingclair default configuration file
# Management commands: pc service <start|stop|reload|status>
:80 {
# Welcome page
file_server /var/lib/pingclair/html
}

サービス用ユーザーと証明書ストアは存在しないときだけ作られ、既存の /etc/Pingclair/Pingclairfile が置き換わることはありません。だからこそ インストーラの再実行は初期化ではなくアップグレードになります (アップグレードと削除)。

バイナリにバージョンを尋ねます。

ターミナルウィンドウ
pingclair version
v0.2.0-rc.3

pc は同じバイナリなので、pc version も同じ文字列を出力します。次に systemd に尋ねます。

ターミナルウィンドウ
pc service status
● pingclair.service - Pingclair High-Performance Web Server
Loaded: loaded (/etc/systemd/system/pingclair.service; enabled; preset: enabled)
Active: active (running) since Tue 2026-09-22 03:21:55 UTC; 42s ago
Docs: https://github.com/dorianverlaine/pingclair
Main PID: 1808 (pingclair)
Status: "Serving"
Tasks: 12 (limit: 627)
Memory: 8.2M (peak: 8.5M)

Status: "Serving"systemd がプロセスの生存から推測したものではなく、 サーバー自身が送ったものです。ユニットは notify 型で、すべてのリスナーが バインドされたあとに初めて準備完了を通知します。

最後にサーバー自身に尋ねます。

ターミナルウィンドウ
curl -i http://localhost/
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 18747
Last-Modified: Tue, 22 Sep 2026 03:21:54 GMT
ETag: "493b-6ab1f452"
Vary: Accept-Encoding
Accept-Ranges: bytes
server: Pingclair

ETagLast-Modified を伴う 200 はファイルサーバーが応答した証拠で、 本文は /var/lib/pingclair/html の案内ページです。

公開イメージは設定ファイルモードで動きます。entrypoint は pingclair、既定の コマンドは run /etc/pingclair/Pingclairfile です。イメージは /etc/pingclair/var/lib/pingclair をボリュームとして宣言し、80 と 443 を 公開します。

services:
pingclair:
image: ghcr.io/dorianverlaine/pingclair:v0.2.0-rc.3
restart: unless-stopped
ports:
- "80:80"
- "443:443"
- "443:443/udp" # HTTP/3
volumes:
- ./conf:/etc/pingclair:ro
- ./site:/srv:ro
- pingclair_tls:/var/lib/pingclair
volumes:
pingclair_tls:
ターミナルウィンドウ
mkdir -p conf site
printf ':80 {\n file_server /srv\n}\n' > conf/Pingclairfile
echo '<h1>hello from the container</h1>' > site/index.html
docker compose up -d
curl -i http://localhost/

間違えやすい点が三つあります。

  • command: を足さないこと。 イメージの既定はすでに run /etc/pingclair/Pingclairfile で、上書きするとそのコマンドが置き換わり ます。
  • /var/lib/pingclair/.local/share/pingclair だけをマウントしないこと。 ストアは証明書 ディレクトリの隣にも状態を置くので、certs だけをマウントしてコンテナを 作り直すとそれが失われます。/var/lib/pingclair をマウントします。
  • 公開タグを固定すること。 latest は最新リリースを追いかけます。本番は 例のようにバージョンを指定します。公開タグは パッケージページ に並んでいます。

利用者が docker グループに入っていないホストではコマンドに sudo を付け、 または一度 sudo usermod -aG docker "$USER" でグループに加わり、新しい ログインセッションを開きます。Ubuntu では docker compose プラグインは docker-compose-v2 パッケージに入っています。

ターミナルウィンドウ
git clone https://github.com/dorianverlaine/pingclair
cd pingclair
cargo build --release

必要環境: Rust 1.98.1(CI が固定している版)、cmakeclanglibclang-devg++git。ビルドの一部として BoringSSL をソースから コンパイルするため、初回は数分かかります。

⚠️ インストールが失敗したとき

Section titled “⚠️ インストールが失敗したとき”
  • This script must be run as root スクリプトはホームディレクトリの 外に書き込み、ユニットを導入します。sudo を付けて再実行します。
  • Fedora で setcap: command not found それは libcap パッケージです。 インストーラは導入しますが、手作業で組んだホストには無いことがあり、その 権限がないと 80 と 443 にバインドできません。
  • インストール直後に Job for pingclair.service failed journalctl -u pingclair -n 20 を読みます。よくある原因は、検証を通らない 設定か、すでにポート 80 を掴んでいる別のプロセスです。
  • サービスは動いているのに外から何も返らない。 リスナーはバインド済みで、 パケットが届いていません。まずプロバイダのファイアウォールやセキュリティ グループ、次にホスト側の規則を確認します。
  • ホストに systemd がない。 バイナリは導入され使えますが、インストーラの サービス手順は実行できません。Docker か pingclair run を使います。

アップグレードと削除 に手順と、残しておく価値のある データが入ったディレクトリをまとめてあります。