Files

Gitea deployment

The team Git service runs as Gitea 1.27.0 on the existing CVM:

  • public URL: https://git.imagebrewing.com;
  • container HTTP bind: 127.0.0.1:13000;
  • persistent data: /data/gitea/data;
  • database: Gitea-managed SQLite;
  • Git transport: HTTPS only; no extra public SSH port;
  • anonymous users may browse public repositories;
  • account registration requires administrator approval before sign-in.
  • daily backup target: /chucun/wangzhan-production/backups/gitea/.

The service is intentionally separate from the FlashOps runtime and database. Back up /data/gitea/data before an image upgrade. Pin the image version and review the Gitea release notes before changing it.

The current server does not have the Docker Compose plugin. The checked-in docker-compose.yml is the declarative service record for future rebuilds; the running container was created with the equivalent pinned docker run settings. Routine checks and restarts therefore use Docker directly:

sudo docker ps --filter name=^gitea$
sudo docker restart gitea
sudo docker logs --tail 100 gitea
curl -fsS http://127.0.0.1:13000/api/healthz

Install Compose or recreate the container from the checked-in definition only during a planned maintenance window, after a verified backup.

Nginx terminates HTTPS and proxies to the loopback-only container port. Run nginx -t before every reload. Credentials and API tokens are never stored in this directory or committed to Git.

gitea-backup.timer runs daily at 03:20 Asia/Shanghai with a randomized delay. It uses Gitea's own dump command, writes the ZIP and SHA-256 sidecar to the mounted COS bucket, and removes the temporary local dump after a successful copy. The live repository and SQLite database remain on the local filesystem because COSFS is a backup destination, not a POSIX database filesystem.