6.2 KiB
6.2 KiB
Docker Compose Stacks Reference
Complete reference for all Docker Compose stacks in the portainer-core infrastructure.
Deployment
See the core-api OpenAPI documentation for infrastructure management REST endpoints.
All stacks are located in the /stacks/ directory and version-controlled.
Stack Inventory
Phase 1: Foundation
| Stack | File | Ports | GPU | Description |
|---|---|---|---|---|
| Portainer | portainer.yml |
8080, 8443 | No | Container management UI |
| Nginx Proxy Manager | nginx-proxy-manager.yml |
8000, 80, 443 | No | Reverse proxy and unified web interface |
| Ollama | ollama.yml |
11434 | Yes | ML model serving with GPU acceleration |
Phase 2: Networking
| Stack | File | Ports | GPU | Description |
|---|---|---|---|---|
| Headscale | headscale.yml |
8085, 9090 | No | Self-hosted Tailscale control server |
Phase 3: Monitoring
| Stack | File | Ports | GPU | Description |
|---|---|---|---|---|
| Uptime Kuma | uptime-kuma.yml |
3001 | No | Service availability monitoring |
| Netdata | netdata.yml |
19999 | No | Real-time system performance monitoring |
| Heimdall | heimdall.yml |
8888, 8889 | No | Application dashboard |
Phase 4: Optimization
| Stack | File | Ports | GPU | Description |
|---|---|---|---|---|
| Watchtower | watchtower.yml |
- | No | Automatic container updates |
| Duplicati | duplicati.yml |
8200 | No | Backup solution |
Applications
| Stack | File | Ports | GPU | Description |
|---|---|---|---|---|
| Jellyfin | jellyfin.yml |
8096, 8920, 7359, 1900 | Yes | Media server with GPU transcoding |
| Nextcloud | nextcloud.yml |
8082 | No | Cloud storage (uses shared PostgreSQL and Redis) |
| Gitea | gitea.yml |
3002, 2222 | No | Git repository hosting (includes PostgreSQL) |
| Samba | samba.yml |
139, 445 | No | Network file sharing |
| Open WebUI | open-webui.yml |
8081 | No | AI chat interface with Ollama integration |
| Core API | core-api.yml |
8083 | No | Infrastructure management and AI orchestration |
| Qdrant | qdrant.yml |
6333, 6334 | No | Vector database for embeddings |
| Organizr | organizr.yml |
8084 | No | Unified dashboard |
Shared Infrastructure
| Stack | File | Ports | GPU | Description |
|---|---|---|---|---|
| PostgreSQL Shared | postgres-shared.yml |
5432 | No | Shared database for Nextcloud |
| Redis Shared | redis-shared.yml |
6379 | No | Shared cache for Nextcloud |
Port Allocation
Infrastructure Services (8000-8099)
- 8000: Nginx Proxy Manager (unified web interface)
- 8080: Portainer
- 8081: Open WebUI
- 8082: Nextcloud
- 8083: Core API
- 8084: Organizr
- 8085: Headscale
- 8096: Jellyfin
Git & Development Services
- 2222: Gitea SSH
- 3002: Gitea HTTP
Monitoring Services (3000-3999, 19000-19999)
- 3001: Uptime Kuma
- 8200: Duplicati
- 8888: Heimdall
- 19999: Netdata
ML/API Services (11000+)
- 11434: Ollama
- 6333: Qdrant HTTP
- 6334: Qdrant gRPC
Database Services
- 5432: PostgreSQL (shared)
- 6379: Redis (shared)
Network Services
- 80: HTTP (NPM reverse proxy)
- 443: HTTPS (NPM reverse proxy)
- 139, 445: Samba/SMB
- 9090: Headscale metrics
Storage Convention
All stacks follow the dual-disk strategy:
SSD (Performance):
- Configs:
/home/jpmschweitzer/docker-data/<service>/config - Cache:
/home/jpmschweitzer/docker-data/<service>/cache - Databases:
/home/jpmschweitzer/docker-data/<service>/db
HDD (Capacity):
- User content:
/mnt/media/<service>/data - Media files:
/mnt/media/<service>/media - Backups:
/mnt/media/backups/<service>
See Shared Infrastructure Architecture for database and cache sharing details.
GPU Services
Stacks requiring GPU access (marked with Yes above):
ollama.yml- ML model inferencejellyfin.yml- Hardware transcoding
Prerequisites:
- NVIDIA Container Toolkit installed
- GPU verified:
docker run --rm --gpus all nvidia/cuda:11.4.0-base-ubuntu20.04 nvidia-smi
See GPU Docker Configuration for setup details.
Deployment Checklist
Before Deploying
- Review environment variables - Change default passwords!
- Create directories - Ensure volume paths exist
- Check ports - Verify no conflicts with existing services
- GPU services - Confirm NVIDIA toolkit installed
- Update STATUS.md - Plan the deployment
After Deploying
- Test service - Access web UI or API endpoint
- Check logs -
docker logs <container-name> - Verify GPU -
docker exec <container> nvidia-smi(if applicable) - Update documentation - Add to STATUS.md and CHANGELOG.md
- Configure backup - Add to Duplicati backup job
- Add monitoring - Configure Uptime Kuma checks
Maintenance
Update a Stack
# Pull latest images
docker compose -f stacks/<stack-name>.yml pull
# Recreate containers with new images
docker compose -f stacks/<stack-name>.yml up -d
# Or let Watchtower handle it automatically
Backup Stack Configuration
Stacks are version-controlled in the /stacks/ directory. Backup container data separately using the backup procedures.
See Backup Procedures for details.
Troubleshooting
- Container won't start:
docker logs <container-name> - Port conflicts:
sudo netstat -tulpn | grep <port> - Permission issues: Check volume path ownership
- GPU not detected: Verify NVIDIA toolkit and restart Docker
Automation
The project includes automation scripts for stack management:
update-stack.sh- Pull and update specific stack- See Automation Reference for Portainer REST API usage
Related Documentation
- Container Reference - Complete container profiles
- System Specifications - Hardware and software specs
- Shared Infrastructure Architecture - Database/cache sharing
- Maintenance Scripts - Automated maintenance tasks