The admin interface


TODO: Anyone reading this, please edit this guide to add more information if you can.

Administrators of a Janitor instance have access to a hidden /admin/ URL, from where they can manage Docker servers, Projects, and invite Users.

This admin interface wasn’t documented until now, because it’s supposed to disappear eventually, and be replaced by more intuitive Docker server and Project management interfaces that would be accessible to all users (not just admins). The long-term goal is to make Janitor self-service (i.e. anyone can log in to Janitor, easily connect their own Docker server, and add their own OSS projects, without ever needing to contact an admin).

However, since this will take some time, we might as well quickly explain the current /admin/ interface.


This is where we manage projects on a Janitor server.

At the bottom of the page, you’ll find a form allowing you to add a new project. It has the following fields:

  • ID: A String ID for the project (e.g. project). This will be used in db.json.
  • Name: A recognizable project name (e.g. My Project). This will be displayed on the website.
  • Icon: An optional SVG logo for the project (e.g. /img/janitor.svg).

Once you’ve created a new project, you’ll be able to edit many of its attributes:

  • Host: The server on which the project’s Docker image should live (the host needs to exist first, you can add one in the Hosts admin section)
  • Image: This is the Docker image that should be used for this project, e.g. janitortechnology/janitor.
  • Path: This field isn’t useful right now (it used to define the Cloud9 IDE workspace path inside the container, e.g. /home/user/janitor, but now that workspace path is usually defined in the project’s Dockerfile, in /etc/supervisord.conf).
  • Description: The project’s description that will show up in /projects-new/.

You’ll also be able to trigger actions on these projects, using the following buttons:

  • Update: This will build a new Docker image locally on the host, using the Dockerfile from the project’s Update textarea. (This is useful to build small incremental Docker image updates without pulling a brand new base image, e.g. when disk space is short.)
  • Pull: This will pull in a new version of the project’s Docker image from Docker Hub, if available. Then, if a new image was successfully pulled in, it will be tagged with :janitor-production, causing any new containers for this project to be based on the newly pulled image.


This is where we manage Janitor users and Alpha invites.

  • Users: The list of all registered user emails.
  • Waitlist: The list of all emails that are awaiting an invite (caution: some of these might be spam, or duplicate emails from users that are already invited).
  • Invite: This form is used to send a Janitor Alpha invite to the specified email address (it will also create a Janitor account based on that email, which can then be used to sign in to Janitor).