# agap_git — Agap Server Configuration `agap_git` is the **configuration repo** for Agap, the self-hosted home server. It holds: - `docker-compose` files for services running on Agap - host-level config: Caddy (`Caddyfile`), backup/install scripts, `.env` files **Convention:** a Dockerfile, application source, or anything you'd `build:` from an image belongs in the *service's own Gitea repo* — not here. `agap_git` keeps the compose file that runs the resulting image, plus whatever config the compose needs. Third-party services (pulling a public image) live here in full, since there's no source to split out. ## Self-developed services Services with source written in-house are meant to be dual: source lives in their own Gitea repo, and the compose that runs them is described here. | Service | Own repo | Compose in agap_git | |---|---|---| | matrixbot (Matrix bot, Adolf channel adapter) | [`alvis/matrixbot`](http://localhost:3000/alvis/matrixbot) | **not present** — runs from `~/matrixbot/docker-compose.yml` in its own repo | | moodtracker | [`alvis/moodtracker`](http://localhost:3000/alvis/moodtracker) | **not present** — runs from `~/moodtracker/docker-compose.yml` | | marketplace-mcp | [`alvis/marketplace-mcp`](http://localhost:3000/alvis/marketplace-mcp) | **not present** — runs from `~/marketplace-mcp/docker-compose.yml` | | oO | [`alvis/oO`](http://localhost:3000/alvis/oO) | **not present** — runs from `oO/infra/docker/docker-compose.yml`; oO was already a fully separate project before this convention existed | | mood (mood-archive) | none yet | fully vendored here (`mood/`, source + compose) — Kanboard **#209** will extract it to its own repo | **Known gap:** the convention calls for compose to be described in `agap_git` *and* source to live in its own repo. For matrixbot / moodtracker / marketplace-mcp / oO, extraction (kb#78) moved the compose file along with the source into each new repo, so `agap_git` currently has zero footprint for these four — no compose, no config. Not fixed in this doc-only pass; flagged for a follow-up decision: either copy each compose back into `agap_git`, or formally amend the convention to let self-developed services keep compose in their own repo. ## Third-party services (compose lives here in full) | Directory | Service | Port | |---|---|---| | `immich-app/` | Immich — photo management | 2283 | | `gitea/` | Gitea — git hosting + Postgres | 3000, 222 | | `openai/` | Adolf (OpenClaw gateway) + LiteLLM + Hindsight + Qdrant + Langfuse + Whisper/TTS stack | see `openai/docker-compose.yml` (adolf-llm on 8010) | | `adolf/` | Adolf config only (`openclaw.json`, design docs) — the `adolf` compose service lives in `openai/docker-compose.yml`; the OpenClaw fork source is a separate tree at `~/adolf` | — | | `vaultwarden/` | Password manager | 8041 | | `kanboard/` | Kanban board, task orchestration for the `claude` bot | 4800 | | `seafile/` | File sync, OnlyOffice, WebDAV (multiple compose files) | 8078 (server), 8077 (Caddy) | | `matrix/` | Synapse homeserver + coturn + LiveKit (not the `matrixbot` bot — see above) | — | | `overleaf/` | LaTeX editor (ShareLaTeX/Overleaf CE) | — | | `linkwarden/` | Bookmark manager | 3012 | | `vikunja/` | Task manager | 3457 | | `radicale/` | CalDAV/CardDAV server | 5232 | | `ntfy/` | Push notifications | 8840 | | `syncthing/` | File sync | 8384 | | `qbittorrent/` | Torrent client | 8085 | | `searxng/` | Metasearch engine | 11437 | | `ollama/` | Local LLM runtime | 11436 | | `openwebui/` | AI chat UI | 3125 | | `anki/` | Anki sync server | 8180 | | `family/` | MediaWiki (family wiki) | 8099 | | `freshrss/` | RSS reader | 8091 | | `iperf3/` | Network throughput testing | 8095 | | `otter/` | OtterWiki | 8083 | | `agap-mcp/` | MCP tool server for Claude (Node/Express) — vendored source, no separate repo | 3100 | | `personal-sensing/` | SQLite store + schema for HA/Health Connect data (no compose; library used by an ETL, see kb#207) | — | ## Removed / moved out - `windows/` — removed (kb#82): no VM, no container, dead config. - `zabbix/`, `haos/` — moved to [`alvis/lizacer`](http://localhost:3000/alvis/lizacer) (kb#81). Zabbix runs on the **lizacer** server (`192.168.1.4:81`), not Agap. ## Top-level files - `Caddyfile` — reverse proxy / TLS routing for all services - `nvidia-docker-install.sh`, `install-cuda.sh` — GPU host setup - `users-backup.sh` — host user backup ## Quick Start Each service is standalone; from its directory: ```bash docker compose up -d docker compose restart docker compose logs -f docker compose pull ``` The root `docker-compose.yml` is an alias that includes `immich-app/docker-compose.yml`. ## Storage - `/mnt/media/upload` — Immich originals - `/mnt/ssd1/media/` — Immich thumbnails, encoded video, Postgres - `/mnt/misc/gitea` — Gitea repositories and data ## GPU Support For GPU acceleration (Ollama/Open WebUI, Immich ML): 1. `sudo ./nvidia-docker-install.sh` — Docker + NVIDIA Container Toolkit 2. `./install-cuda.sh` — CUDA toolkit ## Documentation See [CLAUDE.md](./CLAUDE.md) for developer instructions, credentials handling, and Gitea/Zabbix/Home Assistant API integration details. See the [Gitea wiki](http://localhost:3000/alvis/AgapHost/wiki) for infrastructure documentation (storage, network, per-service setup).