Skip to content
Эта страница переведена с помощью ИИ и может содержать неточности. Помогите улучшить перевод на GitHub.

Установка и развёртывание ​

Docker ​

Образ ghcr.io/wangwanjie/gately, поддерживаются amd64, arm64, arm/v7.

bash
docker run -d --name gately --network host --cap-add NET_ADMIN \
  -v ./gately-data:/etc/gately \
  -v /var/run/docker.sock:/var/run/docker.sock \
  ghcr.io/wangwanjie/gately:latest

Docker Compose ​

yaml
services:
  gately:
    image: ghcr.io/wangwanjie/gately:latest
    container_name: gately
    restart: unless-stopped
    # Проброс портов, STUN и веб-службы должны напрямую слушать порты хоста
    network_mode: host
    # Защита от вторжений записывает блокировки в брандмауэр хоста (удалите, если не нужно)
    cap_add:
      - NET_ADMIN
    volumes:
      # Каталог конфигурации (открытый JSON, можно хранить в git; ssl.json содержит закрытые ключи сертификатов)
      - ./data:/etc/gately
      # Управление Docker (если не нужно, удалите)
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      - TZ=Asia/Shanghai

--cap-add NET_ADMIN и cap_add нужны защите от вторжений, чтобы записывать блокировки в брандмауэр nftables хоста. Их можно убрать — тогда блокировки действуют только на службы Gately.

В образ встроены sh, bash и curl, поэтому типовые скрипты уведомлений работают без доработок.

Бинарный файл ​

  1. Скачайте архив для своей платформы на странице загрузки: Linux (amd64 / arm64 / arm / mips / mipsle / riscv64), macOS, Windows, FreeBSD.
  2. Распакуйте и запустите:
bash
./gately -c /etc/gately

systemd ​

В репозитории есть готовый unit-файл deploy/systemd/gately.service, в котором уже выданы возможности (capabilities), нужные для прослушивания низких портов:

bash
sudo install -m 0755 gately /usr/local/bin/gately
sudo install -m 0644 gately.service /etc/systemd/system/gately.service
sudo systemctl daemon-reload && sudo systemctl enable --now gately

OpenWrt ​

К каждому релизу прилагаются пакеты для OpenWrt, в которых есть бинарный файл, скрипт запуска procd и правило, сохраняющее конфигурацию при обновлении прошивки:

  • OpenWrt 24.10 и более ранние версии (включая iStoreOS и другие прошивки на базе 24.10) используют .ipk, установка — командой opkg install;
  • OpenWrt 25.12 и новее используют .apk, установка — командой apk add --allow-untrusted (пакеты не подписаны, поэтому --allow-untrusted обязателен).

Выполните grep DISTRIB_ARCH /etc/openwrt_release, чтобы узнать архитектуру устройства, и выберите пакет в группе OpenWrt на странице загрузки:

DISTRIB_ARCHПакет
x86_64gately_<version>_openwrt_amd64
aarch64_*gately_<version>_openwrt_arm64
arm_cortex-a*_* (ARMv7 с VFP / NEON)gately_<version>_openwrt_arm
mipsel_*gately_<version>_openwrt_mipsle
mips_*gately_<version>_openwrt_mips
riscv64_*gately_<version>_openwrt_riscv64
bash
cd /tmp
# OpenWrt 24.10 / iStoreOS (пример для x86_64)
opkg install ./gately_<version>_openwrt_amd64.ipk
# OpenWrt 25.12
apk add --allow-untrusted ./gately_<version>_openwrt_amd64.apk
  • служба добавляется в автозагрузку и запускается сразу после установки; интерфейс управления доступен по адресу http://<адрес роутера>:16680. Конфигурация хранится в /etc/gately и сохраняется при обновлении прошивки (sysupgrade);
  • обновление: скачайте более новый пакет и снова выполните opkg install или apk add --allow-untrusted, конфигурация сохранится. Если вы отключили автозагрузку службы, после обновления она останется отключённой;
  • удаление: opkg remove gately или apk del gately. Каталог конфигурации сохраняется; чтобы удалить и его, выполните rm -rf /etc/gately;
  • перед установкой проверяется архитектура устройства. При несовпадении архитектуры opkg прерывает установку; apk в OpenWrt 25.12 всё равно устанавливает пакет, но оставляет службу остановленной — выполните apk del gately и установите подходящий пакет;
  • бинарный файл занимает около 32 МБ, и столько же нужно свободного места (проверьте командой df -h /overlay), поэтому пакеты рассчитаны на программные роутеры на x86, приставки на ARM64 и другие устройства с большим объёмом памяти; роутерам с флеш-памятью 16 МБ / 32 МБ места не хватит;
  • пакету arm нужен ARMv7 с аппаратной поддержкой операций с плавающей точкой. Устройства ARMv5 / ARMv6 и ядра без FPU, например arm_cortex-a9, пока не поддерживаются.

