Whale Mate is a comprehensive management tool for your Docker stacks. Originally started as a simple container updater, it has evolved into a full-featured solution for backing up, restoring, and managing your Portainer stacks and Docker Compose files.
MINIMUM REQUIREMENTS:
Portainer minimum Version 2.30.0 (optional - only needed for Portainer integration)
Create a docker-compose.yml file with the following content:
version: '3'
services:
whale-mate:
image: nopenix/whale-mate:latest
ports:
- 8080:8080 # Exposes HTTP
restart: unless-stopped
volumes:
- /var/run/docker.sock:/var/run/docker.sock # only needed for docker compose
- /versions:/data/versions
- /:/mnt/rootfs/:ro # only needed for docker compose and only if you want the update feature
- db:/data/db
environment:
# Auto Update Settings
AutoUpdateDefaultMode: AutoUpdate # Can be: NTFYOnly, AutoUpdate, DoNotUpdate
CRON_SCHEDULE: "*/30 * * * *" # CRON String. Sets when the Programm is triggered in this example every 30min
# Portainer Settings
PortainerBaseAddress: https://portainer.yourdomain.com # just the base address of your portainer
PortainerAPIToken: your-portainer-api-token # Portainer API Token goes here
# NTFY Settings
NTFYEnabled: $true # Can be $true or $false
NTFYTopicURL: https://ntfy.yourdomain.com/Portainer-Updates
NTFYToken: # Can also be left empty if there is none
volumes:
db:
Customize the environment variables (Optional):
/versions:/data/versions: Volume to persist your stack backups (required for versioning & restore)
PortainerBaseAddress: Your Portainer instance URL
PortainerAPIToken: Generate this in Portainer (In Portainer: My Account > Access Tokens)
Adjust CRON_SCHEDULE for your needs (default every 5 mins)
You can control updating behavior for individual stacks by adding comments to your stack files:
#UpdatePolicy=AutoUpdate # Will automatically update this stack
#UpdatePolicy=NTFYOnly # Only notify about updates, don't auto-update
#UpdatePolicy=DoNotUpdate # Never update this stack
Place Whale Mate behind a reverse proxy (like nginx, traefik, or Caddy)
Configure HTTP Basic Auth or OAuth2/OIDC authentication at the proxy level
Enable HTTPS at the proxy
Network Isolation:
Run Whale Mate in an isolated network/VPC
Use firewall rules to restrict access
Consider using Docker network isolation
Environment Variable Protection:
Use Docker secrets or a secrets manager for the API token
Avoid logging environment variables
Use read-only container deployments where possible
HTTPS Configuration:
Configure a TLS certificate if exposing Whale Mate externally
Consider using a VPN tunnel instead of direct exposure
Disclaimer: Running this software without additional authentication is at your own risk. Always review your deployment configuration and understand the security implications.
Q: How often does it check for updates?
A: By default every 5 minutes (configurable via CRON_SCHEDULE)
Q: How often does it check for backup changes?
A: Every 20 seconds automatically
Q: Can I exclude specific stacks from updates?
A: Yes, add #UpdatePolicy=DoNotUpdate to your stack file
Q: Does it work with Swarm mode?
A: Portainer stacks are supported in Swarm mode. Docker Compose support is for standalone stacks.
Q: What gets backed up?
A: Only the compose file configuration is backed up (the YAML file). Volume data is not included.
Q: Can I trigger updates manually without waiting for CRON?
A: Yes! Click the cloud-upload icon (📤) on any Portainer stack to trigger an instant update.
Q: Does Whale Mate work without Portainer?
A: Yes, you can use it for Docker Compose stacks only, or even just as a log viewer and dashboard.
Q: How do I restore a stack to a previous version?
A: Go to Versioning > Select your stack > Click Restore on any backup version > Confirm.
Q: Can I configure settings through the UI?
A: Yes! The Settings page allows you to configure all options. Settings are saved and override environment variables.
Q: Do I need to restart after changing settings?
A: No! Settings are applied immediately after saving.