fbpx
Installation Guide — Axelor Open Suite 9
Installation

Installation Guide - Axelor Open Suite 9

Up-to-date stack: Java 21 - Tomcat 10.1 - PostgreSQL 16

Install Axelor Open Suite 9 (Axelor Open Platform 8.2) on a modern foundation. This guide covers the prerequisites, step-by-step installation on Ubuntu, quick start with Docker, configuration, and verification of the instance.

01

The AOS 9 technical stack

Axelor Open Suite 9 is built on Axelor Open Platform 8.2 and the Jakarta EE 10 namespace. The versions below form the minimum reference baseline for a production deployment.

ComponentVersionNotes
Java / JDK21 LTSOpenJDK; G1 Garbage Collector by default.
Apache Tomcat10.1.xCompatible with Jakarta Servlet 6.0 (Jakarta EE 10).
PostgreSQL≥ 16Requires the unaccent extension.
Caddy (reverse proxy)≥ 2.xAutomatic HTTPS via ACME; Nginx ≥ 1.24 as an alternative.
Axelor Open Platform8.2Framework embedded in the WAR.
Axelor Open Suite9ERP / CRM / BPM business suite.
Gradle8.14.5Only for building a custom WAR.
Node.js≥ 24.13Builds the React 19.2 interface (TypeScript 5.9, Vite 7).

Migrating from AOS 8: this is not a simple redeployment. AOS 9 requires an environment shift — Java 8 → Java 21, Tomcat 9 → Tomcat 10.1 (Jakarta EE 10), and a switch from CBC to GCM encryption. Plan your migration accordingly.

02

Server & client prerequisites

Reference system: Ubuntu Server LTS 24.04 (minimal installation, no graphical interface). Size the server according to the number of users.

Hardware sizing
UsersvCPURAMDiskProfile
~102 vCPU8 GiB50 GBMicro-business / basic CRM use
~304 vCPU16 GiB50 GBSMB, standard deployment
~608 vCPU32 GiB50 GBSMB, intensive use
~12016 vCPU64 GiB50 GBMid-cap company, heavy load

Estimates assume a co-located database and 50 GB of storage. For high data volumes, plan a dedicated configuration or a high-availability cluster topology.

Supported browsers
BrowserMinimum compatibleRecommended
Google Chrome / Chromium94Latest major version
Microsoft Edge94Latest major version
Mozilla Firefox93ESR 140 or recent Stable
Apple Safari (macOS / iOS)16.4Last 3 versions

AOS 9 is a full web solution (React 19, ES2022). JavaScript and domain cookies must be allowed. Internet Explorer is not supported.

03

Download

Choose the method that fits your context: classic deployment from a WAR archive, or containerization via the official Docker image.

WAR Archive Recommended

The axelor-erp-9.0.x.war deliverable (290 to 320 MB) deploys into Tomcat 10.1. Ideal for a controlled deployment on a Linux server with a Caddy reverse proxy. Follow the installation.

Docker Image

The official axelor/aos-ce:9.0 image (Community Edition) with PostgreSQL 16 enables a quick start driven by environment variables. Docker quick start.

04

Installation on Ubuntu

Ubuntu Server 24.04

Single-server deployment with a dedicated service account axelor and the /opt/axelor directory tree. All commands are run with sudo.

1. Prepare the system

Update the system, create the service user, and open the firewall (HTTPS only).

sudo apt update && sudo apt upgrade -y
sudo apt install -y bash-completion nano unzip
sudo adduser --system --group --home /opt/axelor axelor
sudo ufw allow OpenSSH && sudo ufw allow 443/tcp && sudo ufw enable
2. Install PostgreSQL 16

Create the user, enable the unaccent extension, then create the database.

sudo apt install -y postgresql
sudo -u postgres createuser --no-superuser --pwprompt axelor
sudo -u postgres psql template1 -c "CREATE EXTENSION IF NOT EXISTS unaccent;"
sudo -u postgres createdb --owner=axelor axelor
3. Install Java 21
sudo apt install -y openjdk-21-jdk
java --version   # should print OpenJDK 21
4. Install Apache Tomcat 10.1

Create the target directory tree, deploy Tomcat, and give ownership to the service account.

TC=10.1.55
sudo mkdir -p /opt/axelor/{dist,tomcat,data,conf,backups}
cd /tmp
wget https://dlcdn.apache.org/tomcat/tomcat-10/v${TC}/bin/apache-tomcat-${TC}.tar.gz
sudo tar xzf apache-tomcat-${TC}.tar.gz -C /opt/axelor/tomcat --strip-components=1
sudo chown -R axelor:axelor /opt/axelor
/opt/axelor/tomcat/conf/server.xml — connector behind the proxy
<Connector port="8080" protocol="HTTP/1.1" address="127.0.0.1"
           proxyPort="443" scheme="https" secure="true"
           connectionTimeout="20000" redirectPort="8443"
           maxParameterCount="1000" />
