Skip to content

Instantly share code, notes, and snippets.

@rz6agx
Last active November 8, 2025 19:58
Show Gist options
  • Select an option

  • Save rz6agx/856f39c796b6a3b47f76da6447faf602 to your computer and use it in GitHub Desktop.

Select an option

Save rz6agx/856f39c796b6a3b47f76da6447faf602 to your computer and use it in GitHub Desktop.
Цель состоит в том, чтобы автоматизировать запуск **Xray** при каждой загрузке **macOS**, подобно тому, как это делается с помощью `systemctl` на **Linux**.

Запуск Xray как сервиса на macOS

Цель состоит в том, чтобы автоматизировать запуск 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

Дальше необходимо использовать команду networksetup для настройки SOCKS прокси на MacOS

  • Откройте терминал.
  • Установите 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 – выключит прокси
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment