Core Security Settings
Secret Key
The master secret key used for session encryption, token generation, and other cryptographic operations.Requirements:
- Minimum 32 characters
- Must not be the default value “changethis”
- Should be cryptographically random
Proxy Trust
Trust proxy headers for client IP address detection.
- Correctly identify client IP addresses from
X-Forwarded-Forheader - Respect
X-Forwarded-Protofor HTTPS detection - Enable accurate rate limiting by IP
- Properly log client addresses
When to enable:
- Behind Nginx, Apache, Caddy, or similar reverse proxy
- Using Cloudflare or other CDN
- In containerized environments with ingress controllers
- Direct exposure to the internet
- When you don’t have a trusted proxy layer
Reverse Proxy Configuration Examples
Nginx
Nginx
CORE_TRUST_PROXY=true in Zipline.Caddy
Caddy
CORE_TRUST_PROXY=true.Apache
Apache
CORE_TRUST_PROXY=true in Zipline.Rate Limiting
Protect your instance from abuse with built-in rate limiting.Enable rate limiting globally.
Maximum number of requests allowed per window.
Time window in milliseconds. If not set, uses a default window.
Allow administrators to bypass rate limits.
Comma-separated list of IP addresses or CIDR ranges exempt from rate limiting.
Rate Limit Examples
Rate limiting is applied per IP address. With
CORE_TRUST_PROXY=true, the client’s real IP from proxy headers is used.File Security
Extension Blocking
Block uploads of files with specific extensions.
Metadata Removal
Automatically strip GPS and location metadata from uploaded images.
- GPS coordinates
- Location names
- Timestamps
- Camera information
Protecting user privacy by removing location data from photos is recommended for public instances.
File Size Limits
Maximum allowed file size for uploads.
- Prevents storage exhaustion attacks
- Limits bandwidth consumption
- Affects server memory usage during uploads
Webhooks
Webhooks can notify external services when events occur, but should be configured carefully.HTTP Webhooks
URL to POST to when a file is uploaded.
URL to POST to when a URL is shortened.
- File/URL metadata
- User information
- Timestamp
- File URL
Discord Webhooks
Global Discord webhook URL.
Username for Discord webhook messages.
Avatar URL for Discord webhook messages.
Upload-Specific Discord Webhook
Separate webhook URL specifically for file uploads.
Username for upload notifications.
Avatar URL for upload notifications.
Message content for upload notifications.
JSON configuration for Discord embed on uploads.
URL Shorten-Specific Discord Webhook
Separate webhook URL specifically for URL shortening.
Username for shorten notifications.
Avatar URL for shorten notifications.
Message content for shorten notifications.
JSON configuration for Discord embed on URL shortening.
Security Best Practices
Production Deployment
Production Deployment
Private Instance
Private Instance
Public Instance
Public Instance
Additional Security Features
HTTPS Enforcement
Generate HTTPS URLs instead of HTTP.
Password Protection
Users can password-protect individual files and URLs. Passwords are hashed using bcrypt before storage.View Limits
Automatically delete files when they reach their maximum view count.
- Self-destructing file shares
- One-time secret sharing
- Controlling content distribution
Monitoring and Logging
Enable logging to monitor security events:- Authentication attempts
- Rate limit violations
- File upload/download activity
- Configuration validation errors
- Datasource access issues
Troubleshooting
Rate Limiting Issues
Users getting rate limited incorrectly:- Check
CORE_TRUST_PROXYis enabled if behind proxy - Verify proxy is setting
X-Forwarded-Forheader - Add internal IPs to
RATELIMIT_ALLOW_LIST
- Ensure
RATELIMIT_ENABLED=true - Check window value is reasonable
- Verify IP detection is working (check logs)
Proxy Issues
Wrong IP addresses in logs:- Enable
CORE_TRUST_PROXY=true - Verify proxy headers are being sent
- Same as above - trust proxy configuration needed
Next Steps
Authentication Configuration
OAuth, MFA, and user registration settings