Complete Guide: Setting Up XWiki 17 on Premises

작성자

카테고리:

← 피드로
DEV Community · Ana Villar · 2026-06-13 개발(SW)

This guide walks through deploying XWiki 17.10.8 on Red Hat Enterprise Linux 10.2 with Apache Tomcat and PostgreSQL. Total setup time: ~45 minutes. Requires minimum 8GB RAM and 4 vCPUs for acceptable performance.

If you’re looking to deploy a self-hosted wiki solution with enterprise-grade features, XWiki is an excellent choice. Unlike some alternatives, it offers powerful permission management, structured data, and extensibility through extensions. However, the on-premises setup can be intimidating due to multiple moving parts.

This guide details setting up XWiki 17 on Red Hat Linux Server 10.2 with 16GB RAM and 4 vCPUs. I initially validated these steps in a Mac-hosted VM before deploying them to my production environment on a Dell OptiPlex 7050 Micro.

What You’ll Need

Hardware Requirements

Resource Minimum Recommended CPU 2 cores 4+ cores RAM 4 GB 16 GB Storage 20 GB 100 GB

Note: During my initial setup on a 2GB RAM old laptop, XWiki was functional but painfully slow. The jump to 16GB made a night-and-day difference in responsiveness.

Software Stack

  • Operating System: Red Hat Enterprise Linux 10.2 or Fedora Server
  • Servlet Container: Apache Tomcat 10.1.x (Jetty is also supported)
  • Database: PostgreSQL 16.x
  • Java: OpenJDK 21
  • XWiki Platform: 17.10.8 WAR package

Comments:

  • As Operating System, you can use other Linux Distributions, including Ubuntu, Windows Server and Docker Engine.
  • As Servlet Container, Jetty is also a supported option.
  • Other supported databases are HyperSQL, MariaDB, MySQL, or Oracle.
  • For more information, review XWiki prerequisites.

Time Investment

  • Installation: ~30 minutes
  • Configuration: ~15 minutes
  • Testing: ~10 minutes

Preparation Steps

Install Your Base OS

For this guide, I’m using Red Hat Enterprise Linux, but most steps work equally well on Fedora Server if you don’t have RHEL subscriptions.

Download from Red Hat Developer Program or Fedora Server.

Once installed, register (if using RHEL), update, and reboot:

~$ sudo subscription-manager register --username <username> --password <password>
~$ sudo dnf upgrade -y
~$ reboot

Enter fullscreen mode Exit fullscreen mode

Installing Dependencies

Install and configure Apache Tomcat

Tomcat serves as our servlet container for hosting XWiki:

~$ sudo dnf install tomcat -y

Enter fullscreen mode Exit fullscreen mode

This command pulls in Java 21 along with necessary dependencies automatically. Review the installation output to confirm java-21-openjdk-headless was included.

Architecture Note:
Package names vary by architecture:

  • x86_64: java-21-openjdk-headless.x86_64
  • aarch64: java-21-openjdk-headless.aarch64

If it seems to be missing:

~$ sudo dnf install java-21-openjdk-headless.x86_64 -y

Enter fullscreen mode Exit fullscreen mode

or

~$ sudo dnf install java-21-openjdk-headless.aarch64 -y

Enter fullscreen mode Exit fullscreen mode

Configure Firewall

Allow HTTP traffic on port 8080 (Tomcat’s default):

~$ sudo firewall-cmd --permanent --add-port=8080/tcp
~$ sudo firewall-cmd --reload

Enter fullscreen mode Exit fullscreen mode

Verify it’s open:

~$ sudo firewall-cmd --list-all

Enter fullscreen mode Exit fullscreen mode

Configure Tomcat Memory Settings

By default, Tomcat won’t allocate enough memory for XWiki to perform well. Create a custom setenv.sh file:

~$ sudo mkdir -p /var/lib/tomcat/bin
~$ sudo chown tomcat:tomcat -R /var/lib/tomcat
~$ sudo nano /var/lib/tomcat/bin/setenv.sh

Enter fullscreen mode Exit fullscreen mode

Add this configuration:

