# 18 · FAQ [← Home](Home.md) ## Общие **Это официальный софт 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 — свой раннер. --- [← Home](Home.md) · [Решение проблем](16-Troubleshooting.md) · [SECURITY](https://github.com/paulmann/BAS-IP/blob/main/SECURITY.md)