Repository navigation
18 FAQ
Это официальный софт BAS-IP? Нет. Это независимое open-source приложение (MIT), использующее публичный HTTP API панелей BAS-IP Camdroid. Торговая марка принадлежит правообладателю.
Нужен ли облачный сервис BAS-IP? Нет. Приложение работает полностью локально: ваш сервер (или Raspberry Pi)
- панель в локальной сети. Интернет нужен только для обновлений, Telegram/SMTP и оплаты по ссылкам.
Сколько это стоит? 0 ₽. MIT-лицензия, без ограничений на число домов/квартир/устройств.
Какие версии PHP/БД поддерживаются? PHP 8.2+ (рекомендуется 8.5), MySQL 8/MariaDB 10.6+, PostgreSQL 13+, SQLite 3. По умолчанию — MySQL.
Работает ли без JavaScript? Да: все формы и действия доступны без JS (прогрессивное улучшение). Без JS не будет QR-кодов в браузере и командной палитры.
Нужен ли Node.js на сервере?
Нет. Ассеты уже собраны и закоммичены; Node нужен только разработчику
для пересборки (npm run build).
Житель съехал — что делать? Карточка → снять «включен». Он мгновенно исчезает из списков, расчётов и рассылок; история сохраняется. Полное удаление — мягкое, с восстановлением.
Можно ли несколько машин и телефонов? Да: несколько машин (госномер + марка) и контактов (телефоны/e-mail/telegram) на одну карточку. Уведомления идут на primary-контакт каждого канала.
Как дать доступ консьержу/охране?
Роль operator: открывать, вести жителей и кассу — без настроек,
пользователей и бэкапов. Плюс журнал всех его действий.
Житель не платит — можно закрыть доступ? Да: снять чекбокс «доступ» (открывать не сможет, в списках остаётся) или «включен» (полностью вне расчётов). Это ручное решение; автоматически за долги никто не блокируется.
Как делится сумма? Общая сумма ÷ активные участники: поровну (default), по площади, по числу жителей или по доле. Расщепление точное до копейки: сумма счетов всегда равна общей сумме.
Сумма изменилась после выставления счетов — всё пересоздавать? Нет: «Перерасчёт» создаст дополнительные счета на дельту (или сторно отключённым), уже оплаченное не трогается.
Житель заплатил больше? Переплата остаётся на балансе и учитывается автоматически.
Поддерживаются ли онлайн-оплаты?
Приложение не процессит карты (и не требует кассы по 54-ФЗ само по себе):
оно даёт ссылку на оплату (любой сервис) и принимает факт оплаты — вручную
или вебхуком POST /api/v1/payments с external_id (идемпотентно).
Валюта только рубли?
Нет: billing.currency/currency_symbol — любые (₸, Br, ₴, $…).
Гость должен что-то устанавливать? Нет: ссылка открывается в браузере телефона, одна большая кнопка. Альтернативы — короткий код (продиктовать охране) и PIN для клавиатуры панели.
Почему 12 часов?
Это default (guest.default_ttl_hours), пресеты 1–72 ч. Достаточно, чтобы
курьер/гость приехал и уехал, и безопасно забыть отозвать.
Можно ли ограничить число открытий по одному пропуску?
Да: guest.max_uses (0 = без лимита в пределах срока).
Что если гость поделится ссылкой со всеми?
Ссылка персональная (в журнале видно владельца и имя гостя), действует
ограниченно, лимитируется по частоте, отзывается одним нажатием. Для
систематических въездов (курьерская служба) заведите отдельный пропуск
с max_uses и сроком.
Сервер упал — жители не попадут домой? Шлагбаум должен иметь аппаратное аварийное открытие (кнопка/пульт/ключ) — это требование к любой автоматизации ворот. Приложение при падении сервера просто не открывает «удалённо»; панель BAS-IP автономна.
Как поставить на Raspberry Pi? Как на любой Linux: PHP 8.2+, nginx/lighttpd + php-fpm, SQLite или MariaDB, cron. 512 МБ ОЗУ достаточно.
Есть ли Docker-образ? Официального нет (принцип «без внешних зависимостей»); приложение ставится на любой LEMP/LEPP-стек. Community-образы приветствуются (см. CONTRIBUTING).
Как мониторить?
GET /health.json (200/503 + статусы подсистем), GET /metrics
(Prometheus), bin/bas-ip health (код возврата для cron), алерты в Telegram
(system_alert).
Где хранятся персональные данные?
Только в вашей БД и storage/ на вашем сервере. Логи маскируют секреты;
экспорт/бэкапы — под вашим контролем. Приложение не звонит «домой»,
кроме GitHub API при проверке обновлений (отключается: update.enabled=false).
Можно ли несколько домов/ЖК на одной установке?
Технически — корпус (building) разделяет жителей в списках и расчётах,
несколько устройств (device.gates) — разные ворота. Полностью изолированные
инсталляции проще вести отдельными установками (своя БД, свой домен).
Как сменить язык интерфейса?
Сейчас интерфейс на русском (ui.language, слой Lang готов к расширениям).
Переводы принимаются — см. CONTRIBUTING.
Почему без фреймворка/composer? Осознанно: система управляет физическими воротами — чем меньше слоёв, тем надёжнее эксплуатация на любом хостинге и проще аудит безопасности. Ядро читается целиком, зависимости — ноль.
Как написать свой драйвер устройства?
Реализуйте интерфейс BasIp\Device\GateDriver (+ supports()), зарегистрируйте
в DeviceManager. Пример — HttpRelayDriver (~150 строк).
Как добавить канал уведомлений?
Наследуйте BasIp\Notify\Channel\AbstractChannel (send, supports),
добавьте конфиг в notify.channels. Пример — TelegramChannel.
Тесты?
php tests/run.php (200 тестов на SQLite/MySQL/PostgreSQL),
php tools/smoke.php (68 end-to-end проверок). Без PHPUnit — свой раннер.