This is the Quant-UX server backend. To run this you need a MongoDB server and a folder where images are stored.
You can try out a running version here: https://quant-ux.com
Edit the config file (e.g. matc.conf). Do not forget to update the jwt.password property. For a clustered setup, you need to keep the passwords the same. If you keep the password blank, a random password is generated at startup
{
"debug" : false,
"http.port" : 8080, // The server port
"http.host": "your.server.com", // The domain name of your server. This is important for the mail that will be send. Otherwise links will not work
"image.folder.user" : "test/user", // folder where user images will be stored
"image.folder.apps" : "test/apps", // folder where app images will be stored
"image.size" : 50000000, // max image size for uploads
"mongo.db_name": "MATC", // mongo DB to use
"mongo.connection_string": "mongodb://localhost:27017", // connection string, might include password and username
"mail.user": "", // POP user name for mail sending
"mail.password" : "", // password or token
"mail.host": "", // URL of mail server
"mail.port": 587, // optional, port of mail server, default is 587
"mail.ssl": 'required', // possible values 'required','optional' or 'disabled'. required is default.
"admin": "admin@quant-ux.com", // Internal mails will be send to this persons
"jwt.password": "test", // JWT password
"auth.service": "", // 'keycloak' or ''
"auth.keycloak.server": "",
"auth.keycloak.realm": "",
"auth.keycloak.claim.lastname": "",
"auth.keycloak.claim.name": "",
"auth.keycloak.claim.id": "",
"auth.keycloak.claim.email": "",
"user.allowSignUp": true,
"user.allowedDomains": "*"
}
You can also provide the configuration through ENV variables. The following variables are supported, and map to the JSON definitions.
QUX_HTTP_HOST
QUX_HTTP_PORT
QUX_MONGO_DB_NAME
QUX_MONGO_TABLE_PREFIX
QUX_MONGO_CONNECTION_STRING
QUX_MAIL_USER
QUX_MAIL_PASSWORD
QUX_MAIL_HOST
QUX_MAIL_PORT
QUX_MAIL_SSL
QUX_JWT_PASSWORD
QUX_IMAGE_FOLDER_USER
QUX_IMAGE_FOLDER_APPS
QUX_AUTH_SERVICE
QUX_KEYCLOAK_REALM
QUX_KEYCLOAK_SERVER
QUX_KEY_CLOAK_CLAIM_ROLE
QUX_KEY_CLOAK_ISSUER
QUX_KEY_CLOAK_CLAIM_ID
QUX_KEY_CLOAK_CLAIM_EMAIL
QUX_KEY_CLOAK_CLAIM_NAME
QUX_KEY_CLOAK_CLAIM_LASTNAME
QUX_USER_ALLOW_SIGNUP
QUX_USER_ALLOWED_DOMAINS
Please note that we have replaced the old config of nested objects with a straight dot notation.
You can limit the domains from which user can sign up by setting the 'user.allowedDomains' parameter in the config file, or by setting the ENV variable 'QUX_USER_ALLOWED_DOMAINS'. The value must be a comma separated list of domains, e.g. 'my-server.com,your-host.com'. Please be aware of . Sub-domains will be allowed.
Start the mongo
shell and run the following commands to set the correct mongo indexes
use MATC
db.app.createIndex({"isPublic":1})
db.app.createIndex({"isDirty":1})
db.event.createIndex({"appID":1, "type":1})
db.event.createIndex({"appID":1})
db.mouse.createIndex({"appID":1})
db.team.createIndex({"userID": 1})
db.team.createIndex({"appID":1})
db.image.createIndex({"appID":1})
db.team.createIndex({"userID": 1, "appID":1,"permission":1 })
db.content.createIndex({key:1})
db.appevent.createIndex({"created":1})
db.invitation.createIndex({"hash": 1})
db.invitation.createIndex({"appID":1})
db.commandstack.createIndex({"appID":1})
db.comment.createIndex({"appID":1})
db.testsetting.createIndex({"appID":1})
db.user.createIndex({"email":1})
db.user.createIndex({"id":1})
You might need a mongo server. The simplest way is to use Docker.
docker run -p 27017:27017 --name quxmongo2 -d mongo:4.4
java -jar server-3.20.0-fat.jar -conf matc.conf -instances 4
In InteliJ create a new runner with the following parameters:
-
Main Class: io.vertx.core.Starter
-
Program Arguments: run com.qux.MATC -conf matc.conf
docker run -p 8081:8080 -e KEYCLOAK_USER=admin -e KEYCLOAK_PASSWORD=admin -v $(pwd)/test/keycloak:/tmp --name qux-keycloak jboss/keycloak
docker run -p 8081:8080 -e KEYCLOAK_USER=admin -e KEYCLOAK_PASSWORD=admin -e KEYCLOAK_IMPORT=/tmp/example-realm.json -v $(pwd)/test/keycloak/example-realm.json:/tmp/example-realm.json --name qux-keycloak jboss/keycloak