From ad89c4d413beb6f6beb4c8ff7fa1fd21e2a50960 Mon Sep 17 00:00:00 2001 From: Deeman Date: Fri, 27 Feb 2026 15:49:45 +0100 Subject: [PATCH] feat: add Gitea service (SQLite, HTTPS-only) - gitea/docker-compose.yml: single container, SQLite, port 3000, data at /data/server-infra/gitea/ - setup.sh: restructure to separate recovery (one-time) from deploy (idempotent) for all services; add data dirs for gitea; loop over all services on deploy Co-Authored-By: Claude Sonnet 4.6 --- gitea/docker-compose.yml | 14 ++++++++ setup.sh | 70 ++++++++++++++++++++++++++-------------- 2 files changed, 60 insertions(+), 24 deletions(-) create mode 100644 gitea/docker-compose.yml diff --git a/gitea/docker-compose.yml b/gitea/docker-compose.yml new file mode 100644 index 0000000..1c3514f --- /dev/null +++ b/gitea/docker-compose.yml @@ -0,0 +1,14 @@ +services: + gitea: + image: gitea/gitea:latest + container_name: gitea + restart: always + ports: + - "3000:3000" + volumes: + - /data/server-infra/gitea:/data + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + environment: + - GITEA__database__DB_TYPE=sqlite3 + - GITEA__server__SSH_DISABLED=true diff --git a/setup.sh b/setup.sh index 96c4a7c..18f01a3 100644 --- a/setup.sh +++ b/setup.sh @@ -6,13 +6,18 @@ # sudo bash setup.sh # # What it does: -# 1. Recovers docker-compose.yml files from running containers via uvx docker-autocompose +# 1. Recovers docker-compose.yml files from already-running containers (one-time) # 2. Creates infra_service system user (docker group, nologin) -# 3. Creates /opt/server-infra/{umami,reverse-proxy}/ and deploys compose files -# 4. Copies recovered files back into this repo directory (ready to commit) +# 3. Creates /data/server-infra/{service}/ data directories +# 4. Deploys all compose files from this repo to /opt/server-infra/ (idempotent) # # Padelnomics containers are recovered to /tmp/padelnomics-compose-recovered.yml only. # They belong in the padelnomics repo, not here. +# +# Services managed by this repo: +# umami — analytics (recovered from running containers) +# reverse-proxy — nginx proxy manager (recovered from running containers) +# gitea — self-hosted git (new, compose file already in repo) set -euo pipefail @@ -115,60 +120,77 @@ else fi usermod -aG docker "${SERVICE_USER}" -# ── Deploy directory ─────────────────────────────────────────────────────────── +# ── Data directories ─────────────────────────────────────────────────────────── -log "Creating deploy directory ${DEPLOY_DIR}..." -mkdir -p "${DEPLOY_DIR}/umami" "${DEPLOY_DIR}/reverse-proxy" +log "Creating data directories..." +mkdir -p /data/server-infra/gitea +chown -R "${SERVICE_USER}:${SERVICE_USER}" /data/server-infra -for pair in \ - "/tmp/server-infra-recovery/umami.yml:${DEPLOY_DIR}/umami/docker-compose.yml" \ - "/tmp/server-infra-recovery/reverse-proxy.yml:${DEPLOY_DIR}/reverse-proxy/docker-compose.yml"; do - src="${pair%%:*}" - dst="${pair##*:}" +# ── Deploy: copy all compose files from repo to deploy dir (idempotent) ──────── +# +# Recovered files (umami, reverse-proxy) are already in ${SCRIPT_DIR} after +# the recovery section above. Gitea compose is committed directly in the repo. +# This section deploys all of them to DEPLOY_DIR. + +log "Deploying compose files to ${DEPLOY_DIR}..." + +for service in umami reverse-proxy gitea; do + src="${SCRIPT_DIR}/${service}/docker-compose.yml" + dst="${DEPLOY_DIR}/${service}/docker-compose.yml" if [ -f "${src}" ]; then + mkdir -p "${DEPLOY_DIR}/${service}" cp "${src}" "${dst}" + log " ${service} → ${dst}" + else + warn " ${service}/docker-compose.yml not in repo — skipping deploy" fi done chown -R "${SERVICE_USER}:${SERVICE_USER}" "${DEPLOY_DIR}" -log " Ownership set to ${SERVICE_USER}." # ── Summary ──────────────────────────────────────────────────────────────────── echo "" echo "==================================================================" echo "" -echo " Recovery complete. Files recovered:" +echo " Setup complete." echo "" +echo " Deployed services:" [ -f "${DEPLOY_DIR}/umami/docker-compose.yml" ] && echo " umami → ${DEPLOY_DIR}/umami/docker-compose.yml" [ -f "${DEPLOY_DIR}/reverse-proxy/docker-compose.yml" ] && echo " reverse-proxy → ${DEPLOY_DIR}/reverse-proxy/docker-compose.yml" +[ -f "${DEPLOY_DIR}/gitea/docker-compose.yml" ] && echo " gitea → ${DEPLOY_DIR}/gitea/docker-compose.yml" echo "" if [ -f "/tmp/padelnomics-compose-recovered.yml" ]; then echo " Padelnomics (NOT in repo — save to padelnomics repo):" echo " /tmp/padelnomics-compose-recovered.yml" echo "" fi -echo " Service user: ${SERVICE_USER} (docker group)" -echo " Deploy dir: ${DEPLOY_DIR}/" +echo " Service user: ${SERVICE_USER} (docker group)" +echo " Deploy dir: ${DEPLOY_DIR}/" +echo " Data dir: /data/server-infra/" echo "" echo "==================================================================" echo "" echo " Next steps:" echo "" -echo " 1. Inspect recovered files and fix up any gaps (env vars, volumes):" -echo " docker compose -f ${DEPLOY_DIR}/umami/docker-compose.yml config" -echo " docker compose -f ${DEPLOY_DIR}/reverse-proxy/docker-compose.yml config" -echo "" -echo " 2. Commit recovered files to git:" +echo " 1. Commit recovered compose files to git:" echo " cd ${SCRIPT_DIR}" echo " git add umami/docker-compose.yml reverse-proxy/docker-compose.yml" echo " git commit -m 'chore: recover compose files from running containers'" echo "" -echo " 3. Move padelnomics compose to the padelnomics repo:" -echo " /tmp/padelnomics-compose-recovered.yml" +echo " 2. Start Gitea:" +echo " sudo -u ${SERVICE_USER} docker compose -f ${DEPLOY_DIR}/gitea/docker-compose.yml up -d" +echo " # Then open http://:3000 to complete the web installer" +echo " # Set ROOT_URL to your public domain (e.g. https://git.yourdomain.com)" echo "" -echo " 4. To restart a service if containers go down:" -echo " sudo -u ${SERVICE_USER} docker compose -f ${DEPLOY_DIR}/umami/docker-compose.yml up -d" +echo " 3. Add Gitea proxy host in nginx proxy manager:" +echo " Forward to :3000" +echo "" +echo " 4. To restart any service if containers go down:" +echo " sudo -u ${SERVICE_USER} docker compose -f ${DEPLOY_DIR}//docker-compose.yml up -d" +echo "" +echo " 5. Move padelnomics compose to the padelnomics repo:" +echo " /tmp/padelnomics-compose-recovered.yml" echo "" echo "==================================================================" echo ""