refactor: Move Paperclip-specific .env generation to service.pre_start script

This commit is contained in:
Jannik committed 2026-10-01 20:07:56 +02:00
1 parent 7c38da5efc
commit aabbf6c28a
2 files changed
+47 -27

No files matched your search

+14 -27
View File
@@ -343,30 +343,6 @@ decrypt_envs() {
if [[ -f "${svc_dir}/.env.age" ]]; then
age --decrypt -i "${AGE_PRIVATE_KEY}" -o "${svc_dir}/.env" "${svc_dir}/.env.age"
sed -i 's/\r$//' "${svc_dir}/.env"
# Ensure BETTER_AUTH_SECRET is set for Paperclip
if [[ "${svc_name}" == "paperclip" ]]; then
if ! grep -q "BETTER_AUTH_SECRET" "${svc_dir}/.env"; then
log "Generating missing BETTER_AUTH_SECRET in .env..."
echo "BETTER_AUTH_SECRET=\"$(openssl rand -hex 32)\"" >> "${svc_dir}/.env"
fi
# Auto-configure default LLM (OPENAI_* Overrides) aus shared.env lesen
if ! grep -q "OPENAI_API_KEY=" "${svc_dir}/.env" && ! grep -q "ANTHROPIC_API_KEY=" "${svc_dir}/.env"; then
if [[ -f "${shared_env}" ]] && grep -q "OPENROUTER_API_KEY=" "${shared_env}"; then
log "Auto-configuring OpenRouter as default LLM..."
echo "" >> "${svc_dir}/.env"
echo "OPENAI_BASE_URL=https://openrouter.ai/api/v1" >> "${svc_dir}/.env"
grep "OPENROUTER_API_KEY=" "${shared_env}" | sed 's/OPENROUTER_API_KEY=/OPENAI_API_KEY=/' >> "${svc_dir}/.env"
elif [[ -f "${shared_env}" ]] && grep -q "MISTRAL_API_KEY=" "${shared_env}"; then
log "Auto-configuring Mistral as default LLM..."
echo "" >> "${svc_dir}/.env"
echo "OPENAI_BASE_URL=https://api.mistral.ai/v1" >> "${svc_dir}/.env"
grep "MISTRAL_API_KEY=" "${shared_env}" | sed 's/MISTRAL_API_KEY=/OPENAI_API_KEY=/' >> "${svc_dir}/.env"
fi
fi
fi
chmod 600 "${svc_dir}/.env"
fi
done
@@ -436,10 +412,20 @@ start_remaining() {
}
###############################################################################
# 9. Service-Init-Skripte ausführen
# Jeder Service kann eine "service.init"-Datei haben, die nach dem Start
# aufgerufen wird und den Service vollständig einrichtet.
# 9. Service-Init-Skripte ausführen (Pre & Post)
###############################################################################
run_service_pre_starts() {
log "Running service.pre_start scripts..."
for svc_name in "${ACTIVE_SERVICES[@]}"; do
local pre_script="${SERVICES_DIR}/${svc_name}/service.pre_start"
if [[ -f "${pre_script}" ]]; then
log "--- Running pre_start for: ${svc_name} ---"
chmod +x "${pre_script}"
bash "${pre_script}" || warn "service.pre_start for '${svc_name}' exited with errors (non-fatal)."
fi
done
}
run_service_inits() {
log "Running service.init scripts..."
for svc_name in "${ACTIVE_SERVICES[@]}"; do
@@ -479,6 +465,7 @@ main() {
enable_maintenance_mode
stop_all_services
decrypt_envs
run_service_pre_starts
create_volumes
pull_images
start_infra
+33
View File
@@ -0,0 +1,33 @@
#!/bin/bash
set -euo pipefail
SVC_DIR="${SERVICES_DIR}/paperclip"
SHARED_ENV="${SERVICES_DIR}/shared.env"
ENV_FILE="${SVC_DIR}/.env"
echo "[PaperClip Pre-Start] Checking configuration..."
if [[ -f "${ENV_FILE}" ]]; then
# Ensure BETTER_AUTH_SECRET is set for Paperclip
if ! grep -q "BETTER_AUTH_SECRET" "${ENV_FILE}"; then
echo "[PaperClip Pre-Start] Generating missing BETTER_AUTH_SECRET in .env..."
echo "BETTER_AUTH_SECRET=\"$(openssl rand -hex 32)\"" >> "${ENV_FILE}"
fi
# Auto-configure default LLM (OPENAI_* Overrides) aus shared.env lesen
if ! grep -q "OPENAI_API_KEY=" "${ENV_FILE}" && ! grep -q "ANTHROPIC_API_KEY=" "${ENV_FILE}"; then
if [[ -f "${SHARED_ENV}" ]] && grep -q "OPENROUTER_API_KEY=" "${SHARED_ENV}"; then
echo "[PaperClip Pre-Start] Auto-configuring OpenRouter as default LLM..."
echo "" >> "${ENV_FILE}"
echo "OPENAI_BASE_URL=https://openrouter.ai/api/v1" >> "${ENV_FILE}"
grep "OPENROUTER_API_KEY=" "${SHARED_ENV}" | sed 's/OPENROUTER_API_KEY=/OPENAI_API_KEY=/' >> "${ENV_FILE}"
elif [[ -f "${SHARED_ENV}" ]] && grep -q "MISTRAL_API_KEY=" "${SHARED_ENV}"; then
echo "[PaperClip Pre-Start] Auto-configuring Mistral as default LLM..."
echo "" >> "${ENV_FILE}"
echo "OPENAI_BASE_URL=https://api.mistral.ai/v1" >> "${ENV_FILE}"
grep "MISTRAL_API_KEY=" "${SHARED_ENV}" | sed 's/MISTRAL_API_KEY=/OPENAI_API_KEY=/' >> "${ENV_FILE}"
fi
fi
else
echo "[PaperClip Pre-Start] Warning: No .env found!"
fi