Add forgejo (with shared postgres), docs/ideas; fix ENOTDIR in local catalog listing

Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
Ezequiel C. 2026-09-10 23:29:36 +02:00
parent 161464602e
commit d66db4e85e
7 changed files with 150 additions and 1 deletions

View file

@ -1,11 +1,16 @@
{
"generatedAt": "2026-09-02T16:59:46.903Z",
"generatedAt": "2026-09-10T21:29:23.464Z",
"services": [
{
"id": "authelia",
"version": "3.0.0",
"path": "services/authelia/metadata.json"
},
{
"id": "forgejo",
"version": "11.0.0",
"path": "services/forgejo/metadata.json"
},
{
"id": "lldap",
"version": "1.0.0",
@ -25,6 +30,11 @@
"id": "portainer",
"version": "1.0.0",
"path": "services/portainer/metadata.json"
},
{
"id": "postgres",
"version": "17.0.0",
"path": "services/postgres/metadata.json"
}
]
}

View file

@ -0,0 +1,67 @@
{
"id": "forgejo",
"name": "Forgejo",
"description": "Self-hosted Git service (web UI + git over SSH) backed by the homelab PostgreSQL.",
"version": "11.0.0",
"category": "development",
"tags": ["git", "forgejo", "vcs", "self-hosted", "codeberg"],
"author": "Forgejo contributors",
"license": "MIT",
"homepage": "https://forgejo.org/",
"documentation": "https://forgejo.org/docs/latest/",
"dependsOn": ["postgres"],
"compose": {
"image": "codeberg.org/forgejo/forgejo:11",
"container_name": "forgejo",
"restart": "unless-stopped",
"environment": [
"FORGEJO__database__TYPE=postgres",
"FORGEJO__database__HOST=homelab-postgres:5432",
"FORGEJO__database__NAME=${PG_DB}",
"FORGEJO__database__USER=${PG_USER}",
"FORGEJO__database__PASSWD=${PG_PASSWORD}",
"FORGEJO__server__ROOT_URL=${FORGEJO_ROOT_URL}",
"FORGEJO__server__SSH_DOMAIN=${FORGEJO_SSH_DOMAIN}",
"FORGEJO__server__SSH_PORT=2222",
"FORGEJO__service__DISABLE_REGISTRATION=true",
"TZ=${TZ}"
],
"ports": [
"10.0.0.5:3000:3000",
"10.0.0.5:2222:22"
],
"volumes": [
"forgejo_data:/data",
"/etc/timezone:/etc/timezone:ro",
"/etc/localtime:/etc/localtime:ro"
],
"networks": ["homelab"]
},
"volumes": { "forgejo_data": {} },
"networks": { "homelab": { "external": true } },
"env": [
{ "name": "PG_USER", "label": "Postgres user", "default": "homelab" },
{ "name": "PG_DB", "label": "Postgres database", "default": "forgejo" },
{
"name": "PG_PASSWORD",
"label": "Postgres password",
"description": "Must match the postgres service. Pass --env PG_PASSWORD=<value from ~/.homelab/services/postgres/.env>",
"secret": true,
"required": true
},
{ "name": "TZ", "label": "Timezone", "default": "UTC" },
{
"name": "FORGEJO_ROOT_URL",
"label": "Root URL",
"default": "http://10.0.0.5:3000/",
"description": "Switch to https://git.example.com/ once the reverse proxy is set up"
},
{
"name": "FORGEJO_SSH_DOMAIN",
"label": "SSH domain",
"default": "10.0.0.5",
"description": "Host used for git over SSH (port 2222)"
}
],
"notes": "Web UI at http://10.0.0.5:3000 (LAN only) — create the first admin account there. Git over SSH: ssh://git@10.0.0.5:2222/<owner>/<repo>.git. Registration disabled (users via Authelia SSO later). Repos live in the forgejo_data volume; the database in pg_data (postgres service)."
}

View file

@ -0,0 +1,44 @@
{
"id": "postgres",
"name": "PostgreSQL",
"description": "Shared PostgreSQL database for homelab services (Forgejo today, future apps later).",
"version": "17.0.0",
"category": "database",
"tags": ["database", "sql", "postgres"],
"author": "PostgreSQL Global Development Group",
"license": "PostgreSQL",
"homepage": "https://www.postgresql.org/",
"documentation": "https://hub.docker.com/_/postgres",
"compose": {
"image": "postgres:17",
"container_name": "homelab-postgres",
"restart": "unless-stopped",
"environment": [
"POSTGRES_USER=${PG_USER}",
"POSTGRES_PASSWORD=${PG_PASSWORD}",
"POSTGRES_DB=${PG_DB}"
],
"volumes": ["pg_data:/var/lib/postgresql/data"],
"networks": ["homelab"],
"healthcheck": {
"test": ["CMD-SHELL", "pg_isready -U ${PG_USER} -d ${PG_DB}"],
"interval": "10s",
"timeout": "5s",
"retries": 5
}
},
"volumes": { "pg_data": {} },
"networks": { "homelab": { "external": true } },
"env": [
{ "name": "PG_USER", "label": "Postgres user", "default": "homelab" },
{
"name": "PG_PASSWORD",
"label": "Postgres password",
"description": "Auto-generated on first install and stored in ~/.homelab/services/postgres/.env",
"secret": true,
"generate": true
},
{ "name": "PG_DB", "label": "Database name", "default": "forgejo" }
],
"notes": "No host port published — reachable only inside the homelab docker network as `homelab-postgres`."
}