#!/bin/sh
export JAVA_OPTS="${JAVA_OPTS} -Djava.awt.headless=true"
export CATALINA_OPTS="-server -Xms1080m -Xmx1600m -Dfile.encoding=utf-8 
-Djava.awt.headless=true 
--add-opens java.base/java.lang=ALL-UNNAMED 
--add-opens java.base/java.io=ALL-UNNAMED 
--add-opens java.base/java.util=ALL-UNNAMED 
--add-opens java.base/java.util.concurrent=ALL-UNNAMED"

Enter fullscreen mode Exit fullscreen mode

Memory Explanation:

Setting Value Purpose -Xms 1080MB Initial heap size (prevents startup allocation spikes) -Xmx 1600MB Maximum heap size (prevents runaway memory consumption) –add-opens N/A Required for Java 17+ compatibility with certain libraries

Set ownership and test:

~$ sudo chown tomcat:tomcat /var/lib/tomcat/bin/setenv.sh
~$ sudo systemctl enable --now tomcat
~$ sudo systemctl status tomcat

Enter fullscreen mode Exit fullscreen mode

Test from another machine by visiting <a href="http://:8080″ target=”_blank” rel=”noopener noreferrer”>http://your-server-name:8080. You should see the Tomcat welcome page. Once confirmed, stop the service — we’ll restart after XWiki deployment:

~$ sudo systemctl stop tomcat

Enter fullscreen mode Exit fullscreen mode

Database Configuration (PostgreSQL)

Install PostgreSQL
~$ sudo dnf install postgresql-server postgresql-contrib -y

Enter fullscreen mode Exit fullscreen mode

Initialize and Start PostgreSQL

~$ sudo postgresql-setup --initdb
~$ sudo systemctl enable --now postgresql
~$ sudo systemctl status postgresql

Enter fullscreen mode Exit fullscreen mode

Create XWiki User and Database

Switch to the postgres user:

~$ sudo su postgres
bash-5.2$ psql

Enter fullscreen mode Exit fullscreen mode

Then run these SQL commands:

CREATE USER xwiki PASSWORD 'xwikipassword';
CREATE DATABASE xwiki WITH OWNER=xwiki;
GRANT ALL ON SCHEMA public TO xwiki;
q 

Enter fullscreen mode Exit fullscreen mode

⚠️ Security Warning: Replace ‘xwikipassword’ with a strong, unique password. Never use default credentials in production. Consider using environment variables or secret management tools like HashiCorp Vault for sensitive data.

Configure PostgreSQL Authentication

Find the authentication config file:

~$ sudo su postgres
bash-5.2$ psql -c "SHOW hba_file;"

Enter fullscreen mode Exit fullscreen mode

By default, the file and location is /var/lib/pgsql/data/pg_hba.conf

Edit the pg_hba.conf file to change authentication method:

~$ sudo nano /var/lib/pgsql/data/pg_hba.conf

Enter fullscreen mode Exit fullscreen mode

Replace these lines:

# OLD (insecure)
host    all             all             127.0.0.1/32            ident
host    all             all             ::1/128                 ident

Enter fullscreen mode Exit fullscreen mode

by

# NEW (secure)
host    all             all             127.0.0.1/32            scram-sha-256
host    all             all             ::1/128                 scram-sha-256

Enter fullscreen mode Exit fullscreen mode

Reload PostgreSQL to apply changes:

~$ sudo systemctl reload postgresql

Enter fullscreen mode Exit fullscreen mode

Verify Database Connection:

~$ psql postgresql://xwiki:xwikipassword@localhost
xwiki=> l  # Should list databases including 'xwiki'
xwiki=> q  # Exit psql
~$

Enter fullscreen mode Exit fullscreen mode

Deploying XWiki

Download Required Files

Get these two files from official sources:

Place them in a download directory:

~$ mkdir ~/downloads
~$ cd ~/downloads
# wget the links here from browser or CLI
~$ ls downloads/
postgresql-42.7.11.jar  xwiki-platform-distribution-war-17.10.8.jar
~$ 

Enter fullscreen mode Exit fullscreen mode

Deploy the WAR Package

Copy and extract the XWiki WAR:

