Установка
Одной командой скоро
Установщик одной командой сейчас готовится. Он будет:
- Проверять сервер: система, память, диск, свободные порты 80 и 443, время, DNS домена и
admin.поддомена. - Активировать лицензию по ключу и домену.
- Готовить сервер: Docker, firewall (SSH, 80, 443), fail2ban, автообновления безопасности.
- Создавать папку установки и файл настроек
.envсо случайными паролями (права 600). - Скачивать подписанные образы, применять миграции базы и запускать сервисы.
- Закрывать админку для всех, кроме адреса, с которого запущена установка.
- Создавать владельца с 2FA и в конце показывать сводку: адреса сайта и админки, пароль владельца, куда сохранить пароль бэкапов.
Повторный запуск не ломает установку, а продолжает её. Команда появится здесь и в кабинете покупателя вместе с выходом установщика — до этого ставьте пошагово.
Пошагово
Пока установщика нет, движок ставится из архива выпуска, который выдаёт команда OneSwaper. Скрипты лежат в архиве в папке infra/server/ и запускаются по порядку.
1. Подготовить сервер
Под root на чистом сервере. Скрипт выключает старые веб-сервер и базу, если они есть (не удаляет), и добавляет 2 ГБ подкачки:
bash infra/server/00-prepare.shПосмотреть систему, порты и сервисы — ничего не меняет:
bash infra/server/01-inspect.sh2. Защитить сервер
Под root. Создаёт пользователя deploy с вашими SSH-ключами, включает вход только по ключу, firewall (SSH, 80, 443), автообновления безопасности, fail2ban и ставит Docker. Ничего не удаляет.
bash infra/server/02-harden.shСначала проверьте вход
Откройте новое окно терминала и войдите как deploy. Только когда вход работает, закройте вход под root:
bash infra/server/03-close-root.sh3. Направить домен на сервер
В DNS — записи A для домена и admin. на IP сервера (см. Требования). Если домен за Cloudflare — сначала настройте его по этой странице, иначе Caddy не получит сертификат.
4. Запустить движок
Под deploy, из папки установки (куда распакован архив выпуска), с вашим доменом:
bash infra/server/04-deploy.sh example.comСкрипт сам:
- создаёт
.envсо случайными паролями базы, сессий, ключом шифрования секретов, паролем бэкапов и секретом ворот админки; - ставит адрес админки
admin.example.comи закрывает её для всех (ADMIN_ALLOWED_IPS=127.0.0.1/32); - поднимает базу, проверяет конфиг Caddy, применяет миграции и переводит приложение на роль базы без права менять журналы;
- запускает API, воркер и Caddy и печатает адреса сайта и админки и команду создания владельца.
Первый запуск занимает несколько минут: собираются образы.
5. Открыть админку для себя
Узнайте свой IP (например, на сайте 2ip.ru) и впишите его в .env в папке установки:
ADMIN_ALLOWED_IPS=203.0.113.10/32Несколько адресов или подсетей — через пробел. Перезапустите Caddy:
docker compose up -d caddyАдреса операторов потом добавляются в самой админке — правка сервера для них не нужна (см. Безопасность сервера).
6. Создать владельца
Выполните команду создания владельца, которую напечатал 04-deploy.sh в конце, со своей почтой. Она покажет пароль и ссылку для приложения-аутентификатора (Google Authenticator и т. п.) — один раз. Сохраните пароль в менеджере паролей и добавьте код в приложение.
7. Проверить
curl -s https://example.com/api/healthОтвет {"ok":true,"version":"…","status":"ok"} — движок работает. Откройте https://admin.example.com/admin/login, войдите и переходите к первому запуску.
Сохраните пароль бэкапов
Без него резервную копию не открыть. Посмотреть: grep ^BACKUP_PASSWORD= .env в папке установки. Положите его в менеджер паролей сразу.