Forgejo
Self-hosted git forge. Stores all Docker Compose stacks, Renovate config, and
personal docs. The webhook from homelab-docker drives Komodo auto-deploys on
every push to main.
Where it runs
- Host: PVE LXC
<lxc-id>(192.168.1.240) — check PVE UI for the container ID - UI: http://192.168.1.240:3000
- Created via: ProxmoxVE community script
- Config file:
/etc/forgejo/app.ini(inside the LXC) - Database: SQLite (inside the LXC)
Repositories
| Repo | Purpose |
|---|---|
matt/homelab-docker |
Docker Compose stacks; webhook triggers Komodo deploy on push to main |
matt/renovate |
Renovate global config (the server-side config.js is on Nexus at /mnt/server/containers/renovate/config.js) |
matt/docs |
Personal documentation |
Backup
The Forgejo LXC is included in a PBS backup job that runs nightly. This is the most important backup in the homelab — Forgejo holds all commit history and automation config. Verify it is in the backup job via PVE → Datacenter → Backup.
Wiki
The wiki for homelab-docker is a git repo. Clone it locally to edit:
git clone http://192.168.1.240:3000/matt/homelab-docker.wiki.git
Edit markdown files, commit, and push to publish. Changes appear immediately.
Webhook (homelab-docker → Komodo)
Configured on matt/homelab-docker repo → Settings → Webhooks.
| Field | Value |
|---|---|
| Target URL | http://192.168.1.226:9120/listener/github/procedure/<procedure-id>/main |
| Content type | application/json |
| Secret | Must match KOMODO_WEBHOOK_SECRET in Komodo's compose.env on Nexus |
| Events | Push only |
The /main suffix is a branch filter — Komodo only acts on pushes to main.
The procedure ID is the MongoDB ObjectId; find it in Komodo UI → Procedures →
the procedure → Config tab → Webhook section.
Note: New Komodo procedures default to
webhook_enabled: false. After creating the procedure, open its Config tab and enable the "Webhook Enabled" toggle, then save. Without this, Komodo authenticates the request but silently does nothing.
Check delivery log: repo → Settings → Webhooks → click the webhook → Recent Deliveries.
Useful commands
Run from PVE shell or via SSH to PVE (root@192.168.1.227):
# Check Forgejo service status
pct exec <lxc-id> -- systemctl status forgejo
# Enter the LXC interactively
pct enter <lxc-id>
# List Forgejo users (without entering the LXC)
ssh root@192.168.1.227 "pct exec <lxc-id> -- forgejo admin user list"
# Restart Forgejo
ssh root@192.168.1.227 "pct exec <lxc-id> -- systemctl restart forgejo"
Troubleshooting
Forgejo is unreachable
SSH to PVE and restart the service:
ssh root@192.168.1.227 "pct exec <lxc-id> -- systemctl restart forgejo"
If the LXC itself is down: pct status <lxc-id> and pct start <lxc-id> from
the PVE shell.
Webhook not firing
Check the delivery log: repo → Settings → Webhooks → Recent Deliveries. The error detail is shown per delivery. Common causes:
- Komodo is down on Nexus (
docker ps | grep komodoon Nexus) - Webhook secret mismatch between Forgejo and Komodo's
compose.env - Procedure has
webhook_enabled: false(enable in Komodo UI → Procedures → Config tab)
Automation
Infrastructure
Services
- Dashy
- Bookstack
- Tandoor
- Home Assistant
- Pinchflat
- FreshRSS
- Frigate
- Wyze-Bridge
- Mosquitto
- Dispatcharr
- Proxmox LXC Services
Operations
- How to Update Apps
- Backup & Restore Strategy
- Maintenance Schedule
- Useful Commands
- Restore Proxmox Containers
- NAS NFS Share for LXC
- SSH Public Key onto Nexus