- 
                Notifications
    You must be signed in to change notification settings 
- Fork 29
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 binaryDatathat 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 thatbinaryDatais 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=diskinclude "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