minemap-nl/nexoshare
Secure, self-hosted file sharing platform with 2FA, Passkeys, SSO, Reverse Shares, and ClamAV integration. Built with React, Bun, and PostgreSQL.
Nexo Share
A powerful, self-hosted, and secure file-sharing platform.
Share large files securely with password protection, expiration dates, and 2FA support.
View Demo & More Info ยป
Report Bug
ยท
Request Feature
Table of Contents
About The Project
Nexo Share is designed as a secure alternative to public file transfer services. It allows you to host your own file-sharing platform while retaining full control over your data.
Unlike many standard open-source solutions, Nexo Share focuses heavily on security-first features such as (mandatory) 2FA, passkey authentication, and ClamAV virus scanning, while still offering user-friendly workflows like Reverse Shares that allow external users to send files to you without creating an account.
Screenshots
Built With
Key Features
- ๐ Secure Sharing โ Password-protected shares with automatic expiration.
- ๐ Chunked Uploads โ Reliably upload very large files and folders (limited only by server storage).
- ๐ Reverse Shares โ Public drop-off links that allow guests to securely upload files to you.
- ๐ก๏ธ Advanced Security
- Two-Factor Authentication (TOTP)
- Passkey support (Face ID, Touch ID, Windows Hello)
- ClamAV virus scanning integration
- ๐ SSO Support โ OpenID Connect (OIDC) integration.
- โ๏ธ Admin Dashboard โ Manage users, global settings, SMTP configuration, and audit logs.
Getting Started
The recommended way to install Nexo Share is via Docker.
Prerequisites
- Docker and Docker Compose installed on your server.
Installation (Docker)
- Create a directory for the project and navigate into it.
- Create a file named
docker-compose.yml. - Paste the following configuration:
services:
nexoshare:
image: ghcr.io/minemap-nl/nexoshare:latest
container_name: nexoshare
restart: unless-stopped
ports:
- "3000:3000"
environment:
PORT: 3000
DB_HOST: postgres
DB_PORT: 5432
DB_NAME: nexoshare
DB_USER: nexoshare
DB_PASSWORD: CHANGE_THIS_PASSWORD
JWT_SECRET: CHANGE_THIS_SECRET
UPLOAD_DIR: /app/backend/uploads
APP_URL: http://localhost:3000
ALLOWED_ORIGINS: http://localhost:3000
NODE_ENV: production
TZ: UTC
APP_LOCALE: en-GB
CLAMAV_HOST: clamav
CLAMAV_PORT: 3310
volumes:
- ./uploads:/app/backend/uploads
depends_on:
postgres:
condition: service_healthy
clamav:
condition: service_healthy
postgres:
image: postgres:17-alpine
container_name: nexoshare_db
restart: unless-stopped
environment:
POSTGRES_USER: nexoshare
POSTGRES_PASSWORD: CHANGE_THIS_PASSWORD
POSTGRES_DB: nexoshare
healthcheck:
test: ["CMD-SHELL", "pg_isready -U nexoshare -d nexoshare"]
interval: 10s
timeout: 5s
retries: 5
volumes:
- ./data:/var/lib/postgresql/data
clamav:
image: clamav/clamav:latest
container_name: nexoshare_clamav
restart: unless-stopped
healthcheck:
test: ["CMD", "nc", "-z", "localhost", "3310"]
interval: 30s
timeout: 10s
retries: 5
start_period: 120s
volumes:
- ./clamav:/var/lib/clamav- Start the stack:
docker compose up -dUsage
Once the containers are running, open:
http://localhost:3000
(or your configured domain).
First-Time Setup
On first startup, database tables are created automatically. If no users exist, a default admin account is created:
- Email:
admin@nexoshare.com - Password:
admin123
โ ๏ธ Important: Log in immediately and change these credentials.
License
Source Available โ MIT with Commons Clause
This project is licensed under the MIT License with the Commons Clause condition.
- โ You may use, copy, modify, and distribute this software for personal or internal business use.
- โ You may use this software to share files with clients or partners as part of normal business operations.
- โ You may not sell this software or offer it as a commercial SaaS product where the primary value comes from the software itself.
See the LICENSE file for details.
Contact
Minemap / Famretera
Website: https://nexoshare.famretera.nl
Project Repository: https://github.com/minemap-nl/nexoshare



