-
Notifications
You must be signed in to change notification settings - Fork 24
Production setup
Norman Rzepka edited this page Mar 26, 2018
·
13 revisions
Setting up webKnossos requires knowledge about creating and maintaining server infrastructure. This is a high-level guide. Please contact us to discuss specific issues.
We recommend deploying webKnossos with Docker. On our systems we run webKnossos on a Kubernetes cluster.
- Install latest Docker engine and Docker compose
- Get a (sub)domain to run webKnossos on
- Get a SSL certificate for the (sub)domain
- Create
binaryData
that is owned and writable by (uid=1000 gid=1000) - Deploy a PostgreSQL instance
- Deploy a FossilDB instance
- Create a configuration file (see below for an example)
- Create a docker container
- Mounting the necessary volumes (i.e.,
binaryData
,tracingData
,deployment.conf
) - Run the webKnossos command (see below for an example)
- Run as user
1000:1000
(if you use a different user, make sure thatbinaryData
is writable) - Exposes port 9000
- Mounting the necessary volumes (i.e.,
- Deploy a reverse proxy that points to port 9000
- webKnossos automatically creates the schema in PostgreSQL
- Create an organization (append a row directly in PostgreSQL)
- Create dataset folder for your organisation (i.e.,
binaryData/<organisation>
) - Register your first user. Activate and set as admin directly in PostgreSQL
- Create your other users
- Upload datasets
- Don't forget to create a backup cronjob for your FossilDB and PostgreSQL instances
bin/oxalis \
-J-Xmx10G -J-Xms1G \
-Dlogger.file=conf/application-logger.xml \
-Dconfig.file=conf/deployment.conf \
-Djava.io.tmpdir=disk
include "application.conf"
http {
uri = "https://TODO"
address = "0.0.0.0"
port = 9000
}
datastore {
enabled = true
name = "localhost"
debugMode = false
oxalis{
uri = "localhost:"${http.port}
secured = false
}
fossildb.address = "TODO"
}
actor {
defaultTimeout = 5
}
application {
authentication {
enableDevAutoAdmin = false
enableDevAutoLogin = false
enableDevAutoVerify = true
}
insertInitialData = false
secret = "TODO: Random key"
}
braingames {
binary {
cacheMaxSize = 40
}
}
braintracing {
newuserlist = "TODO: Email address"
}
datastore {
key = "TODO: Random key"
}
google {
analytics {
trackingID = "TODO: UA-XXXXXXXX-X"
}
}
mail {
enabled = true
smtp {
auth = true
host = "TODO"
pass = "TODO"
port = 587
tls = true
user = "TODO"
}
}
For SSD servers with ≥32 GB RAM and ≥4 Cores
checkpoint_completion_target=0.9
effective_cache_size=32GB
maintenance_work_mem=8GB
max_parallel_workers_per_gather=4
random_page_cost=1
shared_buffers=16GB
work_mem=2GB