OpenHPI Infrastructure locally


Consider speaking with someone about the architecture because their documentation is for the most outdated or broken or doesn't exist. There's a guide for setting this up and it's the same to mine for the most part. Backend and frontend also seem to be built for use with a proxy by default.

All credentials e.g. ROCKET_CHAT_ADMIN_TOKEN for schulcloud-server are expected to be set as environment variables


  • Working MongoDB instance (db version v3.6.3 used)
  • latest node instance (v14.8.0 used)
  • latest npm version (6.14.7 used)
  • nodemon: npm i -g nodemon (globally to enable deploy with e.g. systemd-unit)

This was tested on Ubuntu 18.04.4 LTS Server version with fresh multipass vm (2 cores, 4 GiB of RAM, 20G disk). This is not enough to run this in production) as root. Executed in previously created /var/www/. You may also need to adjust ufw or iptables.

School cloud core server

  1. Clone from Github: git clone
  2. enter directory: cd schulcloud-server
  3. execute npm install
  4. execute npm run setup (may throw errors. Needs to be tested/ investigated)
  5. execute npm run migration up (apply database migrations/ you may have to fiddle as it doesn't apply automatically)
  6. execute npm run startd to start backend feathers server.

Now there should be a static feathers welcome page at http://{ your server ip }:3030 and a bunch of infos about missing AWS config etc.

This server also enables an interface for docs under http://{ your server ip}:3030/docs.

Configs are in schulcloud-server/config/ as json files

School Cloud Frontend (nuxt)

  1. Clone from github. git clone
  2. enter directory: cd nuxt-client/
  3. execute npm install
  4. Build frontend (requires >1GB RAM): npm run build
  5. execute npm run start:nuxt to start nuxt server. This can require FALLBACK_DISABLED=true as environment variable

This is where I encountered a redirect loop that didn't event throw debug messages. You should find it when trying to reach the nuxt frontend with your browser.
Sample (available for 3 days)