コンテンツにスキップ

インストール

Linux(x86_64、aarch64。静的にリンクしていて、ほかに要るものはありません)と macOS(x86_64、Apple Silicon)向けにビルドした実行ファイルが、リリースのページに tegata_<version>_<os>_<arch> という名前で置いてあります。各リリースには、リリースの署名の鍵で署名した SHA256SUMS と、ファイルが k-kawa/tegata のリリースのワークフローでビルドされたことを示す GitHub の artifact attestations が付いています。

ターミナルウィンドウ
v=0.3.1 p=linux_x86_64
gh release download v$v -R k-kawa/tegata -p "tegata_${v}_${p}" -p SHA256SUMS -p SHA256SUMS.minisig
minisign -V -P RWS+RgaPKYHijXCDQ/JCehzLyohjXERYxShqSb6lS71/MHaCS3agTxkB -m SHA256SUMS
grep " tegata_${v}_${p}$" SHA256SUMS | shasum -a 256 -c
gh attestation verify "tegata_${v}_${p}" -R k-kawa/tegata # optional
install -m 0755 "tegata_${v}_${p}" /usr/local/bin/tegata

そのあと、プロバイダーを tegata init で入れます(下)。

ソースからビルドすることもできます(Rust 1.87 以上)。k-kawa/tegata を clone した中で cargo install --path crates/tegata を流し、使うプロバイダーも同じように入れます。

プロバイダーは、自分で入れた command か、tegata init が GitHub のリリースから入れる source のどちらかです。

providers:
cloudflare:
source: github.com/k-kawa/tegata # a GitHub repository
version: "^0.3" # a version requirement (Cargo syntax: ^1.2, ~1.2, >=1, 1.2.3, *)
example:
source: github.com/someone/tegata-provider-example
version: "1"
public_key: "RWQ…" # the minisign public key its author publishes
local:
command: ./bin/my-provider # relative to this YAML if it has a `/`, otherwise from PATH

公式のリリースは、セキュリティの方針にある鍵で署名しています。この鍵は tegata に組み込まれています。

tegata init は次のことをします。

  1. version に合う、いちばん新しいリリースを選ぶ(tegata.lock にあれば、その版のまま)
  2. SHA256SUMS を取ってきて、その minisign の署名を public_key で確かめる(github.com/k-kawa/tegata なら、tegata に組み込まれた公式の鍵で)
  3. この機械向けの実行ファイルを取ってきて、SHA256SUMS と照らし合わせる
  4. 版と、すべてのプラットフォームの SHA-256 を tegata.lock に書く

tegata.lock はコミットしてください。ほかの機械で tegata init を流すと、同じファイルを取ってきて lock と照らし合わせます。lock したあとでファイルが変わったリリースは、tegata が受け付けません。tegata init --upgrade で、合う中でいちばん新しい版に上げます。ほかのコマンドは、lock と合う入れ済みのプロバイダーだけを使い、足りないものや変わったものがあれば tegata init を流すように言います。tegata render はプロバイダーを動かさないので、render だけをするサーバーには init は要りません。

環境変数 使い道
TEGATA_CACHE_DIR プロバイダーを入れる場所(既定は $XDG_CACHE_HOME/tegata、または ~/.cache/tegata)
TEGATA_PROVIDER_MIRROR GitHub の代わりに手元のディレクトリから入れる。中は <dir>/<source>/<version>/<file> の形(インターネットにつながらない機械のため)
GITHUB_TOKEN GitHub に送る(なくてもよい)。非公開のリポジトリには要る。なければ、tegata init が API を使うのはリリースの一覧を取るときだけで、ファイルは公開のダウンロードの URL から取るので、GitHub の認証なしの回数の上限に十分収まる
TEGATA_GITHUB_API GitHub の API の URL(既定は https://api.github.com)
TEGATA_GITHUB_DOWNLOAD 公開のダウンロードの URL のもと(既定は https://github.com)

自分のプロバイダーを公開するには、プロバイダーを公開するを見てください。