Forgejo is a self-hosted lightweight software forge
| Port | 3000 |
| Registry | ghcr.io/daemonless/forgejo |
| Source | https://codeberg.org/forgejo/forgejo |
| Website | https://forgejo.org/ |
| Tag | Description | Best For |
|---|---|---|
15 / lts |
Built from latest upstream source release of the v15 branch. | Alternative build. |
15-latest / lts-latest |
Built from latest upstream source release of the v15 branch with latest FreeBSD packages. | Most users. Matches Linux Docker behavior. |
15-pkg-latest / lts-pkg-latest |
FreeBSD Latest. Rolling package updates. | Newest FreeBSD packages. |
14-pkg-latest |
FreeBSD Latest. Rolling package updates. | Newest FreeBSD packages. |
Before deploying, ensure your host environment is ready. See the Quick Start Guide for host setup instructions.
services:
forgejo:
image: "ghcr.io/daemonless/forgejo:latest"
container_name: forgejo
environment:
- PUID=1000 # User ID for the application process
- PGID=1000 # Group ID for the application process
- TZ=UTC # Timezone for the container
- SSH_PORT=2222 # Published port for sshd (used in clone URLs)
- SSH_LISTEN_PORT=22 # Port on which sshd listens inside the container
volumes:
- "/path/to/containers/forgejo:/config"
ports:
- "3000:3000"
- "2222:22"
restart: unless-stoppedpodman run -d --name forgejo \
-p 3000:3000 \
-p 2222:22 \
-e PUID=1000 \
-e PGID=1000 \
-e TZ=UTC \
-e SSH_PORT=2222 \
-e SSH_LISTEN_PORT=22 \
-v /path/to/containers/forgejo:/config \
ghcr.io/daemonless/forgejo:latest- name: Deploy forgejo
containers.podman.podman_container:
name: forgejo
image: "ghcr.io/daemonless/forgejo:latest"
state: started
restart_policy: always
env:
PUID: "1000"
PGID: "1000"
TZ: "UTC"
SSH_PORT: "2222"
SSH_LISTEN_PORT: "22"
ports:
- "3000:3000"
- "2222:22"
volumes:
- "/path/to/containers/forgejo:/config"Access at: http://localhost:3000
| Variable | Default | Description |
|---|---|---|
PUID |
1000 |
User ID for the application process |
PGID |
1000 |
Group ID for the application process |
TZ |
UTC |
Timezone for the container |
SSH_PORT |
2222 |
Published port for sshd (used in clone URLs) |
SSH_LISTEN_PORT |
22 |
Port on which sshd listens inside the container |
| Path | Description |
|---|---|
/config |
Configuration, repositories, and data directory |
| Port | Protocol | Description |
|---|---|---|
3000 |
TCP | Web UI |
22 |
TCP | SSH port |
If no configuration file exists when the container starts, it will generate an initial default
config file at /config/custom/conf/app.ini.
You can make configuration changes in this file later (e.g. SMTP configuration) and they will be
preserved across container restarts.
If you modify the port mapping from the default 2222:22 you need to update the 2 environment variables
described below accordingly.
This variable indicates on which port Forgejo's ssh server listens inside the container.
If your port mapping for ssh is 2222:22, this variable should be set to 22.
This variable is used on every container start to modify the sshd_config config file.
This variable tells Forgejo on which port the ssh server is reachable from the outside and is
used when constructing the ssh URLs shown in Forgejo's web UI.
If your port mapping for ssh is 2222:22, this variable should be set to 2222.
This variable is used only during the first container startup to create the initial configuration file for Forgejo.
If you want to modify the SSH_PORT later, you need to change the configuration in the [server]
section of /config/custom/conf/app.ini.
Architectures: amd64
User: bsd (UID/GID via PUID/PGID, defaults to 1000:1000)
Base: FreeBSD 15.0
Need help? Join our Discord community.