Skip to content

Configuration

You can specify configuration options via environment variables. Each option is documented below with what it does and a default (if any).

Ryot serves the final configuration loaded at the /backend/config endpoint as JSON (example). Sensitive variables are redacted.

Important parameters

Environment variableDescription
TZTimezone to be used for cron jobs. Accepts values according to the IANA database. Defaults to GMT.
DISABLE_TELEMETRYDisables telemetry collection using Umami. Defaults to false.
DATABASE_URLThe Postgres database connection string.
MOVIES_AND_SHOWS_TMDB_ACCESS_TOKENThe access token issued by TMDB. Required to enable movies and shows tracking. More information
VIDEO_GAMES_TWITCH_CLIENT_IDThe client ID issued by Twitch. Required to enable video games tracking. More information
VIDEO_GAMES_TWITCH_CLIENT_SECRETThe client secret issued by Twitch. Required to enable video games tracking.
SERVER_IMPORTER_TRAKT_CLIENT_IDThe client ID issued by Trakt. Required to enable Trakt import. More information
ANIME_AND_MANGA_MAL_CLIENT_IDThe client ID issued by MyAnimeList. Required to enable MyAnimeList import. More information

Health endpoint

The /health endpoint can be used for checking service healthiness. More information here.

All parameters

Please refer to the @env annotations to know which environment variable to use for a given configuration option.

yaml
# Settings related to anime and manga.
anime_and_manga:
  # Settings related to Anilist.
  anilist: {}

  # Settings related to MAL.
  mal:
    # The client ID to be used for the MAL API.
    # @env ANIME_AND_MANGA_MAL_CLIENT_ID
    client_id: ""

  # Settings related to MangaUpdates.
  manga_updates: {}

# Settings related to audio books.
audio_books:
  # Settings related to Audible.
  audible: {}

# Settings related to books.
books:
  # Settings related to Google Books.
  google_books:
    # The API key to be used for the Google Books API.
    # @env BOOKS_GOOGLE_BOOKS_API_KEY
    api_key: ""

  # Settings related to Hardcover.
  hardcover:
    # The API key to be used.
    # @env BOOKS_HARDCOVER_API_KEY
    api_key: ""

  # Settings related to Openlibrary.
  openlibrary:
    # The image sizes to fetch from Openlibrary.
    # @env BOOKS_OPENLIBRARY_COVER_IMAGE_SIZE
    # @values "S" | "M" | "L"
    cover_image_size: "M"

# The database related settings.
database:
  # The Postgres database connection string.
  # Format described in https://www.sea-ql.org/SeaORM/docs/install-and-config/connection/#postgres.
  # @env DATABASE_URL
  url: ""

# Whether to disable telemetry.
# @env DISABLE_TELEMETRY
disable_telemetry: false

# Settings related to exercises.
exercise: {}

# Settings related to file storage.
file_storage:
  # The access key ID for the S3 compatible file storage. **Required** to
  # enable file storage.
  # @env FILE_STORAGE_S3_ACCESS_KEY_ID
  s3_access_key_id: ""

  # The name of the S3 compatible bucket. **Required** to enable file storage.
  # @env FILE_STORAGE_S3_BUCKET_NAME
  s3_bucket_name: ""

  # The region for the S3 compatible file storage.
  # @env FILE_STORAGE_S3_REGION
  s3_region: "us-east-1"

  # The secret access key for the S3 compatible file storage. **Required**
  # to enable file storage.
  # @env FILE_STORAGE_S3_SECRET_ACCESS_KEY
  s3_secret_access_key: ""

  # The URL for the S3 compatible file storage.
  # @env FILE_STORAGE_S3_URL
  s3_url: ""

# Settings related to frontend storage.
frontend:
  # A message to be displayed on the dashboard.
  # @env FRONTEND_DASHBOARD_MESSAGE
  dashboard_message: ""

  # The button label for OIDC authentication.
  # @env FRONTEND_OIDC_BUTTON_LABEL
  oidc_button_label: "Continue with OpenID Connect"

  # Settings related to Umami analytics.
  umami:
    # For example: https://umami.is/script.js.
    # @env FRONTEND_UMAMI_SCRIPT_URL
    script_url: ""

    # @env FRONTEND_UMAMI_WEBSITE_ID
    website_id: ""

  # Used as the base URL when generating item links for the frontend.
  # @env FRONTEND_URL
  url: "https://app.ryot.io"

# Settings related to movies and shows.
movies_and_shows:
  # Settings related to TMDB.
  tmdb:
    # The access token for the TMDB API.
    # @env MOVIES_AND_SHOWS_TMDB_ACCESS_TOKEN
    access_token: ""

  # Settings related to TVDB.
  tvdb:
    # The API key for the TVDB API.
    # @env MOVIES_AND_SHOWS_TVDB_API_KEY
    api_key: ""

# Settings related to music.
music:
  # Settings related to Spotify.
  spotify:
    # The client ID for the Spotify API.
    # @env MUSIC_SPOTIFY_CLIENT_ID
    client_id: ""

    # The client secret for the Spotify API.
    # @env MUSIC_SPOTIFY_CLIENT_SECRET
    client_secret: ""