Можно развернуть Gately и вручную: скачайте архив для Linux и используйте скрипт запуска procd deploy/openwrt/gately.init:

bash
cp gately /usr/bin/gately && chmod +x /usr/bin/gately
cp gately.init /etc/init.d/gately && chmod +x /etc/init.d/gately
/etc/init.d/gately enable && /etc/init.d/gately start

Нативное приложение для fnOS ​

К каждому релизу прилагаются офлайн-пакеты для fnOS: gately_<version>_fnos_x86.fpk (Intel / AMD) и gately_<version>_fnos_arm.fpk (ARM). Их нет в официальном Центре приложений, поэтому устанавливайте их вручную:

  1. Скачайте .fpk для архитектуры своего устройства на странице загрузки;
  2. В fnOS откройте «Центр приложений → Ручная установка» (кнопка в левом нижнем углу), выберите файл и пройдите мастер;
  3. Щёлкните значок Gately на рабочем столе fnOS, чтобы открыть интерфейс управления.

Работа с единым шлюзом fnOS ​

Значок на рабочем столе открывает интерфейс управления через единый шлюз fnOS по пути /app/gately/ на том адресе, через который вы заходите в fnOS, то есть через ту же точку входа. Работают и адрес в локальной сети, и удалённый домен fnOS, открывать или пробрасывать порт 16680 не нужно.

Доступ через шлюз контролирует fnOS, открыть его могут только администраторы fnOS. Защищённый вход и «Доступ только из локальной сети» действуют только при прямом обращении к порту 16680. В локальной сети адрес http://<адрес NAS>:16680 по-прежнему работает.

Вход по сеансу администратора fnOS ​

Включите «Вход через fnOS» в разделе «Настройки → Контроль доступа», и администраторы, уже вошедшие в fnOS, попадают в Gately прямо со значка на рабочем столе без пароля и кода двухэтапной проверки:

  • автоматически входят только администраторы fnOS, причём как администратор Gately; обычные пользователи fnOS по-прежнему вводят имя пользователя и пароль;
  • это действует только при доступе через единый шлюз; при прямом обращении к порту 16680 нужен обычный вход;
  • после выхода Gately не выполняет повторный вход автоматически: вместо этого страница входа показывает кнопку «Войти как пользователь fnOS <имя>»;
  • настройка по умолчанию отключена и отображается только в пакете для fnOS.

Примечания ​

  • Приложение работает от root, поэтому может слушать порты 80/443, управлять Docker через docker.sock и открывать полноценный веб-терминал. Устанавливайте его только на NAS, который вы контролируете.
  • Конфигурация хранится в каталоге var приложения и сохраняется при удалении, если в мастере удаления не выбрать «удалить всё».
  • Пакет также добавляет команду /usr/local/bin/gately для gately ctl, gately mcp и gately reset-password.
  • Порт 16680 общий с образом Docker. Перед запуском нативного приложения остановите контейнер gately.

Первый вход ​

Интерфейс управления по умолчанию слушает порт 16680, учётная запись по умолчанию — admin, пароль по умолчанию — gately.cn. При автоматизированном развёртывании вместо пароля по умолчанию можно задать свой начальный пароль переменной окружения GATELY_INITIAL_PASSWORD.

Пароль по умолчанию общеизвестен, поэтому, пока он используется, вверху интерфейса управления постоянно отображается напоминание сменить его. При первом входе откроется мастер начальной настройки, который по очереди предложит сменить пароль, включить двухфакторную аутентификацию или passkey, запустить самопроверку сети, импортировать данные из Lucky и настроить уведомления.

Сброс пароля и двухфакторной аутентификации ​

