Introduces Pushover as a notification channel with validation and form handling in the group edit view. Also updates the bootstrap script to create and set permissions for the avatar uploads directory.
Domain Monitor Docker Setup
This directory contains Docker configuration for running Domain Monitor in a containerized environment.
Quick Start
-
Configure your environment:
- Copy
env.docker.exampleto.env.docker - Edit
.env.dockerand change the default passwords:cp env.docker.example .env.docker # Edit .env.docker with your real passwords
- Copy
-
Run the bootstrap script:
chmod +x bootstrap.sh ./bootstrap.sh
What the bootstrap script does
The bootstrap.sh script will:
- Clone the Domain Monitor repository from GitHub into the
app/folder (only ifapp/doesn't exist or is empty) - Set up the application environment by creating
.envfile with database configuration - Install PHP dependencies using Composer
- Configure proper file permissions for the web server
- Load environment variables from
.env.dockerinto the shell - Start the Docker stack (web server, database, and phpMyAdmin)
Running bootstrap multiple times
The bootstrap script is safe to run multiple times:
- If
app/folder exists and has content, it skips the git clone - It will reinstall Composer dependencies (ensures they're up to date)
- It will restart the Docker containers with
--buildflag - Your database data is preserved (stored in Docker volumes)
Environment Configuration
The bootstrap script loads environment variables from .env.docker into the shell environment, which Docker Compose then uses for variable substitution. This approach ensures that all services get the correct database credentials.
Services
After running the bootstrap script, you'll have:
- Domain Monitor App: http://localhost:8080
- phpMyAdmin: http://localhost:8081 (Server:
domain-monitor-mariadb)
Managing the Docker Stack
Starting the stack
# First time setup (clones repo, installs dependencies, starts containers)
./bootstrap.sh
# Or if you just want to start existing containers
docker compose up -d
Stopping the stack
# Stop all containers
docker compose down
# Stop and remove volumes (WARNING: This will delete your database data!)
docker compose down -v
Restarting the stack
# Restart containers (keeps data)
docker compose restart
# Rebuild and restart (if you made changes to Docker config)
docker compose up -d --build
# Full restart (stops, rebuilds, starts)
docker compose down && docker compose up -d --build
Viewing logs
# View logs for all services
docker compose logs
# View logs for specific service
docker compose logs web
docker compose logs db
docker compose logs pma
# Follow logs in real-time
docker compose logs -f
Environment Configuration
You need to create a .env.docker file with your database credentials. The script will copy env.docker.example to .env.docker if it doesn't exist, but you must edit it with real passwords before the script will work.
Required variables in .env.docker:
DB_DATABASE- Database nameDB_USERNAME- Database userDB_PASSWORD- Database passwordDB_ROOT_PASSWORD- Database root passwordTZ- Timezone (optional, defaults to UTC)
Requirements
- Docker and Docker Compose
- Git
- Internet connection (to clone the repository)
Troubleshooting
- Make sure you're running the script from the
domain-monitor-dockerdirectory - Ensure Docker is running and you have permission to use it
- Check that you've edited
.env.dockerwith real passwords (not the example values)
Quick Reference
Common scenarios
First time setup:
cp env.docker.example .env.docker
# Edit .env.docker with real passwords
./bootstrap.sh
Daily usage:
# Start (if stopped)
docker compose up -d
# Stop
docker compose down
After making changes to the app:
# Restart to pick up changes
docker compose restart web
After making changes to Docker config:
# Rebuild containers
docker compose up -d --build
Complete reset (WARNING: deletes all data):
docker compose down -v
rm -rf app/
./bootstrap.sh