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

Миграция с Lucky на Gately ​

Gately — независимый проект, не связанный с проектом Lucky. Совместимость строится на публично наблюдаемом поведении, интерфейсах и форматах конфигурации.

Gately умеет напрямую читать файлы конфигурации Lucky .lkcf или zip с конфигурацией всего сайта, экспортированный функцией Lucky «Резервная копия конфигурации», и переносить правила, задания и сертификаты. Удалять Lucky не требуется: обе программы могут работать параллельно, модули переключаются по одному.

Миграция с nginx

Здесь описана миграция с Lucky. Существующие сайты nginx можно импортировать напрямую через «Веб-службы → Импорт nginx», см. Веб-службы · Импорт конфигурации nginx.

1. Подготовка ​

  1. Найдите каталог конфигурации Lucky: при развёртывании в Docker это обычно каталог хоста, смонтированный в /app/conf контейнера, в нём лежат lucky_base.lkcf, lucky_ddns.lkcf и другие файлы.
  2. Разверните Gately (см. README). Рекомендации:
    • используйте --network host, чтобы слушать порты хоста напрямую;
    • порт управления по умолчанию 16680 не конфликтует с портом Lucky 16601;
    • если скрипты или привязки сертификатов в Lucky используют пути внутри контейнера (например, /etc/lucky/custom_scripts, /data/nginx/...), смонтируйте их в контейнер Gately по тем же путям, тогда после импорта ничего менять не придётся.

2. Импорт ​

Откройте в Gately «Настройки → Резервное копирование и миграция», выберите все файлы lucky_*.lkcf или напрямую zip с конфигурацией всего сайта, экспортированный из Lucky (.lkcf внутри архива распознаются автоматически, остальные файлы игнорируются). Сначала нажмите «Предпросмотр», чтобы увидеть, сколько записей каждого модуля будет импортировано и какие есть замечания, затем подтвердите и нажмите «Импорт».

Повторный импорт безопасен: правила, задания и сертификаты, совпадающие по имени с уже существующими, пропускаются.

Поддерживаемые файлы:

ФайлКуда импортируетсяПримечание
lucky_portforward.lkcfПроброс портовПараметры TLS/шифрования потока и ограничения скорости пока не поддерживаются, будет выдано предупреждение
lucky_ddns.lkcfДинамический DNSПоддерживаются 11 провайдеров; адреса определения IP от Lucky удаляются
lucky_stun.lkcfSTUN-обход NATВключая глобальный список STUN-серверов и глобальный Webhook
lucky_ssl.lkcfSSL-сертификатыУже выпущенные сертификаты импортируются как есть и до истечения срока не перевыпускаются
lucky_reverseproxy.lkcfВеб-службыСайты, аутентификация, ссылки на WAF (если WAF вложенного правила равен main, используется экземпляр правила прослушивания)
lucky_coraza.lkcfБрандмауэр WAFСохраняется ключ экземпляра, ссылки из сайтов остаются действительными
lucky_wol.lkcfWake-on-LAN
lucky_webterminal.lkcfВеб-терминалSSH-подключения; отпечаток хоста записывается при первом подключении
lucky_webdav.lkcfWebDAVСписок монтирований пользователя преобразуется в несколько каталогов, пользователи с одинаковыми именем и паролем объединяются; монтирования, ссылающиеся на управление хранилищем, преобразуются в соответствующие локальные каталоги
lucky_ftpserver.lkcfFTPПорт прослушивания, диапазон пассивных портов, TLS и параметры таймаутов, а также пользователи (обработка как в WebDAV)
lucky_storagemanagement.lkcfМонтирование хранилищЛокальные каталоги и хранилища WebDAV; Alibaba Cloud Drive, системные монтирования и прокси доступа не переносятся
lucky_frp.lkcffrpПервый клиентский экземпляр (адрес сервера, токен, транспортный протокол и прокси) и первый серверный экземпляр; visitor-ы, прокси-плагины и консоль не переносятся
lucky_cloudflared.lkcfCloudflare TunnelТуннели с токеном туннеля; Access-клиенты и туннели, где указан только API-токен, не переносятся
lucky_base.lkcfГлобальные настройки, Веб-службыДоступ только из локальной сети, лимит неудачных входов, длительность сессии, часовой пояс, пользовательский DNS (включая запись doh@), параметры GC, доверенные источники PROXY-протокола. Порт управления, секретный путь входа, учётная запись администратора и двухфакторная аутентификация не переносятся

Запланированные задачи, IP-фильтры и настройки Docker в Lucky в типовых конфигурациях пусты и пока не переносятся; если они у вас заполнены, настройте их вручную.

Импортированные правила по умолчанию отключены: это защищает от ситуации, когда после импорта на тестовой машине боевые домены начинают указывать на неверный адрес, или когда Gately конфликтует с ещё работающим Lucky за порты и UPnP-маппинги маршрутизатора. Если Gately запущен именно на целевом устройстве, а Lucky остановлен, отметьте «Сохранить состояние включения из Lucky»: правила сразу заработают в соответствии с состоянием в Lucky (включая общие переключатели модулей).

