Kestra

Open-source platform for event-driven and scheduled workflow orchestration.

Access Kestra

  • Open your browser and visit: https://<SERVER_IP>
  • A browser SSL warning is expected (self-signed certificate)
  • Create your admin account immediately on first visit.
  • Metrics (internal use only): http://localhost:8081/prometheus (not exposed publicly for security)

Important Paths

  • Kestra installation directory: /root/kestra
  • Main configuration file: /root/kestra/application.yaml
  • Docker Compose file: /root/kestra/docker-compose.yml
  • Kestra storage volume: /var/lib/docker/volumes/kestra-data/_data
  • PostgreSQL data volume: /var/lib/docker/volumes/postgres-data/_data
  • Nginx site config: /etc/nginx/sites-available/kestra
  • Enabled site (symlink): /etc/nginx/sites-enabled/kestra
  • Self-signed SSL certificates: /etc/nginx/ssl/fullchain.pem and /etc/nginx/ssl/privkey.pem

Manage the Stack

cd /root/kestra

# View running containers
docker ps

# View logs
docker compose logs -f

# Restart services
docker compose restart

# Stop stack
docker compose down

# Start stack
docker compose up -d

Enabling SSL with a Domain

1. Point your domain to the server IP.

2. Update the url in Kestra configuration (/root/kestra/application.yml):

  url: https://yourdomain.com/

3. Restart Kestra services:

cd /root/kestra/
docker compose restart

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

vim /etc/nginx/sites-available/kestra

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:

vim /etc/nginx/sites-available/kestra
# 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