commit a2b6bc848f4b1e2c42986079fa2462b191b2b14d Author: Lars Klemstein Date: Thu Nov 20 22:45:38 2025 +0100 version 1 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a33789d --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +.env +.DS_Store +db_dumps/ diff --git a/config/app.ini b/config/app.ini new file mode 100644 index 0000000..08b942a --- /dev/null +++ b/config/app.ini @@ -0,0 +1,48 @@ +WORK_PATH = /data/gitea + +[database] +DB_TYPE = sqlite3 +PATH = /data/gitea/gitea.db +LOG_SQL = false + +[server] +DOMAIN = gitea.knusperkerne.de +ROOT_URL = https://gitea.knusperkerne.de/ +SSH_PORT = 22 +HTTP_PORT = 3000 +PROTOCOL = http +DISABLE_SSH = false +START_SSH_SERVER = false +LFS_START_SERVER = true +LFS_JWT_SECRET = 2xM3-DRC9F9_bp43VPQLOEkmO0pqVSJB5CqNp4h_PeA + +[security] +INSTALL_LOCK = true +SECRET_KEY = Z675CFjgVmLFGkjc6cMRRT2Nk0nZLHKK +INTERNAL_TOKEN = eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYmYiOjE3NjIyOTg5NTJ9.RhtwHQ-B88_QzFqxB8U6lk_KQ2LZ4WEF99VeO-I0ZaU + +[service] +REGISTER_EMAIL_CONFIRM = false +ENABLE_NOTIFY_MAIL = false +DEFAULT_ALLOW_CREATE_ORGANIZATION = true +DISABLE_REGISTRATION = true + +[admin] +DEFAULT_ADMIN_NAME = admin +DEFAULT_ADMIN_PASSWORD = VcIRBERKGhUfEzdHyoxAV2JEcAu0D3J1 +DEFAULT_ADMIN_EMAIL = lklemstein@axway.com + +[oauth2] +JWT_SECRET = sqDdGTpJRLaIuX3bioYYGGMNL_WiyyVNJ-IrFXkCnKA + +[mailer] +ENABLED = true +FROM = Gitea +PROTOCOL = smtp +SMTP_ADDR = posteo.de +SMTP_PORT = 587 +IS_TLS_ENABLED = true +USER = knusperkerne@posteo.de +PASSWD = KOLVS2+xo47!7HUlRfBp +HELO_HOSTNAME = gitea.knusperkerne.de +SKIP_VERIFY = false diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..fea6211 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,26 @@ +--- +services: + gitea: + container_name: gitea-app + image: gitea/gitea:1.25 + restart: unless-stopped + environment: + - USER_UID=1000 + - USER_GID=1000 + volumes: + - data:/data + - ./config/app.ini:/data/gitea/conf/app.ini:ro + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + ports: + - "127.0.0.1:13000:3000" + - "127.0.0.1:13022:22" + networks: + - gitea + +networks: + gitea: + driver: bridge + +volumes: + data: diff --git a/private/pwd_lars b/private/pwd_lars new file mode 100644 index 0000000..a1a67bb --- /dev/null +++ b/private/pwd_lars @@ -0,0 +1 @@ +J9GzdGPg0RKBmKVy6Zutgj1URLAopnCM diff --git a/tools/create_admin.sh b/tools/create_admin.sh new file mode 100755 index 0000000..540f8a8 --- /dev/null +++ b/tools/create_admin.sh @@ -0,0 +1,51 @@ +#!/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."