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.

EdgeChat logo

Self-host EdgeChat

2.18.3

Cloudflare-native team chat with Telegram bridge

ReleaseOpen SourceGPL-3.0
Updatedlast week
LanguageJavaScript
Setup difficultyModerate
MobilePWA
Stars
1 365
Port
8787 (Worker local development server)
Requires
Cloudflare D1, Cloudflare Durable Objects, Cloudflare KV
EdgeChat chat interface previewEdgeChat admin dashboard preview

What is EdgeChat?

EdgeChat is a self-hosted team chat system that runs entirely on Cloudflare Workers, using Durable Objects for real-time WebSocket communication, D1 for database, KV for sessions, and R2 for file storage. It features real-time group chats and direct messages, a two-way Telegram bridge that syncs messages between EdgeChat groups and Telegram groups, voice messages and P2P voice calls with TURN fallback, server-side AES-256-GCM encryption for new messages and attachments with versioned key rotation, an admin panel with aggregate statistics but no message content access, invite-only registration with temporary bans, and PWA support with an Android client. Deployment is automated via GitHub Actions into the user's own Cloudflare account, with optional daily upstream updates. A Docker setup is provided for local development only.

Should you self-host EdgeChat?

EdgeChat scores 58/100 on selfhost.directory (how scoring works) and ranks #24 of 110 in Chat. It has 1 365 GitHub stars.

There was no stable release in the past 12 months, so check the repository's recent activity before you rely on it.

Setup is moderate: expect some configuration beyond a single command. It is GPL-3.0-licensed and written mostly in JavaScript.

Its closest alternative on selfhost.directory is Zulip (82/100, 26 125 stars). It scores higher overall, so compare the two before you pick. See EdgeChat vs Zulip side by side.

Features

  • Admin privacy controls
  • Android clientBeta releases only
  • Automated Deployment
  • Cross-instance group federation
  • File attachmentsRequires R2
  • Invite-only registration
  • Message retention
  • P2P voice calls
  • Real-time Messaging
  • Server-Side EncryptionServer-side encryption, not end-to-end
  • Telegram Bridge
  • Telegram offline notifications
  • Voice messages
  • WebMCP support

EdgeChat README

How to configure EdgeChat

  • ADMIN_USERNAMESadminComma-separated usernames reserved for admin registration

    Comma-separated usernames reserved for admin registration

    values: Comma-separated usernames

  • ALLOWED_FILE_TYPESimage/,video/,audio/,application/pdf,text/Comma-separated MIME type prefixes allowed for upload

    Comma-separated MIME type prefixes allowed for upload

    values: Comma-separated MIME prefixes

  • CLOUDFLARE_ACCOUNT_IDCloudflare account ID for deployment

    Cloudflare account ID for deployment

    values: String

  • CLOUDFLARE_API_TOKENCloudflare API token for deployment

    Cloudflare API token for deployment

    values: String

  • EDGECHAT_ADMIN_DISPLAY_NAMEInitial admin display name for GitHub Actions deployment

    Initial admin display name for GitHub Actions deployment

    values: String

  • EDGECHAT_ADMIN_PASSWORDInitial admin password for GitHub Actions deployment

    Initial admin password for GitHub Actions deployment

    values: String

  • EDGECHAT_ADMIN_USERNAMEInitial admin username for GitHub Actions deployment

    Initial admin username for GitHub Actions deployment

    values: String

  • EDGECHAT_ENCRYPTION_KEYRINGJSON keyring for server-side encryption keys

    JSON keyring for server-side encryption keys

    values: JSON object with activeKeyId and keys

  • EDGECHAT_KV_NAMESPACE_TITLEcfchat-sessionsKV namespace title for session storage

    KV namespace title for session storage

    values: String

  • EDGECHAT_TURN_API_TOKENTURN relay API token for voice calls

    TURN relay API token for voice calls

    values: String

  • EDGECHAT_TURN_KEY_IDTURN relay key ID for voice calls

    TURN relay key ID for voice calls

    values: String

  • MAX_FILE_SIZE20971520Maximum upload file size in bytes

    Maximum upload file size in bytes

    values: Positive integer (bytes)

  • MESSAGE_RETENTION_DAYS15Message retention period in days

    Message retention period in days

    values: Positive integer

  • ORPHAN_UPLOAD_RETENTION_DAYS1Retention days for uploads without business references

    Retention days for uploads without business references

    values: Positive integer

  • SITE_ORIGINSComma-separated site origins for legacy icon URL identification

    Comma-separated site origins for legacy icon URL identification

    values: Comma-separated URLs

  • SOFT_DELETE_RETENTION_DAYS60Retention days for soft-deleted users, channels, etc.

    Retention days for soft-deleted users, channels, etc.

    values: Positive integer

More in Instant Messaging

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…