From 738ef8edd8ff8103c717b2b048350f4d59fbbc7f Mon Sep 17 00:00:00 2001 From: fyui001 Date: Fri, 6 Nov 2026 11:50:27 +0900 Subject: [PATCH] =?UTF-8?q?=E3=82=A4=E3=83=A1=E3=83=BC=E3=82=B8=E3=81=AE?= =?UTF-8?q?=E7=B5=84=E3=82=92=20Carina=20v2.0.0=E3=83=BBPuppis=20v0.1.1?= =?UTF-8?q?=E3=83=BBVela=20v1.0.0=20=E3=81=AB=E3=81=97=E3=80=81driver=20?= =?UTF-8?q?=E3=82=92=20Puppis=20=E3=81=AE=E3=82=A4=E3=83=A1=E3=83=BC?= =?UTF-8?q?=E3=82=B8=E3=81=A7=E5=8B=95=E3=81=8B=E3=81=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Fable 5.1 --- README.md | 16 ++++++++-------- charts/pyxis/Chart.yaml | 8 +++++--- charts/pyxis/ci/driver-only-values.yaml | 2 +- charts/pyxis/templates/driver-deployment.yaml | 10 ++++------ charts/pyxis/values.yaml | 8 ++++---- compose.yml | 15 +++++++-------- scripts/check-versions.sh | 2 +- 7 files changed, 30 insertions(+), 31 deletions(-) diff --git a/README.md b/README.md index d7ff2eb..d870cae 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ # Pyxis 日本のテレビ放送を録画して観るサーバを、Docker の入った Linux 1 台に立てる。\ -録画と配信は [Carina](https://github.com/NewWorldOrg/Carina)、画面は [Vela](https://github.com/NewWorldOrg/Vela) が受け持つ。\ -Pyxis はその 2 つを、動作を確かめた版の組で固定して配る。\ +チューナーは [Puppis](https://github.com/NewWorldOrg/Puppis)、録画と配信は [Carina](https://github.com/NewWorldOrg/Carina)、画面は [Vela](https://github.com/NewWorldOrg/Vela) が受け持つ。\ +Pyxis はその 3 つを、動作を確かめた版の組で固定して配る。\ Kubernetes に立てるなら、同じ版の組を固定した Helm チャートが `charts/pyxis` にある。 立てると、ブラウザから次のことをする。 @@ -19,7 +19,7 @@ Kubernetes に立てるなら、同じ版の組を固定した Helm チャート | サービス | イメージ | 役割 | | --- | --- | --- | -| `driver` | Carina | 特権で動く。チューナーを占有し、スクランブルを解いて録画ファイルを書く | +| `driver` | Puppis | 特権で動く。チューナーを占有し、スクランブルを解いて録画ファイルを書く | | `app` | Carina | 番組表・予約・ライブ・エンコード・ライブラリの API。特権は持たない | | `migrate` | Carina | 起動のたびにデータベースのスキーマを当てて終わる | | `prepare` | Carina | `app` が書く置き場の所有者を合わせて終わる | @@ -261,7 +261,7 @@ kubectl -n tv logs deploy/carina-app -c app | grep 'Sign in as' | `driver.pcscd.enabled` | ホストの `/run/pcscd` を読み取り専用で渡すか | `false` | | `driver.socket.hostPath` | driver と app が共有するソケットのディレクトリのホスト側のパス | `/run/pyxis` | | `driver.hostNetwork` | ホストのネットワークで動かすか。カードを貸す driver は `true` | `false` | -| `driver.lendingKey.existingSecret` | カードの貸し借りの鍵を持つ Secret。`/etc/carina/lending.key` に所有者だけが読める形で置く | 空 | +| `driver.lendingKey.existingSecret` | カードの貸し借りの鍵を持つ Secret。`/etc/puppis/lending.key` に所有者だけが読める形で置く | 空 | | `driver.terminationGracePeriodSeconds` | 止めるときに録画の終わりを待つ秒数。`shutdownGraceHours` より長くする | `25200` | | `app.publicOrigin` | ブラウザから届くアドレス。OIDC でサインインするときに要る | 空 | | `app.knownNetworks` | `X-Forwarded-*` を信じる前段の網の一覧。Ingress のコントローラの Pod がいる網を書く | 空 | @@ -336,7 +336,7 @@ driver: address: 0.0.0.0 hostNames: - lender.example.com - keyFile: /etc/carina/lending.key + keyFile: /etc/puppis/lending.key hostDevices: - /dev/dvb/adapter0 pcscd: @@ -453,9 +453,9 @@ docker compose logs driver ## 版 -| Pyxis | Carina app | Carina driver | Vela | PostgreSQL | Caddy | +| Pyxis | Carina | Puppis | Vela | PostgreSQL | Caddy | | --- | --- | --- | --- | --- | --- | -| 未リリース | v1.0.0 | v1.0.0 | v1.0.0 | 18.6 | 2.11.7 | +| 未リリース | v2.0.0 | v0.1.1 | v1.0.0 | 18.6 | 2.11.7 | イメージの版は `compose.yml` と `charts/pyxis/values.yaml` に数字で書いてあり、`latest` は使わない。\ 2 か所が同じ版であることは CI が確かめる。\ @@ -466,5 +466,5 @@ Pyxis の版は、その組で起動・録画・再生を確かめてから付 AGPL-3.0-only。著作権者は NewWorldOrg で、全文は `LICENSE` にある。 Pyxis が持つのは設定だけで、ソフトウェアは各イメージの側にある。\ -イメージに同梱した他のソフトウェアとそのライセンスは、イメージの中の `/usr/share/doc/carina/` と `/usr/share/doc/vela/` で読める。\ +イメージに同梱した他のソフトウェアとそのライセンスは、イメージの中の `/usr/share/doc/puppis/`・`/usr/share/doc/carina/`・`/usr/share/doc/vela/` で読める。\ PostgreSQL と Caddy は公式のイメージをそのまま使う。 diff --git a/charts/pyxis/Chart.yaml b/charts/pyxis/Chart.yaml index ad64c23..8299a33 100644 --- a/charts/pyxis/Chart.yaml +++ b/charts/pyxis/Chart.yaml @@ -1,6 +1,6 @@ apiVersion: v2 name: pyxis -description: A recording server for Japanese digital broadcasting, with Carina and Vela pinned to a verified set of image versions +description: A recording server for Japanese digital broadcasting, with Puppis, Carina and Vela pinned to a verified set of image versions type: application version: 0.1.0 appVersion: 0.1.0 @@ -8,16 +8,18 @@ kubeVersion: ">=1.25.0-0" home: https://github.com/NewWorldOrg/Pyxis sources: - https://github.com/NewWorldOrg/Pyxis + - https://github.com/NewWorldOrg/Puppis - https://github.com/NewWorldOrg/Carina - https://github.com/NewWorldOrg/Vela keywords: - dtv - recording + - puppis - carina - vela annotations: # この版が固定するイメージの組。compose.yml と values.yaml の image と同じ値にする - images/carina-app: ghcr.io/newworldorg/carina:app-v1.0.0 - images/carina-driver: ghcr.io/newworldorg/carina:driver-v1.0.0 + images/carina-app: ghcr.io/newworldorg/carina:v2.0.0 + images/puppis-driver: ghcr.io/newworldorg/puppis:v0.1.1 images/vela: ghcr.io/newworldorg/vela:v1.0.0 images/postgres: postgres:18.6-alpine diff --git a/charts/pyxis/ci/driver-only-values.yaml b/charts/pyxis/ci/driver-only-values.yaml index bce43ec..5567806 100644 --- a/charts/pyxis/ci/driver-only-values.yaml +++ b/charts/pyxis/ci/driver-only-values.yaml @@ -17,7 +17,7 @@ driver: address: 0.0.0.0 hostNames: - lender.example.com - keyFile: /etc/carina/lending.key + keyFile: /etc/puppis/lending.key hostDevices: - /dev/dvb/adapter0 pcscd: diff --git a/charts/pyxis/templates/driver-deployment.yaml b/charts/pyxis/templates/driver-deployment.yaml index c1d9c32..a1620cd 100644 --- a/charts/pyxis/templates/driver-deployment.yaml +++ b/charts/pyxis/templates/driver-deployment.yaml @@ -33,15 +33,13 @@ spec: image: {{ printf "%s:%s" $driver.image.repository $driver.image.tag | quote }} imagePullPolicy: {{ $driver.image.pullPolicy }} env: - - name: CARINA_ROLE - value: driver - - name: CARINA_DRIVER_CONFIG - value: /etc/carina/driver.json + - name: PUPPIS_DRIVER_CONFIG + value: /etc/puppis/driver.json securityContext: privileged: true volumeMounts: - name: config - mountPath: /etc/carina/driver.json + mountPath: /etc/puppis/driver.json subPath: driver.json readOnly: true - name: socket @@ -55,7 +53,7 @@ spec: {{- end }} {{- if $driver.lendingKey.existingSecret }} - name: lending-key - mountPath: /etc/carina/lending.key + mountPath: /etc/puppis/lending.key subPath: {{ $driver.lendingKey.key }} readOnly: true {{- end }} diff --git a/charts/pyxis/values.yaml b/charts/pyxis/values.yaml index 22ef197..8e8eaf0 100644 --- a/charts/pyxis/values.yaml +++ b/charts/pyxis/values.yaml @@ -14,9 +14,9 @@ driver: enabled: true image: # driver のイメージ - repository: ghcr.io/newworldorg/carina + repository: ghcr.io/newworldorg/puppis # driver のイメージのタグ。compose.yml と同じ版にする - tag: driver-v1.0.0 + tag: v0.1.1 # イメージを引く条件 pullPolicy: IfNotPresent # driver.json の中身をそのまま書く。socketGroupId はチャートが carina.gid で入れ、socketPath は既定 (/run/carina/driver.sock) のままにする @@ -51,7 +51,7 @@ driver: lendingKey: # カードの貸し借りの鍵を持つ Secret の名前。空なら渡さない existingSecret: "" - # その Secret の中の鍵のキー。/etc/carina/lending.key に所有者だけが読める形で置く + # その Secret の中の鍵のキー。/etc/puppis/lending.key に所有者だけが読める形で置く key: key # 止めるときに録画の終わりを待つ秒数。config.shutdownGraceHours より長くする terminationGracePeriodSeconds: 25200 @@ -67,7 +67,7 @@ app: # app と migrate のイメージ repository: ghcr.io/newworldorg/carina # app のイメージのタグ。compose.yml と同じ版にする - tag: app-v1.0.0 + tag: v2.0.0 # イメージを引く条件 pullPolicy: IfNotPresent # ブラウザからこのサーバに届くアドレス (https://tv.example.com)。OIDC の redirect URI の元になる diff --git a/compose.yml b/compose.yml index 1e66766..5508246 100644 --- a/compose.yml +++ b/compose.yml @@ -24,7 +24,7 @@ services: # app は uid 10001 で動くので、app が書く置き場の所有者をその番号にそろえてから app を上げる (中のファイルには触らない) prepare: - image: ghcr.io/newworldorg/carina:app-v1.0.0 + image: ghcr.io/newworldorg/carina:v2.0.0 logging: *logging restart: 'no' entrypoint: ['chown', '10001:10001', '/var/lib/carina/keys', '/srv/encodes', '/srv/thumbnails', '/srv/captions'] @@ -35,7 +35,7 @@ services: - captions:/srv/captions migrate: - image: ghcr.io/newworldorg/carina:app-v1.0.0 + image: ghcr.io/newworldorg/carina:v2.0.0 logging: *logging restart: 'no' environment: @@ -46,7 +46,7 @@ services: condition: service_healthy app: - image: ghcr.io/newworldorg/carina:app-v1.0.0 + image: ghcr.io/newworldorg/carina:v2.0.0 logging: *logging restart: unless-stopped environment: @@ -92,7 +92,7 @@ services: condition: service_started driver: - image: ghcr.io/newworldorg/carina:driver-v1.0.0 + image: ghcr.io/newworldorg/puppis:v0.1.1 logging: *logging # 要求による停止は 0、それ以外は 70 で終わるので on-failure は使わない restart: unless-stopped @@ -100,14 +100,13 @@ services: # 録画中に止められると録画の終わり (上限 shutdownGraceHours、既定 6 時間) まで待つ。それより長くする stop_grace_period: 7h environment: - CARINA_ROLE: driver - CARINA_DRIVER_CONFIG: /etc/carina/driver.json + PUPPIS_DRIVER_CONFIG: /etc/puppis/driver.json volumes: - - ./driver/driver.json:/etc/carina/driver.json:ro + - ./driver/driver.json:/etc/puppis/driver.json:ro - driver-run:/run/carina - ${CARINA_RECORDINGS_DIR:?}:/srv/recordings healthcheck: - test: ['CMD', '/opt/carina/driver/Carina.Driver', '--probe'] + test: ['CMD', '/opt/puppis/Puppis.Driver', '--probe'] interval: 30s timeout: 15s retries: 3 diff --git a/scripts/check-versions.sh b/scripts/check-versions.sh index 44c50ee..3b93413 100755 --- a/scripts/check-versions.sh +++ b/scripts/check-versions.sh @@ -40,7 +40,7 @@ check_subset 'Chart.yaml' "$(chart_images)" while IFS= read -r image; do case "$image" in - */carina:* | */vela:* | postgres:*) ;; + */carina:* | */puppis:* | */vela:* | postgres:*) ;; *) continue ;; esac if ! values_images | grep -qxF "$image"; then