# Settings related to podcasts.
podcasts:
  # Settings related to iTunes.
  itunes: {}

  # Settings related to Listennotes.
  listennotes:
    # The access token for the Listennotes API.
    # @env PODCASTS_LISTENNOTES_API_TOKEN
    api_token: ""

# Settings related to scheduler.
scheduler:
  # English expression for frequent cron tasks (syncing integrations, workout revisions).
  # Uses https://github.com/kaplanelad/english-to-cron.
  # @env SCHEDULER_FREQUENT_CRON_JOBS_SCHEDULE
  frequent_cron_jobs_schedule: "every 5 minutes"

  # English expression for infrequent cron jobs (cleaning up data, refreshing calendar).
  # Uses https://github.com/kaplanelad/english-to-cron.
  # @env SCHEDULER_INFREQUENT_CRON_JOBS_SCHEDULE
  infrequent_cron_jobs_schedule: "every midnight"

# Settings related to server.
server:
  # An access token that can be used for admin operations.
  # @env SERVER_ADMIN_ACCESS_TOKEN
  admin_access_token: ""

  # The host address to bind the backend server to.
  # @env SERVER_BACKEND_HOST
  backend_host: "0.0.0.0"

  # The port number to bind the backend server to.
  # @env SERVER_BACKEND_PORT
  backend_port: 5000

  # An array of URLs for CORS.
  # @env SERVER_CORS_ORIGINS
  cors_origins: []

  # Disable all background jobs.
  # @env SERVER_DISABLE_BACKGROUND_JOBS
  disable_background_jobs: false

  # Whether the graphql playground will be enabled.
  # @env SERVER_GRAPHQL_PLAYGROUND_ENABLED
  graphql_playground_enabled: true

  # The importer related settings.
  importer:
    # The client ID for the Trakt importer. **Required** to enable Trakt importer.
    # @env SERVER_IMPORTER_TRAKT_CLIENT_ID
    trakt_client_id: ""

  # Whether this is a demo instance.
  # @env SERVER_IS_DEMO_INSTANCE
  is_demo_instance: false

  # The maximum file size in MB for user uploads.
  # @env SERVER_MAX_FILE_SIZE_MB
  max_file_size_mb: 70

  # The OIDC related settings.
  oidc:
    # @env SERVER_OIDC_CLIENT_ID
    client_id: ""

    # @env SERVER_OIDC_CLIENT_SECRET
    client_secret: ""

    # @env SERVER_OIDC_ISSUER_URL
    issuer_url: ""

  # The key that can be used to enable Ryot Pro features.
  # @env SERVER_PRO_KEY
  pro_key: ""

  # The hours in which a media can be marked as seen again for a user. This
  # is used so that the same media can not be used marked as started when
  # it has been already marked as seen in the last `n` hours.
  # @env SERVER_PROGRESS_UPDATE_THRESHOLD
  progress_update_threshold: 2

  # Number of seconds to sleep before starting the server.
  # @env SERVER_SLEEP_BEFORE_STARTUP_SECONDS
  sleep_before_startup_seconds: 0

  # The mailer related settings.
  smtp:
    # @env SERVER_SMTP_MAILBOX
    mailbox: "Ryot <[email protected]>"

    # @env SERVER_SMTP_PASSWORD
    password: ""

    # @env SERVER_SMTP_SERVER
    server: ""

    # @env SERVER_SMTP_USER
    user: ""

# Timezone to be used for date time operations.
# @env TZ
tz: "Etc/GMT"

# Settings related to users.
users:
  # Whether new users will be allowed to sign up to this instance.
  # @env USERS_ALLOW_REGISTRATION
  allow_registration: true

  # Whether to disable local user authentication completely.
  # @env USERS_DISABLE_LOCAL_AUTH
  disable_local_auth: false

  # The number of days till login authentication token is valid.
  # @env USERS_TOKEN_VALID_FOR_DAYS
  token_valid_for_days: 90

# Settings related to video games.
video_games:
  # Settings related to GiantBomb.
  giant_bomb:
    # The API key to be used for the GiantBomb API.
    # @env VIDEO_GAMES_GIANT_BOMB_API_KEY
    api_key: ""

  # Settings related to IGDB.
  igdb:
    # The image sizes to fetch from IGDB.
    # @env VIDEO_GAMES_IGDB_IMAGE_SIZE
    # @values "t_original"
    image_size: "t_original"

  # Settings related to Twitch.
  twitch:
    # The client ID issues by Twitch. **Required** to enable video games
    # tracking. [More information](/docs/guides/video-games.md).
    # @env VIDEO_GAMES_TWITCH_CLIENT_ID
    client_id: ""

    # The client secret issued by Twitch. **Required** to enable video games
    # tracking.
    # @env VIDEO_GAMES_TWITCH_CLIENT_SECRET
    client_secret: ""

# Settings related to visual novels.
visual_novels: {}