Deploy Private Git Workshop with Gitea
A private Gitea forge with Postgres and native Git HTTPS authentication.
App
Just deployed
Postgres
Just deployed
Deploy and Host Private Git Workshop with Gitea on Railway
A private Gitea forge with Postgres and native Git HTTPS authentication.
About Hosting Private Git Workshop with Gitea
Small engineering teams keeping internal repositories and issue discussions.
Set ADMIN_EMAIL to your real administrator address before deployment. The startup wrapper waits for database migrations and creates the operator administrator with ADMIN_PASSWORD from Railway variables. Sign in, create a private repository, then clone it over HTTPS using your Gitea username and a personal access token.
Included services and storage
| Service | Persistent storage | Public access |
|---|---|---|
| App | /data | HTTPS domain |
| Postgres | /var/lib/postgresql/data | Private network only |
First deployment
- Review required inputs in the deploy form and supply your own administrator email where requested.
- Deploy the services and wait for the application and any database migrations to finish.
- Open the generated HTTPS domain and follow the workflow above.
Why Deploy Private Git Workshop with Gitea on Railway
The definition supplies an HTTPS endpoint, generated credentials where supported and explicit storage paths. PostgreSQL, when present, stays private. Public upstream image manifests are locked to immutable digests so an upstream tag change does not silently replace a running version.
Common Use Cases
- Host small internal repositories.
- Track issues alongside code.
- Run a controlled workshop forge.
Dependencies for Private Git Workshop with Gitea
- Upstream application and its documentation. The upstream authors own the application and its license. This recipe does not claim application authorship or official endorsement.
- Private PostgreSQL 17 database and its persistent volume.
- A Railway plan with resources sufficient for these services. Hosting, storage and outbound traffic are billed by Railway; no software subscription, bank connection, SMTP account or provider credit is included.
Operational limits and backups
The public Gitea image is pinned to an immutable digest. Registration, SSH and Actions are disabled; no privileged runner is deployed. First administrator creation is recorded on the /data volume and is not repeated after a password change. Manage later accounts inside Gitea. Back up both /data repositories and PostgreSQL.
Run one replica for volume-backed applications. Schedule volume backups and export important application data; a persistent volume is not a backup. Keep generated secrets with the backups and review upstream migration notes before changing the pinned image. Credentials cannot all be rotated by changing first-run environment variables after accounts already exist.
Validation status
Prepared on 2026-10-18 from upstream installation documentation and public image manifests. Railway schema, variable references and publication metadata are checked before publication. Application runtime boot checks were not performed. This is an independently authored deployment recipe for existing software, not a claim of novel software, audited security or Railway partner verification.
Deploy this recipe
Review the required inputs and hosting resource costs before deploying.
Related deployment recipes
- Twenty CRM with Worker & Shared S3 — CRM with Postgres, Redis, background worker and shared S3 file storage.
- Ubuntu Browser Terminal Starter — Password-protected Ubuntu web terminal with a persistent workspace volume.
- Ubuntu SSH and AI CLI Starter — SSH development container with generated credentials and durable workspace.
These are separate deployments; no preconfigured integration between the applications is implied.
Disclosure: this template is maintained independently. Its maintainer may earn Railway usage kickbacks when other people deploy it. Railway bills hosting separately; no paid software subscription or provider credits are included.
Template Content
App
gitea/giteaADMIN_EMAIL
Your administrator email; required for the initial operator account.
Postgres
postgres