Quick Start (Docker)
Welcome to the fastest way to deploy Palmr. - your secure, self-hosted file sharing solution. This guide will have you up and running in minutes, whether you're new to self-hosting or an experienced developer.
Palmr. offers flexible deployment options to match your infrastructure needs. This guide focuses on Docker deployment with our recommended filesystem storage, perfect for most use cases.
Prerequisites
Before you begin, make sure you have:
- Docker - Container runtime (installation guide)
- Docker Compose - Multi-container orchestration (installation guide)
- 2GB+ available disk space for the application and your files
- Port 5487 available for the web interface
- Port 3333 available for API access (optional)
Platform Support: Palmr. is developed on macOS and extensively tested on Linux servers. While we haven't formally tested other platforms, Docker's cross-platform nature should ensure compatibility. Report any issues on our GitHub repository.
Storage Options
Palmr. supports two storage approaches for persistent data:
- Named Volumes (Recommended) - Docker-managed storage with optimal performance and no permission issues
- Bind Mounts - Direct host filesystem access, ideal for development and direct file management
Deployment Options
Choose your storage method based on your needs:
Docker-managed storage that provides the best balance of performance, security, and ease of use:
- No Permission Issues: Docker handles all permission management automatically
- Performance: Optimized for container workloads with better I/O performance
- Production Ready: Recommended for production deployments
Configuration
Create a docker-compose.yml
file:
Having upload or permission issues? Add PALMR_UID=1000
and PALMR_GID=1000
to your environment variables. Check our UID/GID Configuration guide for more details.
Deploy
Configuration
Customize Palmr's behavior with these environment variables:
| Variable | Default | Description |
| ------------------------------- | ---------- | ---------------------------------------------------------------------------------------------------------------------- | --- |
| ENABLE_S3
| false
| Enable S3-compatible storage backends |
| S3_ENDPOINT
| - | S3 server endpoint URL (required when using S3) |
| S3_PORT
| - | S3 server port (optional when using S3) |
| S3_USE_SSL
| - | Enable SSL for S3 connections (optional when using S3) |
| S3_ACCESS_KEY
| - | S3 access key for authentication (required when using S3) |
| S3_SECRET_KEY
| - | S3 secret key for authentication (required when using S3) |
| S3_REGION
| - | S3 region configuration (optional when using S3) |
| S3_BUCKET_NAME
| - | S3 bucket name for file storage (required when using S3) |
| S3_FORCE_PATH_STYLE
| false
| Force path-style S3 URLs (optional when using S3) |
| S3_REJECT_UNAUTHORIZED
| true
| Enable strict SSL certificate validation for S3 (set to false
for self-signed certificates) |
| ENCRYPTION_KEY
| - | Required when encryption is enabled: 32+ character key for file encryption |
| DISABLE_FILESYSTEM_ENCRYPTION
| true
| Disable file encryption for better performance (set to false
to enable encryption) |
| PRESIGNED_URL_EXPIRATION
| 3600
| Duration in seconds for presigned URL expiration (applies to both filesystem and S3 storage) |
| SECURE_SITE
| false
| Enable secure cookies for HTTPS/reverse proxy deployments |
| DEFAULT_LANGUAGE
| en-US
| Default application language (see available languages) | |
| PALMR_UID
| 1000
| User ID for container processes (helps with file permissions) |
| PALMR_GID
| 1000
| Group ID for container processes (helps with file permissions) |
| NODE_OPTIONS
| - | Node.js options (recommended: --expose-gc
for garbage collection in production) |
| DOWNLOAD_MAX_CONCURRENT
| auto-scale | Maximum number of simultaneous downloads (see Download Memory Management) |
| DOWNLOAD_MEMORY_THRESHOLD_MB
| auto-scale | Memory threshold in MB before throttling |
| DOWNLOAD_QUEUE_SIZE
| auto-scale | Maximum queue size for pending downloads |
| DOWNLOAD_MIN_FILE_SIZE_GB
| 3.0
| Minimum file size in GB to activate memory management |
| DOWNLOAD_AUTO_SCALE
| true
| Enable auto-scaling based on system memory |
Performance First: Palmr runs without encryption by default for optimal speed and lower resource usage—perfect for most use cases.
Encryption Notice: To enable encryption, set DISABLE_FILESYSTEM_ENCRYPTION=false
and provide a 32+ character
ENCRYPTION_KEY
. Important: This choice is permanent—switching encryption modes after uploading files will break
access to existing uploads.
Using a Reverse Proxy? Set SECURE_SITE=true
and check our Reverse Proxy
Configuration guide for proper HTTPS setup.
Generate Encryption Keys (Optional)
Need file encryption? Generate a secure key:
Click the button above to generate a new encryption key
Pro Tip: Only enable encryption if you're handling sensitive data. For most users, the default unencrypted mode provides better performance.
Access Your Instance
Once deployed, open Palmr in your browser:
- Web Interface:
http://localhost:5487
(local) orhttp://YOUR_SERVER_IP:5487
(remote) - API Documentation:
http://localhost:3333/docs
(if port 3333 is exposed)
Learn More: For complete API documentation, authentication, and integration examples, see our API Reference guide
Production Ready? Configure HTTPS with a valid SSL certificate for secure production deployments.
Docker CLI Alternative
Prefer Docker commands over Compose? Here are the equivalent commands:
Permission Issues? Add -e PALMR_UID=1000 -e PALMR_GID=1000
to the command above. See our UID/GID Configuration guide for details.
Common Configuration Options
Presigned URL Expiration
Palmr. uses temporary URLs (presigned URLs) for secure file access. These URLs expire after a configurable time period to enhance security.
Default: 1 hour (3600 seconds)
You can customize this for all storage types (filesystem or S3) by adding:
When to adjust:
- Shorter time (1800 = 30 min): Higher security, but users may need to refresh download links
- Longer time (7200-21600 = 2-6 hours): Better for large file transfers, but URLs stay valid longer
- Default (3600 = 1 hour): Good balance for most use cases
File Encryption
For filesystem storage, you can enable file encryption:
Note: S3 storage handles encryption through your S3 provider's encryption features.
Maintenance
Updates
Keep Palmr up to date with the latest features and security patches:
Backup Your Data
Named Volumes:
Bind Mounts:
Restore From Backup
Named Volumes:
Bind Mounts:
What's Next?
Your Palmr instance is ready! Here's what you can explore:
Advanced Configuration
- UID/GID Configuration - Configure user permissions for NAS systems and custom environments
- Download Memory Management - Configure large file download handling and queue system
- S3 Storage - Scale with Amazon S3 or compatible storage providers
- Manual Installation - Manual installation and custom configurations
Integration & Development
- API Reference - Integrate Palmr. with your applications
Need help? Check our Troubleshooting Guide for common issues and solutions.
Questions? Visit our GitHub Issues or join the community discussions.