Skip to main content

Storage

sE2EEnd supports two storage backends for encrypted files: local filesystem and S3-compatible object storage.

note

Only ciphertext is stored. The encryption key never leaves the browser and is never sent to the server.

Local filesystem (default)

Files are written to a directory inside the backend container, backed by a Docker volume.

STORAGE_PROVIDER=local

The path inside the container is fixed to /app/uploads and is mounted as the se2eend_uploads Docker volume.

Backup: To back up uploaded files, snapshot the Docker volume or mount an external path:

# docker-compose.yml override
volumes:
uploads_data:
driver: local
driver_opts:
type: none
o: bind
device: /mnt/your-nfs-share/se2eend-uploads

S3-compatible storage

Any S3-compatible provider is supported (AWS S3, MinIO, Scaleway, OVHcloud, etc.).

STORAGE_PROVIDER=s3
STORAGE_S3_BUCKET=my-bucket
STORAGE_S3_REGION=us-east-1
STORAGE_S3_ACCESS_KEY=...
STORAGE_S3_SECRET_KEY=...

AWS S3 works out of the box with just the above — leave STORAGE_S3_ENDPOINT empty.

For other providers, set STORAGE_S3_ENDPOINT to your provider's S3-compatible endpoint URL. For self-hosted solutions like MinIO that use path-style access, also set STORAGE_S3_PATH_STYLE=true.

See Environment Variables for the full variable reference.

Cleanup

Expired, revoked, and exhausted sends can be cleaned up from the admin dashboard (Run Cleanup button), or automatically via the configurable cron schedule in Admin → Settings.

Cleanup deletes both the database records and the corresponding files from storage.