This repository will be archived and marked as read-only on September 1, 2025. After this date, no further changes, issues, or pull requests will be accepted.
Since the first commit on February 10, 2020, Dispatch has grown into a sophisticated incident and signal management platform, thanks to the dedication and passion of its community. We are deeply grateful to the 80 contributors who have shared their time, expertise, and creativity over the years. Your support has made Dispatch what it is today.
- The codebase will remain publicly available in a read-only state.
 - No new issues, pull requests, or discussions will be accepted.
 - Existing issues and pull requests will be closed.
 - We encourage users to fork the repository if they wish to continue development independently.
 
Thank you again to everyone who has contributed, used, or supported Dispatch over the years!
— The Dispatch Team at Netflix
Official bootstrap for running your own Dispatch with Docker.
- Docker 17.05.0+
 - Compose 1.19.0+
 
- You need at least 2400MB RAM
 
To get started with all the defaults, simply clone the repo and run ./install.sh in your local check-out.
There may need to be modifications to the included example config files (.env) to accommodate your needs or your environment (such as adding Google credentials). If you want to perform these, do them before you run the install script and copy them without the .example extensions in the name before running the install.sh script.
By default Dispatch does not come with any data. If you're looking for some example data, please use the postgres dump file located here to load example data.
Note: when running the install.sh file, you will be asked whether to load this database dump, or to initialize a new database.
If you decide to start with a clean database, you will need a user. To create a user, go to http://localhost:8000/default/auth/register.
If you'd like to protect your Dispatch install with SSL/TLS, there are
fantastic SSL/TLS proxies like HAProxy
and Nginx. You'll likely want to add this service to your docker-compose.yml file.
The included install.sh script is meant to be idempotent and to bring you to the latest version. What this means is you can and should run install.sh to upgrade to the latest version available.
If you are using an earlier version of postgres you may need to run manual steps to upgrade to the newest Postgres image.
This assumes that you have not changed the default Postgres data path (/var/lib/postgresql/data) in your docker-compose.yml.
If you have changed it, please replace all occurences of /var/lib/postgresql/data with your path.
- Make a backup of your Dispatch Postgres data dir.
 - Stop all Dispatch containers, except the postgres one (e.g. use 
docker stopand notdocker-compose stop). - Create a new Postgres container which uses a different data directory:
 
docker run -d \
      --name postgresnew \
      -e POSTGRES_DB=dispatch \
      -e POSTGRES_USER=dispatch \
      -e POSTGRES_PASSWORD=dispatch \
      -v /var/lib/postgresql/new:/var/lib/postgresql/data:rw \
      postgres:latest
- Use 
pg_dumpallto dump all data from the existing Postgres container to the new Postgres container (replaceDISPATCH_DATABASE_CONTAINER_NAME(default ispostgres) with the name of the old Postgres container): 
docker exec \
    DISPATCH_DATABASE_CONTAINER_NAME pg_dumpall -U postgres | \
    docker exec -i postgresnew psql -U postgres
- Stop and remove both Postgres containers:
 
docker stop DISPATCH_DATABASE_CONTAINER_NAME postgresnew
docker rm DISPATCH_DATABASE_CONTAINER_NAME postgresnew
- Edit your 
docker-compose.ymlto use thepostgres:latestimage for thedatabasecontainer. - Replace old Postgres data directory with upgraded data directory:
 
mv /var/lib/postgresql/data /var/lib/postgresql/old
mv /var/lib/postgresql/new /var/lib/postgresql/data
- Delete the old existing containers:
 
docker-compose rm
- Start Dispatch up again:
 
docker-compose up
That should be it. Your Postgres data has now been updated to use the postgres image.