Цель состоит в том, чтобы автоматизировать запуск Xray при каждой загрузке macOS, подобно тому, как это делается с помощью systemctl на Linux. Xray стартует в фоне, поднимает локальный прокси-сервер на указанном в конфиге порте. После чего отдельной командой можно подключать или отключать системный прокси-сервер.
Установка и обновление xray-core легко производится через homebrew.
На macOS для управления сервисами используется Launchd. Это системный менеджер, который запускает программы и скрипты по расписанию или при определенных событиях, таких как загрузка системы.
Создание plist файла:
- Создайте новый текстовый файл с расширением
.plist. Например,com.xray.proxy.plist. - Откройте его в текстовом редакторе и добавьте следующее содержимое, адаптировав пути и команды под вашу конфигурацию:
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.xray.proxy</string>
<key>ProgramArguments</key>
<array>
<string>/opt/homebrew/bin/xray</string>
<string>-c</string>
<string>/Users/Username/config.json</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
</dict>
</plist>Где:
- Label: Уникальное имя сервиса.
- ProgramArguments: Команда для запуска Xray с указанием пути к исполняемому файлу и конфигурационному файлу.
- RunAtLoad: Если установлено в
true, сервис будет запускаться при загрузке системы. - KeepAlive: если процесс Xray упадёт, он перезапустится автоматически.
Переместите созданный файл в директорию ~/Library/LaunchAgents/.
Откройте терминал и выполните следующую команду, заменив имя на ваше:
launchctl load ~/Library/LaunchAgents/com.xray.proxy.plist
Проверьте, что сервис запущен:
launchctl list | grep com.xray.proxy
Как правильно перезапустить сервис:
- Остановка сервиса:
launchctl stop com.xray.proxy - Запуск сервиса:
launchctl start com.xray.proxy
- Откройте терминал.
- Установите SOCKS прокси для вашего Wi-Fi соединения с помощью следующей команды:
networksetup -setsocksfirewallproxy Wi-Fi localhost 1080 - Следующая команда включит прокси:
networksetup -setsocksfirewallproxystate Wi-Fi on - Отключить использование прокси можно командой
networksetup -setsocksfirewallproxystate Wi-Fi off
Добавь эти алиасы в ~/.zshrc (если используешь zsh) или ~/.bashrc (если bash):
alias proxyon="networksetup -setsocksfirewallproxy Wi-Fi localhost 1080 && networksetup -setsocksfirewallproxystate Wi-Fi on"
alias proxyoff="networksetup -setsocksfirewallproxystate Wi-Fi off"Применить изменения:
source ~/.zshrc # или source ~/.bashrcТеперь можно просто вводить:
proxyon– включит проксиproxyoff– выключит прокси