Skip to content

Environment Variables Reference

Complete reference of all environment variables, their types, defaults, and validation rules.

Overview

All environment variables are validated on startup using Zod. Invalid values cause the server to fail with a descriptive error message. None of the variables are strictly required - all have sensible defaults for local development. For Docker deployments, DATA_DIR and UPLOADS_DIR are set automatically in the image.

Variables

PORT

PropertyValue
RequiredNo
TypeInteger
Default3000
Range1 - 65535
DescriptionServer listening port

HOST

PropertyValue
RequiredNo
TypeString
Default0.0.0.0
DescriptionServer bind address

BASE_URL

PropertyValue
RequiredYes
TypeURL
Default-
DescriptionPublic URL of the instance. Trailing slashes are stripped automatically.

DATA_DIR

PropertyValue
RequiredNo
TypeString (path)
Default./data
DescriptionDirectory for the database. The SQLite DB is stored at DATA_DIR/db/skysend.db.

UPLOADS_DIR

PropertyValue
RequiredNo
TypeString (path)
DefaultDATA_DIR/uploads
DescriptionDirectory for encrypted upload files. Falls back to DATA_DIR/uploads if not set. In Docker, defaults to /uploads for separate volume mounting.

MAX_FILE_SIZE

PropertyValue
RequiredNo
TypeByte size string
Default2GB
DescriptionMaximum upload size. Supports: B, KB, MB, GB

MAX_FILES_PER_UPLOAD

PropertyValue
RequiredNo
TypeInteger
Default32
Range>= 1
RequiredNo
DescriptionMaximum files per multi-file upload

EXPIRE_OPTIONS_SEC

PropertyValue
RequiredNo
TypeComma-separated integers
Default300,3600,86400,604800
DescriptionSelectable expiry times in seconds

DEFAULT_EXPIRE_SEC

PropertyValue
RequiredNo
TypeInteger
Default86400
ValidationMust be one of EXPIRE_OPTIONS_SEC
DescriptionDefault expiry time

DOWNLOAD_OPTIONS

PropertyValue
RequiredNo
TypeComma-separated integers
Default1,2,3,4,5,10,20,50,100
DescriptionSelectable download limits

DEFAULT_DOWNLOAD

PropertyValue
RequiredNo
TypeInteger
Default1
ValidationMust be one of DOWNLOAD_OPTIONS
DescriptionDefault download limit

CLEANUP_INTERVAL

PropertyValue
RequiredNo
TypeInteger (seconds)
Default60
DescriptionInterval for the automatic cleanup job

CUSTOM_TITLE

PropertyValue
RequiredNo
TypeString
DefaultSkySend
DescriptionDisplayed site title

RATE_LIMIT_WINDOW

PropertyValue
RequiredNo
TypeInteger (milliseconds)
Default60000
DescriptionRate limit sliding window size

RATE_LIMIT_MAX

PropertyValue
RequiredNo
TypeInteger
Default60
DescriptionMaximum requests per window per IP

UPLOAD_QUOTA_BYTES

PropertyValue
RequiredNo
TypeInteger (bytes) or byte size string
Default0 (disabled)
DescriptionMaximum upload volume per user per window. 0 disables quotas. Supports raw bytes or units: B, KB, MB, GB

UPLOAD_QUOTA_WINDOW

PropertyValue
RequiredNo
TypeInteger (seconds)
Default86400
DescriptionQuota time window

TRUST_PROXY

PropertyValue
RequiredNo
TypeBoolean
Defaultfalse
DescriptionTrust X-Forwarded-For / X-Real-IP headers from reverse proxy

CUSTOM_COLOR

PropertyValue
RequiredNo
TypeHex color code
Default- (uses default theme)
ValidationMust match 6 hex digits, e.g. 46c89d (the # prefix is optional)
DescriptionPrimary brand color for the web UI. Overrides the default primary color on buttons, links, icons, and other accented elements.
PropertyValue
RequiredNo
TypeURL or absolute path
Default- (uses built-in SkySend logo)
ValidationMust be a URL (https://...) or an absolute path (/...)
DescriptionURL or path to a custom logo image displayed in the web app header and as favicon. For local files, place them in the public/ directory (e.g. public/custom-logo.svg) and reference as /custom-logo.svg.

CUSTOM_PRIVACY

PropertyValue
RequiredNo
TypeURL
Default- (not shown in footer)
ValidationMust be a valid URL (https://...)
DescriptionURL to your privacy policy page. When set, a "Privacy Policy" link is displayed in the footer.
PropertyValue
RequiredNo
TypeURL
Default- (not shown in footer)
ValidationMust be a valid URL (https://...)
DescriptionURL to your legal notice / impressum page. When set, a "Legal Notice" link is displayed in the footer.
PropertyValue
RequiredNo
TypeURL
Default- (not shown in footer)
ValidationMust be a valid URL (https://...)
DescriptionURL for a custom footer link. Must be used together with CUSTOM_LINK_NAME.
PropertyValue
RequiredNo
TypeString
Default-
ValidationMax 50 characters
DescriptionDisplay text for the custom footer link defined by CUSTOM_LINK_URL. Both variables must be set for the link to appear.

PUID

PropertyValue
RequiredNo
TypeInteger
Default1001
Docker onlyYes
DescriptionUser ID the container process runs as. Handled by the entrypoint script.

PGID

PropertyValue
RequiredNo
TypeInteger
Default1001
Docker onlyYes
DescriptionGroup ID the container process runs as. Handled by the entrypoint script.

Validation Rules

  • DEFAULT_EXPIRE_SEC must be included in EXPIRE_OPTIONS_SEC
  • DEFAULT_DOWNLOAD must be included in DOWNLOAD_OPTIONS
  • PORT must be between 1 and 65535
  • MAX_FILE_SIZE must be a valid byte size string with a recognized unit
  • BASE_URL must be a valid URL
  • CUSTOM_COLOR must be a 6-digit hex color code (with or without # prefix)
  • CUSTOM_LOGO must be a URL or an absolute path starting with /
  • CUSTOM_PRIVACY must be a valid URL
  • CUSTOM_LEGAL must be a valid URL
  • CUSTOM_LINK_URL must be a valid URL
  • CUSTOM_LINK_NAME must be at most 50 characters