https://github.com/vergissberlin/railwayapp-gitlab
Deploy GitLab CE on Railway.
https://github.com/vergissberlin/railwayapp-gitlab
ci-cd devops docker gitlab railway railway-template
Last synced: 23 days ago
JSON representation
Deploy GitLab CE on Railway.
- Host: GitHub
- URL: https://github.com/vergissberlin/railwayapp-gitlab
- Owner: vergissberlin
- Created: 2026-03-22T23:16:20.000Z (3 months ago)
- Default Branch: main
- Last Pushed: 2026-05-13T21:41:09.000Z (about 1 month ago)
- Last Synced: 2026-05-13T23:33:58.389Z (about 1 month ago)
- Topics: ci-cd, devops, docker, gitlab, railway, railway-template
- Language: Shell
- Size: 21.5 KB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# GitLab CE

Deploy a self-hosted GitLab CE instance on Railway.
[](https://railway.com/deploy/vGH4ea?referralCode=2_sIT9&utm_medium=integration&utm_source=template&utm_campaign=generic)
## Files in this template
- `Dockerfile` uses the official `gitlab/gitlab-ce` image.
- `docker-entrypoint.sh` injects Railway domain and dynamic `$PORT`.
- `railway.toml` configures health checks, restart policy, and required volume mount.
## Environment variables
```bash
GITLAB_ROOT_PASSWORD=replace-with-strong-password
```
`RAILWAY_PUBLIC_DOMAIN` and `PORT` are provided by Railway.
## Public domain setup
Railway does not auto-generate a public domain during template deploy.
After deploying this template:
1. Open the service in Railway.
2. Go to `Settings` -> `Networking` -> `Public Networking`.
3. Click `Generate Domain`.
Once generated, `RAILWAY_PUBLIC_DOMAIN` is available and used by the entrypoint.
## Post-deploy checklist
- [ ] Set a strong `GITLAB_ROOT_PASSWORD`.
- [ ] Generate a public domain in Railway (`Settings` -> `Networking` -> `Public Networking`).
- [ ] Attach a persistent volume and mount:
- `/var/opt/gitlab`
- `/etc/gitlab`
- `/var/log/gitlab`
- [ ] Wait for first boot to complete before first login.
## Railway deploy runbook
Use this order to avoid blocked-host issues on first setup:
1. Deploy once.
2. Generate a public domain in Railway.
3. Deploy again (so `RAILWAY_PUBLIC_DOMAIN` is present at boot time).
4. Verify the application with:
- `https:///users/sign_in`
## First login
- Username: `root`
- Password: value from `GITLAB_ROOT_PASSWORD`
## Persistent storage
Attach a Railway volume and mount these paths:
- `/var/opt/gitlab`
- `/etc/gitlab`
- `/var/log/gitlab`
`railway.toml` enforces `/var/opt/gitlab` via `requiredMountPath` as the minimum persistent path.
## Notes
- GitLab needs significant RAM and CPU. Use a larger Railway plan for production.
- First boot can take several minutes.
- Keep at least one persistent volume attached before storing projects.
---
[](https://github.com/vergissberlin/railwayapp-airbyte) [](https://github.com/vergissberlin/railwayapp-airflow) [](https://github.com/vergissberlin/railwayapp-codimd) [](https://github.com/vergissberlin/railwayapp-django) [](https://github.com/vergissberlin/railwayapp-email) [](https://github.com/vergissberlin/railwayapp-fastapi) [](https://github.com/vergissberlin/railwayapp-flask) [](https://github.com/vergissberlin/railwayapp-flowise) [](https://github.com/vergissberlin/railwayapp-gitlab) [](https://github.com/vergissberlin/railwayapp-grafana) [](https://github.com/vergissberlin/railwayapp-homeassistant) [](https://github.com/vergissberlin/railwayapp-influxdb) [](https://github.com/vergissberlin/railwayapp-mongodb) [](https://github.com/vergissberlin/railwayapp-mqtt) [](https://github.com/vergissberlin/railwayapp-mysql) [](https://github.com/vergissberlin/railwayapp-n8n) [](https://github.com/vergissberlin/railwayapp-nodered) [](https://github.com/vergissberlin/railwayapp-nodejs) [](https://github.com/vergissberlin/railwayapp-opensearch) [](https://github.com/vergissberlin/railwayapp-postgresql) [](https://github.com/vergissberlin/railwayapp-redis) [](https://github.com/vergissberlin/railwayapp-typo3)