Persist env vars for app runtime

This commit is contained in:
Codex
2025-11-12 09:37:15 -06:00
parent 6720e936c2
commit a55b4bf1cb
3 changed files with 26 additions and 2 deletions

View File

@@ -5,7 +5,7 @@
"description": "Next-gen knowledge base that blends docs, whiteboards, and databases for self-hosted teams.", "description": "Next-gen knowledge base that blends docs, whiteboards, and databases for self-hosted teams.",
"website": "https://affine.pro", "website": "https://affine.pro",
"contactEmail": "support@affine.pro", "contactEmail": "support@affine.pro",
"version": "0.1.3", "version": "0.1.4",
"changelog": "Initial Cloudron packaging", "changelog": "Initial Cloudron packaging",
"manifestVersion": 2, "manifestVersion": 2,
"minBoxVersion": "7.0.0", "minBoxVersion": "7.0.0",

View File

@@ -3,6 +3,14 @@ set -euo pipefail
APP_DIR=${APP_BUILD_DIR:-/app/code/affine} APP_DIR=${APP_BUILD_DIR:-/app/code/affine}
cd "$APP_DIR" cd "$APP_DIR"
ENV_EXPORT_FILE=${ENV_EXPORT_FILE:-/run/affine/runtime.env}
if [ -f "$ENV_EXPORT_FILE" ]; then
set -a
# shellcheck disable=SC1090
source "$ENV_EXPORT_FILE"
set +a
fi
log() { log() {
printf '[%s] %s\n' "$(date --iso-8601=seconds)" "$*" printf '[%s] %s\n' "$(date --iso-8601=seconds)" "$*"

View File

@@ -8,12 +8,23 @@ APP_TMP_DIR=${APP_TMP_DIR:-/tmp/data}
APP_BUILD_DIR=${APP_BUILD_DIR:-/app/code/affine} APP_BUILD_DIR=${APP_BUILD_DIR:-/app/code/affine}
APP_HOME_DIR=${APP_HOME_DIR:-/app/data/home} APP_HOME_DIR=${APP_HOME_DIR:-/app/data/home}
AFFINE_HOME=${AFFINE_HOME:-$APP_HOME_DIR/.affine} AFFINE_HOME=${AFFINE_HOME:-$APP_HOME_DIR/.affine}
export APP_CODE_DIR APP_DATA_DIR APP_RUNTIME_DIR APP_TMP_DIR APP_BUILD_DIR APP_HOME_DIR AFFINE_HOME ENV_EXPORT_FILE=${ENV_EXPORT_FILE:-$APP_RUNTIME_DIR/runtime.env}
export APP_CODE_DIR APP_DATA_DIR APP_RUNTIME_DIR APP_TMP_DIR APP_BUILD_DIR APP_HOME_DIR AFFINE_HOME ENV_EXPORT_FILE
log() { log() {
printf '[%s] %s\n' "$(date --iso-8601=seconds)" "$*" printf '[%s] %s\n' "$(date --iso-8601=seconds)" "$*"
} }
persist_env_vars() {
local var
for var in "$@"; do
local value="${!var-}"
if [ -n "$value" ]; then
printf '%s=%q\n' "$var" "$value" >> "$ENV_EXPORT_FILE"
fi
done
}
require_env() { require_env() {
local var_name="$1" local var_name="$1"
if [ -z "${!var_name:-}" ]; then if [ -z "${!var_name:-}" ]; then
@@ -26,6 +37,7 @@ prepare_data_dirs() {
log "Preparing persistent directories" log "Preparing persistent directories"
mkdir -p "$APP_DATA_DIR/config" "$APP_DATA_DIR/storage" "$APP_DATA_DIR/logs" "$APP_RUNTIME_DIR" "$APP_HOME_DIR" "$AFFINE_HOME" mkdir -p "$APP_DATA_DIR/config" "$APP_DATA_DIR/storage" "$APP_DATA_DIR/logs" "$APP_RUNTIME_DIR" "$APP_HOME_DIR" "$AFFINE_HOME"
mkdir -p /run/nginx/body /run/nginx/proxy /run/nginx/fastcgi mkdir -p /run/nginx/body /run/nginx/proxy /run/nginx/fastcgi
: > "$ENV_EXPORT_FILE"
if [ ! -f "$APP_DATA_DIR/config/config.json" ]; then if [ ! -f "$APP_DATA_DIR/config/config.json" ]; then
log "Seeding default configuration" log "Seeding default configuration"
@@ -54,6 +66,7 @@ configure_database() {
db_url="postgresql://${db_url#postgres://}" db_url="postgresql://${db_url#postgres://}"
fi fi
export DATABASE_URL="$db_url" export DATABASE_URL="$db_url"
persist_env_vars DATABASE_URL
log "Configured PostgreSQL endpoint" log "Configured PostgreSQL endpoint"
} }
@@ -83,6 +96,7 @@ PY
export REDIS_SERVER_USERNAME="$username" export REDIS_SERVER_USERNAME="$username"
export REDIS_URL="$CLOUDRON_REDIS_URL" export REDIS_URL="$CLOUDRON_REDIS_URL"
export REDIS_SERVER_URL="$CLOUDRON_REDIS_URL" export REDIS_SERVER_URL="$CLOUDRON_REDIS_URL"
persist_env_vars REDIS_SERVER_HOST REDIS_SERVER_PORT REDIS_SERVER_PASSWORD REDIS_SERVER_DATABASE REDIS_SERVER_USERNAME REDIS_URL REDIS_SERVER_URL
log "Configured Redis endpoint" log "Configured Redis endpoint"
} }
@@ -97,6 +111,7 @@ configure_mail() {
export MAILER_PASSWORD="${CLOUDRON_MAIL_SMTP_PASSWORD:-}" export MAILER_PASSWORD="${CLOUDRON_MAIL_SMTP_PASSWORD:-}"
export MAILER_SENDER="${CLOUDRON_MAIL_FROM:-AFFiNE <no-reply@cloudron.local>}" export MAILER_SENDER="${CLOUDRON_MAIL_FROM:-AFFiNE <no-reply@cloudron.local>}"
export MAILER_SERVERNAME="${MAILER_SERVERNAME:-AFFiNE Server}" export MAILER_SERVERNAME="${MAILER_SERVERNAME:-AFFiNE Server}"
persist_env_vars MAILER_HOST MAILER_PORT MAILER_USER MAILER_PASSWORD MAILER_SENDER MAILER_SERVERNAME
log "Configured SMTP relay" log "Configured SMTP relay"
} }
@@ -120,6 +135,7 @@ PY
fi fi
fi fi
export AFFINE_INDEXER_ENABLED=${AFFINE_INDEXER_ENABLED:-false} export AFFINE_INDEXER_ENABLED=${AFFINE_INDEXER_ENABLED:-false}
persist_env_vars AFFINE_SERVER_EXTERNAL_URL AFFINE_SERVER_HOST AFFINE_SERVER_HTTPS AFFINE_INDEXER_ENABLED
} }
configure_auth() { configure_auth() {