Skip to content

XNAT Installation Overview

dbeasley1 edited this page Sep 17, 2025 · 10 revisions

XNAT:

XNAT is a Java web application, written in Java. Apache Tomcat is an open-source server for dynamic Java web applications. XNAT relies on Java, Apache Tomcat 9, Postgresql and Nginx.

Using this xnat-setup script, XNAT is deployed as a docker stack. 3 docker containers run together in a network. The three base images are:

During the build process, the latest versions of these images are pulled from https://hub.docker.com/ and new Docker images are created and run as docker containers as part of a docker stack. During the build process, a file docker-compose.yml is created that contains the resources and information regarding the 3 containers that run based on the images created.

During the build process, XNAT is downloaded as a .war file, for example xnat.war. This is a compressed file containing the web application. This is placed in the folder inside of the tomcat:

/usr/local/tomcat/webapps/ROOT

This is the location inside the Tomcat Docker container filesystem, and not on the host filesystem.

Postgresql:

Postgresql is the database backend of XNAT. It stores all the data for XNAT. The database name is xnat.

Nginx:

Nginx is a server used as a front-end proxy - it manages the SSL certificates and routes traffic towards the Tomcat web server, which hosts XNAT.

UFW / iptables:

Iptables is the Linux firewall software. iptables can be tricky to configure. UFW (Uncomplicated Firewall) is a tool to ease the configuration of iptables. An example of a UFW command:

ufw allow https

This is DISABLED by default. If running inside Docker, install UFW on your host computer and configure the firewall.

File system:

As these are virtual machines, their filesystems are also virtual. Certain directories are mapped to the host server. The location of the host filesystem mount points can be configured in the xnat.cfg file.

Postgresql:
/xnat-data/postgresql/ - this is the postgresql database

Nginx:
/xnat-data/xnat
              ./certificates   - this contains the SSL certificates and is on the NGinx container (/etc/ssl)
              ./nginx_logs   - the log files pertaining to the Ngnix container (var/log/nginx/

Tomcat:
/xnat-data/xnat
              ./archive
              ./build
              ./tomcat_logs
              ./scripts
              ./inbox

/xnat-data/import_data  - place directories of sessions here and they are automatically imported into XNAT. 
               


Log File:

The tomcat XNAT logfiles are located:

/data/xnat/home/logs/

This is the location inside the container if running within Docker. This is mapped, by default to:

/xnat-data/xnat/tomcat_logs/

Additional set-up log files are located in:

/xnat-data/xnat/scripts/logs/

Next step: UFW, Ports and Firewall Configuration

Clone this wiki locally