# Host Your Own draw.io, Visio style diagram maker

## What is Draw.io?

> draw.io is a configurable diagramming/whiteboarding visualization application. -https://github.com/jgraph/drawio

## Install Apache Tomcat

1. Log into the Linux device
2. Run the following commands in a terminal:
   # check for and install software updates
   sudo apt update
   sudo apt upgrade
   # install java jdk
   sudo apt install default-jdk
   # create tomcat group and user
   sudo mkdir /var/lib/tomcat9
   sudo groupadd tomcat
   sudo useradd -s /bin/false -g tomcat -d /var/lib/tomcat9 tomcat
   # lookup the latest tomcat 9 release
   regex='<a href="v[^/]*\/">v([^/]*)\/<\/a>' && response=$(curl -s https://downloads.apache.org/tomcat/tomcat-9/?C=M;O=D) && [[ $response =~ $regex ]] && downloadURL="${BASH_REMATCH[1]}"
   # download tomcat 9
   curl -O https://downloads.apache.org/tomcat/tomcat-9/v$downloadURL/bin/apache-tomcat-$downloadURL.tar.gz
   # extract the download
   sudo tar xzvf apache-tomcat-9*tar.gz -C /var/lib/tomcat9 --strip-components=1
   # set permissions
   cd /var/lib/tomcat9
   sudo chgrp -R tomcat /var/lib/tomcat9
   sudo chmod -R g+r conf
   sudo chmod g+x conf
   sudo chown -R tomcat webapps/ work/ temp/ logs/
   # run tomcat as a service
   sudo update-java-alternatives -l
   sudo nano /etc/systemd/system/tomcat.service
3. Paste the following configuration into tomcat.service

   [Unit]
   Description=Apache Tomcat
   After=network.target

   [Service]
   Type=forking

   Environment=JAVA_HOME=/usr/lib/jvm/java-1.11.0-openjdk-amd64
   Environment=CATALINA_PID=/var/lib/tomcat9/temp/tomcat.pid
   Environment=CATALINA_HOME=/var/lib/tomcat9
   Environment=CATALINA_BASE=/var/lib/tomcat9
   Environment='CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC'
   Environment='JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom'

   ExecStart=/var/lib/tomcat9/bin/startup.sh
   ExecStop=/var/lib/tomcat9/bin/shutdown.sh

   User=tomcat
   Group=tomcat
   UMask=0007
   RestartSec=10
   Restart=always

   [Install]
   WantedBy=multi-user.target

4. Continue with the following commands in terminal:
   sudo systemctl daemon-reload
   sudo systemctl start tomcat
   sudo systemctl status tomcat
   sudo systemctl enable tomcat
5. Open a browser and navigate to http://DNSorIP:8080 to test that Tomcat is installed and running

## Installing jGraph/mxGraph from draw.io

1. Run the following commands in terminal:
   # download the draw.war file
   cd ~
   wget https://github.com/jgraph/drawio/releases/download/v13.8.0/draw.war
   # copy draw.war to the tomcat webapps directory
   sudo cp ./draw.war /var/lib/tomcat9/webapps
2. Back in the browser, navigate to http://DNSorIP:8080/draw
3. Enjoy a self-hosted diagram creation studio in your web browser

Source: https://github.com/jgraph/drawio