docs: refresh CLAUDE.md and README, add swap exhaustion analysis
CLAUDE.md and README.md catch up with where services actually run -- notably that Zabbix and Home Assistant live on lizacer, not Agap -- and with the current service list. SWAP_EXHAUSTION_ANALYSIS_20260726.md records the 2026-07-26 swap exhaustion investigation. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
28
CLAUDE.md
28
CLAUDE.md
@@ -4,15 +4,25 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
|
||||
|
||||
## Overview
|
||||
|
||||
This repository manages Docker Compose configurations for the **Agap** self-hosted home server. It is not a software project — it is infrastructure-as-config for several independent services.
|
||||
This repository is the **server CONFIGURATION** repo for **Agap**, the self-hosted
|
||||
home server. It is not a software project — it holds `docker-compose` + host-level
|
||||
config for every service running on Agap. Convention: Dockerfiles/application source
|
||||
live in the service's own Gitea repo; `agap_git` keeps only the compose + config
|
||||
that runs it. See [README.md](./README.md) for the full service list, the
|
||||
self-developed-services table, and a known gap (matrixbot/moodtracker/marketplace-mcp/oO
|
||||
currently have no compose here — see README for details).
|
||||
|
||||
## Services
|
||||
|
||||
Selected services with notes below; see [README.md](./README.md) for the complete list.
|
||||
|
||||
| Directory | Service | Port | Notes |
|
||||
|-----------|---------|------|-------|
|
||||
| `immich-app/` | Immich (photo management) | 2283 | Main compose via root `docker-compose.yml` |
|
||||
| `gitea/` | Gitea (git hosting) + Postgres | 3000, 222 | Standalone compose |
|
||||
| `openai/` | Open WebUI + Ollama (AI chat) | 3125 | Requires NVIDIA GPU |
|
||||
| `openai/` | Adolf (OpenClaw gateway) + LiteLLM + Hindsight + Qdrant + Langfuse | see `openai/docker-compose.yml` | Requires NVIDIA GPU |
|
||||
| `openwebui/` | Open WebUI (AI chat) | 3125 | Standalone compose |
|
||||
| `ollama/` | Ollama (local LLM runtime) | 11436 | Requires NVIDIA GPU |
|
||||
| `vaultwarden/` | Vaultwarden (password manager) | 8041 | Backup script in `vaultwarden/backup.sh` |
|
||||
| `kanboard/` | Kanboard (kanban board) | 4800 | Tasks assignable to the `claude` bot user — see `kanboard/CLAUDE.md` |
|
||||
|
||||
@@ -89,7 +99,7 @@ When changes are made to infrastructure (services, config, setup), update the re
|
||||
| Home | Index — links to all pages |
|
||||
| Network | Netplan bridge setup, Caddy reverse proxy |
|
||||
| Storage | LVM setup and commands |
|
||||
| Home-Assistant | KVM-based Home Assistant setup |
|
||||
| Home-Assistant | Home Assistant (runs on lizacer, `192.168.1.4`, Docker) |
|
||||
| 3X-UI | VPN proxy panel |
|
||||
| Gitea | Git hosting Docker service |
|
||||
| Vaultwarden | Password manager, CLI setup, backup |
|
||||
@@ -201,27 +211,29 @@ Home Assistant automations push alerts to Zabbix via `history.push` API (Zabbix
|
||||
|
||||
## Zabbix API
|
||||
|
||||
**Instance**: `http://localhost:81` (local), `https://zb.alogins.net` (external)
|
||||
**Endpoint**: `http://localhost:81/api_jsonrpc.php`
|
||||
**Zabbix does not run on Agap — it lives on lizacer (`192.168.1.4`).** Config for the stack moved to the `lizacer` Gitea repo (kb#81).
|
||||
|
||||
**Instance**: `http://192.168.1.4:81` (local), `https://zb.alogins.net` (external, Caddy on Agap → `192.168.1.4:81`)
|
||||
**Endpoint**: `http://192.168.1.4:81/api_jsonrpc.php`
|
||||
**Token**: Read from `$ZABBIX_TOKEN` environment variable — never hardcode it
|
||||
**Auth header**: `Authorization: Bearer <token>`
|
||||
|
||||
### Common Requests
|
||||
```bash
|
||||
# Check API version
|
||||
curl -s -X POST http://localhost:81/api_jsonrpc.php \
|
||||
curl -s -X POST http://192.168.1.4:81/api_jsonrpc.php \
|
||||
-H "Content-Type: application/json" \
|
||||
-H "Authorization: Bearer $ZABBIX_TOKEN" \
|
||||
-d '{"jsonrpc":"2.0","method":"apiinfo.version","params":{},"id":1}'
|
||||
|
||||
# Get all hosts
|
||||
curl -s -X POST http://localhost:81/api_jsonrpc.php \
|
||||
curl -s -X POST http://192.168.1.4:81/api_jsonrpc.php \
|
||||
-H "Content-Type: application/json" \
|
||||
-H "Authorization: Bearer $ZABBIX_TOKEN" \
|
||||
-d '{"jsonrpc":"2.0","method":"host.get","params":{"output":"extend"},"id":1}'
|
||||
|
||||
# Get problems/issues
|
||||
curl -s -X POST http://localhost:81/api_jsonrpc.php \
|
||||
curl -s -X POST http://192.168.1.4:81/api_jsonrpc.php \
|
||||
-H "Content-Type: application/json" \
|
||||
-H "Authorization: Bearer $ZABBIX_TOKEN" \
|
||||
-d '{"jsonrpc":"2.0","method":"problem.get","params":{"output":"extend"},"id":1}'
|
||||
|
||||
Reference in New Issue
Block a user