Установка
Reefox Panel ставится одной командой. Установщик сам поставит Docker, базу данных, веб-сервер и HTTPS-сертификат, а потом запустит сервис. Обычно это занимает 5–10 минут.
Перед запуском
- Домен уже указывает на сервер, это видно по
dig(раздел Сервер и домен). - Под рукой ключ лицензии, токен основного бота и ваш Telegram ID.
- Вы нажали Start у своего бота с того аккаунта, чей ID будете вводить.
Запуск
Подключитесь к серверу по SSH и выполните команду из бота лицензий (раздел «📘 Как установить»):
curl -fsSL https://store.reefox.ru/install.sh -o tmavpn-install.sh && sudo bash tmavpn-install.shВопросы установщика
Установщик задаёт пять вопросов и каждый ответ сразу проверяет — до того, как что-то ставить:
| Вопрос | Что ввести | Что проверяется |
|---|---|---|
Ключ лицензии | Ключ из бота. Символы при вводе не видны, так и задумано. | Сервер лицензий принимает ключ |
Домен | Ваш домен без https:// и без слэша в конце. | Домен указывает на этот сервер: запись видна у Cloudflare (1.1.1.1) и Google (8.8.8.8) |
Токен бота из @BotFather | Токен основного бота. | Telegram знает этот токен; с сервера вообще открывается Telegram |
Ваш Telegram ID | Только цифры. | Бот присылает вам проверочное сообщение |
Почта для HTTPS-сертификата | Можно оставить пустой — Enter. | — |
Если проверка не прошла, установщик скажет, что исправить, и спросит снова:
- Домен не указывает на сервер — добавьте A-запись с адресом, который назовёт установщик, подождите несколько минут и нажмите Enter. Если уверены, что всё верно, напишите
пропустить, но тогда HTTPS может не выпуститься. - Telegram не узнал токен — скопируйте токен в @BotFather ещё раз (
/mybots→ бот → API Token). - Бот не смог вам написать — откройте своего бота в Telegram, нажмите «Start» и нажмите Enter в установщике.
- С сервера не открывается Telegram — установка остановится: бот на таком сервере работать не сможет. Обычно это серверы в России — нужен сервер за рубежом.
Что происходит дальше
Установщик печатает шаги от [1/6] до [6/6]: ставит системные пакеты и Docker, запускает панель и базу данных, настраивает веб-сервер и HTTPS-сертификат, включает обновления одной кнопкой и ждёт, пока панель ответит. Подробный вывод всех программ пишется в журнал /var/log/tmavpn-install.log — если шаг упадёт, установщик покажет его последние строки.
В конце появится итог:
✓ Готово! Ваш VPN-сервис работает.
Админка: https://vpn.example.com/admin/
Сайт: https://vpn.example.com/
Кабинет: https://vpn.example.com/lk/
Токен первого входа — нужен один раз, сохраните его:
5F2C9A7E1B3D4C6A8E0F2B4D6C8A0E1F…Бот пришлёт вам в Telegram ссылку на админку. Сохраните токен первого входа — он нужен один раз. Если потеряли, он лежит на сервере:
grep SETUP_TOKEN /opt/tmavpn/app/.envСвоя база PostgreSQL вместо встроенной нужна редко; если нужна, запустите установку с адресом базы: sudo TMAVPN_EXTERNAL_DATABASE_URL='postgresql+asyncpg://…' bash tmavpn-install.sh.
Проверка
curl -sS https://vpn.example.com/healthДолжно вернуться {"status":"ok","service":"vpn-api"}.
Если HTTPS не заработал
Установщик не останавливается, если сертификат не выпустился, и в конце всё равно печатает адреса с https://. Браузер в этом случае покажет ошибку сертификата, а curl — SSL certificate problem. Обычно причина в DNS: запись ещё не видна со всех DNS-серверов. Проверьте DNS по разделу про домен и выпустите сертификат повторно:
sudo certbot --nginx -d vpn.example.com --non-interactive --agree-tos -m you@example.com --redirectПока нет HTTPS, в админку лучше не заходить: Setup Token и пароль уйдут по открытому каналу. Mini App без HTTPS тоже не работает, Telegram это требование не обходит.
Если установка прервалась
Если лицензия не прошла проверку, установщик покажет причину:
| Сообщение | Что делать |
|---|---|
Unknown license | Ключ введён с ошибкой. Скопируйте его ещё раз из «🔑 Мои лицензии». |
Лицензия не активна. Продлите её в боте. | Срок закончился, продлите в боте. |
Ключ привязан к другому домену | Ключ уже установлен с другим доменом. Напишите в поддержку. |
Ключ уже используется на другом сервере | Этот ключ работает на другом сервере. Напишите в поддержку. |
Если установка упала позже, на шагах [1/6]–[6/6], повторный запуск первой команды скажет, что панель уже установлена. Чтобы продолжить с того же места, выполните:
sudo /opt/tmavpn/app/deploy/install-from-source.shКоманда использует уже созданные настройки и безопасна для повторного запуска.
Чего не делать
- Не запускайте
./install.shиз папки/opt/tmavpn/appповторно. Он создаст новые настройки с другим паролем базы, и приложение перестанет к ней подключаться. - Не запускайте
docker compose upвручную. Без служебных файлов он может поднять не ту версию образа. Для перезапуска используйтеdocker restart vpn-app.
Где что лежит
| Что | Где |
|---|---|
| Программа и настройки | /opt/tmavpn/app. Главный файл настроек — .env, в нём пароли и ключи, никому его не пересылайте |
| Данные приложения | /opt/tmavpn/app/data |
| Контейнеры | vpn-app (приложение), vpn-postgres (база), vpn-redis (кэш) |
| Служебная служба | vpn-host-cmd: обновления, домены, перенос |
Токен бота и ID администратора после установки
Установщик записывает их в базу только при первом запуске. Дальше они меняются в админке: Настройки → Telegram бот. Правка .env на них уже не влияет.
Дальше — первый вход в админку.