This guide covers a source-based production deployment of Argus.
- Python 3.12+
- uv
- Node.js >= 22 with npm
- Yarn (
npm -g install yarn) - nginx
Create a user for the service:
useradd -m -s /bin/bash argus
sudo -iu argusOptional: install pyenv and create a virtualenv for this user:
pyenv install 3.12.0
pyenv virtualenv argus
pyenv activate argusClone the repository somewhere the argus user can write to:
git clone https://github.com/scylladb/argus ~/app
cd ~/appInstall dependencies:
uv sync --all-extras
yarn installBuild the frontend:
yarn buildCreate the local config files in the application directory:
cp argus_web.example.yaml argus_web.yaml
cp argus.yaml argus.local.yamlUpdate argus.local.yaml with your database connection settings:
contact_pointsuserpasswordkeyspace name
Update argus_web.yaml with:
- a secure
SECRET_KEY - the required
GITHUB_*values
Copy the bundled nginx config.
Ubuntu:
sudo cp docs/config/argus.nginx.conf /etc/nginx/sites-available/argus
sudo ln -s /etc/nginx/sites-available/argus /etc/nginx/sites-enabled/argusRHEL, CentOS, AlmaLinux, Fedora:
sudo cp docs/config/argus.nginx.conf /etc/nginx/conf.d/argus.confAdjust the virtual host settings as needed, especially listen and server_name.
Install the service file:
sudo cp docs/config/argus.service /etc/systemd/system/argus.serviceEdit it and adjust:
ExecStartto point atstart_argus.sh- the service user and group
start_argus.sh assumes pyenv is installed in ~/.pyenv.
Reload and enable the service:
sudo systemctl daemon-reload
sudo systemctl enable --now argus.serviceGunicorn writes the application log to /var/log/argus/argus.log. The maintenance cron
writes to /var/log/argus/maintenance.log. Create the directory and install log rotation:
sudo mkdir -p /var/log/argus
sudo chown argus:argus /var/log/argus
sudo cp docs/config/argus.logrotate /etc/logrotate.d/argusTwo maintenance commands must run on a schedule:
scan_jobs.shimports new Jenkins jobs as Argus tests. Without a matching test, a submitted run stays invisible in the UI.refresh_issues.shupdates the cached GitHub and Jira issue data.
Edit the crontab of the argus user:
sudo -iu argus crontab -eReplace any existing maintenance lines with these two lines:
*/5 * * * * /home/argus/app/scan_jobs.sh >> /var/log/argus/maintenance.log 2>&1
*/15 * * * * /home/argus/app/refresh_issues.sh >> /var/log/argus/maintenance.log 2>&1
Both scripts change into the application directory and read the config from there. Use absolute paths in the crontab.
Check the log after the first run:
tail /var/log/argus/maintenance.log