SkyPortal requires the following software to be installed. We show how to install them on MacOS and Debian-based systems below.

  • Python 3.6 or later

  • Supervisor (v>=3.0b2)

  • NGINX (v>=1.7)

  • PostgreSQL (v>=9.6)

  • Node.JS/npm (v>=5.8.0)

Source download, Python environment

Clone the SkyPortal repository and start a new virtual environment.

git clone
cd skyportal/
virtualenv skyportal_env
source skyportal_env/bin/activate

(You can also use conda or pipenv to create your environment.)

Installation: MacOS

These instructions assume that you have Homebrew installed.

  1. Install dependencies

brew install supervisor nginx postgresql node
  1. Start the PostgreSQL server:

  • To start automatically at login: brew services start postgresql

  • To start manually: pg_ctl -D /usr/local/var/postgres start

  1. To run the test suite, you’ll need Geckodriver:

brew install geckodriver

Installation: Debian-based Linux

  1. Install dependencies

sudo apt install nginx supervisor postgresql libpq-dev nodejs
  1. Configure your database permissions.

In pg_hba.conf (typically located in /etc/postgresql/<postgres-version>/main), insert the following lines before any other host lines:

host skyportal skyportal trust
host skyportal_test skyportal trust

Restart PostgreSQL:

sudo service postgresql restart
  1. To run the test suite, you’ll need Geckodriver:

  • Download the latest version from

  • Extract the binary to somewhere on your path

  • Ensure it runs with geckodriver --version


  1. Initialize the database with make db_init (this only needs to happen once).

  2. Copy config.yaml.defaults to config.yaml.

  3. If you want some test data to play with, run make load_demo_data.

  4. Run make log to monitor the service and, in a separate window, make run to start the server.

Direct your browser to http://localhost:5000.

Additional Configuration

The configuration file lives in config.yaml, and is meant to be self-documenting. Please modify as you see fit.

Before deploying this on a public server change app:secret-key to a unique value.


By default, the server allows anyone to log in (even if it presents a login screen). If you are running a public-facing instance of SkyPortal, you should enable multi-user login by adding Google credentials to the server:auth section of the configuration file.

Creating an administrative user

By default, no user has permission to perform system administration. You can add a user with such permissions by running the following from Python:

from skyportal.model_util import add_super_user

Test data

By default, SkyPortal contains no data. You can ingest some sample light curves by running

make load_demo_data

This also adds as an administrator.