Thanks for subscribing! We'll let you know how Passit is progressing.

Passit Installation Guide

To learn more about updating Passit, visit our update guide.

To run Passit yourself, you need:

Using Passit without SSL would defeat the security model and is unsupported. Consider using Let’s Encrypt for free SSL.

You can also use OpenShift Online or Heroku, which are easier methods to run Passit.

With Docker

For the database, we recommend running the database without Docker or from a SaaS provider at this time.

  1. Ensure docker and docker-compose are installed on base system.
  2. Install PostgreSQL locally or use a service like Amazon RDS.
  3. Copy docker-compose.production.yml anywhere you’d like in the base system.
  4. Edit the docker-compose.production.yml and optionally edit the environmental variables listed in it, documented below under “Configurations”.
  5. Run docker-compose up -d to start our front and back end applications.
  6. Install nginx or your favorite web server or load balancer.
  7. Configure virtual hosts in nginx.
  8. Run the django migrations (do this on every upgrade). In the container run ./manage.py migrate. So if using docker compose you could run docker-compose run --rm api ./manage.py migrate.

One way to configure nginx is to point mydomain.com to port 8000 (or as defined in docker-compose file) and then use certbot to set up SSL for you.

Example nginx configuration in /etc/nginx/sites-enabled/default BEFORE running certbot.

server { 
        server_name mydomain.com; 
 
        location / { 
          proxy_pass http://127.0.0.1:8000; 
          proxy_set_header Host $host; 
        } 
} 

Now install certbot and run certbot --nginx. Follow instructions and now you should have SSL set up all for you. Note that certbot will add some additional configuration to nginx’s conf.

Finally just go to mydomain.com and you should see the frontend.

With OpenShift

OpenShift v3 is fully supported and a great way to run Passit. These instructions are a good starting point for Kubernetes as well. A nice advantage of using OpenShift is that database migrations can run automatically.

  1. Create a database either in OpenShift itself or a service like RDS.
  2. Enable the hstore postgresl extension. From a OpenShift postgresql pod bash terminal it would look like: sql sampledb -c "create extension hstore;
  3. Import this YAML template under “Add to project”. Review each parameter and make sure to enter your database connection information.
  4. Configure SSL. With OpenShift online you could use the provided OpenShiftapps.com domain or set your own. To use openshiftapps.com simply autogenerate the hostname (leave it blank). To use your own domain, we suggest at this time purchasing a cert as openshift is difficult to use with let’s encrypt. To install the cert just edit the route made in step 3.

With Heroku

Heroku is supported via the Docker container runtime. At this time database migrations must be run manually. We show Heroku CLI shortcuts, but steps 1, 2, and 4 can be done on Heroku Dashboard if you’re more comfortable there.

  1. Create a new Heroku app.
    • heroku apps:create <heroku-app-name>
  2. Add a Postgres database to your new app.
    • heroku addons:create heroku-postgresql --app <heroku-app-name>
  3. Deploy the Docker image.
    • docker pull registry.gitlab.com/passit/passit-frontend:master
    • docker tag registry.gitlab.com/passit/passit-frontend:master registry.heroku.com/<heroku-app-name>/web
    • heroku container:login
    • docker push registry.heroku.com/<heroku-app-name>/web
  4. Set environment variables.
    • DATABASE_URL should already be set
    • IS_DEBUG should be False
    • SECRET_KEY should be a random string of 40 characters.
    • heroku config:set ENV_VAR=Value --app <heroku-app-name>
    • heroku config --app <heroku-app-name> to confirm that everything is set
    • View the Configuration section below for more information and variables.
  5. Manually migrate the database: heroku run --app <heroku-app-name> ./manage.py migrate

The app should be up and running, but you’ll need to configure email in order to complete account registrations.

Without Docker

This method is not supported. Only do this if you do not wish to use Docker and know how to run a basic Django app with static HTML front end.

Checkout the master branch of passit-backend Run Django as you would any Django app with something like uWSGI + nginx.

Download the static passit-frontend build (click the download arrow and then Download build_yarn artifacts). Place the files where you serve static html/css/js files from.

passit.yourdomain.com < Static html api.passit.yourdomain.com < Django server

Set up the environmental variables below. Set up SSL on both domains.

Configuration

Configuration is done by setting these environment variables

Required settings

Optional settings

Extensions