mirror of
https://github.com/terraphim/gitea-infrastructure.git
synced 2026-07-16 01:00:33 +02:00
Add handover document
This commit is contained in:
+220
@@ -0,0 +1,220 @@
|
|||||||
|
# Gitea Infrastructure Handover Document
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
Self-hosted Gitea instance running on bigbox server with S3 storage, PostgreSQL, and Prometheus monitoring.
|
||||||
|
|
||||||
|
**URL:** https://git.terraphim.cloud
|
||||||
|
**GitHub Mirror:** https://github.com/terraphim/gitea-infrastructure
|
||||||
|
|
||||||
|
## Architecture
|
||||||
|
|
||||||
|
```
|
||||||
|
┌─────────────────────────────────────────────────────────────┐
|
||||||
|
│ Internet │
|
||||||
|
└─────────────────────────┬───────────────────────────────────┘
|
||||||
|
│ HTTPS (port 443)
|
||||||
|
▼
|
||||||
|
┌─────────────────────────────────────────────────────────────┐
|
||||||
|
│ Caddy Reverse Proxy │
|
||||||
|
│ (terraphim.cloud, existing) │
|
||||||
|
└─────────────────────────┬───────────────────────────────────┘
|
||||||
|
│ git.terraphim.cloud -> localhost:3000
|
||||||
|
▼
|
||||||
|
┌─────────────────────────────────────────────────────────────┐
|
||||||
|
│ Docker Network (gitea) │
|
||||||
|
├─────────────────────────────────────────────────────────────┤
|
||||||
|
│ Gitea (port 3000) │ PostgreSQL │ SeaweedFS (S3) │
|
||||||
|
│ - Attachments │ (port 5432) │ - S3 (port 8333) │
|
||||||
|
│ - Avatars │ │ - Filer (port 8888) │
|
||||||
|
│ - LFS │ │ - Volume (port 8080) │
|
||||||
|
│ │ │ - Master (port 9333) │
|
||||||
|
└─────────────────────────────────────────────────────────────┘
|
||||||
|
│ │ │
|
||||||
|
│ │ │
|
||||||
|
▼ ▼ ▼
|
||||||
|
┌─────────────────────────────────────────────────────────────┐
|
||||||
|
│ Tailscale Network │
|
||||||
|
│ Prometheus (100.106.66.7:9000) - internal │
|
||||||
|
│ S3 (100.106.66.7:8333) - internal only │
|
||||||
|
└─────────────────────────────────────────────────────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
## Services
|
||||||
|
|
||||||
|
| Service | Port | Access | Description |
|
||||||
|
|---------|------|--------|-------------|
|
||||||
|
| Gitea | 3000 | localhost (via Caddy) | Git web UI |
|
||||||
|
| Gitea SSH | 22/222 | Public | Git over SSH |
|
||||||
|
| PostgreSQL | 5432 | Docker internal | Database |
|
||||||
|
| SeaweedFS S3 | 8333 | Tailscale only | S3-compatible storage |
|
||||||
|
| SeaweedFS Filer | 8888 | Docker internal | File interface |
|
||||||
|
| Prometheus | 9000 | Tailscale only | Metrics |
|
||||||
|
|
||||||
|
## Server Access
|
||||||
|
|
||||||
|
**Server:** bigbox (100.106.66.7)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# SSH to bigbox
|
||||||
|
ssh bigbox
|
||||||
|
|
||||||
|
# Navigate to stack directory
|
||||||
|
cd ~/gitea-stack
|
||||||
|
|
||||||
|
# View container status
|
||||||
|
docker compose ps
|
||||||
|
|
||||||
|
# View logs
|
||||||
|
docker compose logs -f gitea
|
||||||
|
|
||||||
|
# Restart Gitea
|
||||||
|
docker compose restart server
|
||||||
|
|
||||||
|
# Stop entire stack
|
||||||
|
docker compose down
|
||||||
|
|
||||||
|
# Start stack
|
||||||
|
docker compose up -d
|
||||||
|
```
|
||||||
|
|
||||||
|
## 1Password Secrets
|
||||||
|
|
||||||
|
Vault: `TerraphimPlatform`
|
||||||
|
|
||||||
|
| Item | Purpose |
|
||||||
|
|------|---------|
|
||||||
|
| gitea-postgres | PostgreSQL password |
|
||||||
|
| gitea-s3 | S3 access key and secret key |
|
||||||
|
|
||||||
|
### Re-deploying with 1Password
|
||||||
|
|
||||||
|
1. Source the 1Password authentication:
|
||||||
|
```bash
|
||||||
|
source ~/op_zesticai_non_prod.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Inject secrets and deploy:
|
||||||
|
```bash
|
||||||
|
cd ~/gitea-stack
|
||||||
|
op inject --in-file ../gitea_config/docker-compose.yml.template --out-file docker-compose.yml
|
||||||
|
docker compose up -d
|
||||||
|
```
|
||||||
|
|
||||||
|
## Storage Configuration
|
||||||
|
|
||||||
|
### S3 Buckets
|
||||||
|
|
||||||
|
- **gitea** - Attachments, avatars, repository files
|
||||||
|
- **gitea-lfs** - Git LFS objects
|
||||||
|
|
||||||
|
### Gitea Storage Settings
|
||||||
|
|
||||||
|
The following storage types are configured to use S3 (Minio):
|
||||||
|
|
||||||
|
- `[attachment]` - File attachments
|
||||||
|
- `[picture]` - Avatars and images
|
||||||
|
- `[lfs]` - Git LFS objects
|
||||||
|
- `[storage]` - Default storage configuration
|
||||||
|
|
||||||
|
Local storage is used for:
|
||||||
|
- Git repositories (`/data/git/repositories`)
|
||||||
|
- Database (PostgreSQL)
|
||||||
|
|
||||||
|
## Caddy Configuration
|
||||||
|
|
||||||
|
Caddy is already running on bigbox. The git route is appended to `/etc/caddy/Caddyfile`:
|
||||||
|
|
||||||
|
```
|
||||||
|
git.terraphim.cloud {
|
||||||
|
reverse_proxy localhost:3000
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
To update Caddy config:
|
||||||
|
```bash
|
||||||
|
ssh bigbox
|
||||||
|
sudo vim /etc/caddy/Caddyfile
|
||||||
|
sudo caddy reload
|
||||||
|
```
|
||||||
|
|
||||||
|
## Monitoring
|
||||||
|
|
||||||
|
**Prometheus:** http://100.106.66.7:9000 (Tailscale only)
|
||||||
|
|
||||||
|
Scrape targets configured in `prometheus/prometheus.yml`.
|
||||||
|
|
||||||
|
## Troubleshooting
|
||||||
|
|
||||||
|
### Check Gitea status
|
||||||
|
```bash
|
||||||
|
ssh bigbox
|
||||||
|
docker compose ps
|
||||||
|
docker logs gitea
|
||||||
|
```
|
||||||
|
|
||||||
|
### Check S3 connectivity
|
||||||
|
```bash
|
||||||
|
ssh bigbox
|
||||||
|
docker exec gitea curl -s http://s3storage:8333/
|
||||||
|
```
|
||||||
|
|
||||||
|
### Reset PostgreSQL password
|
||||||
|
```bash
|
||||||
|
ssh bigbox
|
||||||
|
docker compose exec db psql -U gitea -c "ALTER USER gitea WITH PASSWORD 'newpassword';"
|
||||||
|
```
|
||||||
|
|
||||||
|
### View S3 buckets
|
||||||
|
```bash
|
||||||
|
ssh bigbox
|
||||||
|
curl -s http://localhost:8888/bucket/
|
||||||
|
```
|
||||||
|
|
||||||
|
## Backup
|
||||||
|
|
||||||
|
To back up the Gitea data:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# On bigbox
|
||||||
|
cd ~/gitea-stack
|
||||||
|
docker compose stop
|
||||||
|
tar -czf gitea-backup-$(date +%Y%m%d).tar.gz gitea/ postgres/ seaweedfs/
|
||||||
|
docker compose start
|
||||||
|
```
|
||||||
|
|
||||||
|
## Updates
|
||||||
|
|
||||||
|
To update Gitea to a new version:
|
||||||
|
|
||||||
|
1. Edit `docker-compose.yml.template`:
|
||||||
|
```yaml
|
||||||
|
image: gitea/gitea:NEW_VERSION
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Re-inject secrets and deploy:
|
||||||
|
```bash
|
||||||
|
source ~/op_zesticai_non_prod.sh
|
||||||
|
op inject --in-file ../gitea_config/docker-compose.yml.template --out-file docker-compose.yml
|
||||||
|
docker compose up -d --build
|
||||||
|
```
|
||||||
|
|
||||||
|
## GitHub Mirroring
|
||||||
|
|
||||||
|
See `MIRRORING-GUIDE.md` for bidirectional GitHub ↔ Gitea mirroring setup.
|
||||||
|
|
||||||
|
## Key Files
|
||||||
|
|
||||||
|
| File | Description |
|
||||||
|
|------|-------------|
|
||||||
|
| `docker-compose.yml.template` | Template with 1Password references |
|
||||||
|
| `Caddyfile` | Caddy reverse proxy config |
|
||||||
|
| `deploy-to-bigbox.sh` | Deployment script |
|
||||||
|
| `s3_config.json.template` | SeaweedFS S3 config template |
|
||||||
|
| `prometheus/prometheus.yml` | Prometheus scrape config |
|
||||||
|
| `.github/workflows/*.yml` | GitHub Actions for mirroring |
|
||||||
|
|
||||||
|
## Contacts
|
||||||
|
|
||||||
|
- Infrastructure owner: Alex
|
||||||
|
- 1Password vault: TerraphimPlatform
|
||||||
Reference in New Issue
Block a user