# rubix-deploy New Rubix server — full install flow. **Repository:** https://gitea.dialer.work/swissdatabase/rubix-deploy App releases: https://gitea.dialer.work/swissdatabase/rubix/releases ## 0) SSH on a new VPS (from your PC) ```bash wget -O bootstrap-vps-ssh.sh https://gitea.dialer.work/swissdatabase/rubix-deploy/raw/branch/main/bootstrap-vps-ssh.sh ``` ```bash chmod +x bootstrap-vps-ssh.sh ``` ```bash ./bootstrap-vps-ssh.sh ``` ```bash ssh ``` ## 1) Download Rubix (on the VPS) ```bash wget -O install-rubix.sh https://gitea.dialer.work/swissdatabase/rubix-deploy/raw/branch/main/install-rubix.sh ``` ```bash chmod +x install-rubix.sh ``` ```bash sudo ./install-rubix.sh ``` The script will: 1. `apt update` / `upgrade`, install tools, **Docker** (`docker.io`) + Compose v2 plugin (apt or GitHub on Debian) 2. Ask for your **Gitea token** (if `GITEA_TOKEN` is not already exported) 3. Create **`/home/www/callcenter`** and download the latest **rubix** release Optional: specific version `sudo ./install-rubix.sh v1.1.10` Optional: other path `sudo RUBIX_INSTALL_PATH=/opt/rubix ./install-rubix.sh` ## 2) Configure `.env` and start stack While editing `.env`, set your domain values (`RUBIX_DOMAIN_CMS`, API/DB/Mail hosts, aliases) and make sure DNS A/AAAA records for those hosts point to this server (manage records at your registrar/DNS provider). ```bash cd /home/www/callcenter/deploy/docker ``` ```bash cp .env.example .env ``` ```bash nano .env ``` Set at least: `GITEA_REGISTRY_PULL_TOKEN` (same token as step 1), `GITEA_REGISTRY_PULL_USER`, `MYSQL_ROOT_PASSWORD`, DB users/passwords, `COMPOSE_PROFILES`, domains, `RUBIX_STORAGE_ROOT`. Start: ```bash cd /home/www/callcenter/deploy/docker ``` ```bash sudo ./up.sh ``` Single service: `sudo ./up.sh mysql` / `cms` / `asterisk` ## Extra / Manual operations (optional) Use these only when you need manual control (classic install via `sudo ./up.sh` already handles normal startup flow). ### SQL migrations (fresh database) ```bash cd /home/www/callcenter/deploy ``` ```bash sudo RUBIX_MYSQL_VIA_DOCKER=1 MYSQL_DOCKER_CONTAINER=rubix-mysql ./apply_sql_migrations.sh ``` Use your `RUBIX_MYSQL_CONTAINER` from `.env`. Existing server: restore MySQL datadir under `RUBIX_MYSQL_DATA` instead. ### CMS HTTPS (when DNS is ready) ```bash cd /home/www/callcenter/deploy/docker ``` ```bash docker-cms-certbot ``` ### Dialer ```bash docker-asterisk ``` ```bash /etc/init.d/callcenter2 restart ``` ### Updates (app already installed) ```bash cd /home/www/callcenter/deploy ``` ```bash ./rubix_deploy_from_release.sh vX.Y.Z ``` ## Software Update (CMS admin panel) After the stack is running, app updates can be done from the call center admin UI instead of SSH. ### 1) Grant permission to the admin user The user who should run updates needs the **Software Update** permission enabled. 1. Log in as a superadmin (or another user who can edit permissions). 2. Open **Management → Users Permissions** (search: `Users Permissions`). 3. Select the target admin user. 4. Enable **Software Update** (`gru`) and save. Without this checkbox, the **Software Update** panel is hidden and API calls return *No Software Update permission (gru)*. ### 2) Open the panel **Management → Software Update** (popup). The panel reads the installed version from `VERSION`, compares it to the latest release on Gitea (`RUBIX_GIT_RELEASE_URL` in `/etc/rubix/.env`), and shows deploy logs. Required in `/etc/rubix/.env`: - `RUBIX_GIT_RELEASE_URL` — e.g. `https://gitea.dialer.work/swissdatabase/rubix/releases/latest` - `RUBIX_GIT_TOKEN` or `GITEA_REGISTRY_PULL_TOKEN` — token with read access to releases - `RUBIX_PANEL_HOST_UP_ENABLE=true` — show host reload buttons (default: enabled) Logs (under the install path): - `deploy/rubix_deploy.log` — panel ZIP deploy - `deploy/rubix_host_up.log` — host `up.sh` (when triggered) Use **↻ Reload logs** to refresh both logs in the panel. ### 3) Update options | Button | What it does | |--------|----------------| | **Install latest release** | Downloads the release ZIP from Gitea, syncs files into `/home/www/callcenter`, runs SQL migrations from the CMS container. Does **not** restart Docker services on the host. | | **Install latest release and trigger reload** | Same as above, then queues `deploy/docker/up.sh` on the host (root cron, ~1 min). Restarts/refreshes the stack: Docker compose, MySQL users, firewall, host cron, SQL migrations via `docker exec`, certbot, fail2ban, etc. | | **Trigger reload (up.sh only)** | No ZIP deploy. Only queues `deploy/docker/up.sh` on the host (root cron). Use when code is already up to date but you need containers/services refreshed and DB migrations applied on the host. Available even when no newer release exists. | **Install latest release** = code + migrations inside CMS. **Trigger reload** = full host stack reload via `sudo ./up.sh` (panel cannot run it directly; root cron picks up the request). Manual equivalent on the server: ```bash cd /home/www/callcenter/deploy ./rubix_deploy_from_release.sh vX.Y.Z # panel “Install latest release” # or cd /home/www/callcenter/deploy/docker && sudo ./up.sh # panel “Trigger reload” ```