A comprehensive collection of Docker Compose stacks for various services and applications, designed for easy deployment and management using Portainer. All stacks in this repository are fully standardized and documented.
- Introduction
- Getting Started
- Available Stacks
- Standardization Status
- Folder Structure
- Usage
- Documentation
Dockerini provides a collection of Docker Compose stacks for various services and applications, making it easy to deploy and manage containers using Portainer. Each stack is carefully standardized with:
- Consistent formatting and structure
- Fallback values for environment variables
- Standardized network naming
- Comprehensive documentation
- Security best practices
- Docker installed on your system
- Portainer installed and configured
- Basic understanding of Docker and Docker Compose
-
Clone this repository:
git clone https://github.com/alsd4git/dockerini.git
-
Navigate to the repository:
cd dockerini -
For each stack you want to deploy, configure its environment variables:
cd <stack-name> cp .env.example .env # Edit .env with your stack-specific configuration cd ..
Each stack has its own
.env.examplefile in its directory with the required and optional variables for that service.
- Automation Stack - Docker event notifications, image monitoring, and container updates
- Immich Stack - Photo management and backup
- Infrastructure Stack - Reverse proxy, DDNS, authentication, and identity management
- KaraKeep Stack - Bookmarks and media organization
- Media Stack - Media servers, downloaders, and automation (Jellyfin, Sonarr, Radarr, etc.)
- Monitoring Stack - System monitoring, dashboards, and observability
- Paperless-ngx Stack - Document management and archival
- Pi-hole Stack - DNS sinkhole and network ad blocker
- RustDesk Relay Stack - Remote desktop relay server
- Utilities Stack - File management, document processing, and utility services
Each stack follows our standardization guidelines:
- ✅ Consistent formatting
- ✅ Environment variable fallbacks
- ✅ Standardized network naming
- ✅ Comprehensive documentation
- ✅ Security best practices
-
Critical Services (pin specific versions):
- Databases (PostgreSQL, Redis, InfluxDB)
- DNS services (Pi-hole, AdGuard)
- Reverse proxies (Nginx Proxy Manager, Step CA)
- Authentication services (Pocket ID)
-
Non-Critical Services (use latest tag):
- Media applications (Jellyfin, Immich)
- Monitoring tools (Glances, Dozzle)
- Utility services (File browsers, converters)
- Automation services (Sonarr, Radarr)
-
Update Strategy:
- Enable Watchtower for automatic updates of latest-tagged services
- Pin versions for critical infrastructure and manually test updates
- Use a reverse proxy and monitoring to catch issues quickly
This repository uses two restart policies strategically:
Used for services that can tolerate manual stops:
- User-facing services: Dashboards, media servers, web interfaces
- Non-critical services: Monitoring displays, file browsers, converters
- Deployment tools: Allows graceful shutdown without auto-restart
Behavior: Container restarts automatically unless manually stopped
Used for critical background services that must stay running:
- Automation services: Watchtower (automatic updates), DIUN (image monitoring)
- Notification services: Telegram notifiers and alert delivery
- Core infrastructure: Services critical for other containers to function
- Monitoring agents: Services providing essential observability
Behavior: Container always restarts, even if manually stopped
| Service Type | Restart Policy | Reason |
|---|---|---|
| Watchtower, DIUN, Telegram notifiers | always |
Must stay running to function |
| Databases, DNS, Reverse proxies | unless-stopped |
Allow graceful maintenance |
| Media servers, dashboards | unless-stopped |
User-facing; allow manual stops |
| Monitoring displays | unless-stopped |
Non-critical visualization |
| Utility services | unless-stopped |
Safe to stop manually |
Each stack folder contains:
/stack-name
├── compose.yaml # Docker Compose configuration
├── README.md # Stack documentation
├── .env.example # Example environment variables
└── /resources # Additional resources-
Choose a stack from the Available Stacks section
-
Review the stack's README.md for specific requirements
-
Configure the environment variables
-
Deploy using Docker Compose:
docker compose up -d
- Install uv if you don't already have it.
- Install the hook runner:
uv tool install pre-commit - Install the repo hooks:
uv run pre-commit install - (Optional) Check the entire tree:
uv run pre-commit run --all-files
The configuration keeps YAML consistent with yamllint, enforces common whitespace hygiene, and validates .env and .env.example files with dotenv-linter. uv run ensures pre-commit executes with the Python version and environment managed by uv.
- Individual stack READMEs for detailed documentation