GitHunt
MI

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 Logo

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
  1. About The Project
  2. Key Features
  3. Getting Started
  4. Usage
  5. License
  6. Contact

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

Dashboard Screenshot Sharing Screenshot
Admin Screenshot Mobile Screenshot

(back to top)

Built With

(back to top)


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.

(back to top)


Getting Started

The recommended way to install Nexo Share is via Docker.

Prerequisites

  • Docker and Docker Compose installed on your server.

Installation (Docker)

  1. Create a directory for the project and navigate into it.
  2. Create a file named docker-compose.yml.
  3. 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
  1. Start the stack:
docker compose up -d

(back to top)


Usage

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.

(back to top)


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.

(back to top)


Contact

Minemap / Famretera
Website: https://nexoshare.famretera.nl

Project Repository: https://github.com/minemap-nl/nexoshare

(back to top)


Languages

TypeScript99.1%HTML0.3%Dockerfile0.3%CSS0.2%JavaScript0.2%

Contributors

Created December 24, 2025
Updated March 7, 2026
minemap-nl/nexoshare | GitHunt