Skip to main content
MeepaChat runs as a single binary with Docker-managed infrastructure (Postgres, Redis, MinIO). Deploy it to any Linux server with Docker installed.

Quick Start (any VPS)

On a fresh Ubuntu 24.04 server:
meepachat init --yes pulls Docker images, starts Postgres, Redis, and MinIO, and writes config to ~/.meepachat/config.yaml. Access MeepaChat at http://<server-ip>:8091. The first user to register becomes admin.

DigitalOcean

One-click cloud-init

Create a droplet with MeepaChat pre-installed:
This installs Docker, MeepaChat, runs meepachat init --yes, and creates a systemd service automatically. MeepaChat is running by the time the droplet is ready (~2–3 minutes).
Replace <YOUR_KEY_ID> with your SSH key ID. List keys with doctl compute ssh-key list.To add an SSH key:

Manual setup

  1. Create an Ubuntu 24.04 droplet (minimum 2 vCPU, 4 GB RAM recommended)
  2. SSH in: ssh root@<droplet-ip>
  3. Follow the Quick Start instructions above

Hetzner / Any Provider

Use cloud-init — paste as “User data” when creating a server:
After boot (~5 minutes), open http://<server-ip>:8091.

Run as a systemd Service

Keep MeepaChat running across reboots and SSH disconnects:

Reverse Proxy

MeepaChat serves HTTP on port 8091. For production, put it behind a reverse proxy for TLS termination and a clean domain name. Caddy handles TLS automatically via Let’s Encrypt:
Set BASE_URL=https://chat.example.com in your config so cookies and links use the correct domain.

Nginx

The Upgrade and Connection headers are required for WebSocket support. Without them, real-time messaging will not work.

Firewall

If UFW is enabled, open the MeepaChat port:
In production behind a reverse proxy, you can restrict direct access to the port:

Storage needs depend on file upload volume. MeepaChat stores uploads in S3-compatible storage (MinIO by default). For heavy file sharing, use Cloudflare R2 or AWS S3 instead.