アップグレードと削除
アップグレードが置き換えるのは二つ — バイナリとサービスユニット — だけで、設定 と証明書には触れません。このページはそれを示し、コンテナでの同等の手順、版を 戻す必要があるときの手順、そして撤去を扱います。
🧾 何が何に耐えるか
Section titled “🧾 何が何に耐えるか”| パス | アップグレード時 |
|---|---|
/etc/Pingclair/Pingclairfile |
保持。インストーラは無いときだけ書きます。 |
/etc/Pingclair/Pingclairfile.example |
現在の例に置き換わります。 |
/var/lib/pingclair/.local/share/pingclair |
保持。発行済み証明書と ACME の状態はそのままです。 |
/var/lib/pingclair/html |
保持。 |
/usr/local/bin/pingclair と pc |
新しいリリースに置き換わります。 |
/etc/systemd/system/pingclair.service |
書き直され、サービスが再起動します。 |
⬆️ インストーラでアップグレードする
Section titled “⬆️ インストーラでアップグレードする”curl -fsSL https://pingclair.com/install.sh | sudo bashスクリプトは GitHub に最新リリースのタグを問い合わせ、表示し、アーカイブの SHA-256 を検証し、バイナリとユニットを置き換えてサービスを再起動します。既存の 設定ファイルには触れません。だからこれが初期化ではなくアップグレードになり ます。
Detected architecture: x86_64Fetching latest release from dorianverlaine/pingclair...Installing v0.2.0-rc.3 — a release candidate, not a final release.pingclair-linux-x86_64.tar.gz: OK✅ Installation Complete!Config: /etc/Pingclair/Pingclairfile新しい版と、以前の設定がまだ配信されていることを確認します。
pingclair versionpc service statuscurl -i http://localhost/v0.2.0-rc.3インストーラは常に最新リリースを導入します。特定の版を指定するオプションは ありません。それが必要なときは下のロールバックを使います。
🐳 コンテナをアップグレードする
Section titled “🐳 コンテナをアップグレードする”ホストには何も導入されていないので、アップグレードはタグの変更と pull です。 compose ファイルで新しいリリースを固定します。
services: pingclair: image: ghcr.io/dorianverlaine/pingclair:v0.2.0-rc.3docker compose pulldocker compose up -ddocker logs pingclair 2>&1 | head -3🚀 Starting Pingclair with config: /etc/pingclair/Pingclairfile🚀 Starting Pingclair v0.2.0-rc.3📄 Loaded configuration from: /etc/pingclair/Pingclairfile設定と証明書ストアはボリュームの中にあるので、新しいコンテナは前のコンテナが 残した場所でそれらを見つけます。注意点が二つあります。
- 80 ポートを公開するコンテナは、systemd のサービスが動いている間は起動
できません。 どちらかを止めます:
sudo pc service stop、またはコンテナ側の 公開ポートを変えます。 latestは最新リリースを追いかけます。 本番では版を固定し、アップグレード が pull の副作用ではなく判断になるようにします。
⏪ 古いリリースに戻す
Section titled “⏪ 古いリリースに戻す”新しい版を戻す必要があるときは、リリースホストから前の版を取得し、その版が 公開しているダイジェストと照合して、バイナリを差し替えます。
mkdir -p /tmp/rollback && cd /tmp/rollbackversion=0.2.0-rc.2base="https://releases.pingclair.com/pingclair/releases/$version"curl -fsSL "$base/release.json" -o release.jsontarball=pingclair-linux-x86_64.tar.gzexpected="$(jq -r ".assets[] | select(.name == \"$tarball\") | .digest" release.json | sed 's/^sha256://')"curl -fsSLO "$base/$tarball"printf '%s %s\n' "$expected" "$tarball" | sha256sum -c -mkdir -p extract && tar -xzf "$tarball" -C extractpingclair-linux-x86_64.tar.gz: OKsudo systemctl stop pingclairsudo install -m 0755 extract/pingclair /usr/local/bin/pingclairsudo systemctl start pingclairpingclair versionv0.2.0-rc.2戻した版に対して設定を検証します。その版が実装していないディレクティブは、無視 されるのではなく名前を挙げて拒否されます。
sudo pingclair validate /etc/Pingclair/Pingclairfile🧹 削除する
Section titled “🧹 削除する”sudo pc service stopsudo systemctl disable pingclairsudo rm /etc/systemd/system/pingclair.servicesudo systemctl daemon-reloadsudo rm /usr/local/bin/pingclair /usr/local/bin/pcこの後 systemctl status pingclair は Unit pingclair.service could not be found と答え、コマンドは消え、80 ポートで何も待ち受けません。ディスクに残る
ものは意図的にあなたのデータです。
/etc/Pingclair/Pingclairfile 設定。そのまま有効です/var/lib/pingclair/.local/share/pingclair 発行済み証明書と ACME の状態/var/lib/pingclair/html 案内ページ/var/log/pingclair ログ出力先のディレクトリ再導入する予定があるなら /var/lib/pingclair/.local/share/pingclair を残します。証明書と内部
ルートが生き残り、そのルートを信頼しているクライアントも動き続けます。その
ホストで Pingclair を終えるなら、サービスアカウントごと削除します。
sudo rm -rf /etc/Pingclair /var/lib/pingclair /var/log/pingclairsudo userdel pingclair⚠️ うまくいかないとき
Section titled “⚠️ うまくいかないとき”- 想定と違う版が入った。 インストーラは常に最新のリリースタグを取ります。
pingclair versionで確認し、特定の版が必要だったなら上のロールバックを 使います。 - アップグレード後にサービスが起動しない。
sudo pingclair validate /etc/Pingclair/Pingclairfileを読みます。新しい版が 拒否するディレクティブは名前と代替を示して fail closed するので、journal が 直す行を教えます。 - コンテナがすぐ終了する。
docker logs <container>が理由を示します。 よくある原因は、マウントした設定ディレクトリに/etc/pingclair/Pingclairfileが無いこと、またはホスト側でポートが使用中で あることです。 - ストアの再生成後にクライアントが証明書を拒否する。 内部認証局を作り直す
と、古いルートは何も署名しません。新しいルートを
sudo PINGCLAIR_TLS_STORE=/var/lib/pingclair/.local/share/pingclair pingclair trustで導入します。
🧭 次の手順
Section titled “🧭 次の手順”- インストール: このページが残す、または消す配置。
- サービスとして動かす: アップグレードが書き直すユニット。
- プロジェクトの状態: 現在のリリースが何を支え、何を 拒否するか。
