Этот репозиторий содержит весь код, необходимый для создания и управления серверами Outline на DigitalOcean. Сервер Outline запускает экземпляры прокси Shadowsocks и предоставляет API, используемый приложением Outline Manager.
Система состоит из следующих компонентов:
-
Outline Server: прокси-сервер, который запускает экземпляр Shadowsocks для каждого ключ доступа и REST API для управления ключами доступа. Outline Server работает в контейнере Docker на хост-машине.
See
src/shadowbox
-
Outline Manager: [Электрон] (https://electronjs.org/) приложение, которое может создавать Outline-серверы в облаке и общаться с их ключом доступа API управления для управления доступом к серверу.
-
Metrics Server: REST-сервис, с которым общается Outline Server если пользователь включил анонимный обмен метриками.
Для сборки и запуска кода вам необходимо установить следующее:
Затем вам нужно установить все зависимости пакета NPM:
yarn
Примечание: если вы используете root (не рекомендуется на вашем компьютере разработчика, может быть, в контейнере), вам нужно добавить {" allow_root ": true}
в ваш файл / root / .bowerrc
.
Этот проект использует Yarn workspaces.
У нас очень простая система сборки, основанная на сценариях package.json, которые вызываются с помощью
yarn`
и тонкая оболочка для того, что мы называем "действиями" сборки.
Мы определилиdo
скрипт package.json, который принимает action
параметр:
yarn do $ACTION
Эта команда определит функцию do_action ()
и вызовет $ {ACTION} _action.sh
, которая должна существовать.
Сценарий вызываемого действия может использовать do_action
для вызова своих зависимостей. Параметр $ ACTION
всегда разрешается из корня проекта, независимо от местоположения вызывающего.
Идея do_action
состоит в том, чтобы держать логику сборки рядом с соответствующим кодом.
Он также определяет две переменные среды:
- ROOT_DIR: корневой каталог проекта, как абсолютный путь.
- BUILD_DIR: куда должен идти вывод сборки, как абсолютный путь.
Building создает следующие каталоги под build/
:
web_app/
: Веб-приложение Manager.static/
: Статические файлы автономного веб-приложения. Это то, что вы развертываете на веб-сервере или работает с Electron.
electron_app/
: Настольное приложение Electron для запускаstatic/
: Приложение Manager Electron для запуска из командной строки электроновbundled/
: Приложение Electron для автономной работы на каждой платформеpackaged/
: Пакеты приложений Electron упакованы как отдельные файлы для распространения
invite_page
: страница приглашенияstatic
: Автономные статические файлы для развертывания
shadowbox
: Прокси-сервер
В каталогах есть подкаталоги для промежуточного вывода:
ts/
: Автоматически сгенерированные файлы Typescriptjs/
: Вывод из компиляции кода Typescriptbrowserified/
: Вывод браузерного кода JavaScript
для хорошо сложенный успех:
yarn run clean