Forgejo
Forgejo is a self-hosted, community-driven Git service forked from Gitea, offering repositories, issues, pull requests, CI integration, and packages without depending on any single company.
1Prepare the data directory
The bind-mounted volume must be owned by the UID/GID Forgejo runs as (set via USER_UID/USER_GID, default 1000:1000).
mkdir -p ./forgejo && chown -R 1000:1000 ./forgejo2Define the service in docker-compose.yml
networks: forgejo: external: false services: server: image: codeberg.org/forgejo/forgejo:16 container_name: forgejo environment: - USER_UID=1000 - USER_GID=1000 restart: always networks: - forgejo volumes: - ./forgejo:/data - /etc/localtime:/etc/localtime:ro ports: - '3000:3000' - '222:22'
3Start Forgejo
docker compose up -d4Complete the web installer
By default Forgejo ships with SQLite; for production add a MySQL or PostgreSQL service and set FORGEJO__database__* environment variables before first start.
Visit http://localhost:3000 to finish the installation wizard and create the first (administrator) account.
5SSH access
Git-over-SSH is exposed on host port 222, mapped to container port 22.