Settings
Settings that can be configured through the dashboard, as well as environment variables
Manage server settings at Server Settings (/dashboard/admin/settings). Only super administrators can view or change them.

You can also set the environment variables below in .env or your Compose configuration. Environment variables override dashboard values and make those fields read-only. The tables show types and examples; example values aren't necessarily defaults.
Core and datasource options are configured only through the environment. Some dashboard settings also require a restart after saving.
Core
Controls generated URLs, temporary storage, and trusted proxy headers. Most core settings require a restart.
For a reverse proxy, enable Trust Proxies and set Trusted Proxies to its IP addresses or CIDRs. With an empty list, forwarded headers are ignored and clients behind the proxy share rate limits. See Reverse Proxy for examples.
Temporary files default to ./uploads/.tmp. Moving them to another filesystem, including tmpfs, can reduce local upload performance.
| Variable | Type | Example |
|---|---|---|
CORE_RETURN_HTTPS_URLS | boolean | true |
CORE_DEFAULT_DOMAIN | string | zipline.example.com |
CORE_TEMP_DIRECTORY | string | ./uploads/.tmp |
CORE_TRUST_PROXY | boolean | true |
CORE_TRUSTED_PROXIES | string[] | 127.0.0.1,::1 |
See the other core settings.
Return HTTPS URLs
Enable this when your instance uses HTTPS, including when TLS terminates at a reverse proxy. Generated URLs use https://, and cookies are marked Secure. Leave it disabled for an HTTP-only instance, where secure cookies wouldn't be sent by the browser.
Chunks
Controls chunked uploads. Dashboard uploads larger than Max Chunk Size are split into requests of Chunk Size, allowing large files to pass through proxies with per-request size limits.
| Variable | Type | Example |
|---|---|---|
CHUNKS_MAX | string | 95mb |
CHUNKS_SIZE | string | 25mb |
CHUNKS_ENABLED | boolean | true |
Tasks
Background task intervals default to 30 minutes, except thumbnail cleanup, which defaults to one day. Changes require a restart. Use relative time values, such as 30m.
| Variable | Type | Example |
|---|---|---|
TASKS_DELETE_INTERVAL | string | 30m |
TASKS_CLEAR_INVITES_INTERVAL | string | 30m |
TASKS_MAX_VIEWS_INTERVAL | string | 30m |
TASKS_THUMBNAILS_INTERVAL | string | 30m |
TASKS_METRICS_INTERVAL | string | 30m |
TASKS_CLEAN_THUMBNAILS_INTERVAL | string | 30m |
Multi-Factor Authentication
Configure passwordless passkey login and time-based one-time passwords (TOTP):
- Passkeys use a device, phone, or security key. Configure the relying party ID and origin before users register a passkey.
- TOTP adds an authenticator code after a username and password login. Issuer is the account label shown in the authenticator app.
The passkey prompt depends on the user's operating system and browser:


