Self Hosting

This page is a breakdown of how to self-host your own Reportobello instance.

Local Testing

To experiment with Reportobello locally, run the following Docker command:

$ docker run -it \
    --name reportobello \
    -p 8000:8000 \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -v /tmp:/tmp \
    ghcr.io/reportobello/server

...

reportobello-1  |
reportobello-1  | "admin" API key: rpbl_8dCCwVD4kMtmk_s3qODaiaa9_6MVyHXnhTODuohdcZI
reportobello-1  |
reportobello-1  | 2024-10-20T01:22:27.952 INFO:     Started server process [1]
reportobello-1  | 2024-10-20T01:22:27.952 INFO:     Waiting for application startup.
reportobello-1  | 2024-10-20T01:22:27.952 INFO:     Application startup complete.
reportobello-1  | 2024-10-20T01:22:27.952 INFO:     Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)

To start using Reportobello:

When you're done, type CTRL+C to stop the server. Your data will be stored in the reportobello container, and will be kept across restarts since the --rm flag is not used. To start, stop, or destroy you Reportobello instance, run the following commands:

# Start a previously stopped instance
$ docker start reportobello

# Stop the currently running instance
$ docker stop reportobello

# Destroy the instance
$ docker rm reportobello

Production

To use Reportobello in a production environment, you will probably want to enable/disable some environment variables:

General

  • REPORTOBELLO_DOMAIN: The domain that the Reportobello instance is hosted from. Not setting this can cause CSRF issues when generating PDF URLs.
  • REPORTOBELLO_RATE_LIMIT_DISABLED: By default, API requests in Reportobello are rate-limited. To disable rate-limits, set this to 1. Note that this is different than monthly rate limits, which do not apply to the admin API key.
  • REPORTOBELLO_ADMIN_API_KEY: Hard-code the admin API key (by default a key is auto-generated once on initial boot). If provided, it must match the following regex: ^rpbl_[0-9A-Za-z_-]{43}$

To securely create a random, valid API key, run one of the following:

# If you don't have a running instance
$ docker run --rm --entrypoint mint_api_key ghcr.io/reportobello/server

# If you do have a running instance
$ docker compose exec reportobello mint_api_key

GitHub

Note: This probably should not be enabled, as it allows anyone with a GitHub account to create an account on your Reportobello instance.

  • REPORTOBELLO_GITHUB_OAUTH_CLIENT_ID: If you want to enable GitHub OAuth support, set your OAuth client ID here.
  • REPORTOBELLO_GITHUB_OAUTH_CLIENT_SECRET: Same as above, but for the OAuth client secret.

Jaeger/OTEL

Note: This should probably not be set unless you need to debug Reportobello, or want to ingest it's telemetry data.

Backups

To backup Reportobello, copy the data folder to safe location:

$ docker cp reportobello:/app/data /path/to/dir/rpbl_backup

To restore from a backup, create a new Reportobello instance and point it to the backup location:

$ docker run -it \
    --name reportobello-restored \
    -p 8000:8000 \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -v /tmp:/tmp \
    -v /path/to/dir/rpbl_backup:/app/data \
    ghcr.io/reportobello/server