Files
rubix-deploy/README.md
T
Sinisa Madzar e845d35344 Document CMS Software Update panel and permissions
- Explain enabling Software Update (gru) in Users Permissions before panel use
- Describe install-only, install+trigger reload, and up.sh-only options
- List required .env settings, log paths, and manual SSH equivalents
2026-06-05 12:32:36 +02:00

5.2 KiB

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)

wget -O bootstrap-vps-ssh.sh https://gitea.dialer.work/swissdatabase/rubix-deploy/raw/branch/main/bootstrap-vps-ssh.sh
chmod +x bootstrap-vps-ssh.sh
./bootstrap-vps-ssh.sh
ssh <your-host-alias>

1) Download Rubix (on the VPS)

wget -O install-rubix.sh https://gitea.dialer.work/swissdatabase/rubix-deploy/raw/branch/main/install-rubix.sh
chmod +x install-rubix.sh
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).

cd /home/www/callcenter/deploy/docker
cp .env.example .env
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:

cd /home/www/callcenter/deploy/docker
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)

cd /home/www/callcenter/deploy
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)

cd /home/www/callcenter/deploy/docker
docker-cms-certbot

Dialer

docker-asterisk
/etc/init.d/callcenter2 restart

Updates (app already installed)

cd /home/www/callcenter/deploy
./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:

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”