Apache DolphinScheduler
Overview
Apache DolphinScheduler is a distributed, easy-to-extend visual workflow scheduler for big-data and ETL pipelines. You design DAGs of tasks (shell, SQL, Spark, Flink, Python, HTTP and more) in a drag-and-drop editor, schedule them with cron expressions, and monitor every run with retries, alerts and lineage.
The SecureAnyCloud image installs DolphinScheduler 3.4.2 as the all-in-one standalone server: master, worker, api-server, alert-server and the web UI in a single JVM on Java 17, at /opt/dolphinscheduler.
What you get:
- Apache DolphinScheduler 3.4.2 (standalone server) at
/opt/dolphinscheduleron Java 17, run as a dedicated dolphinscheduler system user bound to loopback. - The web UI and the REST API on context path
/dolphinscheduler, fronted by an nginx reverse proxy on:80. - DolphinScheduler's own username and password authentication, with a per-VM admin password rotated on the first boot of every VM and stored in a root-only file.
- A dedicated Azure data disk at
/var/lib/dolphinschedulerthat holds the bundled database, the workflow repository and run history. It is separate from the OS disk and re-provisioned with every VM. dolphinscheduler.serviceandnginx.serviceas systemd units, enabled and active.- An unauthenticated
/healthendpoint for load balancers and probes. - 24/7 SecureAnyCloud support.
Prerequisites
- An active Azure subscription, an SSH key pair, and a VNet and subnet in the target region
- VM size: Standard_B4ms (4 vCPU / 16 GiB RAM) is a good starting point for the standalone server. Scale up for higher task concurrency.
- NSG inbound rules: allow
22/tcpfrom your management network and80/tcpfor the web UI and API. Front them with TLS for public exposure (see Enabling HTTPS).
Step 1 - Deploy from the Azure Marketplace
Sign in to the Azure Portal, choose Create a resource, and search the Marketplace for Apache DolphinScheduler by SecureAnyCloud. Select Create.
On Basics, pick your subscription, resource group, region and size. Under Administrator account, choose SSH public key and paste your key. Under Inbound port rules, allow SSH (22) and HTTP (80).
Review the dedicated data disk on the Disks tab. Then choose Review + create, followed by Create.
Step 2 - Deploy from the Azure CLI
Run these commands on your own workstation:
# Accept the Marketplace terms once per subscription (required before the first CLI deploy)
az vm image terms accept --urn sac1647283583153:apache-dolphinscheduler-ubuntu-24-04:default:latest
az vm create \
--resource-group <your-rg> \
--name dolphinscheduler \
--image sac1647283583153:apache-dolphinscheduler-ubuntu-24-04:default:latest \
--size Standard_B4ms \
--admin-username azureuser \
--ssh-key-values ~/.ssh/id_ed25519.pub \
--vnet-name <your-vnet> --subnet <your-subnet> \
--public-ip-sku Standard
az vm open-port --resource-group <your-rg> --name dolphinscheduler --port 80 --priority 1010Step 3 - Connect to your VM
Connect over SSH:
ssh azureuser@<vm-public-ip>Step 4 - Confirm the services are running
Check both services:
systemctl is-active dolphinscheduler.service nginx.serviceBoth services report active. The standalone server is a JVM application and takes one to two minutes to finish starting on the first boot. After that, it stays up across reboots.
Step 5 - Check the health endpoint
nginx serves an unauthenticated health endpoint for load balancers and probes. The DolphinScheduler API exposes a Spring Boot actuator health endpoint. Check both:
curl -s http://localhost/health; echo
curl -s -o /dev/null -w 'API health: %{http_code}\n' http://localhost/dolphinscheduler/actuator/healthThe first command returns ok. The second returns API health: 200 once the standalone server has finished starting.
Step 6 - Retrieve your admin password
The admin password is rotated to a unique value on the first boot of your VM and written to a root-only file. Read the file:
sudo cat /root/apache-dolphinscheduler-credentials.txtThis file contains DOLPHINSCHEDULER_ADMIN_USER (admin) and DOLPHINSCHEDULER_ADMIN_PASSWORD, plus the URL for the web UI. The shipped default password (dolphinscheduler123) is reset on first boot, so it no longer works. Store the per-VM password somewhere safe.
Step 7 - Open the web UI
Browse to http://<vm-public-ip>/, which redirects to the DolphinScheduler UI. Sign in as admin with the password from Step 6. The UI opens on the project overview. The screenshots below show the sign-in page, the project list, a workflow DAG definition and the monitoring view.
The Project list shows every workflow project with its workflow and task counts:
Inside a project, the Workflow Definition canvas is a drag-and-drop DAG editor for chaining tasks:
The Monitor view reports the health of the master, worker, API and alert components and the database:
Step 8 - Sign in over the REST API
DolphinScheduler exposes a full REST API behind the same login. Authenticate with your per-VM password to obtain a session token:
PW=<DOLPHINSCHEDULER_ADMIN_PASSWORD> curl -s -c /tmp/ds-cookies http://localhost/dolphinscheduler/login \
--data-urlencode 'userName=admin' --data-urlencode "userPassword=$PW"; echoA successful response is JSON with "code":0 and a session token. The session cookie is saved to /tmp/ds-cookies for subsequent calls. Errors, for example from the retired default password, return a non-zero code.
Step 9 - List projects over the API
Reuse the session from Step 8 to list workflow projects through the API:
curl -s -b /tmp/ds-cookies 'http://localhost/dolphinscheduler/projects?pageNo=1&pageSize=10' | head -c 400; echoThe response is a JSON data object that describes the projects. The same data backs the web UI's project list. The API also lets you create projects, define workflows, trigger runs and read task logs. See the DolphinScheduler REST API documentation for the full surface.
Step 10 - Confirm data lives on the dedicated disk
All DolphinScheduler state is stored on the dedicated Azure data disk: the bundled database, the workflow repository and run history. This keeps the state intact across OS changes and lets you resize it independently. Check the mount:
findmnt /var/lib/dolphinschedulerThe mount is backed by a separate Azure data disk captured into the image and re-provisioned on every VM.
Enabling HTTPS
The nginx reverse proxy terminates plain HTTP on port 80. For public exposure, put a certificate in front of it. The simplest approach is to add a DNS name for the VM and use the companion SecureAnyCloud nginx-ssl-certbot image as a TLS reverse proxy. Alternatively, install certbot and extend the existing nginx site with a listen 443 ssl; server block and your certificate paths.
Keep the DolphinScheduler standalone server bound to loopback, so that the only public surface is the TLS-terminated proxy.
Maintenance
- Configuration. The standalone server's settings live under
/opt/dolphinscheduler/standalone-server/conf/:application.yamlfor the listener and datasource, andcommon.propertiesfor data paths. Edit the files, then runsudo systemctl restart dolphinschedulerto apply the changes. - JVM heap. The standalone heap is set in
/opt/dolphinscheduler/standalone-server/bin/jvm_args_env.sh(default 2 GiB). Increase it on larger VMs for higher task concurrency. - Backups. Snapshot the
/var/lib/dolphinschedulerdata disk to capture the database, workflow repository and run history. - Upgrades. Deploy a newer DolphinScheduler release alongside, migrate the database with the bundled upgrade SQL, and switch the service over.
- Security patches. unattended-upgrades remains enabled, so the OS continues to receive security updates automatically.
Support
SecureAnyCloud provides 24/7 expert support for this image. Contact sales@secureanycloud.com.
Apache DolphinScheduler and Apache are trademarks of The Apache Software Foundation. This image is produced by SecureAnyCloud and is not affiliated with or endorsed by The Apache Software Foundation. Apache DolphinScheduler is distributed under the Apache License 2.0.
Deploy on Azure
Launch Apache DolphinScheduler on Ubuntu 24.04 LTS on Azure with 24/7 support from SecureAnyCloud.
View this image
Need Help?
Our support team is available 24/7.
sales@secureanycloud.com
Overview
Apache DolphinScheduler is a distributed, easy-to-extend platform for scheduling and orchestrating data workflows. You design pipelines as visual DAGs in a web console, wiring together shell, SQL, Python, Spark and other task types with dependencies, retries and time-based triggers. You then monitor every run, its logs and its history from the same interface. This image runs DolphinScheduler as an all-in-one standalone deployment.
What you get:
- A standalone server that bundles the master, worker, API server, alert server and the web user interface in a single managed Java Virtual Machine process, backed by an embedded H2 metadata database.
- An application listener bound to the loopback interface on port 12345 and fronted by nginx on port 80, which reverse proxies the web interface and the REST API.
- DolphinScheduler's own username and password authentication, so you reach it through its own sign-in form.
- An administrator password rotated on the first boot of every deployed instance. Two instances launched from the same Amazon Machine Image never share a password. The shipped default password is replaced with a fresh per-instance value, written to
/root/apache-dolphinscheduler-credentials.txtwith mode 0600, so that only the root user can read it. - A dedicated EBS data volume mounted at
/var/lib/dolphinschedulerthat holds all scheduler state: the H2 metadata database, the workflow repository, execution logs and the JVM working tree. Projects, workflow definitions and run history persist across reboots, and you can resize the volume independently of the operating system disk.
Prerequisites
Before you deploy this image, you need:
- An Amazon Web Services account where you can launch EC2 instances
- IAM permissions to launch instances, create security groups, and subscribe to AWS Marketplace products
- An EC2 key pair in the target Region for SSH access to the instance
- A VPC and subnet in the target Region, with a security group that allows inbound port 22 from your management network and inbound port 80 from the network you will reach the DolphinScheduler web interface from
- The AWS CLI (version 2) installed locally, if you plan to deploy from the command line
Launch the instance from the AWS Marketplace
Sign in to the AWS Management Console, open the EC2 service, and choose Launch instance. Under Application and OS Images, choose AWS Marketplace AMIs and search for Apache DolphinScheduler. Select the SecureAnyCloud listing and choose Select, then choose Continue on the subscription summary.
Pick an instance type of m5.large or larger. The standalone server runs the master, worker, API and alert services together in one JVM, so it benefits from at least two vCPUs and 8 GiB of memory.
Choose your EC2 key pair under Key pair (login). Under Network settings, select your VPC and subnet, and either create or select a security group that allows inbound port 22 from your management network and inbound port 80 from the network you will reach the web interface from. Leave the root volume at the default size or larger.
Choose Launch instance. First-boot initialization brings up the standalone server and rotates the administrator password. It takes approximately two to three minutes after the instance state becomes Running and the status checks pass.
Launch the instance from the AWS CLI
The following command launches an instance from the SecureAnyCloud Apache DolphinScheduler Marketplace AMI into an existing subnet and security group. Replace <ami-id> with the AMI ID shown on the Marketplace listing. Replace <key-name> with your EC2 key pair name, <subnet-id> with your subnet ID, and <security-group-id> with a security group that opens ports 22 and 80, as described above.
aws ec2 run-instances \
--image-id <ami-id> \
--instance-type m5.large \
--key-name <key-name> \
--subnet-id <subnet-id> \
--security-group-ids <security-group-id> \
--block-device-mappings '[{"DeviceName":"/dev/sda1","Ebs":{"VolumeSize":20,"VolumeType":"gp3"}}]' \
--tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=apache-dolphinscheduler-01}]'On success, the command prints a JSON document. Note the instance ID. When the instance is running, retrieve its public address with aws ec2 describe-instances --instance-ids <instance-id> --query "Reservations[].Instances[].PublicIpAddress" --output text.
Connect and retrieve the administrator password
Connect over SSH with the key pair you selected and the public IP address from Step 2. The SSH login user depends on the operating system of the AMI variant you launched:
AMI variant SSH login user
Apache DolphinScheduler on Ubuntu 24.04 ubuntu
The first-boot service rotates the administrator password before it writes the credentials file, so the file always contains the current password when you log in for the first time. Read the file:
sudo cat /root/apache-dolphinscheduler-credentials.txtThe plain text file contains the DolphinScheduler URL, the administrator username admin, and the per-instance administrator password. Copy these values somewhere secure, such as a password manager or encrypted vault. Do not commit them to source control.
From the same SSH session, confirm that the deployment is healthy. The nginx health endpoint needs no authentication:
curl -fsS http://127.0.0.1/healthIt prints ok. For a deeper check, the DolphinScheduler actuator health endpoint reports the status of every bundled service:
curl -s http://127.0.0.1/dolphinscheduler/actuator/healthA JSON document with "status":"UP" for the alert, api, db, master and worker components confirms that the full standalone stack is registered and healthy.
First login to the DolphinScheduler web interface
Open a web browser and go to http://<public-ip>/. The root path redirects to the DolphinScheduler sign-in form. To use English, select en_US with the language switch in the top right corner.
Enter the administrator username admin and the administrator password from /root/apache-dolphinscheduler-credentials.txt, then choose Login. After your first successful sign-in, DolphinScheduler shows the home dashboard with task state and workflow state statistics.
Create a project
Workflows in DolphinScheduler live inside projects. Open the Project menu in the top navigation, choose Project List, and choose Create Project. Give the project a name and an optional description, then save it. The new project appears in the list with its owner, workflow definition count and timestamps.
Select the project name to open it. Inside a project, you manage workflow definitions, workflow instances, workflow timings and task instances from the left navigation.
Author a workflow definition
Inside your project, open Workflow, then Workflow Definition, and choose Create Workflow. The visual canvas opens with a palette of task types down the left, including SHELL, SQL, PYTHON, SPARK, FLINK, HTTP and more.
Drag a SHELL task onto the canvas and give it a name. In the script field, enter a simple command such as echo "hello from DolphinScheduler". Save the task, then save the workflow with a name.
To run the workflow, set it online with the release control, then choose Run in the workflow definition list. Watch its progress under Workflow Instance. Open Task Instance to read the task log and confirm that the shell command executed.
Monitor the services
The Monitor menu shows the health of every bundled component. Under Service Manage, the Master and Worker pages report a Normal status with a recent heartbeat time, together with CPU, memory, disk and thread pool gauges. The Alert Server and DB pages report on the alerting service and the metadata database.
You can confirm the same health from the command line at any time:
sudo systemctl status dolphinscheduler.service nginx.service --no-pagerBoth units report active (running). The standalone server registers its master and worker in the embedded registry, which is what the Monitor pages read.
Server components
The deployed image contains the following components:
Component Purpose
Apache DolphinScheduler 3.4.2 Distributed visual workflow and DAG scheduler (standalone server)
Master service Schedules workflows and dispatches tasks to workers
Worker service Executes task instances
API server Serves the web interface and the REST API
Alert server Delivers workflow and task alerts
Embedded H2 database Metadata store on the dedicated data volume
Java 17 runtime The JVM the standalone server runs on
nginx Reverse proxy on port 80 in front of the loopback listener, with an unauthenticated health endpoint
The DolphinScheduler process runs under a dedicated, unprivileged dolphinscheduler system user. The standalone server binds to 127.0.0.1:12345 and is reached only through nginx.
Filesystem layout
Path Purpose
/opt/dolphinscheduler/ Application home: the standalone server distribution and its configuration
/opt/dolphinscheduler/standalone-server/conf/ application.yaml and common.properties for the standalone server
/var/lib/dolphinscheduler/ Data volume: the H2 metadata database, the workflow repository and execution logs
/var/lib/dolphinscheduler/h2/ The embedded H2 database file
/var/lib/dolphinscheduler/work/ The task working and resource upload directory
/etc/systemd/system/dolphinscheduler.service systemd unit for the standalone server
/root/apache-dolphinscheduler-credentials.txt Per instance administrator password, generated on first boot, root only
The image keeps the scheduler state on a dedicated EBS volume mounted at /var/lib/dolphinscheduler, so you can resize or snapshot it independently of the operating system disk.
Managing the service
systemd starts the standalone server and nginx at boot. Check their status:
sudo systemctl status dolphinscheduler.service nginx.service --no-pagerTo restart the standalone server, for example after you edit application.yaml, run:
sudo systemctl restart dolphinscheduler.serviceTo read the recent logs of the standalone server, run:
sudo journalctl -u dolphinscheduler.service -n 50 --no-pagerThe JVM takes a short time to become healthy after a restart. Poll the actuator health endpoint until it reports UP before you sign in again.
Using the REST API
The DolphinScheduler REST API is served under the same /dolphinscheduler path as the web interface. Authenticate by posting the administrator credentials to the login endpoint. It returns a session cookie and a token, and you then call the API with that session.
The following commands sign in and read the actuator health through the API path:
PW=$(sudo grep '^DOLPHINSCHEDULER_ADMIN_PASSWORD=' /root/apache-dolphinscheduler-credentials.txt | cut -d= -f2-)
curl -s -c /tmp/ds_cookies http://127.0.0.1/dolphinscheduler/login \
--data-urlencode 'userName=admin' \
--data-urlencode "userPassword=${PW}" | head -c 200 echo ""
curl -s http://127.0.0.1/dolphinscheduler/actuator/healthThe login response contains "code":0 together with a sessionId and token, and the health call reports every component UP. The full REST API reference is published in the Apache DolphinScheduler documentation at https://dolphinscheduler.apache.org/.
Change the administrator password
The per-instance administrator password generated on first boot is strong and unique, but you can set your own. Sign in to the web interface, open the admin menu in the top right corner, choose User Information, and update the password there.
You can also create additional named users under Security, so that team members do not share the administrator account. Assign each user an appropriate tenant and role.
Enable HTTPS with a reverse proxy
nginx already fronts DolphinScheduler on plain HTTP on port 80. For any deployment beyond a trusted management network, terminate TLS at nginx so that session cookies and tokens cannot be intercepted:
sudo apt-get update && sudo apt-get install -y certbot python3-certbot-nginx
sudo certbot --nginx -d dolphinscheduler.your-domain.example \
--non-interactive --agree-tos -m you@your-domain.example --redirectcertbot edits the existing nginx server block to add the certificate and an HTTP to HTTPS redirect. After you enable TLS, restrict the instance security group so that port 80 and port 443 are reachable only from your network or an upstream load balancer.
Backups and maintenance
DolphinScheduler keeps its state on the data volume at /var/lib/dolphinscheduler. A backup of that directory captures the metadata database, the workflow repository and run history together. For a consistent copy of the H2 file, stop the service briefly. Or take an EBS snapshot of the data volume for point-in-time recovery:
sudo systemctl stop dolphinscheduler.service
sudo tar -czf /var/backups/dolphinscheduler-$(date +%F).tgz -C /var/lib dolphinscheduler
sudo systemctl start dolphinscheduler.serviceShip the archive to an Amazon S3 bucket or another object store. Because the scheduler state is on its own EBS volume, aws ec2 create-snapshot against that volume is the simplest point-in-time backup.
For kernel and package updates, Ubuntu's unattended-upgrades applies security patches automatically. To move to a newer DolphinScheduler release, follow the upstream upgrade notes. The metadata lives on the data volume, so you can attach a new image to the same data volume to preserve history.
Scaling beyond a single instance
The standalone server is ideal for a single-node deployment. For larger, highly available deployments, move to the DolphinScheduler cluster mode:
- Replace the embedded H2 database with an external Amazon RDS for MySQL or PostgreSQL metadata database.
- Run ZooKeeper (or another supported registry) so that multiple masters and workers can coordinate.
- Run the master, worker, API and alert services as separate processes across a fleet of instances.
- Put the API servers behind an Application Load Balancer for high availability of the web interface and REST API.
Each of these is documented in the official Apache DolphinScheduler documentation at https://dolphinscheduler.apache.org/, under the deployment and cluster sections.
Support
SecureAnyCloud provides 24/7/365 expert technical support for this image. Guaranteed response within 24 hours, one hour average for critical issues. Contact sales@secureanycloud.com.
For general Apache DolphinScheduler questions, consult the community resources and the documentation at https://dolphinscheduler.apache.org/.
Deploy on AWS
Launch Apache DolphinScheduler on AWS with 24/7 support from SecureAnyCloud.
View on Marketplace
Need Help?
Our support team is available 24/7.
sales@secureanycloud.com