Установка одной командой
Никаких .env руками. Скрипт задаёт пять вопросов, всё остальное делает сам: ставит Docker, генерирует секреты, поднимает весь стек и отдаёт ссылку на кабинет. Дальнейшая настройка — тарифы, платёжки, меню бота — целиком в веб-UI.
На чистом VPS (Ubuntu/Debian):
bash <(curl -fsSL https://raw.githubusercontent.com/STEP-CORP/StepBot/main/scripts/install.sh)То же из клона репозитория:
git clone https://github.com/STEP-CORP/StepBot.git && cd StepBot
./scripts/install.shТребования к серверу
| Что | Сколько |
|---|---|
| CPU / RAM | 1 vCPU / 1–2 GB (на 1 GB скрипт сам поднимет swap) |
| ОС | Ubuntu/Debian (git ставится через apt-get, Docker — через get.docker.com) |
| Права | root — для установки Docker и создания swap |
| Домен | опционально: с доменом кабинет получает HTTPS автоматически, без — работает по http://IP |
Что спросит скрипт
| Вопрос | Обязательно | Если нажать Enter |
|---|---|---|
| Токен бота из @BotFather | да | — |
| Домен для кабинета | нет | кабинет на http://IP, без HTTPS |
| E-mail для Let's Encrypt | только если указан домен | — |
| URL панели Remnawave | нет | поднимется встроенная мок-панель — стек можно пощупать целиком |
| API-токен панели | только если указан URL панели | — |
| Ваш Telegram ID (узнать — @userinfobot) | нет | без личных уведомлений владельцу (панель упала, бэкап, споры) |
Что скрипт делает сам
- При запуске через
curl— ставит git (если нет) и клонирует репозиторий в папкуStepBot(старый клонHUB-BOTтоже подхватит). - Ставит Docker через get.docker.com, если его нет; проверяет наличие docker compose v2.
- Проверяет память: если RAM меньше ~1.8 GB и swap отсутствует — создаёт swap-файл 2 GB (
/swapfile, с записью в/etc/fstab), чтобы сборка образов не упала по OOM. - Генерирует секреты (ключ шифрования, JWT, пароль БД, пароль админа, вебхук-секрет) и пишет
.envс правами 600. - Если панель не указана — включает профиль мок-панели (
COMPOSE_PROFILES=mockв.env). - Собирает и запускает стек:
postgres · redis · web · bot · worker · scheduler · caddy(плюсmockpanel, если панели нет). Первая сборка — несколько минут. - Ждёт
/healthдо 3 минут — миграции БД web-контейнер применяет сам при старте.
С доменом HTTPS поднимается автоматически: Caddy получает сертификат Let's Encrypt на указанный e-mail.
Что выдаст в конце
- Кабинет —
https://ваш-домен/admin/(илиhttp://IP/admin/), логинadminи сгенерированный пароль. - Мини-аппа —
…/app/. - Пароль шифрования бэкапов — им зашифрованы бэкапы БД, пока вы не зададите свой в кабинете → Обслуживание.
Пароль бэкапов — сохранить отдельно
Запишите пароль шифрования бэкапов ОТДЕЛЬНО от сервера. Без него бэкап БД не расшифровать — сервер умер вместе с паролем, значит умерли и бэкапы. Подробнее — Бэкапы.
Повторный запуск
Если .env уже существует, скрипт использует его и не задаёт вопросов — установку можно безопасно перезапускать. Для чистой установки удалите .env.
Если что-то пошло не так, скрипт печатает хвост лога и путь к полному логу; логи стека — ./scripts/dc.sh logs web.
Дальше: настройка до первых продаж — Запуск в прод, обновление — ./scripts/update.sh. Кто хочет без Docker — деплой на VPS через systemd.
