DMX 5.0-beta-2 released


12 weeks after the 1st beta DMX 5.0-beta-2 is released at Apr 23, 2019.

There are a lot of new features and improvements in the DMX Webclient.
In the backend the focus was on database consolidation.
For detailed information about this release see the Release Notes:

For general information about DMX see the README:

Many thanks to Jürgen Neumann, Malte Reißig, Daniel Mania, Silke Meyer, Ingo Rau, Iris Rabener, and Robert Schuster!



Dear friends, how to upload files (such as PDF, JPEG) in DM5?



Dear zhlbb,

at the moment you can upload and embed images via the richtext editor. This works in all HTML fields, e.g. in a Note topic. Consider using the latest DM5 Beta-3 SNAPSHOT as we’re improving this feature at this very moment.


DM also features a (server side or local) file repository you can browse and upload arbitrary files to. File topics are rendered within the Webclient if the browser supports them (e.g. PDF). However the frontend part (file browser) is still missing in DM5. It will be ported from DM4 soon. You could check out DM4 meanwhile.

Thanks for your question, and welcome to DMX!



Dear jri: Thank you very much for your patience. DMX is a very excellent knowledge management platform and I like it very much. Thank you for your hard work!



Dear Friends: I deploy DMX to remote server. Classes and instances can be created when accessing the server through Localhost:8080, but when accessing the server remotely through IP address locally, a new Topic type can be created, but no new instance can be created. When creating a new instance, the following error will be reported:

500 Server Error

{ “exception”: “java.lang.RuntimeException”, “message”: “Response filtering failed”, “cause”: { “exception”: “java.lang.RuntimeException”, “message”: “No WebSocket connection open for session “1wr3xc9cq4djm1uzgqjg0xjsqw” (plugin “systems.dmx.webclient”)” } }


Excuse me, where is my configuration file wrong?



In addition, my configuration file is as follows:

### DeepaMehta Configuration ###

## Webserver ##

org.osgi.service.http.port = 8080
org.apache.felix.http.enable = true

# Session timeout in minutes. Set 0 for no timeout.
org.apache.felix.http.session.timeout = 0

# HTTPS = 8443

# To enable HTTPS set this to "true"
org.apache.felix.https.enable = false

# The **Keystore Password** (as entered in the `keytool`)
org.apache.felix.https.keystore.password = 

# The **Key Password** (as entered in the `keytool`)
org.apache.felix.https.keystore.key.password = 

# WebSockets

# The port the WebSocket server opens for accepting connections
dmx.websockets.port = 8081

# The URL the WebSocket clients use to connect to the WebSocket server
dmx.websockets.url = ws://localhost:8081

## Request Filter ##

# Filter for anonymous read (that is GET) requests.
# "ALL" allows all anonymous read requests. This is the default.
# "NONE" allows no anonymous read requests.
# To allow specific anonymous read requests set a comma-separated list of URI-prefixes.
# Each prefix must begin with slash but have *no* slash at the end, e.g. "/eu.crowd-literature, /crowd".
# (To each prefix a slash is appended automatically.)
# Spaces, tabs, and line breaks are allowed. IMPORTANT: line breaks must be escaped with backslash (\). = ALL

# Filter for anonymous write (that is POST, PUT, DELETE) requests.
# "ALL" allows all anonymous write requests.
# "NONE" allows no anonymous write requests. This is the default.
# To allow specific anonymous write requests set a comma-separated list of URI-prefixes.
# Each prefix must begin with slash but have *no* slash at the end, e.g. "/eu.crowd-literature, /crowd".
# (To each prefix a slash is appended automatically.)
# Spaces, tabs, and line breaks are allowed. IMPORTANT: line breaks must be escaped with backslash (\). = NONE

# Requests are allowed from this subnet only.
# An address range denoted by network number and netmask.
# To allow local access only set "". This is the default.
# To allow global access set "". =

## User Accounts ##

# The initial password for the "admin" user account.
# Note: this setting is only evaluated while the first DeepaMehta start.
# Once started the admin password can be changed interactively (using the Webclient). = 

# If true newly created user accounts are enabled instantly. This is the default.
# If false user accounts must be manually enabled by an administrator (using the Webclient). = true

dmx.ldap.server =
dmx.ldap.port = 389
dmx.ldap.manager = 
dmx.ldap.password = 
dmx.ldap.user_base = 
dmx.ldap.user_attribute = 
dmx.ldap.filter = 

## Workspace Sharing Modes ##

# When a user creates a workspace only the enabled sharing modes will be available.
# By default all sharing modes are enabled.
# Note: individual (per-user) sharing modes can be configured by an administrator (using the Webclient).
dmx.workspaces.private.enabled = true
dmx.workspaces.confidential.enabled = true
dmx.workspaces.collaborative.enabled = true
dmx.workspaces.public.enabled = true
dmx.workspaces.common.enabled = true

## File Repository ##

# The file repository's base path: an absolute path leading to a directory, *no* slash at the end.
# This directory must exist. To enable the entire file system set "/". This is the default.
dmx.filerepo.path = jiutu/

# Set to "true" to put the file repository under access control.
# DM then creates a separate file repository for each workspace beneath the base path.
# This allow for e.g. private and collaborative file repositories.
# If set to "false" (the default) there is one big public file repository shared by all users.
# Use this also for a single-user DeepaMehta installation.
dmx.filerepo.per_workspace = false

# Standard disk quota (for file uploads) allocated to each user (in MB).
# Set -1 for no disk quota (unlimited uploads). This is the default.
# Note: individual (per-user) disk quotas can be configured by an administrator (using the Webclient).
dmx.filerepo.disk_quota = -1

## Hot Deployment ##

# DeepaMehta plugins (jar files) from this directory are hot deployed (like any other OSGi bundle).
# You can add further directories here, separated by comma. Also you can remove the standard directory
# ("bundle-deploy") if you like.
# Spaces, tabs, and line breaks are allowed. IMPORTANT: line breaks must be escaped with backslash (\).
felix.fileinstall.dir = bundle-deploy

## Host ##

# The URL (protocol, host, port) this DeepaMehta installation is accessible from "outside".
# Some DeepaMehta plugins make use of this value when creating public DeepaMehta URLs.
# This setting is of particular interest when DeepaMehta runs behind a reverse proxy. =  http://localhost:8080

## Webservice ##

# Only these 2 values are supported:
#     /     For use with Apache Felix HTTP (the default)
#     /*    For use with OPS4J Pax Web
dmx.webservice.path = /

## Database ##

dmx.database.path = jiutu-db

## Logging ##

java.util.logging.config.file = conf/

# To see any Felix/File Install logging set the level to at least 4
felix.log.level = 0
felix.fileinstall.log.level = 0

## Encoding ##

file.encoding = UTF-8

## OSGi Runtime ## = bundle-cache = install,start


When you deploy DMX at a remote server you have to configure dmx.websockets.url accordingly.


You have to specify the domain or IP address of your server, e.g. ws://

The port must match your dmx.websockets.port setting (8081 by default). If your server does HTTPS use wss: as the protocol instead ws: (anyways your config shows you’re not using HTTPS).

If you don’t set dmx.websockets.url properly the DMX Webclient can’t establish a WebSocket connection to the server. This results in the “No WebSocket connection open” error you’re currently experiencing.

To check whether the webclient can establish the WebSocket connection open the browser console. When the webclient starts the console output is supposed to look like this:


BTW: you’re recommended to install the latest DMX snapshot (instead the Beta 2 release). This will raise the possibility you can migrate your data to the upcoming Beta 3 release.

Thank you for the question as it helps us with improving the DMX docs!