Server Installation
There are several approaches to setup Guardian Server
General pre-requisites
- PostgreSQL (version 13 or above)
 - Slackbot access token for notification (optional)
 
Using the CLI
Pre-requisites for CLI
To run the Guardian server use command:
$ guardian server start -c <path-to-config>
Use the Docker
To run the Guardian server using Docker, you need to have Docker installed on your system. You can find the installation instructions here.
You can choose to set the configuration using environment variables or a config file. The environment variables will override the config file.
Using environment variables
All the configs can be passed as environment variables using underscore _ as the delimiter between nested keys. See the following examples
See configuration reference for the list of all the configuration keys.
PORT=8080
AUTHENTICATED_USER_HEADER_KEY=X-Auth-Email
DB_HOST=<db-host>
DB_NAME=<db-name>
DB_PASSWORD=<db-password>
DB_PORT=<db-port>
DB_USER=<db-user>
ENCRYPTION_SECRET_KEY=<secure-encription-key>
JOBS_EXPIRING_GRANT_NOTIFICATION_ENABLED=true
JOBS_REVOKE_EXPIRED_GRANTS_ENABLED=true
JOBS_REVOKE_EXPIRED_GRANTS_INTERVAL="*/20 * * * *"
NOTIFIER_ACCESS_TOKEN=<slack-access-token>
NOTIFIER_PROVIDER=slack
Run the following command to start the server
$ docker run -d \
    --restart=always \
    -p 8080:8080 \
    --env-file .env \
    --name guardian-server \
    raystack/guardian:<version> \
    server start
Using config file
port: 8080
encryption_secret_key: "<secret-key>"
db:
  host: "<db-host>"
  user: "<db-user>"
  password: "<db-password>"
  name: "<db-name>"
  port: "<db-port>"
authenticated_user_header_key: "X-Auth-Email"
jobs:
  fetch_resources:
    enabled: true
    interval: "0 */2 * * *"
  revoke_expired_grants:
    enabled: true
    interval: "*/20 * * * *"
  expiring_grant_notification:
    enabled: true
    interval: "0 9 * * *"
notifier:
  provider: "slack"
  access_token: "<slack-access-token>"
Run the following command to start the server
$ docker run -d \
    --restart=always \
    -p 8080:8080 \
    -v $(pwd)/config.yaml:/config.yaml \
    --name guardian-server \
    raystack/guardian:<version> \
    server start -c /config.yaml
Use the Helm chart
Pre-requisites for Helm chart
Guardian can be installed in Kubernetes using the Helm chart from https://github.com/raystack/charts.
Ensure that the following requirements are met:
- Kubernetes 1.14+
 - Helm version 3.x is installed
 
Add Raystack Helm repository
Add Raystack chart repository to Helm:
helm repo add raystack https://guardian.vercel.app/charts/
You can update the chart repository by running:
helm repo update
Setup helm values
The following table lists the configurable parameters of the Guardian chart and their default values.
See full helm values guide here.
app:
  ## Value to fully override guardian.name template
  nameOverride: ""
  ## Value to fully override guardian.fullname template
  fullnameOverride: ""
  image:
    repository: raystack/guardian
    pullPolicy: Always
    tag: latest
  container:
    args:
      - server
      - start
    livenessProbe:
      httpGet:
        path: /ping
        port: tcp
    readinessProbe:
      httpGet:
        path: /ping
        port: tcp
  migration:
    enabled: true
    args:
      - server
      - migrate
  service:
    annotations:
      projectcontour.io/upstream-protocol.h2c: tcp
  cron:
    enabled: true
    jobs:
      - name: "fetch-resources"
        schedule: "0 */2 * * *"
        restartPolicy: Never
        command: []
        args:
          - job
          - run
          - fetch_resources
      - name: "appeal-expiration-reminder"
        schedule: "0 9 * * *"
        restartPolicy: Never
        command: []
        args:
          - job
          - run
          - appeal_expiration_reminder
      - name: "appeal-expiration-revocation"
        schedule: "*/20 * * * *"
        restartPolicy: Never
        command: []
        args:
          - job
          - run
          - appeal_expiration_revocation
  ingress:
    enabled: true
    annotations:
      kubernetes.io/ingress.class: contour
    hosts:
      - host: guardian.example.com
        paths:
          - path: /
            pathType: ImplementationSpecific
            backend:
              service:
                # name: backend_01
                port:
                  number: 80
  config:
    LOG_LEVEL: info
    AUTHENTICATED_USER_HEADER_KEY: x-authenticated-user-email
    NOTIFIER_PROVIDER: slack
    JOBS_FETCH_RESOURCES_ENABLED: false
    JOBS_FETCH_RESOURCES_INTERVAL: "0 */2 * * *"
    JOBS_REVOKE_EXPIRED_ACCESS_ENABLED: false
    JOBS_REVOKE_EXPIRED_ACCESS_INTERVAL: "*/20 * * * *"
    JOBS_EXPIRING_ACCESS_NOTIFICATION_ENABLED: false
    JOBS_EXPIRING_ACCESS_NOTIFICATION_INTERVAL: "0 9 * * *"
  secretConfig:
    ENCRYPTION_SECRET_KEY:
    NOTIFIER_ACCESS_TOKEN:
    DB_HOST: localhost
    DB_PORT:
    DB_NAME: guardian
    DB_USER: guardian
    DB_PASSWORD:
And install it with the helm command line along with the values file:
$ helm install my-release -f values.yaml raystack/guardian