Compare commits

..

No commits in common. "c768716a2d758be2b64d53c551fcf3398334f660" and "6930ee3b7ccfce51323187f53db3583e759c4e8d" have entirely different histories.

3 changed files with 45 additions and 57 deletions

View File

@ -1,67 +1,63 @@
# Gitea # Gitea
Self hosted Git
Followed instructions on Gitea page: https://docs.gitea.com/next/installation/install-with-docker
Self-hosted git server backed by PostgreSQL, proxied through Traefik. ### Steps
1. Create a new user to own the gitea folder.
## Services
| Service | Image | Purpose |
|---------|-------|---------|
| `server` | `gitea/gitea:latest` | Gitea web/git server |
| `database` | `postgres:14` | PostgreSQL database |
Data is persisted to `/pwspool/software/gitea/` on the host.
## Setup
### 1. Configure environment
Copy the example env files and fill in values:
``` ```
cp gitea.env.example gitea.env sudo groupadd gitea && sudo useradd giteauser && sudo usermod -a -G gitea giteauser && chown -r gitea:giteauser .
cp database.env.example database.env ```
2. Configure Environment
Create `gitea.env` and `database.env` from the examples, replacing with relevant env values.
See [Gitea Documentation](https://docs.gitea.com/administration/config-cheat-sheet) for examples/types.
2. Run via Docker Compose
``` ```
- `gitea.env` — Gitea app config (domain, SSH settings, DB credentials, etc.) docker-compose up -d
- `database.env` — PostgreSQL credentials
See the [Gitea config cheat sheet](https://docs.gitea.com/administration/config-cheat-sheet) for all available options.
### 2. Start the stack
``` ```
docker compose up -d 3. Test postgresql
```
docker exec -it gitea_db bash
psql -h 127.0.0.1 -p 5432 -U olomana_readwrite -d gitea
``` ```
### 3. Complete initial setup 4. Go to xxx.xxx.xx.xxx:3000 and fill out initial config. Everything should match up to default value.
Some things that were weird:
- could not use any port that wasnt default postgresql (5432)
- had to make sure to specify database container by the right name. Removed custom name and used just "database".
Note that the first admin is set via env vars, by generating the password hash. Alternatively create your users by setting the env var that controls signups.
Navigate to `https://git.whitney.rip` and complete the web installer. Values should match what's in `gitea.env`. A few known quirks: 5. Provision new users
- PostgreSQL must use the default port (5432); other ports may fail. You can do that from the "Site Administration" view from the first admin user.
- Use `database` as the database hostname (matches the service name in `docker-compose.yml`).
- The first admin account can be created during initial setup or by enabling registrations temporarily via `GITEA__service__DISABLE_REGISTRATION=false`.
### 4. Provision users 6. Configure SSH
From the admin account: **Site Administration > User Accounts > Create User Account**. **Note: This is probably not worth pursuing and I've given up on it. The following has only sort of worked for me.**
### 5. Configure SSH Via Traefik:
- Add another entrypoint in `traefik.toml`:
SSH is exposed via Traefik TCP passthrough on port 2222:
- The `gitea` entrypoint on `:2222` is defined in `traefik.toml`.
- TCP router labels in `docker-compose.yml` forward `2222` → container port `2222`.
- `SSH_DOMAIN` and `SSH_PORT=2222` in `gitea.env` tell Gitea what to advertise in clone URLs.
Test SSH:
``` ```
ssh -T -p 2222 git@git.whitney.rip entryPoints:
gitea:
address: ":2222"
``` ```
- Configure similar traefik labels to what we normally do for containers:
```
- traefik.tcp.routers.gitea_ssh.rule=HostSNI(`*`)
- traefik.tcp.routers.gitea_ssh.entrypoints=ssh
- traefik.tcp.routers.gitea_ssh.service=gitea_ssh
- traefik.tcp.services.gitea_ssh.loadbalancer.server.port=22
```
7. Handle user authentication like you'd do on Github by generating new ssh keys and adding them to the SSH Keys section.
Settings > SSH/GPG Keys > Manage SSH Keys
Now should also be able to clone with SSH.
### 6. Add SSH keys for users ### Running
**Settings > SSH/GPG Keys > Manage SSH Keys** — same flow as GitHub.
## Running
``` ```
docker compose down && docker compose build && docker compose up -d && docker logs -f gitea docker compose down && docker compose build && docker compose up -d && docker logs -f gitea
``` ```
### References
`https://docs.gitea.com/next/administration/config-cheat-sheet`

View File

@ -25,10 +25,6 @@ services:
- traefik.http.routers.gitea.tls=true - traefik.http.routers.gitea.tls=true
- traefik.http.routers.gitea.tls.certresolver=lets-encrypt - traefik.http.routers.gitea.tls.certresolver=lets-encrypt
- traefik.http.services.gitea.loadbalancer.server.port=3000 - traefik.http.services.gitea.loadbalancer.server.port=3000
- traefik.tcp.routers.gitea-ssh.rule=HostSNI(`*`)
- traefik.tcp.routers.gitea-ssh.entrypoints=gitea
- traefik.tcp.routers.gitea-ssh.service=gitea-ssh-svc
- traefik.tcp.services.gitea-ssh-svc.loadbalancer.server.port=2222
database: database:
image: postgres:14 image: postgres:14

View File

@ -2,10 +2,6 @@ USER_UID=1005
USER_GID=1007 USER_GID=1007
GITEA__server__PROTOCOL=http GITEA__server__PROTOCOL=http
GITEA__server__ROOT_URL=https://git.example.com GITEA__server__ROOT_URL=https://git.example.com
GITEA__server__SSH_DOMAIN=git.example.com
GITEA__server__START_SSH_SERVER=true
GITEA__server__SSH_LISTEN_PORT=2222
GITEA__server__SSH_PORT=2222
GITEA__database__DB_TYPE=postgres GITEA__database__DB_TYPE=postgres
GITEA__database__HOST=database:5432 GITEA__database__HOST=database:5432
GITEA__database__NAME=gitea GITEA__database__NAME=gitea