Skip to main content

Running the Server

Step 7: Putting it all together - running the server​

To summarize, the previous steps guided you on how to pick the values of the configuration variables needed to run OPAL server.

We will now recap with a real example.

1) Pull the server container image​

docker pull permitio/opal-server

2) Define the environment variables you need​

Multiple workers and broadcast channel (example values from step 2):

export OPAL_BROADCAST_URI=postgres://localhost/mydb
export UVICORN_NUM_WORKERS=4

Policy repo (example values from step 3):

export OPAL_POLICY_REPO_URL=https://github.com/permitio/opal-example-policy-repo

Policy repo syncing with webhook (example values from step 4):

export OPAL_POLICY_REPO_WEBHOOK_SECRET=-cBlFnldg7WCGlj0jsivPWPA5vtfI2GWmp1wVx657Vk

Data sources configuration (example values from step 5):

export OPAL_DATA_CONFIG_SOURCES='{"config": {"entries": [{"url": "https://api.permit.io/v1/policy-config", "topics": ["policy_data"], "config": {"headers": {"Authorization": "Bearer FAKE-SECRET"}}}]}}'

Security parameters (example values from step 6):

export OPAL_AUTH_PRIVATE_KEY=-----BEGIN OPENSSH PRIVATE KEY-----_XXX..._..._...XXX==_-----END OPENSSH PRIVATE KEY-----
export OPAL_AUTH_PUBLIC_KEY=ssh-rsa XXX ... XXX== some@one.com
export OPAL_AUTH_MASTER_TOKEN=8MHfUU2rzRB59pdOHNNVVw3XLe3gl9YNw7vIXxJZNJo

3) Run the container (local run example)​

docker run -it \
--env OPAL_BROADCAST_URI \
--env UVICORN_NUM_WORKERS \
--env OPAL_POLICY_REPO_URL \
--env OPAL_POLICY_REPO_WEBHOOK_SECRET \
--env OPAL_DATA_CONFIG_SOURCES \
--env OPAL_AUTH_PRIVATE_KEY \
--env OPAL_AUTH_PUBLIC_KEY \
--env OPAL_AUTH_MASTER_TOKEN \
-p 7002:7002 \
permitio/opal-server

4) Run the container in production​

As we mentioned before, in production you will not use docker run.

Deployment looks somewhat like this:

  • Declare your container configuration in code, e.g: AWS ECS task definition file, Helm chart, etc.
  • All the secrets and sensitive vars should be fetched from a secrets store.
  • Deploy your task / helm chart, etc to your cloud environment.
  • Expose the server to the internet with HTTPS (i.e: use a valid SSL/TLS certificate).
  • Keep your master token in a safe location (you will need it shortly to generate identity tokens).

How to run OPAL Client​

Great! we have OPAL Server up and running. Let's continue and explains how to run OPAL Client.