jason ae8a7583a8 🔧 Harden gitea binary download in 05-custom.sh 🔧
Fix SSL and rate-limit failures when downloading gitea during docker build.
The GitHub REST API is rate-limited at 60 req/hour for unauthenticated
requests from Docker BuildKit's outgoing IP. Additionally, BuildKit resolves
github.com via the host DNS which may return an IPv6 address served by a
transparent proxy, causing TLS cert verification failures (error 60: "no
alternative certificate subject name matches target hostname 'github.com'").
Changes:
- rootfs/root/docker/setup/05-custom.sh: replace JSON API version lookup
with a redirect-follow approach (curl -4sfL -o /dev/null -w %{url_effective})
that avoids the rate-limited /releases/latest API endpoint entirely
- rootfs/root/docker/setup/05-custom.sh: add -4 (IPv4-only) flag to all
github.com curl calls to bypass intercepted IPv6 DNS resolutions
- rootfs/root/docker/setup/05-custom.sh: add explicit ca-certificates
install and update-ca-certificates before any HTTPS downloads, since
the base image cert bundle may be stale after system upgrade

rootfs/root/docker/setup/05-custom.sh
2026-05-24 20:53:40 -04:00
2026-05-12 20:06:34 -04:00
2026-05-24 20:53:40 -04:00
🦈🏠🐜 Initial Commit 🐜🦈🏠
2025-09-16 23:50:36 -04:00
2026-05-12 20:06:34 -04:00
2026-05-12 20:06:34 -04:00
2026-05-12 20:06:34 -04:00
2026-05-12 20:06:34 -04:00
2026-05-12 20:06:34 -04:00

gitea

An all-in-one Alpine-based Docker image that bundles Gitea (self-hosted Git service), Docker-in-Docker (dockerd), and act_runner (Gitea Actions CI runner) into a single container. Designed for teams that want a complete self-hosted Git + CI/CD stack without orchestrating multiple containers. Gitea is pre-configured with Actions enabled, SSH access, LFS, and five act_runner worker instances that register automatically on first boot.


🐳 Docker

Pull and run

docker run -d \
  --restart always \
  --privileged \
  --name casjaysdevdocker-gitea-latest \
  --hostname gitea \
  -e TZ=${TIMEZONE:-America/New_York} \
  -v /var/lib/srv/$USER/docker/casjaysdevdocker/gitea/data:/data:z \
  -v /var/lib/srv/$USER/docker/casjaysdevdocker/gitea/config:/config:z \
  -p 80:80 \
  -p 7833:7833 \
  -p 2375:2375 \
  -p 44015:44015 \
  casjaysdevdocker/gitea:latest

Note: --privileged is required — the container runs a full Docker daemon (DinD) and needs cgroup v2 access.

Ports

Port Protocol Service Description
80 TCP Gitea Web UI and HTTP clone
7833 TCP sshd Git SSH access (git clone git@host:user/repo)
2375 TCP dockerd Docker daemon (plain HTTP — bind to localhost or a trusted network only)
44015 TCP act_runner Actions artifact/cache server

Volumes

Path Description
/config Gitea config, SSH host keys, act_runner registration state
/data Gitea repositories, LFS objects, SQLite database, Docker layer cache

Environment variables

Variable Default Description
TZ America/New_York Container timezone
SERVER_ADDRESS http://localhost Gitea URL used by act_runner for self-registration
SERVER_TOKEN (auto-generated) act_runner registration token — generated from Gitea on first boot if not set
RUNNER_LABELS (runner default) Comma-separated labels applied to all registered runners
RUNNERS_START 5 Number of act_runner worker instances to start
RUNNERS_LOG_DIR /var/log/act_runner Directory for per-runner log files

docker-compose

services:
  gitea:
    image: casjaysdevdocker/gitea:latest
    container_name: casjaysdevdocker-gitea
    restart: always
    privileged: true
    hostname: gitea
    environment:
      - TZ=America/New_York
      - RUNNERS_START=5
    volumes:
      - /var/lib/srv/$USER/docker/casjaysdevdocker/gitea/data:/data:z
      - /var/lib/srv/$USER/docker/casjaysdevdocker/gitea/config:/config:z
    ports:
      - 80:80
      - 7833:7833
      - 2375:2375
      - 44015:44015

Automatic install/update via dockermgr

dockermgr update gitea

🛠️ Development

Get source files

git clone "https://github.com/casjaysdevdocker/gitea" "$HOME/Projects/github/casjaysdevdocker/gitea"

🐳 Docker build

The image builds for linux/amd64 and linux/arm64 via BuildX. Gitea and act_runner binaries are downloaded from GitHub/Gitea APIs at build time.

cd "$HOME/Projects/github/casjaysdevdocker/gitea"
buildx

Image tags pushed: casjaysdevdocker/gitea:latest and casjaysdevdocker/gitea:YYMM (date tag).


👤 Authors

🤖 casjay: Github 🤖
casjaysdevdocker: Github Docker


📄 License

MIT — see LICENSE.md

S
Description
Repo for gitea
Readme 346 KiB
Languages
Shell 96.2%
Dockerfile 3.8%