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/webappsdirectory. - Tomcat should automatically extract the WAR file. If not, restart Tomcat.
- At this point, you may find that a
datadirectory 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-INFdirectory:- Open the
xwiki.propertiesfile and alter theenvironment.permanentDirectoryfield to read/var/lib/tomcatn/data/xwiki. - Open the
hibernate.cfg.xmlfile 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
/xwikiin 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
xwikiconfiguration 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-enableddirectoryln -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
Hostelement and alter thenameattribute to readxwiki. - Alter the
appBaseattribute to read/var/lib/tomcat7/webapps-xwiki. - Move the
xwikiapplication from/var/lib/tomcat7/webapps/xwikito/var/lib/tomcat7/webapps-xwiki/ROOT. - Restart Tomcat
- Add
xwikias 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.