⭐ If you find Zipline useful, please consider giving it a star on Github! ⭐

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.

settings sidebar access

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.

VariableTypeExample
CORE_RETURN_HTTPS_URLSbooleantrue
CORE_DEFAULT_DOMAINstringzipline.example.com
CORE_TEMP_DIRECTORYstring./uploads/.tmp
CORE_TRUST_PROXYbooleantrue
CORE_TRUSTED_PROXIESstring[]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.

VariableTypeExample
CHUNKS_MAXstring95mb
CHUNKS_SIZEstring25mb
CHUNKS_ENABLEDbooleantrue

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.

VariableTypeExample
TASKS_DELETE_INTERVALstring30m
TASKS_CLEAR_INVITES_INTERVALstring30m
TASKS_MAX_VIEWS_INTERVALstring30m
TASKS_THUMBNAILS_INTERVALstring30m
TASKS_METRICS_INTERVALstring30m
TASKS_CLEAN_THUMBNAILS_INTERVALstring30m

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:

windows security dialog

macOS security dialog

VariableTypeExample
MFA_TOTP_ENABLEDbooleantrue
MFA_TOTP_ISSUERstringZipline
MFA_PASSKEYS_ENABLEDbooleantrue
MFA_PASSKEYS_RP_IDstringzipline.example.com
MFA_PASSKEYS_ORIGINstringhttps://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.

VariableTypeExample
FEATURES_IMAGE_COMPRESSIONbooleantrue
FEATURES_ROBOTS_TXTbooleantrue
FEATURES_HEALTHCHECKbooleantrue
FEATURES_USER_REGISTRATIONbooleantrue
FEATURES_OAUTH_REGISTRATIONbooleantrue
FEATURES_DELETE_ON_MAX_VIEWSbooleantrue
FEATURES_THUMBNAILS_ENABLEDbooleantrue
FEATURES_THUMBNAILS_NUM_THREADSnumber4
FEATURES_THUMBNAILS_FORMATstringjpg
FEATURES_THUMBNAILS_INSTANTANEOUSbooleanfalse
FEATURES_METRICS_ENABLEDbooleantrue
FEATURES_METRICS_ADMIN_ONLYbooleanfalse
FEATURES_METRICS_SHOW_USER_SPECIFICbooleantrue
FEATURES_VERSION_CHECKINGbooleantrue

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-stream makes 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-extensionless header. If names overlap, the newest matching upload is used.
VariableTypeExample
FILES_ROUTEstring/u
FILES_LENGTHnumber6
FILES_DEFAULT_FORMATstringrandom
FILES_DISABLED_TYPESstring[]text/html,application/javascript
FILES_DISABLED_TYPES_DEFAULTstringapplication/octet-stream
FILES_DISABLED_EXTENSIONSstring[]exe,bat,dmg
FILES_MAX_FILE_SIZEstring100mb
FILES_MAX_FILES_PER_UPLOADnumber10
FILES_DEFAULT_EXPIRATIONstring30d
FILES_ASSUME_MIMETYPESbooleantrue
FILES_DEFAULT_DATE_FORMATstringYYYY-MM-DD_HH:mm:ss
FILES_REMOVE_GPS_METADATAbooleantrue
FILES_RANDOM_WORDS_NUM_ADJECTIVESnumber3
FILES_RANDOM_WORDS_SEPARATORstring-
FILES_DEFAULT_COMPRESSION_FORMATstringwebp, jpg
FILES_EXTENSIONLESS_URLSbooleantrue

URL Shortener

Controls shortened URL routes and code length. Set Route to / to serve short links from the domain root.

VariableTypeExample
URLS_ROUTEstring/go
URLS_LENGTHnumber4

Invites

Enable invite codes and links. For an invite-only instance, disable User Registration under Features and enable invites. See Hardening.

VariableTypeExample
INVITES_ENABLEDbooleantrue
INVITES_LENGTHnumber6

Domains

Domains users can select for upload and shortened URL links. Each must point to your Zipline instance.

VariableTypeExample
DOMAINSstring[]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.

VariableTypeExample
RATELIMIT_ENABLEDbooleantrue
RATELIMIT_MAXnumber10
RATELIMIT_WINDOWnumber60000
RATELIMIT_ADMIN_BYPASSbooleantrue
RATELIMIT_ALLOW_LISTstring[]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 name and url fields. Use the External Links Builder.
  • Theme settings apply when the user hasn't selected their own theme, including on public pages.
