TO:DOs

Install XWiki as a Docker solution

Officiel: https://xwiki.com/en/Blog/HowtoinstallXWikiusingDocker/

I Use: https://github.com/xwiki/xwiki-docker - And a hidden .evn file:

# Default environment values
XWIKI_VERSION=16.10.11
DB_USER=xwiki
DB_PASSWORD=********
DB_DATABASE=xwiki
POSTGRES_ROOT_PASSWORD=*********'

The Docker Compose file:

networks:
  bridge:
    driver: bridge
services:
  # The container that runs XWiki in Tomcat, with the appropriate JDBC driver (for postgres).
  web:
    image: "xwiki:${XWIKI_VERSION}-postgres-tomcat"
    container_name: xwiki-postgres-tomcat-web
    restart: unless-stopped
    depends_on:
      - db
    ports:
      - "8080:8080"
    # Default values defined in .env file.
    # The DB_USER/DB_PASSWORD/DB_DATABASE/DB_HOST variables are used in the hibernate.cfg.xml file.
    environment:
      - XWIKI_VERSION=${XWIKI_VERSION}
      - DB_USER=${DB_USER}
      - DB_PASSWORD=${DB_PASSWORD}
      - DB_DATABASE=${DB_DATABASE}
      - DB_HOST=xwiki-postgres-db
      - JAVA_OPTS="-Xmx2048m"
      - TZ=Europe/Copenhagen
    # Provide a name instead of an auto-generated id for xwiki data (the permanent directory in included in it)
    # configured in the Dockerfile, to make it simpler to identify in 'docker volume ls'.
    volumes:
      - /data/xwiki/xwiki-data:/usr/local/xwiki
    networks:
      - bridge
  # The container that runs the database (postgres)
  db:
    image: "postgres:17"
    container_name: xwiki-postgres-db
    restart: unless-stopped
    volumes:
      - /data/xwiki/postgres-data:/var/lib/postgresql/data
    environment:
      - POSTGRES_ROOT_PASSWORD=${POSTGRES_ROOT_PASSWORD}
      - POSTGRES_PASSWORD=${DB_PASSWORD}
      - POSTGRES_USER=${DB_USER}
      - POSTGRES_DB=${DB_DATABASE}
      - POSTGRES_INITDB_ARGS=--encoding=UTF8 --locale-provider=builtin --locale=C.UTF-8
    networks:
      - bridge

Go to the Web-interface and do the installation to end after startup.

Install Extensions

This can vary a bit - but for my migration scripts, these may be needed as they do substitute several Confluence Macro's:

Migrate

If You use Gliffy in Confluence, install Draw.io on Confluence as trial and migrate all Gliffy drawings to Draw.io - As the Gliffy macro etc is not supported at all in XWiki.

Clone migration from bitbucket.org, create a python env in the cloned dir and install requirements:

You may neeed to: apt install python3.12-venv


git clone https://moseiseydk@bitbucket.org/moseiseydk/confluence-migrate.git
python3 -m venv confluence-migrate
cd confluence-migrate
source bin/activate
pip install requests
pip install atlassian-python-api  
pip install python-slugify  


Create the config.py file:

username = ''
password = ''
conflunce_url = 'https://www.server.dk'
xwiki_url = 'https://xwiki.server.dk'

Edit the confluence.py file and add all space keys

space_keys = ["test","familieblog","anmeldelser","andrebilleder","khvg145","familiebilleder","it","ATLASSIAN"]

Take a backup / snapshot of the server her - its a baseline

Execute the migration script:

Limitations:

  • All Blogs will end in the "Blog" in Xwiki
  • A max of 50 attachments are supported from a Confluence page (a problem with the atlassian-python-api)
  • The migration can be re-run at any time, XWiki will just update the Page / Blog, but 1-2 history versions will be added per run, so its not optimal for the final run, but for tests it can be fine.
  • max_count = 2000 is set for "blogpost" as there are no way to tell when we are done (a problem with the atlassian-python-api). Make sure this is higher that the total number of blogposts in Your Confluence
  • The page layout of a Confluence page is converted to a Xwiki "container" macro in the migration, that is not to good, some macros will report: The [video] macro is a standalone macro and it cannot be used inline. (This macro generates standalone content. As a consequence you need to make sure to use a syntax that separates your macro from the content before and after it so that it's on a line by itself. For example in XWiki Syntax 2.0+ this means having 2 newline characters (a.k.a line breaks) separating your macro from the content before and after it.)


python3 confluence.py > log.txt

Post migration

Examine log.txt for:

In things went wrong, roll back to the backup.

Style

You may want to style Xwiki, I do a different Theme and a little CSS:

#xwikimaincontainer { width: 1400px !important;}