3. Переключение ​

Переключайтесь по одному модулю и проверяйте каждый:

  1. Сертификаты: включите сертификат в Gately. После включения сертификат записывается в каталог привязки и выполняется скрипт на изменение; убедитесь, что каталог доступен для записи.
  2. DDNS: отключите задание в Lucky → включите соответствующее задание в Gately → нажмите «Принудительная синхронизация» и убедитесь, что запись обновилась.
  3. Проброс портов / STUN: сначала отключите правило в Lucky (это освободит порт и UPnP-маппинг), затем включите его в Gately. После включения STUN-правила публичный порт может измениться, скрипты и Webhook уведомят об этом автоматически.
  4. Веб-службы: отключите правило прослушивания в Lucky → включите его в Gately. Для HTTPS-сайтов в модуле сертификатов должен быть включённый сертификат, покрывающий домен.
  5. Когда всё проверено, остановите контейнер Lucky.

4. Монтирование в Docker ​

Скрипты и привязки сертификатов Lucky используют пути внутри контейнера Lucky, поэтому контейнеру Gately нужно смонтировать те же каталоги хоста по тем же путям внутри контейнера. Добавляйте записи по compose-файлу Lucky, например:

yaml
volumes:
  - ./config:/etc/gately
  - /var/run/docker.sock:/var/run/docker.sock
  # Если в Lucky сертификат привязан к /data/nginx/ssl, смонтируйте тот же каталог хоста по тому же пути
  - /srv/nginx/ssl:/data/nginx/ssl
  # Скрипты, вызываемые в правилах (проверьте, что путь, указанный в Lucky, действительно существует в контейнере Lucky)
  - /srv/lucky/custom_scripts:/etc/lucky/custom_scripts:ro

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

5. Что нужно сделать вручную ​

  • Вход через сторонние сервисы: вход через GitHub/QQ/Google в Lucky идёт через официальный промежуточный сервер Lucky; в Gately используется ваше собственное OAuth-приложение. При импорте выберите также lucky_thirdPartyAuthManager.lkcf (таблица идентификаторов), lucky_reverseproxy.lkcf и lucky_base.lkcf:
    • сторонние идентификаторы, на которые ссылаются сайты и панель управления, переносятся в списки разрешённых по таблице идентификаторов (GitHub — по числовому ID, Google — по sub, QQ — по openid; имя пользователя и email записываются в примечание).
    • способ входа в панель управления находится в «Настройки → Аккаунт и безопасность → Вход через сторонние сервисы», способ входа для сайтов — в «Веб-службы → Глобальные настройки»; он начинает действовать только после того, как вы укажете собственные Client ID/Secret и адрес обратного вызова и включите его, импорт сам его не включает. В качестве идентификаторов способов входа используйте github, google, qq, чтобы они соответствовали перенесённым идентификаторам.
    • openid QQ различается для каждого приложения QQ Connect: после перехода на своё приложение первый вход будет отклонён с показом нового идентификатора учётной записи, добавьте его в список разрешённых.
    • Сайты, зависящие только от входа через сторонние сервисы и не имеющие переносимых идентификаторов, после импорта остаются отключёнными.
  • Сертификаты ZeroSSL: для регистрации новой учётной записи ACME используются EAB-данные из Lucky; если ZeroSSL их отклонит, сгенерируйте EAB заново в панели ZeroSSL.
  • Экземпляры frp: в Gately есть только один frpc и один frps, лишние экземпляры из Lucky перечисляются в отчёте — перенесите их на другие машины или объедините в один экземпляр; уже настроенный в Gately frpc, подключённый к другим серверам, и включённый frps не перезаписываются. Учётной записью консоли frps управляла Lucky, поэтому после миграции для консоли заново задайте порт и пароль.
  • Ссылки на хранилища: пользователи FTP / WebDAV в Lucky могут монтировать хранилища из «Хранилища». При импорте выберите также lucky_storagemanagement.lkcf (или импортируйте zip всего сайта), локальные хранилища будут преобразованы в соответствующие каталоги; хранилища WebDAV, Alibaba Cloud Drive и монтирование rclone пока не поддерживаются, об этом будет сообщено в отчёте.
  • Функции Lucky, которых ещё нет: DLNA, монтирование облачных дисков rclone, Alibaba Cloud Drive, база IP (lucky_ipdb.lkcf) и другие пока не переносятся и при импорте пропускаются.
  • Официальные серверы Lucky: Gately не обращается к 66666.host, lucky666.cn и подобным адресам; после миграции публичный IP определяется сторонними публичными сервисами (их можно изменить в задании DDNS).

6. Откат ​

Gately не изменяет никакие файлы Lucky. Для отката отключите соответствующие правила в Gately и снова включите их в Lucky.

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