Skip to content

Forgejo

Self-hosted Git forge with exe.dev SSO

Deploy on exe.dev

Shelley handles the setup.

Prefer a terminal?
curl -fsSL https://exe.dev/deploy/forgejo/prompt.txt | ssh exe.dev new --prompt=/dev/stdin

Run Forgejo on an exe.dev VM.

Forgejo is a lightweight, self-hosted Git forge and a community fork of Gitea. It works well as a private Git server, a team forge, or a mirror for GitHub repositories.

What you get#

  • Forgejo behind exe.dev's HTTPS proxy, on port 8000
  • nginx translating X-ExeDev-UserID and X-ExeDev-Email into X-WEBAUTH-USER and X-WEBAUTH-EMAIL
  • Auto-registration, so any exe.dev user you share the VM with gets a Forgejo account the first time they visit
What's running, and where
Private https://my-forgejo.exe.xyz/ Forgejo, for you and anyone you share the VM with
my-forgejo.exe.xyz exe.dev VM
Forgejo The Forgejo binary, managed by systemd :3000/var/lib/forgejo
nginx Translates the exe.dev headers into the names Forgejo expects :8000

Deploy with Shelley#

Click Deploy and Shelley will set up Forgejo on a new VM, then check that it works. No config-file wrangling required.

Prefer a terminal?
curl -fsSL \
  https://exe.dev/deploy/forgejo/prompt.txt \
  | ssh exe.dev new --prompt=/dev/stdin
What Shelley is told
Set up Forgejo on this VM by following the exe.dev recipe at https://exe.dev/deploy/forgejo.md from top to bottom.

The recipe's example VM name is my-forgejo. This VM's name is the output of `hostname`: use it wherever the recipe writes my-forgejo. Skip the step that creates the VM; you are on it.

You are done when all of these are true. Check each one yourself:
- Forgejo behind exe.dev's [HTTPS proxy](/docs/proxy), on port 8000
- nginx translating `X-ExeDev-UserID` and `X-ExeDev-Email` into `X-WEBAUTH-USER` and `X-WEBAUTH-EMAIL`
- Auto-registration, so any exe.dev user you share the VM with gets a Forgejo account the first time they visit

Finish with the URLs I should open.

Also at /deploy/forgejo/prompt.txt. The recipe it follows is /deploy/forgejo.md.

Quick start#

Create a new Forgejo VM from the Forgejo starter.

How it works#

exe.dev's HTTPS proxy handles TLS and forwards requests to port 8000 on your VM.

For authenticated users, exe.dev adds the X-ExeDev-UserID and X-ExeDev-Email headers. See Login with exe.dev for details.

Forgejo can use reverse proxy authentication with X-WEBAUTH-USER and X-WEBAUTH-EMAIL. nginx translates the exe.dev headers into the names Forgejo expects.

With auto-registration enabled, any exe.dev user you share the VM with gets a Forgejo account the first time they visit.

Mirroring from GitHub#

Forgejo can mirror repositories from GitHub.

In the Forgejo UI, choose New Migration, then GitHub. Enter the repository URL and a personal access token with read access. Forgejo will clone the repo and keep it in sync.

For private repos, use a fine-grained GitHub PAT with read-only Contents permission for the repos you want to mirror.

Forgejo vs Gitea#

Forgejo and Gitea are very similar on exe.dev.

Forgejo is a community fork of Gitea. Both use the same config format, the same reverse proxy auth flow, and the same basic setup. Pick the project you prefer.

Updated Oct 17, 2026 · Markdown · manifest.json · Something wrong? Tell us