Files
gitea-knusperkerne/tools/create_admin.sh
2025-11-20 22:45:38 +01:00

52 lines
1.4 KiB
Bash
Executable File

#!/bin/bash
#
# create_admin.sh
# Creates the Gitea admin user inside the running container.
#
set -euo pipefail
CONTAINER_NAME="gitea-app"
APP_INI_PATH="/data/gitea/conf/app.ini"
GITEA_BIN="/usr/local/bin/gitea"
# --- extract values from app.ini on the host ---
get_value() {
local section="$1"
local key="$2"
awk -F'=' -v s="[$section]" -v k="$key" '
$0==s {in_section=1; next}
/^\[/ {in_section=0}
in_section && $1~"^"k"[[:space:]]*$" {
gsub(/^[[:space:]]+|[[:space:]]+$/, "", $2)
print $2
exit
}
' "config/app.ini"
}
ADMIN_USER=$(get_value admin DEFAULT_ADMIN_NAME)
ADMIN_PASS=$(get_value admin DEFAULT_ADMIN_PASSWORD)
ADMIN_MAIL=$(get_value admin DEFAULT_ADMIN_EMAIL)
if [[ -z "$ADMIN_USER" || -z "$ADMIN_PASS" || -z "$ADMIN_MAIL" ]]; then
echo "[ERROR] Missing admin fields in config/app.ini" >&2
exit 1
fi
echo "[INFO] Creating admin user '$ADMIN_USER' in container '$CONTAINER_NAME'..."
docker exec -u git -i "$CONTAINER_NAME" "$GITEA_BIN" admin user create \
--config "$APP_INI_PATH" \
--username "$ADMIN_USER" \
--password "$ADMIN_PASS" \
--email "$ADMIN_MAIL" \
--admin 2>&1 | tee /tmp/gitea_create_admin.log
if grep -q "already exists" /tmp/gitea_create_admin.log; then
echo "[INFO] User '$ADMIN_USER' already exists, skipping."
exit 0
fi
echo "[INFO] Admin user '$ADMIN_USER' created successfully."