#!/bin/bash set -euo pipefail GITEA_DATA="/data/gitea" NOC_DATA="/data/noc" GITEA_DB="$GITEA_DATA/gitea.db" GITEA_INI="$GITEA_DATA/app.ini" GITEA_TOKEN_FILE="$NOC_DATA/gitea-token" GITEA_ADMIN_USER="${GITEA_ADMIN_USER:-noc}" GITEA_ADMIN_PASS="${GITEA_ADMIN_PASS:-noc-admin-changeme}" GITEA_ADMIN_EMAIL="${GITEA_ADMIN_EMAIL:-noc@localhost}" GITEA_HTTP_PORT="${GITEA_HTTP_PORT:-3000}" mkdir -p "$GITEA_DATA" "$NOC_DATA" # ── gitea config ──────────────────────────────────────────────────── if [ ! -f "$GITEA_INI" ]; then cat > "$GITEA_INI" < /dev/null 2>&1; then echo "[suite] gitea ready" break fi if [ "$i" -eq 30 ]; then echo "[suite] ERROR: gitea failed to start" exit 1 fi sleep 1 done # ── create admin user + token ────────────────────────────────────── if ! gitea admin user list --config "$GITEA_INI" 2>/dev/null | grep -q "$GITEA_ADMIN_USER"; then gitea admin user create \ --config "$GITEA_INI" \ --username "$GITEA_ADMIN_USER" \ --password "$GITEA_ADMIN_PASS" \ --email "$GITEA_ADMIN_EMAIL" \ --admin echo "[suite] created admin user: $GITEA_ADMIN_USER" fi if [ ! -f "$GITEA_TOKEN_FILE" ]; then TOKEN=$(curl -sf -X POST \ "http://localhost:${GITEA_HTTP_PORT}/api/v1/users/${GITEA_ADMIN_USER}/tokens" \ -u "${GITEA_ADMIN_USER}:${GITEA_ADMIN_PASS}" \ -H "Content-Type: application/json" \ -d "{\"name\":\"noc-suite\",\"scopes\":[\"all\"]}" \ | jq -r '.sha1') echo "$TOKEN" > "$GITEA_TOKEN_FILE" echo "[suite] admin token saved to $GITEA_TOKEN_FILE" fi # ── copy default noc config if missing ───────────────────────────── if [ ! -f "$NOC_DATA/config.yaml" ]; then cp /opt/noc/config.example.yaml "$NOC_DATA/config.yaml" echo "[suite] copied default config to $NOC_DATA/config.yaml — edit before use" fi # ── start noc ────────────────────────────────────────────────────── echo "[suite] starting noc..." exec noc