Skip to content

Direct HTTP No HTTPS

The Direct stack publishes the application on port 8080 without a bundled reverse proxy. Use it for local testing, a trusted private network, or behind an HTTPS proxy you already operate.

Do not expose this stack directly to the internet

Plain HTTP exposes the session cookie and all network traffic to interception. End-to-end encryption does not protect login and session transport or all metadata.

Install

bash
sudo mkdir -p /opt/bearicorn
sudo chown "$USER":"$USER" /opt/bearicorn
cd /opt/bearicorn
git clone https://github.com/bybearicorn/monorepo.git
cd monorepo/deploy/compose
cp .env.compose .env

Generate two independent secrets and place them in .env:

bash
openssl rand -hex 32
openssl rand -hex 16

Set JWT_SECRET, DB_PASSWORD, and optionally APP_PORT. Do not commit .env.

Start the stack

bash
docker compose --env-file .env -f docker-compose.yml up --build -d
docker compose --env-file .env -f docker-compose.yml ps

Open http://SERVER_IP:8080, or the port set in APP_PORT.

Put an existing proxy in front

The proxy must:

  • terminate HTTPS with a valid certificate;
  • forward HTTP and WebSocket traffic to the configured APP_PORT;
  • preserve the original host and forwarding headers; and
  • keep port 8080 private from the public internet.

Test login, realtime updates, and large attachment uploads through the proxy before inviting users.

Next steps

Self-hosted chat and tasks with end-to-end encrypted content.