Skip to content

Latest commit

 

History

79 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Ethora Core: self-hosted chat server

Ethora is a chat and messaging platform you run on your own server: an API, a web chat and admin panel, and an XMPP server, with mobile and web SDKs on top. Ethora Core is free, no license key needed, with per-server limits (see Editions).

This repository installs and updates it from published Docker images. One command installs, one updates.

Quick start

On a fresh Ubuntu 22.04 or 24.04 server (2 vCPU, 4 GB RAM, ports 80 and 443 open), as a user with sudo:

git clone https://github.com/dappros/ethora-install.git ~/ethora-install-shared
cd ~/ethora-install-shared
deploy/scripts/setup.sh --domain chat.example.com --admin-email you@example.com
sudo deploy/scripts/install.sh

About 10 minutes later, open https://app.chat.example.com and sign in with your e-mail and the password setup.sh printed.

Or, as one line (it clones this repository and runs the same two steps, asking for anything you leave out):

curl -fsSL https://get.ethora.com | bash -s -- --domain chat.example.com --admin-email you@example.com

Before you run it, create four DNS records pointing at the server, all plain A (or AAAA) records, no proxy:

Record Points to
api.chat.example.com your server's IP
app.chat.example.com your server's IP
xmpp.chat.example.com your server's IP
files.chat.example.com your server's IP

(chat.example.com is your root; every host derives from it. A wildcard *.chat.example.com record covers all four.)

No domain yet? Use a magic DNS name for a test install: with server IP 203.0.113.10, pass --domain 203-0-113-10.sslip.io. It resolves everywhere, gets a real Let's Encrypt certificate, and needs no DNS setup.

What it looks like

The admin panel after a fresh install (Ethora Core v2610.5 UNREGISTERED in the corner) and the License page where you register for free:

Admin panel, Apps page

License page

What the two commands do

setup.sh writes deploy/config/deploy.yml: it derives the four hostnames from your root domain, generates every secret and password, and prints the admin password once. Run it with no flags to be prompted instead. Nothing is installed yet; the file is fully commented and can be edited before the next step.

install.sh installs Docker, nginx and certbot if they are missing, pulls the images from Docker Hub, obtains certificates, starts the databases and the three Ethora services, creates your base app and admin account, and runs a health check. It is safe to run again after a failure.

What you get:

Service Image Host
API dappros/ethora-api api.<root> (Swagger at /api-docs/)
Web chat and admin panel dappros/ethora-frontend app.<root>
XMPP server (ejabberd with the Ethora modules) dappros/ethora-xmpp xmpp.<root>
File storage MinIO files.<root>
MongoDB, MySQL, Redis, Centrifugo stock images internal

Prefer Docker Compose?

The same server as one compose project, for hosts and platforms that run compose files (Coolify, Dokploy, Portainer, a plain Docker host): copy deploy/compose/ to the server, run ./configure.sh --domain chat.example.com --admin-email you@example.com, then docker compose up -d. Caddy obtains the certificates; nothing is installed on the host beyond Docker. Details, backup and update steps in its README.

Other ways to install

The same images are packaged for the places people already get software. The full, current list with status is at https://ethora.com/get/; this repository holds the sources.

Channel What you get Where
AWS Marketplace AMI with a first-boot setup page; CloudFormation template for unattended installs listing, sources in deploy/aws/
Azure, DigitalOcean, Vultr, Akamai (Linode) Same first-boot setup page as a VM offer, 1-Click Droplet, app image, StackScript Listings pending; links appear at https://ethora.com/get/
Kubernetes (Helm) helm install ethora oci://registry-1.docker.io/dappros/ethora-core --set rootDomain=... --set admin.email=... Artifact Hub, chart in deploy/helm/
Portainer, Coolify, Dokploy App template / git deploy from the compose project deploy/compose/platforms/
Cloudron One-click app Cloudron App Store, package in deploy/cloudron/
Umbrel, CasaOS / ZimaOS App store packages Store listings pending
Docker Hub dappros/ethora-api, ethora-frontend, ethora-xmpp, ethora-compose-init, the chart and the Cloudron package https://hub.docker.com/u/dappros

A managed dedicated server with an enterprise SLA, run by Ethora in your cloud account or ours, is the direct route: https://ethora.com/chat-sdk/self-hosted-chat-server-aws/.

Update

cd ~/ethora-install-shared
git pull
sudo deploy/scripts/update.sh --ref main

main always is the current stable release line, so the same command keeps working across releases. Release lines are named by year and month (2610, 2611, ...) and exist as branches: clone one with -b 2610 and update with --ref 2610 to stay pinned. Before a new line reaches main, its changes are in docs/RELEASE_NOTES_OPERATORS.md. Roll back with --rollback <commit> using the commit the update log printed at its start.

Editions

Ethora Core Ethora Core, registered Ethora Enterprise
Price free free per agreement
How just install admin panel, License page, "Register for free" (domain plus e-mail) license key from Dappros
Apps per server 5 10 unlimited
User accounts per server 500 5,000 unlimited
Push notifications, AI agents, compliance logging, SSO, multi-tenant hosting included
Support community e-mail: support@ethora.com SLA

The limits only stop creating apps and accounts beyond them; nothing else is ever gated and nothing expires. Details: feature schedule. Licence: Ethora Core Software License. Enterprise: sales@ethora.com.

Where things are

Path Purpose
~/ethora-install-shared this checkout, and the only deploy.yml
~/ethora the live install (rebuilt by every update)
~/ethora-data your data: MongoDB, MinIO, MySQL, Redis. Back this up.

Useful commands:

deploy/scripts/health-check.sh          # every service, licence state, public URLs
docker ps                               # the containers
docker logs --tail 200 ethora-backend   # API log (ethora-backend-jobs, deploy-xmpp-1, ...)
sudo deploy/scripts/install.sh --reinstall --yes   # wipe the install (keeps your data)

Common questions

  • Certificate failed. DNS is not pointing at this server yet, or port 80 is blocked. Fix it and run sudo deploy/scripts/install.sh again.
  • Port 80 or 443 in use. Something else is listening (Apache, another nginx). Stop it; the installer runs its own nginx.
  • Can I put it behind Cloudflare? Install with plain DNS records first; proxying can be switched on afterwards for app. and api.. xmpp. must stay unproxied.
  • Mobile apps? The Ethora SDKs for iOS, Android and React connect to api.<root> and xmpp.<root>; see https://ethora.com/chat-sdk/ for each SDK and https://ethora.com/get/#requirements for the DNS layout.
  • Where is the source? Ethora Core ships as images. The SDKs and the web client are open source under the dappros organisation.

Documentation

Support

Security issues: see SECURITY.md. Contributions: CONTRIBUTING.md.

Run deploy/scripts/health-check.sh first; it names the failing component. Open an issue in this repository, or e-mail support@ethora.com, with its output and the install or update log. Never send deploy.yml or .deploy.env: they hold every secret of your install.

About

Install and update a self-hosted Ethora chat server (Ethora Core is free) from Docker Hub images. One command to install, one to update.

Topics

Resources

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages