Files
portainer-core/docs/reference/stacks.md
T

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 inference
  • jellyfin.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

  1. Review environment variables - Change default passwords!
  2. Create directories - Ensure volume paths exist
  3. Check ports - Verify no conflicts with existing services
  4. GPU services - Confirm NVIDIA toolkit installed
  5. Update STATUS.md - Plan the deployment

After Deploying

  1. Test service - Access web UI or API endpoint
  2. Check logs - docker logs <container-name>
  3. Verify GPU - docker exec <container> nvidia-smi (if applicable)
  4. Update documentation - Add to STATUS.md and CHANGELOG.md
  5. Configure backup - Add to Duplicati backup job
  6. 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