selfhost.directory

The index of self-hostable projects — ranked, categorized and served with live updates.
Own your data and stop giving it to big tech.

crypt.fyi logo

Self-host crypt.fyi

@crypt.fyi/core@0.0.20

Zero-knowledge secret sharing with post-quantum encryption

AlphaOpen SourceApache-2.0
Updated10 hours ago
LanguageTypescript
Setup difficultyModerate
Stars
144
Ports
3000 (API server (container default)), 4321 (API server (configured default)), 80 (Web server (nginx))
Requires
Redis
Install with Docker Compose

What is crypt.fyi?

crypt.fyi lets you share sensitive information securely. The service encrypts secrets in your browser using ML-KEM post-quantum cryptography before they ever reach the server, so the operator never sees plaintext or keys. Secrets can be set to burn after a single read, after a number of failed attempts, or when a time-to-live expires. Optional password protection, file uploads, IP allow-lists, read limits, and webhook notifications are built in. A CLI and Chrome extension provide alternative ways to create and retrieve secrets. The stack runs as an API server, a static web front end served by nginx, and Redis for ephemeral storage. You can deploy it yourself with Docker Compose or the provided Railway template.

Should you self-host crypt.fyi?

crypt.fyi scores 41/100 on selfhost.directory (how scoring works) and ranks #64 of 78 in Security. It has 144 GitHub stars.

It shipped 11 stable releases in the past year. The latest, @crypt.fyi/core@0.0.20, came out on 10 August 2026.

Setup is moderate: expect some configuration beyond a single command. It is Apache-2.0-licensed and written mostly in Typescript.

Its closest alternative on selfhost.directory is pentagi (83/100, 32 629 stars). It scores higher overall, so compare the two before you pick. See crypt.fyi vs pentagi side by side.

Features

  • Automatic expiration (TTL)
  • Burn after N read failures
  • Burn-after-reading
  • Chrome Extension
  • CLI
  • End-to-end encryption
  • File sharing
  • Internationalization
  • IP/CIDR allow-listing
  • Password Protection
  • QR Code Generation
  • Read count limits
  • Strict Content Security Policy
  • Webhook Notifications
  • Zero-knowledge architecture

crypt.fyi README

How to install crypt.fyi

Install crypt.fyi with Docker Compose

Environment variables
API_URL

API_URL=https://{your-domain-here} docker compose up --build

Requires --build flag when API_URL changes to rebuild nginx and web client with correct configuration

How to configure crypt.fyi

  • API_URLPublic API URL for web client configuration

    Public API URL for web client configuration

  • BODY_LIMIT_BYTES50KBMaximum request body size

    Maximum request body size

  • CORS_HEADERSContent-Type,X-ClientAllowed CORS headers

    Allowed CORS headers

  • CORS_METHODSGET,HEAD,POST,DELETE,OPTIONSAllowed CORS methods

    Allowed CORS methods

  • CORS_ORIGINlocalhost:5173Allowed CORS origin

    Allowed CORS origin

  • ENCRYPTION_KEYfoobarServer-side encryption key for metadata

    Server-side encryption key for metadata

  • HEALTH_CHECK_ENDPOINT/healthHealth check endpoint path

    Health check endpoint path

  • LOG_LEVELinfoLogging level

    Logging level

  • MAX_IP_RESTRICTIONS3Maximum IP restrictions per entry

    Maximum IP restrictions per entry

  • MAX_READ_COUNT10Maximum read count per entry

    Maximum read count per entry

  • NODE_ENVproductionNode.js environment

    Node.js environment

  • OTEL_ENABLEDtrueEnable OpenTelemetry tracing

    Enable OpenTelemetry tracing

  • OTEL_EXPORTER_OTLP_ENDPOINThttp://localhost:4318/v1/tracesOpenTelemetry OTLP endpoint

    OpenTelemetry OTLP endpoint

  • PORT4321API server port

    API server port

  • RATE_LIMITERredisRate limiter backend

    Rate limiter backend

  • RATE_LIMIT_MAX10Maximum requests per time window

    Maximum requests per time window

  • RATE_LIMIT_WINDOW1mRate limit time window

    Rate limit time window

  • SHUTDOWN_TIMEOUT_MS30000Graceful shutdown timeout in milliseconds

    Graceful shutdown timeout in milliseconds

  • VAULT_ENTRY_DELETE_TOKEN_LENGTH20Length of delete tokens

    Length of delete tokens

  • VAULT_ENTRY_IDENTIFIER_LENGTH20Length of vault entry identifiers

    Length of vault entry identifiers

  • VAULT_ENTRY_TTL_MS_DEFAULTDefault TTL for vault entries in milliseconds

    Default TTL for vault entries in milliseconds

  • VAULT_ENTRY_TTL_MS_MAXMaximum TTL for vault entries in milliseconds

    Maximum TTL for vault entries in milliseconds

  • VAULT_ENTRY_TTL_MS_MINMinimum TTL for vault entries in milliseconds

    Minimum TTL for vault entries in milliseconds

  • WEBHOOK_BACKOFF_DELAY_MS5000Webhook backoff delay in milliseconds

    Webhook backoff delay in milliseconds

  • WEBHOOK_BACKOFF_TYPEexponentialWebhook backoff strategy

    Webhook backoff strategy

  • WEBHOOK_CONCURRENCY50Webhook delivery concurrency

    Webhook delivery concurrency

  • WEBHOOK_DRAIN_DELAY_MS15000Webhook drain delay in milliseconds

    Webhook drain delay in milliseconds

  • WEBHOOK_MAX_ATTEMPTS5Maximum webhook delivery attempts

    Maximum webhook delivery attempts

  • WEBHOOK_REMOVE_ON_COMPLETEtrueRemove webhook after successful delivery

    Remove webhook after successful delivery

  • WEBHOOK_REMOVE_ON_FAILtrueRemove webhook after failed delivery

    Remove webhook after failed delivery

  • WEBHOOK_REQUEST_TIMEOUT_MS3000Webhook request timeout in milliseconds

    Webhook request timeout in milliseconds

  • WEBHOOK_SENDERWebhook sender identifier

    Webhook sender identifier

  • WEBHOOK_STREAM_EVENTS_MAX_LENGTH100Maximum webhook stream events length

    Maximum webhook stream events length

crypt.fyi releases & version history

More in File Sharing

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…