VariableTypeExample
WEBSITE_TITLEstringZipline
WEBSITE_TITLE_LOGOstringhttps://example.com/logo.png
WEBSITE_EXTERNAL_LINKSjson[{"name":"Docs","url":"https://zipline.diced.sh"}]
WEBSITE_LOGIN_BACKGROUNDstringhttps://example.com/bg.png
WEBSITE_LOGIN_BACKGROUND_BLURbooleantrue
WEBSITE_DEFAULT_AVATARstring/absolute/path/to/file
WEBSITE_TOSstring/absolute/path/to/markdown.md
WEBSITE_THEME_DEFAULTstringsystem
WEBSITE_THEME_DARKstringbuiltin:dark_blue
WEBSITE_THEME_LIGHTstringbuiltin: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.

VariableTypeExample
OAUTH_BYPASS_LOCAL_LOGINbooleantrue
OAUTH_LOGIN_ONLYbooleantrue
OAUTH_DISCORD_CLIENT_IDstringdiscord-client-id
OAUTH_DISCORD_CLIENT_SECRETstringdiscord-client-secret
OAUTH_DISCORD_REDIRECT_URIstringhttps://zipline/api/auth/oauth/discord
OAUTH_DISCORD_ALLOWED_IDSstring[]id1,id2
OAUTH_DISCORD_DENIED_IDSstring[]id3,id4
OAUTH_GOOGLE_CLIENT_IDstringgoogle-client-id
OAUTH_GOOGLE_CLIENT_SECRETstringgoogle-client-secret
OAUTH_GOOGLE_REDIRECT_URIstringhttps://zipline/api/auth/oauth/google
OAUTH_GITHUB_CLIENT_IDstringgithub-client-id
OAUTH_GITHUB_CLIENT_SECRETstringgithub-client-secret
OAUTH_GITHUB_REDIRECT_URIstringhttps://zipline/api/auth/oauth/github
OAUTH_OIDC_CLIENT_IDstringoidc-client-id
OAUTH_OIDC_CLIENT_SECRETstringoidc-client-secret
OAUTH_OIDC_AUTHORIZE_URLstringhttps://oidc.example.com/auth
OAUTH_OIDC_USERINFO_URLstringhttps://oidc.example.com/user
OAUTH_OIDC_TOKEN_URLstringhttps://oidc.example.com/token
OAUTH_OIDC_END_SESSION_URLstringhttps://oidc.example.com/logout
OAUTH_OIDC_REDIRECT_URIstringhttps://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.

VariableTypeExample
HTTP_WEBHOOK_ON_UPLOADstringhttps://example.com/upload
HTTP_WEBHOOK_ON_SHORTENstringhttps://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.

VariableTypeExample
DISCORD_WEBHOOK_URLstringhttps://discord.com/api/webhooks/...
DISCORD_USERNAMEstringZipline
DISCORD_AVATAR_URLstringhttps://example.com/avatar.png
DISCORD_ON_UPLOAD_WEBHOOK_URLstringhttps://discord.com/api/webhooks/...
DISCORD_ON_UPLOAD_USERNAMEstringZipline Uploads
DISCORD_ON_UPLOAD_AVATAR_URLstringhttps://example.com/avatar.png
DISCORD_ON_UPLOAD_CONTENTstring{user.username} uploaded {file.name}
DISCORD_ON_UPLOAD_EMBEDjson{"title": "New upload"}
DISCORD_ON_SHORTEN_WEBHOOK_URLstringhttps://discord.com/api/webhooks/...
DISCORD_ON_SHORTEN_USERNAMEstringZipline Shortener
DISCORD_ON_SHORTEN_AVATAR_URLstringhttps://example.com/avatar.png
DISCORD_ON_SHORTEN_CONTENTstring{user.username} shortened a URL
DISCORD_ON_SHORTEN_EMBEDjson{"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.

VariableTypeExample
PWA_ENABLEDbooleantrue
PWA_TITLEstringZipline PWA
PWA_SHORT_NAMEstringZipline
PWA_DESCRIPTIONstringFile & URL shortener
PWA_BACKGROUND_COLORstring#ffffff
PWA_THEME_COLORstring#000000