52 lines
1.4 KiB
Bash
Executable File
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."
|