FromChat Deployment
One-click installer for a production FromChat stack on Debian-based Linux.
Quick install
curl -fsSL https://raw.githubusercontent.com/fromchat-messenger/app/main/deployment/install.sh | sudo bash
The installer:
- Ensures root (re-runs via
sudoif needed) - Verifies Debian/Ubuntu
- Offers to install Docker (official script)
- Creates
~/fromchat-server - Lets you pick components: backend, frontend, caddy, updater
- Optionally uses custom backend/web git URLs
- Resolves the latest common semver tag (
v1.0,v1.0.0, …) - Downloads only
compose.ymlfrom each repo at that tag - Merges compose files and replaces
build:withimage: fromchat/<service>:<tag> - Opens
Caddyfilein nano when caddy is selected - Runs
docker compose up -d --wait - Optionally starts the updater service
Classic deploy (offline, build on your PC)
For developers who build images locally and transfer them to a server via SSH + docker pussh — no registry pulls on the server.
cd deployment
python3 -m venv .venv && .venv/bin/pip install -r requirements-deploy.txt
# or reuse ../backend/.venv which already has rich + dotenv
./deploy.sh user@host ~/fromchat-server linux/arm64 --tag latest
Without --components, an interactive checklist opens (backend, frontend, caddy, updater). Non-interactive:
./deploy.sh user@host ~/fromchat-server linux/arm64 \
--components backend,frontend,caddy,updater \
--tag latest
This:
- Builds all
fromchat/*images from local../backend,../Web,../updater, andbackend/src/caddy - Merges compose the same way as the installer (
generate-compose.py) - Pulls any third-party images from the registry on this machine, then transfers everything via pussh
- Syncs config to the server and restarts the
fromchatsystemd unit - Optionally installs the updater (also built locally)
The server never pulls from a registry during deploy. Your PC needs network access to pull base images (LiveKit, Docker FROM layers, unregistry for pussh).
Override source trees with FROMCHAT_BACKEND_DIR, FROMCHAT_WEB_DIR, FROMCHAT_UPDATER_DIR.
DEPLOYMENT_SERVER in the backend (or deployment) .env still works.
The old entry point backend/scripts/deploy.sh redirects here.
Generate compose only
./install.sh --generate-config backend,frontend,caddy \
--tag v1.0.0 \
--output-dir ~/fromchat-server \
--backend-repo https://github.com/fromchat-messenger/backend.git \
--web-repo https://github.com/fromchat-messenger/web.git
Layout after install
~/fromchat-server/
compose.yml # merged production stack
.fromchat-version # current release tag
.env # secrets (create via backend generate:env)
Caddyfile # when caddy selected
config/livekit.yaml
updater/ # when updater selected
compose.yml
.env
GitHub token (updater)
When updater is selected, create a token with read:packages and repo (works for GitHub and git.fromchat.ru):
https://github.com/settings/tokens/new?description=FromChat%20Updater&scopes=read:packages,repo
Official github.com/fromchat-messenger/* repositories automatically fall back to git.fromchat.ru/FromChat/ if GitHub is unreachable.
Environment overrides
| Variable | Default |
|---|---|
FROMCHAT_BACKEND_REPO |
https://github.com/fromchat-messenger/backend.git |
FROMCHAT_WEB_REPO |
https://github.com/fromchat-messenger/web.git |
FROMCHAT_APP_REPO |
https://github.com/fromchat-messenger/app.git (deployment + updater tooling) |