# AGENTS.md - JMP Server Infrastructure ## Project Overview JMP Server is a Docker Compose-based infrastructure deployment for self-hosted services. It contains a reverse proxy, Git repository hosting, documentation platform, and cloud storage. ## Architecture & Services - **Traefik**: Reverse proxy and load balancer (v3.6.6), handles routing and HTTPS/TLS - **Gitea**: Git repository hosting with PostgreSQL backend and CI/CD runner support - **Bookstack**: Documentation wiki with MariaDB backend - **Homepage**: Dashboard for service discovery and monitoring - **OpenCloud**: Nextcloud-based cloud storage with full compose stack included - **Website**: Frontend web application (in `after` profile) ## Build & Deployment Commands - Start all services: `./start.sh` or `docker compose up -d` - Stop all services: `./stop.sh` or `docker compose down` - Start OpenCloud only: `docker compose -f opencloud-compose/docker-compose.yml up -d` - View logs: `docker compose logs -f [service_name]` ## Key Configuration Files - `docker-compose.yaml`: Main service definitions with Docker networking - `.env`: Environment variables (secrets not tracked) - `config.yml`: Gitea runner configuration - `traefik.yml`: Traefik routing and middleware setup - `opencloud-compose/.env.example`: OpenCloud environment template ## Important Databases - **Gitea DB**: PostgreSQL (port internal) - **Bookstack DB**: MariaDB (port internal) - All databases stored in local volume mounts (`./gitea/db`, `./bookstack/db`, `./opencloud/data`) ## Code Style & Conventions - Infrastructure-as-Code in YAML - Docker container configuration via environment variables - Traefik labels for service discovery and routing rules - Use `${VARIABLE}` syntax for .env substitution - Homepage labels for dashboard integration