Установка и развёртывание
Docker
Образ ghcr.io/wangwanjie/gately, поддерживаются amd64, arm64, arm/v7.
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:latestDocker Compose
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, поэтому типовые скрипты уведомлений работают без доработок.
Бинарный файл
- Скачайте архив для своей платформы на странице загрузки: Linux (amd64 / arm64 / arm / mips / mipsle / riscv64), macOS, Windows, FreeBSD.
- Распакуйте и запустите:
./gately -c /etc/gatelysystemd
В репозитории есть готовый unit-файл deploy/systemd/gately.service, в котором уже выданы возможности (capabilities), нужные для прослушивания низких портов:
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 gatelyOpenWrt
К каждому релизу прилагаются пакеты для 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_64 | gately_<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 |
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:
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). Их нет в официальном Центре приложений, поэтому устанавливайте их вручную:
- Скачайте
.fpkдля архитектуры своего устройства на странице загрузки; - В fnOS откройте «Центр приложений → Ручная установка» (кнопка в левом нижнем углу), выберите файл и пройдите мастер;
- Щёлкните значок 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, учётные записи только для чтения и остальная конфигурация не меняются.
| Способ установки | Команда |
|---|---|
| Docker | docker exec -it gately gately reset-password |
| systemd | sudo gately reset-password |
| OpenWrt / iStoreOS | gately reset-password |
| fnOS | sudo 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 по очереди:
- скачивает с GitHub
gately_<версия>_linux_<архитектура>.tar.gzдля этой платформы; - сверяет SHA-256 с
checksums.txtтого же релиза; - пробно запускает новый файл с
-version, чтобы убедиться, что он работает на этой машине; - заменяет исполняемый файл и перезапускается с теми же аргументами, сохраняя предыдущую версию как
gately.oldв том же каталоге.
Всё происходит в диалоговом окне: сначала показываются заметки к версии, а после запуска — текущий этап, ход и скорость загрузки. До замены исполняемого файла (получение сведений, загрузка и проверка) можно в любой момент нажать «Отменить обновление» — текущая программа при этом не меняется.
Если GitHub доступен плохо, задайте прокси для обновлений на странице «О программе» или в разделе Настройки → Сеть и работа. Поддерживаются http://, https:// и socks5://, через прокси идут и проверка, и загрузка. Если поле пустое, Gately подключается напрямую и по-прежнему учитывает переменную окружения HTTPS_PROXY.
Без доступа к интернету скачайте tar.gz на странице загрузки и нажмите «Загрузить пакет обновления» на странице «О программе». Принимается любая версия, так что можно и откатиться на старую.
Онлайн-обновление запускается только администратором; сам Gately ничего не скачивает и не устанавливает. Если новая версия не запускается, откатитесь вручную на сохранённую копию (пример для systemd):
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. Подписи загруженных архивов и образов можно проверить по инструкции Проверка релизов.