Установка инстанса
Здесь описана установка нового инстанса. Переезд существующего инстанса на другой сервер — это
восстановление, см. Бэкапы и восстановление.
Требования
- Linux-сервер (Ubuntu или Debian, amd64 или arm64) с доступом по SSH от root и постоянным диском.
1 vCPU и 4 ГБ памяти хватает на всю платформу; для приложений и сборок нужно больше.
- Домен, которым вы управляете, и доступ к его DNS-записям.
- Входящие порты 80 и 443 для HTTPS и 22 для администрирования. Если 80 и 443 на этом
сервере уже занимает что-то другое, сначала решите, как сохранить его имена.
- Почтовый адрес для Let's Encrypt.
- По желанию — API-токен Cloudflare с доступом только к зоне инстанса (Zone → DNS → Edit). С ним xvii
получает wildcard-сертификаты через DNS-01; без него сертификаты выпускаются по одному через HTTP.
Направьте DNS на сервер
Создайте записи для домена (пример для example.com и сервера 203.0.113.7):
| Имя |
Тип |
Значение |
example.com |
A |
203.0.113.7 |
*.example.com |
A |
203.0.113.7 |
Wildcard покрывает все сервисы (id.example.com, pages.example.com, …) и пользовательский контент
вроде *.pages.example.com. Если хотите явные записи — создайте по одной на каждый устанавливаемый
сервис и wildcard для pages, apps, tunnel и hooks.
Пока выпускаются первые сертификаты, записи должны быть DNS only (без прокси Cloudflare). Установщик
проверяет, что имена указывают на сервер, прежде чем продолжить.
Установите CLI
Установщик — часть CLI xvii. На своём компьютере:
curl -fsSL https://xvii.network/install.sh | sh
Скрипт напишет, куда положил бинарник; при необходимости добавьте эту папку в PATH. Чтобы выбрать папку:
curl -fsSL https://xvii.network/install.sh | XVII_INSTALL_DIR="$HOME/.local/bin" sh
Запустите установщик
xvii server install root@203.0.113.7
Он спросит домен, почту для ACME, необязательный токен Cloudflare и имя первого суперпользователя, а затем
по SSH:
- ставит PostgreSQL, Caddy и
xvii-node;
- скачивает id и home из хранилища релизов, проверяет их SHA-256 и запускает;
- пишет конфигурацию Caddy и получает сертификаты;
- печатает одноразовую ссылку, которая создаёт первый ключ доступа.
Для автоматизации передайте всё флагами (токен можно передать в XVII_CLOUDFLARE_TOKEN):
xvii server install root@203.0.113.7 \
--domain example.com --email admin@example.com --user alice --yes
Без USER@HOST установщик настраивает машину, на которой запущен (от root). Повторный запуск безопасен:
он приводит сервер к тому же состоянию.
Ссылка первого пользователя — это учётные данные. Не вставляйте её в чаты, тикеты и логи.
Создайте аккаунт
Откройте ссылку, выберите ключ доступа (Touch ID, Windows Hello, телефон или аппаратный ключ) — и вы вошли в
id как первый суперпользователь инстанса. Затем откройте https://example.com: это home.
Добавьте сервисы
В home → Сервисы поставьте нужные сервисы из хранилища релизов. Разумный порядок:
- notify — чтобы сбои до вас доходили;
- backups — и сразу настройте место хранения;
- pages, env, apps (затем добавьте ноду, см. Ноды);
- domains — до того, как подключать свои домены;
- всё остальное: status, errors, analytics, tunnel, hooks, ai, share, config, docs.
Для mail нужен сервер, с IP которого можно отправлять почту (исходящий порт 25, настраиваемая обратная
DNS-запись); прочитайте руководство по почте, прежде чем ставить её.
То же самое из консоли сервера:
xvii-node install pages # самая новая версия в хранилище
xvii-node install apps v1.4.2 # конкретная версия
xvii-node status
Проверьте
xvii login example.com
xvii whoami
curl -fsS https://id.example.com/api/v1/health
Потом задеплойте что-нибудь небольшое (первый сайт), настройте бэкапы и проверьте
восстановление, прежде чем доверять инстансу настоящие данные.
Чем управляет установщик
| Путь |
Что |
/etc/xvii/instance.env |
домен, почта для ACME, DNS-токен (только root) |
/etc/xvii/platform.json |
какие сервисы запущены, каких версий и с какими настройками |
/etc/xvii/<service>/env |
сгенерированные настройки каждого сервиса; меняйте их в home, не руками |
/var/lib/xvii/<service>/ |
данные каждого сервиса, включая ключи шифрования |
/var/lib/xvii/releases/ |
хранилище релизов: манифесты, бинарники и контрольные суммы |
/usr/local/lib/xvii/<service>/<version>/ |
установленные бинарники, current указывает на запущенный |
xvii-node.service, xvii-<service>.service |
юниты systemd |
/etc/caddy/conf.d/xvii.caddy |
сайты платформы в Caddy |
Сохраняйте ключи из /var/lib/xvii вместе с базами данных: база, восстановленная без ключа, содержит
секреты, которые никто не сможет открыть. Сервис backups сохраняет и то и другое.
Дальше: установите CLI на ноутбук или прочитайте про обновления.