#!/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."