Try describing what you need:

sE2EEnd logo

sE2EEnd

★ 11

A self-hosted alternative to Dropbox

GNU Affero General Public License v3.0Open Source — No Paywall4 Containers — 4 containers — moderate hosting footprintDocker · Compose · SourceNeeds Postgres1 active committer (12mo)

About

sE2EEnd is a self-hosted file-sharing system designed for teams that need strong privacy guarantees. It encrypts files and text snippets entirely in the browser using the Web Crypto API, so the...

Community Ratings

No ratings yet

Features

  • Zero-knowledge encryption
  • AES-256-GCM browser-side encryption
  • Password-protected transfers
  • File and secret-note sharing
  • Download limits and expiration dates
  • Instant revocation
  • QR code generation
  • Keycloak-based SSO/LDAP/MFA
  • Admin dashboard
  • S3-compatible or local storage

Details

Last Updated
Nov 2, 2026
Created
Jan 26, 2026
Install Methods
dockerdocker-composesource
Requirements
Docker ≥ 24Docker Compose ≥ 2.20PostgreSQLKeycloakJava 21 + Maven (development)Node.js 20+ (development)
Default Port
80web UI
Authentication
ldapoidc-ssooauth2fa
API
REST
Runtime / Stack
Docker
Privacy & Independence
Cloud: Optional
User Model
Multi-User
Theming
Dark modeFollows system theme
Deployment

Deployment: Docker Compose ✓4 Containers — moderate hosting footprintRuns as 4 containers

Run sE2EEnd yourself

Pick how much you want to manage.

1 more way to host

Some links earn us a commission. netcup pays us one and is our preferred VPS host.

Is this your project? Sponsor a listing

Run sE2EEnd with Docker Compose

Compose file from the sE2EEnd project repository.

4 services · database: postgres · infra: postgres · 1 unclassified (keycloak)

no resource limits declared

needs persistent storage (5 volumes)

docker-compose.yml · @ 421058e · scanned Nov 3, 2026

