#!/usr/bin/env bash # 生成 docker compose 运行所需的本地机密:RS256 密钥对 + .env(DB 口令、内部令牌)。 # 产物全部被 .gitignore 忽略,绝不入库;重复执行是幂等的(已存在则不覆盖)。 set -euo pipefail cd "$(dirname "$0")/.." mkdir -p deploy/keys if [ ! -f deploy/keys/jwt-private.pem ]; then openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out deploy/keys/jwt-private.pem echo "已生成 deploy/keys/jwt-private.pem" fi openssl pkey -in deploy/keys/jwt-private.pem -pubout -out deploy/keys/jwt-public.pem echo "已生成 deploy/keys/jwt-public.pem" if [ ! -f .env ]; then { echo "PATBOND_DB_PASSWORD=$(openssl rand -hex 16)" echo "PATBOND_INTERNAL_TOKEN=$(openssl rand -hex 32)" } > .env echo "已生成 .env(随机 DB 口令与内部令牌)" fi # 容器内以 uid 10001 运行,密钥需可读 chmod 644 deploy/keys/jwt-public.pem deploy/keys/jwt-private.pem echo "OK:deploy/keys/ 与 .env 就绪(均已被 .gitignore 忽略)"