Windows
To download and run ToBeAlert you will first need to log in to Docker hub:
docker login -u $your_username
Choose any host directory for your deployment files. Examples use INSTALL_PATH — set it to your path (for example C:/tobealert on Windows or a WSL path). There is no required folder name.
For a ready-to-use stack, use the Docker Compose example.
Prepare backup folders before first start.
Docker Desktop with WSL (Linux path inside WSL):
export INSTALL_PATH=/opt/tobealert # example only — change to your chosen path
mkdir -p "$INSTALL_PATH/data/backups"
sudo chown -R 1000:1000 "$INSTALL_PATH/data/backups"
sudo chmod -R 775 "$INSTALL_PATH/data/backups"
Native Windows paths — use a path such as C:/tobealert as INSTALL_PATH in the compose file (see volume mounts below) and ensure the container user (UID 1000) can write to that folder.
Save docker-compose.yaml in $INSTALL_PATH and adjust the highlighted lines for your environment.
If you have your own PostgreSQL
Remember to change the highlighted lines, especially line 8
services:
tobealert-redis:
image: redis:latest
container_name: tobealert-redis
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 2s
timeout: 3s
retries: 5
restart: unless-stopped
networks:
- tobealert-network
tobealert-backend:
image: tobek8s/tobealert-backend:latest
container_name: tobealert-backend
environment:
ADMIN_USER: tbadmin
ADMIN_PASSWORD: changeme
DATABASE_URL: postgres://$USERNAME:$PASSWORD@$HOSTNAME:$PORT/tobealert
REDIS_HOST: tobealert-redis
REDIS_PORT: "6379"
TZ: Europe/Madrid
ports:
- "9000:9000"
volumes:
- C:/tobealert/data/backups:/tobealert/backups # example — use your INSTALL_PATH
# Optional: - C:/tobealert/config:/tobealert/config
- tools_data:/tobealert/tools
- license_data:/tobealert/license
- instructions_data:/tobealert/instructions
- patches_data:/tobealert/patches
depends_on:
tobealert-redis:
condition: service_healthy
restart: unless-stopped
networks:
- tobealert-network
tobealert-frontend:
image: tobek8s/tobealert-frontend:latest
container_name: tobealert-frontend
environment:
BASE_URL: http://localhost
API_URL: http://localhost:9000
BACKEND_SERVICE: tobealert-backend
BACKEND_PORT: "9000"
ports:
- "8005:8080"
depends_on:
- tobealert-backend
restart: unless-stopped
networks:
- tobealert-network
volumes:
tools_data:
instructions_data:
license_data:
patches_data:
networks:
tobealert-network:
driver: bridge
Set ADMIN_PASSWORD before the first backend start. Changing it later does not update the stored password. See Bootstrap / ADMIN_PASSWORD.
If you want to deploy a container with PostgreSQL alongside ToBeAlert
services:
tobealert-bbdd:
image: postgres:17.5-alpine
container_name: tobealert-bbdd
environment:
POSTGRES_USER: tobealert
POSTGRES_PASSWORD: tobealert
POSTGRES_DB: tobealert
TZ: Europe/Madrid
ports:
- "5432:5432"
volumes:
- postgres_data:/var/lib/postgresql/data
# Tuning for a dedicated database host (adjust to the host's RAM; see Management → Diagnostics):
# shared_buffers ≈ 25 % of RAM, effective_cache_size ≈ 50-75 %, work_mem 16-64 MB, random_page_cost 1.1 on SSD
command: >
postgres -c shared_buffers=1GB -c effective_cache_size=3GB -c work_mem=32MB -c maintenance_work_mem=256MB
-c random_page_cost=1.1 -c shared_preload_libraries=pg_stat_statements
healthcheck:
test: ["CMD-SHELL", "pg_isready -U tobealert"]
interval: 2s
timeout: 5s
retries: 5
restart: unless-stopped
networks:
- tobealert-network
tobealert-redis:
image: redis:latest
container_name: tobealert-redis
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 2s
timeout: 3s
retries: 5
restart: unless-stopped
networks:
- tobealert-network
tobealert-backend:
image: tobek8s/tobealert-backend:latest
container_name: tobealert-backend
environment:
ADMIN_USER: tbadmin
ADMIN_PASSWORD: changeme
DATABASE_URL: postgres://tobealert:tobealert@tobealert-bbdd:5432/tobealert
REDIS_HOST: tobealert-redis
REDIS_PORT: "6379"
TZ: Europe/Madrid
ports:
- "9000:9000"
volumes:
- C:/tobealert/data/backups:/tobealert/backups # example — use your INSTALL_PATH
# Optional: persist config — auto-created inside container if omitted
# - C:/tobealert/config:/tobealert/config
- tools_data:/tobealert/tools
- license_data:/tobealert/license
- instructions_data:/tobealert/instructions
- patches_data:/tobealert/patches
depends_on:
tobealert-bbdd:
condition: service_healthy
tobealert-redis:
condition: service_healthy
restart: unless-stopped
networks:
- tobealert-network
tobealert-frontend:
image: tobek8s/tobealert-frontend:latest
container_name: tobealert-frontend
environment:
BASE_URL: http://localhost
API_URL: http://localhost:9000
BACKEND_SERVICE: tobealert-backend
BACKEND_PORT: "9000"
ports:
- "8005:8080"
depends_on:
- tobealert-backend
restart: unless-stopped
networks:
- tobealert-network
volumes:
postgres_data:
tools_data:
instructions_data:
license_data:
patches_data:
networks:
tobealert-network:
driver: bridge
Starting ToBeAlert
To start ToBeAlert, run the following from the directory where you saved docker-compose.yaml (your INSTALL_PATH):
cd "$INSTALL_PATH" # or cd C:/tobealert on native Windows
docker compose up -d
And if you open a browser and go to your BASE_URL you will be greeted with this window:

Complete License setup there: Online (license key) when the host can reach the licensing server, or Offline (license file) on air-gapped sites.
HTTPS
The frontend container serves HTTP on port 8080. To publish https://your-domain, add the TLS proxy and backend certificate as described in HTTPS and TLS.
Configuration reference
For environment variables, tobealertd.conf, PostgreSQL, frontend URLs, and volume paths, see Settings & environment variables.