PlantUML Server is a web application to generate UML diagrams on-the-fly.
PlantUML is not affected by the log4j vulnerability.
To know more about PlantUML, please visit https://plantuml.com.
- jre/jdk 11 or above
- apache maven 3.0.2 or above
- Jetty 11 or above
- Tomcat 10 or above
Just run:
mvn jetty:runThe server is now listening to http://localhost:8080/plantuml. In this way the server is run on an embedded jetty server.
You can specify the port at which it runs:
mvn jetty:run -Djetty.http.port=9999You can run Plantuml with jetty or tomcat container
docker run -d -p 8080:8080 plantuml/plantuml-server:jetty
docker run -d -p 8080:8080 plantuml/plantuml-server:tomcatThe server is now listening to http://localhost:8080.
The jetty container supports read-only files system, you can run the read-only mode with:
docker run -d -p 8080:8080 --read-only -v /tmp/jetty plantuml/plantuml-server:jettyThis makes the container compatible with more restricted environment such as OpenShift, just make sure you mount a volume (can be ephemeral) on /tmp/jetty.
To run plantuml using different base url, change the docker-compose.yml file:
environment:
- BASE_URL=plantumlAnd run docker-compose up. This will start a modified version of the image using the base url /plantuml, e.g. http://localhost:8080/plantuml
You can apply some option to your PlantUML server with environment variable.
If you run the directly the jar:
# NOTE: jetty-runner is deprecated.
# build war file and jetty-runner
mvn package
# start directly
# java $JVM_ARGS -jar jetty-runner.jar $JETTY_ARGS
java -jar target/dependency/jetty-runner.jar --config src/main/config/jetty.xml --port 9999 --path /plantuml target/plantuml.war
# see help for more possible options
java -jar target/dependency/jetty-runner.jar --helpNote: --config src/main/config/jetty.xml is only necessary if you need support for empty path segments in URLs (e.g. for the old proxy)
Alternatively, start over maven and pass the option with -D flag
mvn jetty:run -D THE_ENV_VARIABLE=THE_ENV_VALUE -Djetty.http.port=9999If you use docker, you can use the -e flag:
docker run -d -p 9999:8080 -e THE_ENV_VARIABLE=THE_ENV_VALUE plantuml/plantuml-server:jettyYou can set all the following variables:
BASE_URL- PlantUML Base URL path
- Default value:
ROOT
PLANTUML_CONFIG_FILE- Local path to a PlantUML configuration file (identical to the
-configflag on the CLI) - Default value:
null
- Local path to a PlantUML configuration file (identical to the
PLANTUML_LIMIT_SIZE- Limits image width and height
- Default value:
4096
PLANTUML_STATS- Set it to
onto enable statistics report - Default value:
off
- Set it to
HTTP_AUTHORIZATION- when calling the
proxyendpoint, the value ofHTTP_AUTHORIZATIONwill be used to set the HTTP Authorization header - Default value:
null
- when calling the
ALLOW_PLANTUML_INCLUDE- Enables
!includeprocessing which can read files from the server into diagrams. Files are read relative to the current working directory. - Default value:
false
- Enables
This method uses maven to run the application. That requires internet connectivity. So, you can use following command to create a self-contained docker image that will "just work".
docker image build -f Dockerfile.jetty -t plantuml-server:local .
docker run -d -p 8080:8080 plantuml-server:localThe server is now listening to http://localhost:8080.
You may specify the port in -p Docker command line argument.
To build the war, just run:
mvn packageat the root directory of the project to produce plantuml.war in the target/ directory.
NOTE: If you want that the generated war includes the apache-jsp artifact run:
mvn package -Dapache-jsp.scope=compileIf you want to generate the war with java 8 as target just remove the src/test directory and use pom.jdk8.xml.
rm -rf src/test
mvn package -f pom.jdk8.xml [-Dapache-jsp.scope=compile]It is possible to use PlantUML with a reverse proxy.
You can find this and other examples here.
