クイックスタート
このページは、導入済みのホストから自分で制御できるサーバーまで進みます。ディスク 上の設定、検証済みのコンパイル、起動・停止・監視できるサーバー、そしてファイル サーバーが応答したことを示す確認です。インストール が済んで いることを前提にします。
🧾 はじめる前に
Section titled “🧾 はじめる前に”インストーラはポート 80 でサービスを動かしたままにしており、そのサービスが
/etc/Pingclair/Pingclairfile の設定を握っています。試している間は停止して
ポートを空けます。
sudo pc service stopmkdir -p ~/demo/publiccd ~/demoecho '<h1>hello from ~/demo/public</h1>' > public/index.html1. ✍️ 設定を書く
Section titled “1. ✍️ 設定を書く”~/demo/Pingclairfile を作ります。
{ admin 127.0.0.1:2019}
http://localhost:8080 { file_server ./public}三点だけ名前を付けておきます。先頭の無名ブロックはグローバルオプションで、
admin があると pingclair start、stop、reload が実行中のサーバーと話せ
ます。サイトアドレスはスキームを含み、http:// が平文を強制します。これが
無いと Pingclair は localhost を名前として扱い、独自の認証局で HTTPS を
提供するため、平文の HTTP クライアントには空の応答として見えます
(HTTPS)。file_server のルートは作業ディレクトリからの
相対パスです。
2. ✅ 実行前に検証する
Section titled “2. ✅ 実行前に検証する”pingclair validate✅ Configuration 'Pingclairfile' is valid!validate は既定で ./Pingclairfile を読み、./Caddyfile も検出します。設定を
コンパイルし、証明書パスの有無といった意味的な検査を適用します。検証は助言では
ありません。失敗した設定は実行されず、最後の行に理由が出ます。
3. 🧭 設定が何になるかを読む
Section titled “3. 🧭 設定が何になるかを読む”pingclair adapt --pretty{ "debug": false, "servers": [ { "name": "localhost", "names": [ "localhost" ], "listen": [ "[::]:8080" ],コンパイル済みの JSON はサーバーが実際に実行する形です。ディレクティブが
ドキュメントどおりに動かないとき、最初に見る場所がここです。代わりに
pingclair fmt がファイルに加える変更を見るには次のようにします。
pingclair fmt --diff- file_server ./public+ file_server ./publicfmt は正規形を出力し、インデントは 2 スペースになります。
4. 🚀 起動する
Section titled “4. 🚀 起動する”ログが端末に残るフォアグラウンドで実行します。
pingclair run Pingclairfile🚀 Starting Pingclair with config: Pingclairfile🚀 Starting Pingclair v0.2.0-rc.3📄 Loaded configuration from: Pingclairfile🔧 Configured 1 server(s)🔐 Auto HTTPS: enabled--watch を付けると保存のたびに設定が再読み込みされ、開発ループになります。
pingclair run --watch Pingclairfile♻️ Configuration reloaded successfully✅ Configuration reloaded completed successfully in 2.478622msシェルから切り離してバックグラウンドで動かすこともできます。
pingclair start -c Pingclairfile✅ Pingclair started in the background (pid 4432)pingclair start、stop、reload は Admin API 経由で実行中のサーバーに
到達します。上の設定に admin があるのはそのためです。pingclair run には
必要ありません。
5. 🔍 確認する
Section titled “5. 🔍 確認する”curl -i http://localhost:8080/HTTP/1.1 200 OKContent-Type: text/html; charset=utf-8Content-Length: 34Last-Modified: Tue, 22 Sep 2026 03:26:39 GMTETag: "22-6ab1f56f"Vary: Accept-EncodingAccept-Ranges: bytesserver: PingclairETag と Last-Modified はファイルサーバーがディスクから読んだ証拠です。本文は
public/index.html です。バックグラウンドのサーバーを止めるには次のように
します。
pingclair stop✅ Pingclair stopped⚡ コマンド一発のサーバー
Section titled “⚡ コマンド一発のサーバー”三つのサブコマンドは設定ファイルなしで配信します。試したいときや使い捨ての ホストで便利です。
pingclair file-server --listen :8081 --root ./publicpingclair reverse-proxy --from :8082 --to 127.0.0.1:8081pingclair respond --listen :8083 -s 200 -b "hello from respond"それぞれ起動時にリスナーを表示します。
🚀 Starting file server on :8081 serving ./public (browse: false)🚀 Starting reverse proxy: :8082 -> ["127.0.0.1:8081"]Server address: [::]:8083:8082 へのリクエストは :8081 のファイルサーバーへ転送され、:8083 は渡した
本文をそのまま返します。respond は開発専用です。
🔁 サービスに任せる
Section titled “🔁 サービスに任せる”サービスは /etc/Pingclair/Pingclairfile を実行するので、そこに置くと再起動
後も生き残ります。
sudo cp Pingclairfile /etc/Pingclair/Pingclairfilesudo pingclair validate /etc/Pingclair/Pingclairfilesudo pc service reloadcurl -i http://localhost/pc service reload は実行中のサーバーにファイルを読み直すよう求め、ユニットは
それを SIGUSR1 で行います。pingclair reload は Admin API 経由で同じコードに
到達し、サーバーがファイルをどう見たかも報告します(グローバルオプションの
admin が必要です)。sudo kill -USR1 "$(systemctl show -p MainPID --value pingclair)" はどちらも使わずに同じことをします。
どちらの場合も先に検証し、そのあと答えを読みます。systemctl reload が報告
できるのは信号が届いたことだけなので、サーバーの判断——適用されたか、理由付きで
拒否されたか——はユニットの status line とジャーナルに残ります。拒否された
再読み込みは以前の設定を動かしたままにします。それが拒否の目的です。
サービスとして動かす に詳しい説明が
あります。
⚠️ うまくいかないとき
Section titled “⚠️ うまくいかないとき”Address already in use。 インストーラのサービスがまだ:80を握って いるか、別のプロセスがそのポートを握っています。sudo ss -ltnp | grep :80が持ち主を表示し、sudo pc service stopが既定の サービスを解放します。http://localhost:8080でEmpty reply from server。 平文で TLS の リスナーに話しかけています。サイトアドレスにhttp://を付けるか、内部 証明書を信頼したうえでhttps://で話しかけます。Cannot reach admin API at 127.0.0.1:2019。 設定にadminが無く、pingclair stopとpingclair reloadを受け取る相手がいません。グローバル オプションのブロックに追加するか、フォアグラウンドのプロセスを Ctrl-C で 止めます。curlがループバックで固まる。 システムのプロキシが要求を横取りして います。curl --noproxy '*'を付けて再実行します。- 検証が
Unsupported featureで失敗する。 ディレクティブは認識されて いますが実装が無く、メッセージが代替を示します。encode brの場合、 プロキシ応答に Brotli は実装されていないためencode zstd gzipを指します。
🧭 次の手順
Section titled “🧭 次の手順”- HTTPS: 公開名に対する証明書を Let’s Encrypt か内部認証局 から。
- サービスとして動かす: ユニット、再読み込みの意味、 ログ。
- Pingclairfile: 言語そのもの。マッチャー、 スニペット、インポート。
