Self-Hosting
Host your own instance of Emberly the open-source file sharing and management platform.
Emberly is fully open source (AGPL-3.0). You can self-host a complete instance with full control over your data, storage, authentication, and domain configuration.
Cloud vs. Self-Hosted
What's different when you run your own instance.
First-Time Setup
Walk through the Setup Wizard on first launch.
Development Setup
Get the full stack running locally for development.
Production Deployment
Deploy Emberly to a Linux server with Bun and systemd.
Environment Variables
Complete reference for all configuration options.
Storage Configuration
MinIO, AWS S3, and other S3-compatible storage options.
Contributing
How to contribute code, fixes, and improvements.
Stack Overview
| Component | Technology | Purpose |
|---|---|---|
| Web application | Next.js 16, React 19 | App, API routes, dashboard |
| Database | PostgreSQL 14+ via Prisma | Users, files, and account data |
| Cache | Redis 7+ | Chunked upload sessions, caching |
| File storage | S3-compatible (AWS, MinIO, or any S3-compatible endpoint) | Object storage |
| Authentication | NextAuth.js v4 | OAuth (GitHub, Discord) and email/password |
| Resend or SMTP | Transactional email |
A self-hosted instance runs the core file-sharing platform. See Cloud vs. Self-Hosted if you're coming from another page in these docs and wondering why something isn't showing up in your own deployment.
Minimum Requirements
- Node.js 18+ and Bun
- PostgreSQL 14+
- Redis 7+
- S3-compatible object storage bucket
Source Code
The GitHub repository contains the full application including database migrations, scripts, and CI workflows.
Configuration Model
Most integration credentials (S3 keys, Resend, VirusTotal) are configured post-install through the Admin Panel → Settings → Integrations UI and stored in the database — not in environment variables. The only things that must be in .env before first run are the database URL, Redis URL, NextAuth secret, and optional OAuth credentials.
See Environment Variables for the full list.