Healthchecks

Open-source cron job and background task monitoring service, written in Python & Django.

Access

  • Open your browser and visit: https://<SERVER_IP>
  • A browser SSL warning is expected (self-signed certificate)

Create Admin Account

Before logging in, you must create an admin account.

Run the following command:

docker exec -it healthchecks /opt/healthchecks/manage.py createsuperuser

Follow the prompts to enter:

  • Email address
  • Password

Once completed, you can log in using the newly created credentials.

Important Files and Directories

  • Install directory: /root/healthchecks
  • Environment file: /root/healthchecks/.env
  • Docker Compose file: /root/healthchecks/docker-compose.yml
  • SQLite database: /var/lib/docker/volumes/healthchecks_healthchecks-data/_data
  • Nginx site config: /etc/nginx/sites-available/healthchecks
  • Enabled site: /etc/nginx/sites-enabled/healthchecks
  • SSL certificates: /etc/nginx/ssl/fullchain.pem, /etc/nginx/ssl/privkey.pem
  • Admin credentials: /root/.cloudzy-creds

Manage the Stack

cd /root/healthchecks

# Start services
docker compose up -d

# Stop services
docker compose down

# Restart services
docker compose restart

# View logs
docker compose logs -f

Email Settings Configuration (Optional)

Email configuration is required to enable notifications (e.g., alerts, reports).

Ensure SMTP connections are allowed on this server. Request SMTP access if it is currently disabled.

Edit the environment file:

nano /root/healthchecks/.env

Uncomment and configure the following variables with your SMTP provider details:

# DEFAULT_FROM_EMAIL=fixme-email-address-here
# EMAIL_HOST=fixme-smtp-host-here
# EMAIL_HOST_PASSWORD=fixme-smtp-password-here
# EMAIL_HOST_USER=fixme-smtp-username-here
# EMAIL_PORT=587
# EMAIL_USE_TLS=True

Apply the changes by restarting the service:

docker compose up -d

Enabling SSL with a Domain (Optional)

1. Point your domain to the server IP.

2. Edit .env to set your domain as SITE_ROOT: SITE_ROOT=https://yourdomain.com

3. Recreate the services:

cd /root/healthchecks/
docker compose up -d

4. Edit Nginx config and replace both server_name <IP>; with your domain (<yourdomain.com>) for both HTTP (port 80) and HTTPS (port 443) blocks:

vim /etc/nginx/sites-available/healthchecks

5. Install Certbot:

apt install -y certbot python3-certbot-nginx

6. Run the following command to generate a valid Let’s Encrypt certificate:

certbot certonly --nginx --non-interactive --agree-tos --email [email protected] -d yourdomain.com

7. Replace SSL paths in Nginx config (TLS section):

vim /etc/nginx/sites-available/healthchecks
# Before:
    # ssl_certificate /etc/nginx/ssl/fullchain.pem;
    # ssl_certificate_key /etc/nginx/ssl/privkey.pem;
# After:
    # ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
    # ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;

8. Restart Nginx to apply the changes:

systemctl restart nginx

9. Open your browser and visit: https://yourdomain.com

Application Details