100 lines
3.6 KiB
Markdown
100 lines
3.6 KiB
Markdown
# FromChat Deployment
|
|
|
|
One-click installer for a production FromChat stack on Debian-based Linux.
|
|
|
|
## Quick install
|
|
|
|
```bash
|
|
curl -fsSL https://raw.githubusercontent.com/fromchat-messenger/app/main/deployment/install.sh | sudo bash
|
|
```
|
|
|
|
The installer:
|
|
|
|
1. Ensures root (re-runs via `sudo` if needed)
|
|
2. Verifies Debian/Ubuntu
|
|
3. Offers to install Docker (official script)
|
|
4. Creates `~/fromchat-server`
|
|
5. Lets you pick components: **backend**, **frontend**, **caddy**, **updater**
|
|
6. Optionally uses custom backend/web git URLs
|
|
7. Resolves the latest common semver tag (`v1.0`, `v1.0.0`, …)
|
|
8. Downloads only `compose.yml` from each repo at that tag
|
|
9. Merges compose files and replaces `build:` with `image: fromchat/<service>:<tag>`
|
|
10. Opens `Caddyfile` in nano when caddy is selected
|
|
11. Runs `docker compose up -d --wait`
|
|
12. Optionally starts the [updater](../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.
|
|
|
|
```bash
|
|
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:
|
|
|
|
```bash
|
|
./deploy.sh user@host ~/fromchat-server linux/arm64 \
|
|
--components backend,frontend,caddy,updater \
|
|
--tag latest
|
|
```
|
|
|
|
This:
|
|
|
|
1. Builds all `fromchat/*` images from local `../backend`, `../Web`, `../updater`, and `backend/src/caddy`
|
|
2. Merges compose the same way as the installer (`generate-compose.py`)
|
|
3. Pulls any third-party images from the registry **on this machine**, then transfers everything via pussh
|
|
4. Syncs config to the server and restarts the `fromchat` systemd unit
|
|
5. 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
|
|
|
|
```bash
|
|
./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) |
|