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 only for Trakt username/public-list API imports, not ZIP exports. 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"

# Settings related to comic books.
comic_books:
  # Settings related to Metron.
  metron:
    # The password for the Metron API.
    # @env COMIC_BOOK_METRON_PASSWORD
    password: ""

    # The username for the Metron API.
    # @env COMIC_BOOK_METRON_USERNAME
    username: ""

# 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 only** for Trakt username/public-list API imports, not ZIP exports.
    # @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 <no-reply@ryot.io>"

    # @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: {}