XWiki
XWiki is an open-source enterprise-ready wiki written in Java, with a focus on extensibility.
Installation
Feel free to follow along on the XWiki Installation Guide[dead link 2024-01-13 ⓘ]. These instructions assume you will be using Tomcat and PostgreSQL. It should not be too difficult to apply these guidelines to other combinations.
- Install PostgreSQL.
- For easier PostgreSQL administration, install phpPgAdmin.
- Install tomcat. (Do not forget tomcat-native.)
- Download the XWiki WAR file.
- Rename the WAR file to
xwiki
. - Move the WAR file into the
/var/lib/tomcatn/webapps
directory. - Tomcat should automatically extract the WAR file. If not, restart Tomcat.
- At this point, you may find that a
data
directory has appeared in/var/lib/tomcatn/webapps
. Delete it. - As root:
# cd /var/lib/tomcatn # mkdir data # chown tomcatn:tomcatn data
- Inside the
/var/lib/tomcatn/webapps/xwiki/WEB-INF
directory:- Open the
xwiki.properties
file and alter theenvironment.permanentDirectory
field to read/var/lib/tomcatn/data/xwiki
. - Open the
hibernate.cfg.xml
file and:- Comment-out the section entitled "Configuration for the default database".
- Uncomment the section entitled "PostgreSQL Configuration".
- Modify the database name (in
connection.url
), username, and password as desired.
- Open the
- Create a role and database in PostgreSQL to match the hibernate configuration.
- Install postgresql-jdbcAUR from the Arch User Repository.
- As root:
# cd /usr/share/java/tomcatn # ln -s /usr/share/java/postgresql-jdbc/postgresql-jdbc41.jar
- Restart
tomcatn.service
. - Launch the XWiki application by clicking on
/xwiki
in Tomcat Manager. - The XWiki is started with XWiki Wizard Guide to finish your configuration.
Nginx proxy configuration - Solution 1
The official Nginx guide for XWiki is not correct. There is an alternative solution which works for XWiki.
- Configure nginx site
xwiki
configuration file.
/etc/nginx/sites-available/xwiki
server { listen 80 default_server; server_name xwiki.<domain-name>; return 301 https://$host$request_uri; } server { listen [::]:443 ssl; listen 443 ssl; server_name xwiki.<domain-name>; # SSL Certificate section ssl_certificate ... ssl_certificate_key ... location = / { return 301 https://$host/xwiki; } location /xwiki { proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_cache_bypass $http_upgrade; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_pass http://127.0.0.1:8080/xwiki; } }
- Activate a server block in
sites-enabled
directoryln -s /etc/nginx/sites-available/xwiki /etc/nginx/sites-enabled/xwiki
. - Restart Nginx.
Nginx proxy configuration - Solution 2
I found that instructing nginx to proxy to http://localhost:8080/xwiki/
did not work: the generated URLs were incorrect. Contrary to what is indicated in the XWiki documentation[dead link 2024-01-13 ⓘ], I could not make the URLs correct through the use of HTTP headers.
The only solution I'm aware of so far is to create a new Host
element in Tomcat's server.xml
file:
- Duplicate the existing
Host
element and alter thename
attribute to readxwiki
. - Alter the
appBase
attribute to read/var/lib/tomcat7/webapps-xwiki
. - Move the
xwiki
application from/var/lib/tomcat7/webapps/xwiki
to/var/lib/tomcat7/webapps-xwiki/ROOT
. - Restart Tomcat
- Add
xwiki
as an alias to localhost in/etc/hosts
(add it to the end of the 127.0.0.1 line). - Instruct Nginx to proxy to
http://xwiki:8080/
instead.