Если вы забыли пароль администратора или потеряли аутентификатор двухфакторной аутентификации (TOTP), сбросьте их командой на сервере, где работает Gately. Команде нужен доступ на чтение и запись к каталогу конфигурации, что равносильно правам на сервере, поэтому через сеть она недоступна:

  • gately reset-password — сбрасывает пароль администратора на пароль по умолчанию gately.cn; с -p <новый пароль> можно сразу задать новый пароль;
  • gately reset-totp — отключает двухфакторную аутентификацию администратора; после входа её можно включить снова.

Перед выполнением команда показывает имя пользователя администратора и предстоящее действие и для защиты от случайного запуска просит ввести yes; в скриптах и других неинтерактивных средах подтверждение пропускается флагом -y. Запущенный Gately применяет изменения в течение нескольких секунд без перезапуска; если он не запущен, изменения вступят в силу при следующем старте. После сброса все сеансы становятся недействительными, блокировки входа снимаются, а имя пользователя, passkey, учётные записи только для чтения и остальная конфигурация не меняются.

Способ установкиКоманда
Dockerdocker exec -it gately gately reset-password
systemdsudo gately reset-password
OpenWrt / iStoreOSgately reset-password
fnOSsudo gately reset-password
Другое./gately reset-password -c <каталог конфигурации>

Без -c команда по очереди ищет каталог в GATELY_CONFIG_DIR, в data в текущем каталоге, в /etc/gately и в каталоге конфигурации пакета для fnOS /var/apps/gately/var/config и выводит фактически использованный каталог. Каждый сброс записывается в системный журнал и журнал аудита.

Обновление ​

Онлайн-обновление ​

Бинарные установки в Linux (systemd, LXC-контейнеры PVE, OpenWrt при ручном развёртывании и т. п.) можно обновить онлайн на странице «О программе» в панели управления: нажмите «Проверить обновления», а при наличии новой версии — «Обновить». Это работает и для LXC-контейнеров, созданных в PVE из OCI-образа, удалять и пересоздавать их не нужно. Gately по очереди:

  1. скачивает с GitHub gately_<версия>_linux_<архитектура>.tar.gz для этой платформы;
  2. сверяет SHA-256 с checksums.txt того же релиза;
  3. пробно запускает новый файл с -version, чтобы убедиться, что он работает на этой машине;
  4. заменяет исполняемый файл и перезапускается с теми же аргументами, сохраняя предыдущую версию как gately.old в том же каталоге.

Всё происходит в диалоговом окне: сначала показываются заметки к версии, а после запуска — текущий этап, ход и скорость загрузки. До замены исполняемого файла (получение сведений, загрузка и проверка) можно в любой момент нажать «Отменить обновление» — текущая программа при этом не меняется.

Если GitHub доступен плохо, задайте прокси для обновлений на странице «О программе» или в разделе Настройки → Сеть и работа. Поддерживаются http://, https:// и socks5://, через прокси идут и проверка, и загрузка. Если поле пустое, Gately подключается напрямую и по-прежнему учитывает переменную окружения HTTPS_PROXY.

Без доступа к интернету скачайте tar.gz на странице загрузки и нажмите «Загрузить пакет обновления» на странице «О программе». Принимается любая версия, так что можно и откатиться на старую.

Онлайн-обновление запускается только администратором; сам Gately ничего не скачивает и не устанавливает. Если новая версия не запускается, откатитесь вручную на сохранённую копию (пример для systemd):

bash
mv /usr/local/bin/gately.old /usr/local/bin/gately
systemctl restart gately

Если вы выдавали бинарному файлу доступ к низким портам через setcap, после обновления выполните setcap ещё раз.

Другие способы развёртывания ​

  • Docker: выполните docker pull для нового образа и пересоздайте контейнер (каталог конфигурации должен оставаться смонтированным);
  • fnOS: вручную установите более новый .fpk через Центр приложений, конфигурация сохранится;
  • Пакеты для OpenWrt: скачайте более новый .ipk / .apk и выполните opkg install / apk add --allow-untrusted, конфигурация сохранится (см. OpenWrt);
  • Windows, macOS, FreeBSD: замените исполняемый файл и перезапустите службу.

Перед обновлением рекомендуется экспортировать резервную копию конфигурации или просто вести каталог конфигурации в git. Подписи загруженных архивов и образов можно проверить по инструкции Проверка релизов.

Распространяется по лицензии Apache-2.0.