85 lines
2.6 KiB
Bash
Executable file
85 lines
2.6 KiB
Bash
Executable file
#!/bin/sh
|
|
set -eu
|
|
|
|
: "${GITEA_WORK_DIR:=/data/forgejo}"
|
|
: "${GITEA_CUSTOM:=$GITEA_WORK_DIR/custom}"
|
|
: "${GITEA_TEMP:=/tmp/gitea}"
|
|
: "${GITEA_APP_INI:=$GITEA_CUSTOM/conf/app.ini}"
|
|
: "${FORGEJO_HOME:=/data/forgejo/git}"
|
|
|
|
sed_escape() {
|
|
printf '%s' "$1" | sed 's/[\\/&]/\\&/g'
|
|
}
|
|
|
|
set_top_level_key() {
|
|
key="$1"
|
|
value="$2"
|
|
escaped_value="$(sed_escape "$value")"
|
|
|
|
if grep -q "^$key[[:space:]]*=" "$GITEA_APP_INI"; then
|
|
sed -i "s/^$key[[:space:]]*=.*/$key = $escaped_value/" "$GITEA_APP_INI"
|
|
return
|
|
fi
|
|
|
|
tmp_file="$(mktemp)"
|
|
{
|
|
printf '%s = %s\n' "$key" "$value"
|
|
cat "$GITEA_APP_INI"
|
|
} > "$tmp_file"
|
|
mv "$tmp_file" "$GITEA_APP_INI"
|
|
}
|
|
|
|
mkdir -p \
|
|
"$FORGEJO_HOME" \
|
|
"$GITEA_CUSTOM" \
|
|
"$GITEA_TEMP" \
|
|
"$GITEA_WORK_DIR/data" \
|
|
"$GITEA_WORK_DIR/git/repositories" \
|
|
"$GITEA_WORK_DIR/git/lfs" \
|
|
"$(dirname "$GITEA_APP_INI")"
|
|
|
|
chown -R forgejo:forgejo "$GITEA_WORK_DIR" "$GITEA_TEMP"
|
|
chmod 700 "$FORGEJO_HOME" "$GITEA_CUSTOM" "$GITEA_TEMP" "$(dirname "$GITEA_APP_INI")"
|
|
|
|
APP_NAME="${APP_NAME:-Forgejo: Beyond coding. We forge.}"
|
|
RUN_MODE="${RUN_MODE:-prod}"
|
|
RUN_USER="${RUN_USER:-forgejo}"
|
|
|
|
if [ ! -f "$GITEA_APP_INI" ]; then
|
|
SSH_DOMAIN="${SSH_DOMAIN:-localhost}"
|
|
HTTP_PORT="${HTTP_PORT:-3000}"
|
|
ROOT_URL="${ROOT_URL:-${GITEA__server__ROOT_URL:-}}"
|
|
DISABLE_SSH="${DISABLE_SSH:-false}"
|
|
SSH_PORT="${SSH_PORT:-2222}"
|
|
SSH_LISTEN_PORT="${SSH_LISTEN_PORT:-$SSH_PORT}"
|
|
LFS_START_SERVER="${LFS_START_SERVER:-true}"
|
|
DB_TYPE="${DB_TYPE:-sqlite3}"
|
|
DB_HOST="${DB_HOST:-localhost:3306}"
|
|
DB_NAME="${DB_NAME:-gitea}"
|
|
DB_USER="${DB_USER:-root}"
|
|
DB_PASSWD="${DB_PASSWD:-}"
|
|
INSTALL_LOCK="${INSTALL_LOCK:-false}"
|
|
DISABLE_REGISTRATION="${DISABLE_REGISTRATION:-false}"
|
|
REQUIRE_SIGNIN_VIEW="${REQUIRE_SIGNIN_VIEW:-false}"
|
|
SECRET_KEY="${SECRET_KEY:-}"
|
|
export APP_NAME RUN_MODE RUN_USER SSH_DOMAIN HTTP_PORT ROOT_URL DISABLE_SSH SSH_PORT SSH_LISTEN_PORT LFS_START_SERVER DB_TYPE DB_HOST DB_NAME DB_USER DB_PASSWD INSTALL_LOCK DISABLE_REGISTRATION REQUIRE_SIGNIN_VIEW SECRET_KEY
|
|
envsubst < /etc/templates/forgejo-app.ini.tmpl > "$GITEA_APP_INI"
|
|
fi
|
|
|
|
set_top_level_key APP_NAME "$APP_NAME"
|
|
set_top_level_key RUN_USER "$RUN_USER"
|
|
set_top_level_key RUN_MODE "$RUN_MODE"
|
|
crudini --set "$GITEA_APP_INI" server BUILTIN_SSH_SERVER_USER "$RUN_USER"
|
|
|
|
printenv | while IFS='=' read -r name value; do
|
|
case "$name" in
|
|
GITEA__*__*)
|
|
rest="${name#GITEA__}"
|
|
section="${rest%%__*}"
|
|
key="${rest#*__}"
|
|
crudini --set "$GITEA_APP_INI" "$section" "$key" "$value"
|
|
;;
|
|
esac
|
|
done
|
|
|
|
chown forgejo:forgejo "$GITEA_APP_INI"
|