Self-host kit: compose + binary/systemd, app.ini template, kit.sh, e2e test #1

Merged
leora merged 1 commits from initial-kit into main 2026-10-08 22:09:11 +08:00
Owner

Adds the kit:

  • docker-compose.yml: official gitea/gitea:28.1.0-rootless, pinned, loopback-only port.
  • Binary option: kit.sh downloads Gitea 28.1.0 and verifies its sha256; systemd/gitea.service + sudo ./kit.sh install-service.
  • config/app.ini.template: our settings (public repos browsable, sign-up with image captcha, no org creation for new users, 10-repo limit, no migrations/mirrors, egress lax, SSH off). Secrets generated locally at render time.
  • kit.sh: up / init / setup (admin + token) / protect / protect-all / agent (scoped token) / backup / status / down.
  • tests/e2e-binary.sh: full run in a throwaway dir on a spare port.
  • README (one-command start, tunnel / reverse proxy, backups, upgrades, licenses) and MIT LICENSE.

Tested on the box: tests/e2e-binary.sh 3990 17/17 passed (direct push to main rejected even for the admin, PR merge works, agent token can create repos but gets 403 on admin API, new users cannot create orgs and stop at 10 repos, migrations off, captcha on sign-up, backup written, no deprecated config keys). The Docker image was also started with the rendered config: healthy, admin created, direct push to main rejected. Scrubbed: no tokens, passwords, internal hostnames or personal data.

Adds the kit: - `docker-compose.yml`: official `gitea/gitea:28.1.0-rootless`, pinned, loopback-only port. - Binary option: `kit.sh` downloads Gitea 28.1.0 and verifies its sha256; `systemd/gitea.service` + `sudo ./kit.sh install-service`. - `config/app.ini.template`: our settings (public repos browsable, sign-up with image captcha, no org creation for new users, 10-repo limit, no migrations/mirrors, egress lax, SSH off). Secrets generated locally at render time. - `kit.sh`: up / init / setup (admin + token) / protect / protect-all / agent (scoped token) / backup / status / down. - `tests/e2e-binary.sh`: full run in a throwaway dir on a spare port. - README (one-command start, tunnel / reverse proxy, backups, upgrades, licenses) and MIT LICENSE. Tested on the box: `tests/e2e-binary.sh 3990` 17/17 passed (direct push to main rejected even for the admin, PR merge works, agent token can create repos but gets 403 on admin API, new users cannot create orgs and stop at 10 repos, migrations off, captcha on sign-up, backup written, no deprecated config keys). The Docker image was also started with the rendered config: healthy, admin created, direct push to main rejected. Scrubbed: no tokens, passwords, internal hostnames or personal data.
leora added 1 commit 2026-10-08 22:09:05 +08:00
leora merged commit ab7fdd50d7 into main 2026-10-08 22:09:11 +08:00
leora deleted branch initial-kit 2026-10-08 22:09:11 +08:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: leora/gitea-selfhost#1
No description provided.