5. Deploy the WAR

Unpack the deliverable into webapps/ROOT. The external configuration is referenced by the AXELOR_CONFIG variable (defined in the systemd unit).

sudo -u axelor mkdir -p /opt/axelor/data/{attachments,exports,templates,reports}
sudo systemctl stop axelor-tomcat
sudo -u axelor rm -rf /opt/axelor/tomcat/webapps/ROOT
sudo -u axelor unzip -q /opt/axelor/dist/axelor-erp-9.0.10.war \
  -d /opt/axelor/tomcat/webapps/ROOT
sudo systemctl start axelor-tomcat
6. Set up Caddy (reverse proxy + TLS)

Caddy handles TLS termination (automatic Let's Encrypt certificate) and security headers.

/etc/caddy/Caddyfile
example.axelor.com {
  tls {
    protocols tls1.2 tls1.3
  }
  header {
    Strict-Transport-Security "max-age=31536000; includeSubDomains"
    X-Content-Type-Options "nosniff"
    X-Frame-Options "SAMEORIGIN"
    Referrer-Policy "strict-origin"
  }
  request_body { max_size 20MB }
  reverse_proxy 127.0.0.1:8080 {
    transport http { read_timeout 1800s; write_timeout 1800s }
  }
}
sudo caddy validate --config /etc/caddy/Caddyfile
sudo systemctl enable --now caddy
05

Quick start with Docker

The official axelor/aos-ce:9.0 image automatically generates axelor-config.properties from environment variables, waits for PostgreSQL, applies migrations, and then starts Tomcat.

docker-compose.yml
services:
  app:
    image: axelor/aos-ce:9.0
    environment:
      - PGHOST=postgres
      - PGUSER=axelor
      - PGPASSWORD=<mot_de_passe>
      - PGDATABASE=axelor
      - APP_MODE=prod
      - JAVA_XMX=4096m
    ports:
      - "8080:8080"
    depends_on: [postgres]
    volumes:
      - app_data:/data
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8080/health"]
      interval: 10s
      timeout: 5s
      retries: 3
      start_period: 1800s
  postgres:
    image: postgres:16
    environment:
      - POSTGRES_USER=axelor
      - POSTGRES_PASSWORD=<mot_de_passe>
      - POSTGRES_DB=axelor
    volumes:
      - postgres_data:/var/lib/postgresql/data
volumes:
  app_data:
  postgres_data:

In production, place a Caddy reverse proxy in front of the container for TLS termination, and make sure to persist the /data (document management) volume and the PostgreSQL database.

06

Application configuration

The axelor-config.properties file is kept outside the WAR, in /opt/axelor/conf/, and referenced by the AXELOR_CONFIG environment variable so it persists across updates.

/opt/axelor/conf/axelor-config.properties
# === Database ===
db.default.url      = jdbc:postgresql://localhost:5432/axelor
db.default.user     = axelor
db.default.password = <mot_de_passe>
db.default.ddl      = update

# === Document management (file system) ===
data.upload.max-size = 20
data.upload.dir      = /opt/axelor/data/attachments
data.export.dir      = /opt/axelor/data/exports
template.search-dir  = /opt/axelor/data/templates
reports.design-dir   = /opt/axelor/data/reports

# === Application & security ===
application.mode      = prod
application.base-url  = https://example.axelor.com
session.timeout       = 60
session.cookie.secure = true
07

Startup & verification

Start the services in order, then confirm availability via the health endpoint.

1. Start the services
sudo systemctl start postgresql
sudo systemctl start axelor-tomcat
sudo systemctl start caddy
systemctl status postgresql axelor-tomcat caddy --no-pager
2. Check the health status

AOS exposes a /health endpoint. An HTTP 200 response with {"status":"UP"} confirms a successful startup.

curl -fs http://127.0.0.1:8080/health && echo " OK"
# via the reverse proxy:
curl -fs https://example.axelor.com/health

First startup: it can take a while — AOP applies schema migrations and loads the application. Wait for an HTTP 200 response on /health before opening access to users.

Need help with your project?

Discover how our ERP can improve your company's performance. An expert will contact you shortly to discuss your project.

Get in touch

Installation guide updated for AOS 9 / AOP 8.2. Content based on the Technical Architecture Document and the Operations Handbook — version 1.0 (June 12, 2026). Internal reference page, non-contractual.