Linux¶
Portable-бандл для Linux поставляется как tar.gz для x64. Он содержит
Node.js 22, приложение, rg и bin/synth; системные пакеты Node.js не нужны.
Установка возможна в пользовательский контур (systemd user) или как сервис
(systemd system).
Поддерживаемые системы¶
| Семейство | Версии | Пакетный менеджер |
|---|---|---|
| RHEL | 8, 9 | dnf |
| Ubuntu | 20.04, 22.04, 24.04 | apt |
| Debian | 11, 12 | apt |
| Astra Linux | 1.8.x | apt |
| RED OS | 8 | dnf |
Архитектура — x64. Требуется glibc >= 2.28. Проверьте перед установкой:
uname -m должен вернуть x86_64, getconf — glibc 2.28 или новее. На
системах с musl (Alpine) portable-бандл не запускается — используйте
контейнерную поставку.
Распаковка и проверка¶
cd <bundle-dir>
sha256sum -c SHA256SUMS
tar -xzf synth-<version>-linux-x64.tar.gz
cd synth-<version>-linux-x64
В каталоге должны быть bin/synth, manifest.json, SHA256SUMS, LICENSES
и каталоги runtime/приложения. Проверьте запуск:
Установка¶
Вариант 1. Установщик из бандла¶
В бандл входит скрипт установки (имя и флаги уточняются в manifest.json).
Запускайте его от того пользователя, в чьём контуре ставите Synth:
# системная установка (нужен root)
sudo ./install.sh
# пользовательская установка (без root)
./install.sh
Установщик раскладывает файлы и настраивает запуск (unit-файл или ярлык);
точный набор шагов и флаги — в manifest.json/README бандла. Дальше проверьте
systemctl-раздел ниже и задайте API-ключ.
Вариант 2. Ручная раскладка¶
Если установщик недоступен или нужна нестандартная раскладка, разложите файлы
вручную. Пример для системной установки в /opt/synth (финальный путь может
отличаться — сверьтесь с manifest.json):
sudo install -d -m 0755 /opt/synth
sudo cp -a . /opt/synth/
sudo ln -s /opt/synth/bin/synth /usr/local/bin/synth
Создайте системного пользователя и каталог данных:
sudo useradd --system --home-dir /var/lib/synth --shell /usr/sbin/nologin synth
sudo install -d -m 0750 -o synth -g synth /var/lib/synth/data
Для пользовательской установки:
install -d -m 0755 ~/.local/opt
cp -a . ~/.local/opt/synth
ln -s ~/.local/opt/synth/bin/synth ~/.local/bin/synth
API-ключ¶
В системной установке ключ удобно хранить в env-файле с правами 0600:
sudo install -d -m 0700 /etc/synth
printf 'SYNTH_API_KEY=%s\n' '<api-key>' | sudo tee /etc/synth/synth.env >/dev/null
sudo chmod 600 /etc/synth/synth.env
SYNTH_API_KEY даёт роль ADMIN. Это режим без Keycloak; для командной работы
с ролями используйте OIDC — Keycloak и API-key.
Ключ — это полный доступ
Не передавайте ключ в командной строке, если её видно другим пользователям
(ps), и не храните его в репозитории. Для systemd используйте
EnvironmentFile, для контейнера — Secret или env-файл.
systemd: системный сервис¶
Пример unit-файла /etc/systemd/system/synth.service. Итоговый unit входит в
бандл и может отличаться путями; этот пример проверяем при ручной раскладке.
[Unit]
Description=Synth
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=synth
Group=synth
WorkingDirectory=/opt/synth
EnvironmentFile=/etc/synth/synth.env
ExecStart=/opt/synth/bin/synth serve --host 0.0.0.0 --port 4300 --data-dir /var/lib/synth/data
Restart=on-failure
RestartSec=5
NoNewPrivileges=true
PrivateTmp=true
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now synth
sudo systemctl status synth
sudo journalctl -u synth -f
Проверка:
systemd: пользовательский сервис¶
Для локальной машины удобнее user-unit: он не требует root и работает в
контексте пользователя. Файл — ~/.config/systemd/user/synth.service:
[Unit]
Description=Synth (user)
[Service]
Type=simple
WorkingDirectory=%h/.local/opt/synth
EnvironmentFile=%h/.config/synth/synth.env
ExecStart=%h/.local/opt/synth/bin/synth serve --home %h/.synth
Restart=on-failure
RestartSec=5
[Install]
WantedBy=default.target
mkdir -p ~/.config/synth
chmod 700 ~/.config/synth
printf 'SYNTH_API_KEY=%s\n' '<api-key>' > ~/.config/synth/synth.env
chmod 600 ~/.config/synth/synth.env
systemctl --user daemon-reload
systemctl --user enable --now synth
systemctl --user status synth
journalctl --user -u synth -f
По умолчанию synth serve слушает 127.0.0.1:4300. Чтобы сервис запускался
без входа пользователя в систему:
SELinux (RHEL, RED OS, Astra)¶
Не отключайте SELinux глобально. Если сервис не стартует или не может прочитать файлы, посмотрите отказы:
Типовой случай — неверный контекст у каталога установки. Для /opt/synth:
Если semanage не установлен, поставьте policycoreutils-python-utils
(RHEL/RED OS) или policycoreutils (Debian/Astra) из локального зеркала.
Порт 4300 обычно не требует отдельного правила SELinux; если AVC указывает на
name_bind, разрешите порт через semanage port или выберите порт из
разрешённого диапазона. Не выполняйте setenforce 0 как «решение».
Брандмауэр¶
Серверный инстанс должен быть доступен только из доверенной сети. Откройте порт
4300/tcp (или тот, который задан в unit-файле).
RHEL / RED OS:
Ubuntu / Debian / Astra:
Если перед Synth стоит reverse proxy с TLS, наружу публикуйте только его, а
4300 оставьте на loopback или во внутренней сети.
Особенности дистрибутивов¶
| Дистрибутив | Что учесть |
|---|---|
| RHEL 8/9 | SELinux включён по умолчанию; проверьте контекст /opt/synth и откройте порт в firewall-cmd |
| RED OS 8 | RHEL-совместимый стек; те же шаги SELinux и firewall-cmd |
| Ubuntu 20.04/22.04/24.04 | ufw часто включён; glibc в поддерживаемых версиях >= 2.28 |
| Debian 11/12 | ufw может быть выключен; проверьте getconf GNU_LIBC_VERSION |
| Astra Linux 1.8.x | apt; SELinux может быть включён — действуйте через ausearch/semanage, не отключайте мандатный контроль |
Обновление и удаление¶
- Обновление — не
synth update, а замена бандла: остановить сервис, распаковать новую версию, выполнитьsynth migrate --yes, запустить и проверить. Полный порядок — Эксплуатация. - Удаление —
sudo ./uninstall.shиз бандла илиsynth uninstall; по умолчанию данные сохраняются. Для удаления данных —--purge --yes(необратимо).