| Variable | Type | Example |
|---|---|---|
MFA_TOTP_ENABLED | boolean | true |
MFA_TOTP_ISSUER | string | Zipline |
MFA_PASSKEYS_ENABLED | boolean | true |
MFA_PASSKEYS_RP_ID | string | zipline.example.com |
MFA_PASSKEYS_ORIGIN | string | https://zipline.example.com |
Features
Enable or disable instance features. Some changes require a restart.
For video thumbnails, Zipline uses ffmpeg. Thumbnails Number Threads controls worker concurrency; reduce it if generation puts too much load on your server. Instantaneous Thumbnails generates a thumbnail after each upload rather than waiting for the scheduled task.
| Variable | Type | Example |
|---|---|---|
FEATURES_IMAGE_COMPRESSION | boolean | true |
FEATURES_ROBOTS_TXT | boolean | true |
FEATURES_HEALTHCHECK | boolean | true |
FEATURES_USER_REGISTRATION | boolean | true |
FEATURES_OAUTH_REGISTRATION | boolean | true |
FEATURES_DELETE_ON_MAX_VIEWS | boolean | true |
FEATURES_THUMBNAILS_ENABLED | boolean | true |
FEATURES_THUMBNAILS_NUM_THREADS | number | 4 |
FEATURES_THUMBNAILS_FORMAT | string | jpg |
FEATURES_THUMBNAILS_INSTANTANEOUS | boolean | false |
FEATURES_METRICS_ENABLED | boolean | true |
FEATURES_METRICS_ADMIN_ONLY | boolean | false |
FEATURES_METRICS_SHOW_USER_SPECIFIC | boolean | true |
FEATURES_VERSION_CHECKING | boolean | true |
Files
Controls file uploads, naming, and serving. Route can be / to serve files from the domain root. Remove GPS Metadata attempts to remove EXIF GPS data from uploaded images.
- Assume Mimetypes detects file types from their contents rather than trusting the browser. Enable it when restricting MIME types; see Hardening.
- Disabled Types lists MIME types to reject, such as
text/html,application/javascript. - Default MIME for Disabled Types serves those types with a replacement MIME type instead of rejecting them. For example,
application/octet-streammakes the browser download them. Leave it blank to reject the upload. - Extensionless URLs lets file links work without extensions. Upload responses still include extensions unless the user requests an extensionless URL through dashboard upload options or the
x-zipline-extensionlessheader. If names overlap, the newest matching upload is used.
| Variable | Type | Example |
|---|---|---|
FILES_ROUTE | string | /u |
FILES_LENGTH | number | 6 |
FILES_DEFAULT_FORMAT | string | random |
FILES_DISABLED_TYPES | string[] | text/html,application/javascript |
FILES_DISABLED_TYPES_DEFAULT | string | application/octet-stream |
FILES_DISABLED_EXTENSIONS | string[] | exe,bat,dmg |
FILES_MAX_FILE_SIZE | string | 100mb |
FILES_MAX_FILES_PER_UPLOAD | number | 10 |
FILES_DEFAULT_EXPIRATION | string | 30d |
FILES_ASSUME_MIMETYPES | boolean | true |
FILES_DEFAULT_DATE_FORMAT | string | YYYY-MM-DD_HH:mm:ss |
FILES_REMOVE_GPS_METADATA | boolean | true |
FILES_RANDOM_WORDS_NUM_ADJECTIVES | number | 3 |
FILES_RANDOM_WORDS_SEPARATOR | string | - |
FILES_DEFAULT_COMPRESSION_FORMAT | string | webp, jpg |
FILES_EXTENSIONLESS_URLS | boolean | true |
URL Shortener
Controls shortened URL routes and code length. Set Route to / to serve short links from the domain root.
| Variable | Type | Example |
|---|---|---|
URLS_ROUTE | string | /go |
URLS_LENGTH | number | 4 |
Invites
Enable invite codes and links. For an invite-only instance, disable User Registration under Features and enable invites. See Hardening.
| Variable | Type | Example |
|---|---|---|
INVITES_ENABLED | boolean | true |
INVITES_LENGTH | number | 6 |
Domains
Domains users can select for upload and shortened URL links. Each must point to your Zipline instance.
| Variable | Type | Example |
|---|---|---|
DOMAINS | string[] | zip.example.com,zip1.example.com |
Ratelimit
Limits uploads at /api/upload and URL creation at /api/user/urls. Each user has a separate limit for each route and HTTP method. For chunked uploads, only the first chunk counts toward this limit.
Max Requests is the number allowed per Window. Set the window in milliseconds: 60000 is one minute. Leaving it unset uses a one-minute default. Admin Bypass exempts administrators.
| Variable | Type | Example |
|---|---|---|
RATELIMIT_ENABLED | boolean | true |
RATELIMIT_MAX | number | 10 |
RATELIMIT_WINDOW | number | 60000 |
RATELIMIT_ADMIN_BYPASS | boolean | true |
RATELIMIT_ALLOW_LIST | string[] | 1.1.1.1,8.8.8.8 |
IP allow list entries aren't applied in the current release.
Website
Controls instance branding and default appearance. See Dashboard customization for setup instructions.
- Default Avatar is a server-side image path.
- Terms of Service is a server-side Markdown path. New users must agree to it when registering.
- External Links is a JSON array of objects with
nameandurlfields. Use the External Links Builder. - Theme settings apply when the user hasn't selected their own theme, including on public pages.
| Variable | Type | Example |
|---|---|---|
WEBSITE_TITLE | string | Zipline |
WEBSITE_TITLE_LOGO | string | https://example.com/logo.png |
WEBSITE_EXTERNAL_LINKS | json | [{"name":"Docs","url":"https://zipline.diced.sh"}] |
WEBSITE_LOGIN_BACKGROUND | string | https://example.com/bg.png |
WEBSITE_LOGIN_BACKGROUND_BLUR | boolean | true |
WEBSITE_DEFAULT_AVATAR | string | /absolute/path/to/file |
WEBSITE_TOS | string | /absolute/path/to/markdown.md |
WEBSITE_THEME_DEFAULT | string | system |
WEBSITE_THEME_DARK | string | builtin:dark_blue |
WEBSITE_THEME_LIGHT | string | builtin:light_blue |
OAuth
Configure Google, GitHub, Discord, or an OpenID Connect provider. Enable OAuth Registration under Features to show the login buttons.
Provider setup guides: Google, GitHub, Discord, and OIDC.
See the OAuth guide for Bypass Local Login and Login Only, and OIDC logout for the optional End Session URL.
| Variable | Type | Example |
|---|---|---|
OAUTH_BYPASS_LOCAL_LOGIN | boolean | true |
OAUTH_LOGIN_ONLY | boolean | true |
OAUTH_DISCORD_CLIENT_ID | string | discord-client-id |
OAUTH_DISCORD_CLIENT_SECRET | string | discord-client-secret |
OAUTH_DISCORD_REDIRECT_URI | string | https://zipline/api/auth/oauth/discord |
OAUTH_DISCORD_ALLOWED_IDS | string[] | id1,id2 |
OAUTH_DISCORD_DENIED_IDS | string[] | id3,id4 |
OAUTH_GOOGLE_CLIENT_ID | string | google-client-id |
OAUTH_GOOGLE_CLIENT_SECRET | string | google-client-secret |
OAUTH_GOOGLE_REDIRECT_URI | string | https://zipline/api/auth/oauth/google |
OAUTH_GITHUB_CLIENT_ID | string | github-client-id |
OAUTH_GITHUB_CLIENT_SECRET | string | github-client-secret |
OAUTH_GITHUB_REDIRECT_URI | string | https://zipline/api/auth/oauth/github |
OAUTH_OIDC_CLIENT_ID | string | oidc-client-id |
OAUTH_OIDC_CLIENT_SECRET | string | oidc-client-secret |
OAUTH_OIDC_AUTHORIZE_URL | string | https://oidc.example.com/auth |
OAUTH_OIDC_USERINFO_URL | string | https://oidc.example.com/user |
OAUTH_OIDC_TOKEN_URL | string | https://oidc.example.com/token |
OAUTH_OIDC_END_SESSION_URL | string | https://oidc.example.com/logout |
OAUTH_OIDC_REDIRECT_URI | string | https://zipline/api/auth/oauth/oidc |
HTTP Webhooks
Send a JSON POST request after uploads or URL shortening. See HTTP Webhooks for headers, payloads, and receiver examples.
| Variable | Type | Example |
|---|---|---|
HTTP_WEBHOOK_ON_UPLOAD | string | https://example.com/upload |
HTTP_WEBHOOK_ON_SHORTEN | string | https://example.com/shorten |
Discord Webhook
Send notifications to Discord after uploads or URL shortening. Event-specific webhook URLs, usernames, and avatars override the shared values when provided.
Message content and embed fields support variables. Follow the Discord Webhooks guide for setup.
| Variable | Type | Example |
|---|---|---|
DISCORD_WEBHOOK_URL | string | https://discord.com/api/webhooks/... |
DISCORD_USERNAME | string | Zipline |
DISCORD_AVATAR_URL | string | https://example.com/avatar.png |
DISCORD_ON_UPLOAD_WEBHOOK_URL | string | https://discord.com/api/webhooks/... |
DISCORD_ON_UPLOAD_USERNAME | string | Zipline Uploads |
DISCORD_ON_UPLOAD_AVATAR_URL | string | https://example.com/avatar.png |
DISCORD_ON_UPLOAD_CONTENT | string | {user.username} uploaded {file.name} |
DISCORD_ON_UPLOAD_EMBED | json | {"title": "New upload"} |
DISCORD_ON_SHORTEN_WEBHOOK_URL | string | https://discord.com/api/webhooks/... |
DISCORD_ON_SHORTEN_USERNAME | string | Zipline Shortener |
DISCORD_ON_SHORTEN_AVATAR_URL | string | https://example.com/avatar.png |
DISCORD_ON_SHORTEN_CONTENT | string | {user.username} shortened a URL |
DISCORD_ON_SHORTEN_EMBED | json | {"title": "New shortened URL"} |
PWA
Provides a web app manifest so users can install Zipline from their browser.
Make the required favicon files available in public/. For Docker, mount them into the container; the files are available in the Zipline repository.
| Variable | Type | Example |
|---|---|---|
PWA_ENABLED | boolean | true |
PWA_TITLE | string | Zipline PWA |
PWA_SHORT_NAME | string | Zipline |
PWA_DESCRIPTION | string | File & URL shortener |
PWA_BACKGROUND_COLOR | string | #ffffff |
PWA_THEME_COLOR | string | #000000 |