services:
  postgres:
    image: postgres:18.3
    container_name: postgres-se2eend
    restart: always
    environment:
      POSTGRES_USER: ${POSTGRES_USER}
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
      POSTGRES_DB: se2eend
    ports:
      - "5432:5432"
    volumes:
      - postgres_data:/var/lib/postgresql
      - ./init-databases.sql:/docker-entrypoint-initdb.d/init-databases.sql
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER}"]
      interval: 5s
      timeout: 3s
      retries: 10

  keycloak:
    image: quay.io/keycloak/keycloak:26.5
    container_name: keycloak-se2eend
    restart: always
    environment:
      KEYCLOAK_ADMIN: ${KEYCLOAK_ADMIN}
      KEYCLOAK_ADMIN_PASSWORD: ${KEYCLOAK_ADMIN_PASSWORD}
      KC_DB: postgres
      KC_DB_URL: jdbc:postgresql://postgres:5432/keycloak
      KC_DB_USERNAME: ${POSTGRES_USER}
      KC_DB_PASSWORD: ${POSTGRES_PASSWORD}
      KC_HOSTNAME_STRICT: false
      KC_HTTP_ENABLED: true
      KC_HOSTNAME_STRICT_HTTPS: false
      THEME_COLOR_PRIMARY: ${THEME_COLOR_PRIMARY:-#2563eb}
      THEME_COLOR_PRIMARY_DARK: ${THEME_COLOR_PRIMARY_DARK:-#1d4ed8}
      THEME_COLOR_PRIMARY_LIGHT: ${THEME_COLOR_PRIMARY_LIGHT:-#3b82f6}
    command:
      - start-dev
      - --spi-login-protocol-openid-connect-legacy-logout-redirect-uri=true
      - --import-realm
      - --spi-theme-static-max-age=-1
      - --spi-theme-cache-themes=false
    ports:
      - "8090:8080"
    volumes:
      - ./keycloak/themes:/opt/keycloak/themes
      - ./keycloak/realm-config:/opt/keycloak/data/import
    entrypoint: ["/opt/keycloak/themes/entrypoint.sh"]
    depends_on:
      postgres:
        condition: service_healthy

  backend:
    image: ghcr.io/se2eend/se2eend-backend:latest
    container_name: backend-se2eend
    restart: always
    ports:
      - "8081:8081"
    environment:
      DB_URL: jdbc:postgresql://postgres:5432/se2eend
      DB_USER: ${POSTGRES_USER}
      DB_PASSWORD: ${POSTGRES_PASSWORD}
      KEYCLOAK_URL: http://keycloak:8080
      KEYCLOAK_EXTERNAL_URL: ${KEYCLOAK_EXTERNAL_URL:-http://localhost:8090}
      KEYCLOAK_REALM: ${KEYCLOAK_REALM:-se2eend}
      FRONTEND_URL: ${FRONTEND_URL:-http://localhost}
      STORAGE_PROVIDER: ${STORAGE_PROVIDER:-local}
      STORAGE_LOCAL_BASE_DIR: /app/uploads
      STORAGE_S3_BUCKET: ${STORAGE_S3_BUCKET:-}
      STORAGE_S3_REGION: ${STORAGE_S3_REGION:-us-east-1}
      STORAGE_S3_ACCESS_KEY: ${STORAGE_S3_ACCESS_KEY:-}
      STORAGE_S3_SECRET_KEY: ${STORAGE_S3_SECRET_KEY:-}
      STORAGE_S3_ENDPOINT: ${STORAGE_S3_ENDPOINT:-}
      STORAGE_S3_PATH_STYLE: ${STORAGE_S3_PATH_STYLE:-false}
    volumes:
      - uploads_data:/app/uploads
    depends_on:
      postgres:
        condition: service_healthy
      keycloak:
        condition: service_started

  frontend:
    image: ghcr.io/se2eend/se2eend-frontend:latest
    container_name: frontend-se2eend
    restart: always
    ports:
      - "80:80"
    environment:
      KEYCLOAK_URL: ${KEYCLOAK_EXTERNAL_URL:-http://localhost:8090}
      KEYCLOAK_REALM: ${KEYCLOAK_REALM:-se2eend}
      KEYCLOAK_CLIENT_ID: se2eend-frontend
      # Override if backend is not reachable as "backend" on port 8081 (e.g. Podman, custom network)
      BACKEND_URL: ${BACKEND_URL:-http://backend:8081}
    depends_on:
      - backend
      - keycloak

volumes:
  postgres_data:
    name: se2eend_data
  uploads_data:
    name: se2eend_uploads

This file may be out of date. Check the sE2EEnd documentation for current setup steps.

Track your self-hosted stack

Bookmark software to try, rate tools you've used, and keep your collection in one place.

Metadata extracted from README on Jun 25, 2026

Alternatives to sE2EEnd

Send logo

Send

5.3k
Simple, private, end to end encrypted temporary file sharing, originally built by Mozilla.
P2P File SharingCopyleft LicenseSimple File Uploads+1
Details
Yopass logo

Yopass

3.2k
Yopass is a self-hosted secret-sharing service for sending passwords, files, and other sensitive information with end-to-end encryption.
PastebinsSimple File UploadsPermissive License+2
2 ContainersOpen Core
Details
Hemmelig logo

Hemmelig

1.2k
An encrypted secret-sharing platform for securely sharing sensitive information with client-side encryption and self-destructing links.
PastebinsPermissive LicenseSecret Management+1
Single Container
Details
Hoodik logo

Hoodik

1.5k
End-to-end encrypted cloud storage server. Files are encrypted and decrypted in the browser, so the server only ever holds ciphertext. Runs on SQLite or PostgreSQL, stores chunks on local disk or any S3-compatible service.
File Synchronization
Details
Enclosed logo

Enclosed

2.1k
Enclosed is a minimal web application for sending end-to-end encrypted notes and files.
Simple File UploadsPastebinsNote Taking Apps+2
Details
OTS logo

OTS

810
A one-time-secret sharing platform that encrypts secrets in the browser before sending them to a server and deletes them after first read.
Custom CommunicationsPastebinsSecret Management+2
Details
1time logo

1time

88
Zero-knowledge one-time secret sharing. Create a one-time link for a password, API key, or file. Encrypted client-side in the browser, never reaches the server in plaintext, self-destructs after the allowed number of views (one by default).
PastebinsSimple File Uploads
Details
Gokapi logo

Gokapi

3.0k
Gokapi is a self-hosted file sharing service and alternative to Firefox Send with expiring shares, encryption, and cloud storage support.
Simple File UploadsCopyleft LicenseFile & Object Storage+2
Single Container
Details
Sharry logo

Sharry

1.4k
Sharry is a self-hosted web application for uploading files and generating shareable URLs for others to download or upload files.
Simple File UploadsCopyleft LicenseWeb File Managers+2
2 Containers
Details
Shhh logo

Shhh

420
A tiny Flask app for creating encrypted secrets and sharing them securely via temporary links.
Custom CommunicationsPermissive LicenseSecret Management+1
Details
paaster logo

paaster

568
Paaster.io is a privacy-focused pastebin application with end-to-end encryption, paste history, and sharing features.
PastebinsCopyleft LicenseSelf Hosting Solutions+1
Cloud Required
Details
transfer.sh logo

transfer.sh

15.9k
Easy and fast file sharing from the command line with a self-hosted server for uploads and downloads.
Simple File UploadsFile & Object StorageSelf Hosting Solutions+2
Telemetry: Opt-Out
Details

Related Software

PsiTransfer logo

PsiTransfer

2.0k
PsiTransfer is a simple self-hosted open source file sharing solution for uploading and downloading files. It supports resumable transfers, expiring upload buckets, and password-protected downloads.
Simple File UploadsPermissive LicenseFile & Object Storage+2
Details
Password Pusher logo

Password Pusher

3.2k
Password Pusher is a web app for securely sharing passwords, notes, files, and URLs through one-time, self-deleting links.
PastebinsSecret ManagementPassword Managers+2
Open Core
Details
PrivyDrop logo

PrivyDrop

147
An open-source peer-to-peer file and text sharing tool built on WebRTC with end-to-end encryption.
P2P File SharingPermissive LicensePastebins+1
Details
Ente logo

Ente

29.9k
Ente is a fully open source, end-to-end encrypted platform for storing photos, authenticator codes, documents, and notes in the cloud or via self-hosting.
Photo GalleriesMedia ManagementFile & Object Storage+2
Open Core
Details
Jirafeau logo

Jirafeau

38
One-click-fileshare project. Select your file, upload, and share a link. That's it.
Simple File UploadsCopyleft LicenseFile & Object Storage+2
Details
Zipline logo

Zipline

3.5k
A self-hosted file upload server for sharing files, shortening URLs, and managing upload-related assets.
Simple File UploadsFile & Object StorageSelf Hosting Solutions+4
Details
Plik logo

Plik

1.8k
Plik is a self-hosted temporary file upload system for sharing files, similar to WeTransfer.
Simple File UploadsPermissive LicenseFile & Object Storage+2
Details
One Time Secret logo

One Time Secret

3.0k
A self-hostable service for creating one-time links that reveal sensitive information only once.
Custom CommunicationsSecret ManagementSelf Hosting Solutions+1
Details