- Зачем: - приложение должно явно работать через прокси и сохранять настройку после обновлений. - Что: - добавлены отдельный ярлык ChatGPT Proxy и запускатель на основе proxy-client. - исключено смешение прямого и проксированного режимов существующего процесса. - установка, документация и автоматические проверки дополнены новым Stow-пакетом. - Проверка: - bash tests/test_chatgpt_proxy_launcher.sh. - bash tests/test_proxy_launchers.sh. - bash tests/test_install.sh.
6.7 KiB
Отдельный запуск ChatGPT через прокси
Проблема
Linux-приложение ChatGPT не применяет обычные proxy-переменные ко всему Chromium-трафику и при штатном запуске выходит в интернет напрямую. Правка файлов Debian-пакета недолговечна: обновление приложения их заменит.
Цели
- Дать отдельный и явно названный ярлык
ChatGPT Proxy. - Использовать активные настройки и проверку доступности
proxy-client. - Не допускать тихого запуска напрямую при ошибке прокси.
- Сохранить штатный ярлык
ChatGPTдля прямого запуска. - Переживать обновления Debian-пакета ChatGPT.
Не входит в задачу
- Изменение системного прокси GNOME.
- Перенаправление трафика других приложений.
- Изменение файлов в
/usr/lib/chatgptи/usr/share/applications. - Автоматический запуск или переключение прокси.
Рассмотренные варианты
- Подменить штатный пользовательский ярлык. Удобно для обязательного прокси, но стирает различие между прямым и проксированным запуском.
- Добавить отдельный пользовательский ярлык. Оба режима видны явно, а файлы приложения остаются нетронутыми.
- Включить системный прокси GNOME. Решение переживает обновления, но меняет поведение всех приложений рабочего стола.
- Перенаправлять трафик на сетевом уровне. Это даёт более жёсткую изоляцию, но заметно усложняет личную конфигурацию.
- Оставить всё как есть. Тогда пользователь должен каждый раз помнить о прямом соединении ChatGPT.
Решение
В dotfiles хранится отдельный пользовательский ярлык ChatGPT Proxy и его
запускатель. Штатный ChatGPT остаётся прямым аналогично паре codex и
pcodex.
Запускатель получает окружение от proxy-client, а для сетевого слоя Chromium
добавляет явные параметры сервера и списка обхода. Если прокси недоступен,
ChatGPT не запускается, а GNOME показывает уведомление с причиной и командой
для диагностики.
Если ChatGPT уже работает через тот же прокси, повторный запуск передаёт ему запрос: Electron поднимает существующее окно. Если работает прямой экземпляр или экземпляр с другими настройками прокси, запуск отклоняется. Уведомление предлагает полностью завершить ChatGPT через системный лоток. Встроенный перезапуск для обновления сохраняет режим, в котором приложение было открыто.
Ярлык и запускатель устанавливаются в пользовательские каталоги через Stow. Они не заменяют одноимённые файлы Debian-пакета, поэтому обновление ChatGPT их не затрагивает.
Отклонённые решения
- Подмена штатного ярлыка отклонена: отдельное имя лучше показывает выбранный режим и не скрывает возможность прямого запуска.
- Системный прокси отклонён из-за слишком широкой области действия.
- Сетевое перенаправление отложено как избыточное для одного приложения.
- Переход на прямое соединение при ошибке запрещён: имя
ChatGPT Proxyдолжно быть гарантией, а не пожеланием.
Риски и защита
- Уже работающий прямой процесс не примет новые параметры. Запускатель отличает его от экземпляра с теми же параметрами прокси и отказывает только при конфликте режимов.
- Одних proxy-переменных может быть недостаточно для Chromium. Запускатель передаёт параметры прокси явно и одновременно сохраняет окружение для дочерних процессов.
- Ошибка графического запуска может остаться незаметной. Причина выводится в stderr и дублируется уведомлением GNOME.
- Формат списка обхода отличается у
NO_PROXYи Chromium. Запускатель явно преобразует список перед запуском приложения.
Проверка
- При доступном прокси ChatGPT получает proxy-переменные и параметры Chromium.
- Адреса из
NO_PROXYпопадают в список обхода Chromium. - При недоступном прокси приложение не запускается и появляется уведомление.
- При повторном прокси-запуске поднимается окно уже работающего проксированного экземпляра.
- При работающем прямом экземпляре появляется уведомление с инструкцией завершить его через системный лоток.
- Штатный системный ярлык не меняется.
- Повторное применение dotfiles восстанавливает пользовательский ярлык после обновления Debian-пакета.