
Introduction
This section describes how to set up a fully functioning Prisma server on DigitalOcean in less than 20 minutes.
In the following procedure you will connect to your Droplet with SSH, and manually install all required dependencies. Most users should use the procedure described in DigitalOcean (Docker Machine) instead.
DigitalOcean is an easy-to-use provider of virtual servers. They offer configurable compute units of various sizes, called Droplets.
The setup described in this section does not include features you would normally expect from production-ready servers, such as automated backups and active failover. We will add more guides in the future describing a more complete setup suitable for production use.
1. Register at DigitalOcean
If you haven't already, you need to start by creating an account at for DigitalOcean. You can do so here.
2. Create your DigitalOcean Droplet
In this section we are going to walk through setting up a Droplet
.

First pick the latest Ubuntu Distribution, as of this writing it is 18.04.1 x64
.

Next pick a region that is close to your end user. You should pick the region closest to you. Set a name for your Droplet, prisma
for example.

Relax while your Droplet is being created. This should take less than a minute.
Once you have your Droplet available, you need to generate a key which is needed to connect to your Droplet
Follow the instructions here to generate your SSH key
3. Install Prisma on your Droplet
DigitalOcean will show you the IP address. If you are using MacOS or Linux you can now connect like this:
ssh root@__IP_ADDRESS__ -i /Users/.ssh/id_rsa_do
Adding our Droplet's IP address this looks like the following:
ssh root@37.139.15.166 -i /Users/.ssh/id_rsa_do
You need to install both Docker and Docker Compose. DigitalOcean has detailed guides for installation that you can find here and here.
For the quick path, execute these commands on your Droplet:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get update
sudo apt-get install -y docker-ce
sudo curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
Install Node.JS:
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
sudo apt-get install -y nodejs
Install the Prisma CLI:
npm -g install prisma
The Prisma CLI is now installed on your DigitalOcean Droplet. Next, you need to configure and start the Prisma server.
4. Start the Prisma server
In this section you're going to setup the infrastructure needed to deploy the Prisma service to the Droplet.
In your Droplet, create a docker-compose.yml
file
touch docker-compose.yml
In this file, add the configuration below:
version: '3'
services:
prisma:
image: prismagraphql/prisma:1.34
restart: always
ports:
- '4466:4466'
environment:
PRISMA_CONFIG: |
port: 4466
managementApiSecret: my-secret
databases:
default:
connector: mysql
host: mysql
port: 3306
user: root
password: prisma
migrations: true
mysql:
image: mysql:5.7
restart: always
environment:
MYSQL_ROOT_PASSWORD: prisma
volumes:
- mysql:/var/lib/mysql
volumes: mysql:
The managementApiSecret
is used to secure your Prisma server. It is specified in the server's Docker configuration and later used by the Prisma CLI to authenticate its requests against the server.
Now run the following command in your terminal:
docker-compose up -d
This will fetch the Docker images for both prisma
and mysql
. To verify that the Docker containers are running, run the following command:
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
24f4dd6222b1 prismagraphql/prisma:1.34 "/bin/sh -c /app/sta…" 15 seconds ago Up 1 second 0.0.0.0:4466->4466/tcp root_prisma_1
d8cc3a393a9f mysql:5.7 "docker-entrypoint.s…" 15 seconds ago Up 13 seconds 3306/tcp root_mysql_1
5. Deploy the Service
Now that your Prisma server and its database are running via Docker, you will deploy the Prisma service.
We are going to bootstrap a new Prisma service via prisma init
.
On your local machine ,run the following command in your terminal:
prisma init hello-world
Following the interactive prompt, select Use other server
. Enter the IP of the DigitalOcean Droplet, a service name
for your Prisma service, a service stage
, and follow the prompt for adding the management secret.
This command should output:
Created 3 new files:
prisma.yml Prisma service definition
datamodel.graphql GraphQL SDL-based datamodel (foundation for database)
.env Env file including PRISMA_API_MANAGEMENT_SECRET
Next navigate into the hello-world
directory that was generated from prisma init
and deploy your Prisma service with the following commands:
cd hello-world
prisma deploy
Creating stage default for service default ✔
Deploying service `default` to stage `default` to server `default` 653ms
Changes:
User (Type)
+ Created type `User`
+ Created field `id` of type `GraphQLID!`
+ Created field `name` of type `String!`
Applying changes 1.2s
Your Prisma endpoint is live:
HTTP: http://37.139.15.166:4466/test/devxxas
WS: ws://37.139.15.166:4466/test/devxxas
You can view & edit your data here:
Prisma Admin: http://37.139.15.166:4466/test/devxxas/_admin
Connect to the /management
endpoint in a browser. For example, if your Droplet has the IP address of 37.139.15.166 open the following webpage: http://37.139.15.166:4466/management. If a GraphQL Playground shows up, your Prisma server is set up correctly.
Finally, connect to the /
endpoint in a browser. For example, if your Droplet has the IP address of 37.139.15.166 open the following webpage: http://37.139.15.166:4466. You can now explore the GraphQL API of your Prisma service.
You can send the following mutation in GraphQL Playground to create a new user:
mutation {
createUser(data: { name: "Alice" }) {
id
name
}
}
With the newly created User
, run a query by it's id
:
query {
user(where: { id: "cjkar2d62000k0847xuh4g70o" }) {
id
name
}
}