51 lines
1.3 KiB
Bash
Executable File
51 lines
1.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
CENTER_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
cd "$CENTER_DIR"
|
|
|
|
mkdir -p secrets
|
|
chmod 700 secrets
|
|
|
|
write_secret() {
|
|
local name="$1" value="$2"
|
|
printf '%s\n' "$value" > "secrets/$name"
|
|
chmod 600 "secrets/$name"
|
|
}
|
|
|
|
RPC_SECRET="$(openssl rand -hex 32)"
|
|
ADMIN_TOKEN="$(openssl rand -base64 32 | tr -d '\n')"
|
|
METRICS_TOKEN="$(openssl rand -base64 32 | tr -d '\n')"
|
|
ZOT_PASSWORD="$(openssl rand -hex 16)"
|
|
GITEA_PASSWORD="$(openssl rand -hex 16)"
|
|
|
|
write_secret garage-rpc-secret "$RPC_SECRET"
|
|
write_secret garage-admin-token "$ADMIN_TOKEN"
|
|
write_secret garage-metrics-token "$METRICS_TOKEN"
|
|
write_secret zot-admin-password "$ZOT_PASSWORD"
|
|
write_secret gitea-admin-password "$GITEA_PASSWORD"
|
|
|
|
if [ ! -f .env ]; then
|
|
cp .env.example .env
|
|
fi
|
|
|
|
python3 - "$RPC_SECRET" "$ADMIN_TOKEN" "$METRICS_TOKEN" <<'PY'
|
|
import sys, pathlib
|
|
rpc, admin, metrics = sys.argv[1:4]
|
|
src = pathlib.Path("garage/garage.toml.template").read_text()
|
|
out = (src
|
|
.replace("@RPC_SECRET@", rpc)
|
|
.replace("@ADMIN_TOKEN@", admin)
|
|
.replace("@METRICS_TOKEN@", metrics))
|
|
pathlib.Path("garage/garage.toml").write_text(out)
|
|
PY
|
|
|
|
htpasswd -bBn admin "$ZOT_PASSWORD" > zot/htpasswd
|
|
chmod 600 zot/htpasswd
|
|
|
|
echo
|
|
echo "secrets/ 写入完成,garage/garage.toml、zot/htpasswd 已渲染"
|
|
echo
|
|
echo "Zot: admin / $ZOT_PASSWORD"
|
|
echo "Gitea: admin / $GITEA_PASSWORD"
|