~$ sudo cp ~/downloads/xwiki-platform-distribution-war-17.10.8.jar /var/lib/tomcat/webapps/
~$ cd /var/lib/tomcat/webapps
~$ sudo unzip xwiki-platform-distribution-war-17.10.8.jar
~$ sudo mkdir xwiki
~$ sudo mv META-INF redirect resources skins templates WEB-INF xwiki/
~$ sudo rm xwiki-platform-distribution-war-17.10.8.jar
~$ sudo chown -R tomcat:tomcat xwiki/

Enter fullscreen mode Exit fullscreen mode

Common Pitfall: If you get an error about moving files into themselves, ensure you’re not inside the extracted directory when creating the target folder.

Add PostgreSQL JDBC Driver

~$ cd /var/lib/tomcat/webapps/xwiki/WEB-INF/lib
~$ sudo cp ~/downloads/postgresql-42.7.11.jar .
~$ sudo chown tomcat:tomcat *.jar

Enter fullscreen mode Exit fullscreen mode

Configure Hibernate for PostgreSQL

Edit the Hibernate configuration:

~$ cd /var/lib/tomcat/webapps/xwiki/WEB-INF
~$ sudo nano hibernate.cfg.xml

Enter fullscreen mode Exit fullscreen mode

Find and comment out the default database section:

    <!--
    <property name="hibernate.connection.url">jdbc:hsqldb:file:${environment.permanentDirectory}/database/xwiki_db;shutdown=true</property>
    <property name="hibernate.connection.username">sa</property>
    <property name="hibernate.connection.password"></property>
    <property name="hibernate.connection.driver_class">org.hsqldb.jdbcDriver</property>
    -->

Enter fullscreen mode Exit fullscreen mode

Find and uncomment the PostgreSQL section:

    <!-- PostgreSQL configuration.
         Uncomment if you want to use PostgreSQL and comment out other database configurations.
         Notes:
           - "hibernate.jdbc.use_streams_for_binary" needs to be set to "false",
             see https://community.jboss.org/wiki/HibernateCoreMigrationGuide36
           - "xwiki.virtual_mode" can be set to either "schema" or "database". Note that currently the database mode
             doesn't support database creation (see https://jira.xwiki.org/browse/XWIKI-8753)
           - if you want the main wiki database to be different than "xwiki" (or "public" in schema mode)
             you will also have to set the property xwiki.db in xwiki.cfg file
    -->

    <property name="hibernate.connection.url">jdbc:postgresql://localhost:5432/xwiki</property>
    <property name="hibernate.connection.username">xwiki</property>
    <property name="hibernate.connection.password">**xwikipassword**</property>
    <property name="hibernate.connection.driver_class">org.postgresql.Driver</property>
    <property name="hibernate.jdbc.use_streams_for_binary">false</property>
    <property name="xwiki.virtual_mode">schema</property>

    <property name="hibernate.connection.charSet">UTF-8</property>
    <property name="hibernate.connection.useUnicode">true</property>
    <property name="hibernate.connection.characterEncoding">utf8</property>

    <mapping resource="xwiki.postgresql.hbm.xml"/>
    <mapping resource="feeds.hbm.xml"/>
    <mapping resource="instance.hbm.xml"/>
    <mapping resource="notification-filter-preferences.hbm.xml"/>
    <mapping resource="mailsender.hbm.xml"/>


    <!-- Oracle configuration.
...

Enter fullscreen mode Exit fullscreen mode

⚠️ Password Reminder: Update the password value to match what you set earlier!

Configure Permanent Directory

Create a dedicated directory for XWiki data:

~$ sudo mkdir -p /var/lib/xwiki/data
~$ sudo chown -R tomcat:tomcat /var/lib/xwiki

Enter fullscreen mode Exit fullscreen mode

Edit the properties file:

~$ nano /var/lib/tomcat/webapps/xwiki/WEB-INF/xwiki.properties

Enter fullscreen mode Exit fullscreen mode

Uncomment and verify this line:

environment.permanentDirectory = /var/lib/xwiki/data/

Enter fullscreen mode Exit fullscreen mode

Starting the Application

~$ sudo systemctl start tomcat

Enter fullscreen mode Exit fullscreen mode

Wait 3-5 minutes for Tomcat to fully initialize XWiki (it compiles resources on first boot). Monitor logs:

~$ sudo tail -f /var/log/tomcat/catalina.out

Enter fullscreen mode Exit fullscreen mode

Look for messages like XWiki context has been initialized successfully.

XWiki Configuration Wizard

Running the Configuration Wizard

Navigate to your server: <a href="http://:8080/xwiki” target=”_blank” rel=”noopener noreferrer”>http://your-server-name:8080/xwiki.

You’ll see an initialization banner briefly, then the wizard will appear.

XWiki initialization banner

Wizard Steps

Distribution wizard

Press Continue to begin

Create Administrator Account: Set a strong admin password (save this securely!).

Create Admin User

Press Register and Login.

User created

Press Continue

Install Standard Flavor: Select “XWiki Standard Flavor” from the dropdown—this includes useful built-in applications

Standard Flavor

Press Install this flavor: Wait 2-5 minutes depending on hardware

Flavor deployment

Press Install

Once you see it has been Installed, Press Continue to completion.

Deployment completed

After finalization, press Continue and you’ll be redirected to your XWiki home page with example documentation.

XWiki Home Page

Your XWiki server is ready!

Post-Installation Checklist

Security Hardening

Action Priority Command/File Change default PostgreSQL password High psql ALTER USER command Update Tomcat manager passwords High tomcat-users.xml Enable HTTPS via reverse proxy High nginx/Apache configuration Restrict database access Medium pg_hba.conf network rules Regular backups High XWiki GUI + cron jobs + pg_dump

Performance Tuning

With 16GB RAM, you may want to increase XWiki’s maximum heap:

# Edit setenv.sh
CATALINA_OPTS="-Xmx2048m ..."  # Increase if needed

Enter fullscreen mode Exit fullscreen mode

Enable query caching in xwiki.properties:

cache.default.maxSize = 5000

Enter fullscreen mode Exit fullscreen mode

Backup Strategy

Using XWiki GUI

Go to Administer Wiki:

Administer Wiki

Select Content:

Administer Options

And select Export:

Option Export

You can select what pages to export/backup.

Export

Database:

pg_dump -U xwiki xwiki > xwiki_backup_$(date +%Y%m%d).sql

Enter fullscreen mode Exit fullscreen mode

File Data:

tar czf xwiki_files_$(date +%Y%m%d).tar.gz /var/lib/xwiki/data/

Enter fullscreen mode Exit fullscreen mode

Schedule these as cron jobs for automated backups.

Troubleshooting Common Issues

Issue: XWiki Won’t Load After Startup

Symptoms: Browser shows blank page or timeout at /xwiki

Solutions:

  • Check logs: tail -f /var/log/tomcat/catalina.out
  • Verify database connection is active
  • Ensure hibernate.cfg.xml has correct credentials
  • Restart Tomcat completely

Issue: Slow Page Loading

Symptoms: Pages take 5+ seconds to load

Solutions:

  • Increase JVM heap in setenv.sh
  • Check available RAM with free -h
  • Disable unnecessary extensions in XWiki admin panel
  • Consider upgrading to SSD storage

Issue: Database Connection Error

Symptoms: “Cannot connect to database” during wizard

Solutions:

  • Verify PostgreSQL is running: sudo systemctl status postgresql
  • Test connectivity: psql -U xwiki -d xwiki
  • Check pg_hba.conf has scram-sha-256 authentication
  • Ensure firewall allows localhost PostgreSQL connections (port 5432)

Why On-Premises Over Cloud?

You might wonder why choose self-hosted instead of XWiki Cloud. Here are compelling reasons:

Factor On-Premises Cloud Data Control Full Limited by provider Customization Unlimited Restricted Cost (Long-term) Lower Subscription-based Offline Access Yes Requires internet Integration Direct system access API-only

For organizations handling sensitive data or requiring deep integration, on-premises deployment provides the flexibility you need.

Final Thoughts

Setting up XWiki on-premises involves coordinating several components, but once configured, you have a powerful, self-contained knowledge management platform. The setup I’ve outlined balances security, performance, and maintainability.

Got questions or encountered different errors? Drop a comment below — I’m happy to help troubleshoot!

Further Resources

원문에서 계속 ↗

코멘트

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다