-
Notifications
You must be signed in to change notification settings - Fork 6
Installation.ru
Процессор и память: минимальный объём оперативной памяти, число ядер и тактовая частота для Caspian пока не определены измерениями. Потребление ресурсов зависит от объёма трафика, протокола прокси и числа одновременных соединений. Перед публикацией минимальных требований нужны замеры в простое и под нагрузкой.
Готовые сборки для Linux рассчитаны на x86-64, ARM64 и ARMv6/ARMv7. Совместимость архитектуры сама по себе не подтверждает достаточную производительность.
Руководство перенесено из README. Даты измерений сохранены; перенос документации не означает нового запуска тестов. English | فارسی | Русский | 中文
Сначала выберите свою операционную систему. Для macOS предназначен графический DMG; Linux и Raspberry Pi можно установить автоматически, сначала проверить или собрать самостоятельно.
Нужен компьютер с Windows 10 версии 2004 (сборка 19041) или новее либо Windows 11 на x64 или ARM64. Также нужны учётная запись администратора, Wi-Fi-адаптер с поддержкой Windows Mobile Hotspot и подключение к интернету. Установщик включает необходимые компоненты. Устанавливать Go или .NET SDK не нужно. Подробные шаги приведены в инструкции для Windows на английском.
Образ диска для macOS содержит нативное приложение Caspian Control и движок Caspian. Terminal, Go, Homebrew и другие среды выполнения не нужны. Требуется учётная запись администратора, а если встроенный Wi-Fi используется как точка доступа, интернет должен приходить на Mac по проводному Ethernet.
- На Mac с Intel нужен
Caspian-v0.2.4-macos-amd64.dmg. - На Mac с Apple Silicon, то есть M1 или новее, нужен
Caspian-v0.2.4-macos-arm64.dmg.
Если тип процессора неизвестен, откройте меню Apple → Об этом Mac.
Приложение v0.2.4 имеет ad-hoc-подпись, но ещё не подписано сертификатом Apple Developer ID и не нотарифицировано Apple. Поэтому Gatekeeper показывает “Caspian” Not Opened и сообщает, что Apple не может проверить приложение на отсутствие вредоносного ПО. Это не сбой приложения. Обходите предупреждение только для файла, загруженного с официальной страницы релизов Caspian.
- Откройте последний релиз Caspian и разверните Assets.
- Загрузите DMG для процессора своего Mac и откройте его.
- Перетащите
Caspian.appв папку Applications (Программы). - Один раз попытайтесь открыть копию из Applications.
- Когда Gatekeeper заблокирует её, нажмите Done.
- Откройте меню Apple → System Settings → Privacy & Security.
- Прокрутите до раздела Security и нажмите Open Anyway рядом с Caspian. Кнопка доступна около часа после заблокированной попытки запуска.
- Введите пароль входа на Mac, нажмите OK, затем подтвердите Open.
macOS сохранит приложение как исключение, и в дальнейшем оно будет открываться обычным двойным щелчком. Тот же порядок описан в официальной инструкции Apple Открытие приложения с изменением настроек безопасности.
Установленный исполняемый файл фоновой службы, /usr/local/bin/caspian, может
сохранить атрибут карантина после разрешения запуска Caspian.app. В предупреждении
указано имя caspian со строчной буквы, а окно управления может показывать
Caspian needs attention.
Если предупреждение называет троян или сообщает об обнаружении вредоносного ПО, не выполняйте команду ниже. Остановите установку и укажите точный текст предупреждения, название обнаруженной угрозы, версию релиза и адрес загрузки в сообщении об ошибке на GitHub. Обнаружение вредоносного ПО требует расследования. Отсутствие подписи само по себе не доказывает, что обнаружение ложное. См. объяснение предупреждений безопасности macOS от Apple.
Используйте этот способ только при предупреждении о непроверенном разработчике
или отсутствии нотарификации, если вы доверяете файлу и его источнику.
Загрузите релиз с официальной страницы Caspian и сравните контрольную сумму DMG
с опубликованным для этого релиза файлом SHA256SUMS.
Совпадение контрольной суммы подтверждает соответствие файлу релиза, но не его безопасность.
-
Откройте Terminal.
-
Удалите атрибут карантина у установленного исполняемого файла фоновой службы:
sudo xattr -d com.apple.quarantine /usr/local/bin/caspian
-
Введите пароль входа на Mac. Terminal не отображает пароль при вводе.
-
В Caspian выберите Advanced options → Restart services.
Эта команда удаляет только атрибут карантина указанного файла. Она не сканирует,
не подписывает и не нотарифицирует исполняемый файл. Если Terminal сообщает
No such xattr, атрибут уже отсутствует. Если служба по-прежнему не запускается,
сообщите об ошибке вместо отключения других средств защиты.
- В Caspian Control нажмите Install / Update.
- В окне авторизации macOS введите пароль администратора.
- Дождитесь надписи Action completed в окне управления.
- При первой установке сохраните показанный в выводе first-run panel password. Кнопка Copy panel password копирует только этот пароль.
- Нажмите Open panel и войдите с сохранённым паролем панели.
- Задайте имя и пароль Wi-Fi, вставьте конфигурацию прокси и включите Caspian переключателем в панели.
Пароль входа на Mac, пароль панели Caspian и пароль Wi-Fi - три разных пароля. Если пароль панели потерян, используйте Reset password в Caspian Control; потребуется авторизация администратора, но конфигурация прокси и настройки точки доступа сохранятся. После закрытия окна приложение остаётся в верхней строке меню macOS; выберите там Open Caspian Control, чтобы снова открыть окно.
sudo /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Iman/caspian/main/install.sh)"
Установщик определяет, на какой машине он находится, скачивает подходящий бинарник из последнего релиза и отказывается работать, если загруженное не совпадает с опубликованной контрольной суммой.
uname -m |
артефакт | типичная машина |
|---|---|---|
x86_64 |
caspian-linux-amd64 |
ноутбук или мини-ПК |
aarch64 |
caspian-linux-arm64 |
Raspberry Pi 3, 4, 5 на 64-битной системе |
armv7l |
caspian-linux-arm |
Raspberry Pi 2 и 3 на 32-битной системе |
armv6l |
caspian-linux-arm |
Raspberry Pi 1, Zero, Zero W |
Когда уверенности нет, он отказывается, а не угадывает. Не Linux, архитектура не
из этой таблицы, отсутствие systemd или несовпавшая контрольная сумма: каждый
случай даёт отказ с указанием того, что было найдено. armv8l, 32-битное
пользовательское окружение на 64-битном ядре, намеренно не сопоставлен ни с чем,
потому что именно так предыдущий проект отправил код для ARMv7 на машины ARMv6 и
оставил их умирать с недопустимой инструкцией при первом же запуске.
Прочитайте скрипт, прежде чем направлять его в шелл. Для программ такого рода это не формальность, и скрипт написан так, чтобы его читали.
curl -fsSL https://raw.githubusercontent.com/Iman/caspian/main/install.sh | less
Чтобы закрепить версию, а не брать последнюю:
sudo env CASPIAN_VERSION=v0.2.5 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Iman/caspian/main/install.sh)"
Каждый релиз содержит файл SHA256SUMS. Установщик проверяет его за вас, и вы
можете проверить его независимо:
curl -fsSLO https://github.com/Iman/caspian/releases/latest/download/caspian-linux-arm64
curl -fsSLO https://github.com/Iman/caspian/releases/latest/download/SHA256SUMS
sha256sum -c SHA256SUMS --ignore-missing
Что это доказывает и что нет: это доказывает, что файл у вас на руках является
тем файлом, который опубликовал релиз. Это не доказывает, кто этот релиз собрал.
Бинарники собираются GitHub Actions из помеченного коммита, а сборочный процесс
лежит в этом репозитории в .github/workflows/release.yml, так что сборку можно
прочитать, хотя она и не воспроизводима независимо.
Ничто в автоматическом пути не является обязательным. Для сборки из исходников нужен Go 1.26 или новее, и она даёт бинарник, функционально идентичный опубликованному.
git clone https://github.com/Iman/caspian.git
cd caspian
go build -trimpath -o caspian ./cmd/caspian
sudo CASPIAN_LOCAL_BINARY="$PWD/caspian" bash install.sh
CASPIAN_LOCAL_BINARY говорит установщику взять файл, который вы только что
собрали, вместо того чтобы что-то скачивать. Всё остальное, что делает
установщик, а именно создание служебной учётной записи, каталогов, юнитов и их
прав, происходит точно так же.
Кросс-компиляция для Pi с другой машины:
GOOS=linux GOARCH=arm64 go build -trimpath -o caspian-linux-arm64 ./cmd/caspian
GOOS=linux GOARCH=arm GOARM=6 go build -trimpath -o caspian-linux-arm ./cmd/caspian
GOARM=6 в 32-битной сборке не является необязательным. И armv6l, и armv7l
устанавливают один и тот же артефакт arm, поэтому сборка под ARMv7 ломает
каждый Pi 1, Zero и Zero W, который её поставит. Сборочный процесс релиза
проверяет это через readelf и падает, а не публикует артефакт, который врёт о
своей архитектуре.
Прежде чем доверять сборке, прогоните проверочный набор:
bash scripts/gate.sh
Он прогоняет форматирование, vet, весь набор тестов с детектором гонок, пороги
покрытия по пакетам, слой золотых регрессий, сканирование на утечку приватных
данных и подмножество дымовых тестов. При неудаче он завершается ненулевым
кодом. Не направляйте его никуда по конвейеру: конвейер в шелле сообщает статус
своей последней команды, поэтому передача его в tail выбрасывает ровно тот
ответ, ради которого вы его запускали.