Deployment guide

draw.io Server

Overview

draw.io (diagrams.net) is an open source diagram editor for flowcharts, UML, entity-relationship, network, BPMN, org-chart, mind-map and wireframe diagrams. It is released under the Apache-2.0 licence and runs client-side in your browser. This SecureAnyCloud AWS Marketplace AMI hosts the draw.io web application on your own instance and serves it over HTTPS.

Your diagram data stays with you: in your browser, on your device, or in storage you connect, such as local files or your own Google Drive, OneDrive or GitHub. The server keeps no diagrams and has no database, so it is a stateless editor host.

draw.io has no login of its own. This image hardens the runtime and fronts it with HTTPS instead of exposing an unauthenticated administrative surface.

What you get:

  • The official draw.io / diagrams.net web application v30.3.14 (Apache-2.0): the official draw.war deployed as the root web application on Apache Tomcat 9.0.120 and OpenJDK 17, bound to the loopback interface only (127.0.0.1:8080)
  • The drawio.service systemd unit, which runs Tomcat and restarts it automatically on failure
  • The drawio-server-firstboot.service systemd oneshot, which regenerates the per-instance self-signed TLS certificate, starts the editor, proves a known editor asset loads, and writes a secret-free access note to /root/drawio-server-credentials.txt
  • nginx on port 443 terminating HTTPS with a self-signed TLS certificate that is regenerated on each instance's first boot, and reverse-proxying to the loopback-bound editor, with an unauthenticated /healthz for load-balancer probes
  • Port 80 serving /healthz and redirecting everything else to HTTPS
  • A hardened Tomcat: the stock manager and host-manager applications removed, an empty users file and the shutdown port disabled, so there is no administrative console and no shared password in the image
  • IMDSv2 required on instances, and a build-time check on every image that the app's built-in image-import proxy does not expose the instance metadata endpoint
  • Ubuntu 24.04 LTS base with the latest security patches

Connecting to your instance

Connect over SSH on port 22 as the default login user of your operating system variant. On Ubuntu 24.04 LTS the user is ubuntu, for example: ssh -i your-key.pem ubuntu@<public-ip>

You do not sign in to use the editor, because draw.io has no login of its own. Open https://<public-ip>/ in a browser and accept the per-instance self-signed certificate.

Prerequisites

  • An AWS account subscribed to this product
  • An EC2 key pair for SSH access
  • A Security Group allowing inbound TCP 22 (SSH), 80 and 443 (HTTPS), ideally restricted to your own IP range because the editor has no login of its own
  • A modern web browser
1

Launch from the AWS Console

  • Open the product in AWS Marketplace. Choose Continue to Subscribe, then Continue to Configuration and Continue to Launch.
  • Choose an instance type. Any current-generation type works, because the app is lightweight and rendering happens in the browser.
  • Select your key pair and a Security Group that allows inbound 22, 80 and 443.
  • Launch the instance and note its public IP address.
2

Launch from the AWS CLI

aws ec2 run-instances \
  --image-id <ami-id-from-listing> \
  --instance-type m5.large \
  --key-name your-key \
  --security-group-ids sg-xxxxxxxx \
  --metadata-options 'HttpTokens=required,HttpEndpoint=enabled' \
  --tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=drawio-server}]'
3

Verify the services are running

SSH in and confirm that both services are active:

sudo systemctl is-active drawio nginx
active active
4

Inspect the runtime and listeners

List the listening ports. The editor's Tomcat listener is bound to the loopback interface only, so only nginx (ports 80 and 443) is reachable from the network:

sudo ss -tlnp | grep -E ':(80|443|8080) '
LISTEN 0 511 0.0.0.0:80 0.0.0.0:* users:(("nginx",...)) LISTEN 0 511 0.0.0.0:443 0.0.0.0:* users:(("nginx",...)) LISTEN 0 100 [::ffff:127.0.0.1]:8080 *:* users:(("java",...))

Port 8080 (Tomcat) answers on 127.0.0.1 only. Confirm the bundled version and licence:

cat /opt/tomcat/DRAWIO_VERSION
drawio_version=30.3.14 drawio_war_sha256=f46acbc76273bece778a39c4dda63261c10d7326160b3ffb231cb784e9b0a9eb drawio_license=Apache-2.0 tomcat_version=9.0.120 baked_at=2026-07-24T02:07:26Z
5

Read the access note

draw.io ships no credentials. Read the secret-free access note, which records the editor URL:

sudo cat /root/drawio-server-credentials.txt
# draw.io — Access Notes
# Generated on first boot by drawio-server-firstboot.service
#
# draw.io (diagrams.net) is a client-side diagram editor. It has NO admin UI,
# login or password: diagrams live in YOUR BROWSER / on YOUR DEVICE ...
# drawio.url=https://<public-ip>/ drawio.healthz=https://<public-ip>/healthz drawio.version=v30.3.14
6

Verify the editor over HTTPS

Request a known editor asset, the ~9 MB draw.io application bundle, to confirm the editor is served over TLS:

curl -sk -o /dev/null -w 'GET /js/app.min.js -> HTTP %{http_code}, %{size_download} bytes\n' https://127.0.0.1/js/app.min.js
GET /js/app.min.js -> HTTP 200, 9407659 bytes

Check the health endpoint next. It is unauthenticated and answers on both HTTP and HTTPS, and port 80 redirects everything else to HTTPS:

curl -sk -o /dev/null -w 'healthz -> HTTP %{http_code}\n' https://127.0.0.1/healthz
healthz -> HTTP 200
7

Confirm the hardening

The stock Tomcat administrative console is removed. Request the manager application and confirm it returns 404:

curl -sk -o /dev/null -w 'GET /manager/html -> HTTP %{http_code}\n' https://127.0.0.1/manager/html
GET /manager/html -> HTTP 404
8

Open the editor in a browser

Open https://<public-ip>/ in your browser and accept the per-instance self-signed certificate. The draw.io editor loads directly, and no login is required.

Drag shapes onto the canvas and connect them to draw flowcharts, UML, network, BPMN and other diagrams.

Select any shape to style it with the Style, Text and Arrange panels on the right.

9

Save and export your diagrams

Because draw.io runs in your browser, you choose where your diagrams live.

  • Local device: save .drawio (or .xml) files to your computer from the File menu.
  • Your own cloud storage: connect Google Drive, OneDrive or GitHub from File > Open from / Save to, so diagrams are stored in accounts you control.
  • Export: export any diagram to PNG, SVG or PDF from File > Export as. Your browser performs the export, so no additional export service is exposed on the instance.
10

Managing the service

# Status and logs
sudo systemctl status drawio nginx
sudo journalctl -u drawio -n 100 --no-pager
# Restart the editor or the proxy
sudo systemctl restart drawio
sudo systemctl restart nginx
11

Production recommendations

  • Restrict inbound access. draw.io has no login of its own, so anyone who can reach the URL can use the editor. Restrict the Security Group to your own CIDR, or place the instance behind a VPN or in a private subnet.
  • Use your own domain and certificate. To get a trusted certificate, terminate TLS at nginx with your own domain and a CA-signed certificate (for example via certbot). Alternatively, front the instance with an Application Load Balancer and an ACM certificate. Edit /etc/nginx/sites-available/sac-drawio, point ssl_certificate and ssl_certificate_key at your own files, then reload nginx.
  • Keep it patched. Apply OS security updates regularly with sudo apt-get update && sudo apt-get upgrade.
  • Health checks. Use the unauthenticated endpoint https://<public-ip>/healthz for load-balancer and monitoring probes.
12

Support and licensing

draw.io / diagrams.net is licensed under the Apache-2.0 licence. The licence text is included in the image at /opt/tomcat/webapps/ROOT/LICENSE.

"draw.io" and "diagrams.net" are trademarks of JGraph Ltd. This image packages the open source application for self-hosting and is not affiliated with or endorsed by JGraph Ltd. SecureAnyCloud provides the packaging, hardening and support.

Need Help?

SecureAnyCloud provides 24/7 technical support for this product by email and live chat at sales@secureanycloud.com. We can help with deployment, reverse-proxy termination with your own domain and certificate, connecting the editor to your own storage, network hardening for the login-less editor, and instance sizing.

Deploy on AWS

Launch draw.io / diagrams.net Diagram Editor - Self-Hosted AMI by SecureAnyCloud with 24/7 support from SecureAnyCloud.

View on Marketplace

Need Help?

Our support team is available 24/7.

sales@secureanycloud.com

Deploy on AWS