Files
juwan-backend/deploy/center/init.sh
T

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"