Установка TastyIgniter на Raspberry Pi: полный пошаговый гид
Кому пригодится это руководство
- Владельцам небольших кафе и ресторанов, которые хотят дешёвое локальное решение для онлайн-заказов и бронирования.
- Администраторам, желающим развернуть TastyIgniter на доступном оборудовании вроде Raspberry Pi.
Важно: этот гид предполагает базовые навыки работы с командной строкой Linux, SSH и понимание, что такое веб-сервер и база данных.
Краткое содержание
- Подготовка Raspberry Pi и требования
- Установка PHP, Apache и расширений
- Подготовка и настройка MariaDB для TastyIgniter
- Установка TastyIgniter и запуск веб-установщика
- Базовая конфигурация сайта, расширения и интеграции
- Публикация домена, SSL и удаление установщика
- Тестирование, отладка и типичные ошибки
- Рекомендации по безопасности, резервному копированию и обслуживанию
- Чек-листы ролей и критерии приёмки
Требования и подготовка
Перед началом убедитесь, что у вас есть:
- Raspberry Pi с установленной ОС Raspberry Pi OS (рекомендуется 64‑битная версия для современных моделей), актуальные обновления и сетевой доступ.
- Доступ по SSH или локальная клавиатура/монитор для работы на устройстве.
- Основная конфигурация веб‑сервера: если вы ещё не настраивали Pi как веб‑сервер, сначала выполните руководство по подготовке Raspberry Pi в качестве веб‑сервера.
- Домен (опционально) и публичный IP для публикации сайта в интернет.
Мини‑словарь: PHP — язык, на котором написан TastyIgniter; Apache — веб‑сервер; MariaDB — сервер базы данных.
Подготовка: обновление системы
Перед установкой обновите пакеты:
sudo apt update && sudo apt upgrade -yРекомендуется перезагрузить систему после крупного обновления:
sudo rebootУстановка PHP 8.2 и расширений
TastyIgniter требует PHP 8 или выше. На Raspberry Pi мы установим PHP 8.2 через репозиторий SURY (Debian/Ubuntu). Выполните команды по очереди:
# Добавляем GPG‑ключ репозитория PHP
sudo wget -qO /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
# Добавляем репозиторий (подставляется кодовое имя дистрибутива автоматически)
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php.list
# Обновляем индекс пакетов и устанавливаем PHP 8.2 с модулем для Apache
sudo apt update
sudo apt install -y php8.2 libapache2-mod-php8.2
# Устанавливаем необходимые расширения для TastyIgniter
sudo apt install -y php8.2-mysql php8.2-curl php8.2-openssl php8.2-dom php8.2-gd php8.2-zipПримечание: некоторые пакеты (например, php8.2-openssl) могут быть объединены в другие метапакеты в зависимости от репозитория. Если какой‑то пакет не найден, проверьте доступные PHP 8.2 пакеты через apt search php8.2-*
Включение модуля rewrite в Apache и разрешение .htaccess
TastyIgniter использует файл .htaccess. По умолчанию Apache может игнорировать .htaccess — надо включить модуль rewrite и разрешить использование переопределений.
sudo a2enmod rewrite
sudo systemctl restart apache2Отредактируйте основной конфигурационный файл Apache, чтобы AllowOverride разрешал .htaccess:
sudo nano /etc/apache2/apache2.confНайдите секцию вида:
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
Измените AllowOverride None на AllowOverride All, сохраните и выйдите (Ctrl+O, Enter, Ctrl+X). Затем перезапустите Apache:
sudo systemctl restart apache2Composer: менеджер зависимостей PHP
TastyIgniter использует Composer для управления зависимостями. Установите Composer глобально:
wget -O composer-setup.php https://getcomposer.org/installer
sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composerПроверьте установку:
composer --versionСкачивание и размещение TastyIgniter
Скачайте установщик TastyIgniter и распакуйте его в корень веб‑папки Apache (/var/www/html):
wget https://github.com/tastyigniter/setup/archive/master.zip
unzip master.zip
sudo mv setup-master/* /var/www/html/Затем измените владельца файлов на пользователя Apache (www‑data) для корректной работы и записи:
sudo chown -R www-data:www-data /var/www/html/
sudo chmod -R 755 /var/www/html/Важно: при необходимости скорректируйте права каталогов storage и cache согласно документации TastyIgniter (обычно 775 или 775 для group write).
Настройка базы данных MariaDB
TastyIgniter использует MariaDB/MySQL. Установите MariaDB и создайте базу данных и пользователя:
sudo apt install -y mariadb-server
sudo mariadbВ интерактивной консоли MariaDB выполните (нажимайте Enter после каждой строки):
CREATE DATABASE tastyigniter;
CREATE USER 'tastyigniter'@'localhost' IDENTIFIED BY 'topsecretpassword';
GRANT ALL PRIVILEGES ON tastyigniter.* TO 'tastyigniter'@'localhost';
FLUSH PRIVILEGES;
quit;Примечание: замените ‘topsecretpassword’ на надежный пароль. Не храните пароль в открытом виде на общедоступном устройстве.
Запуск веб‑установщика TastyIgniter
Откройте браузер и перейдите по адресу:
http://your-pi-local-ip-address/setup.php
Вы увидите экран установки TastyIgniter. Нажмите Install TastyIgniter, примите лицензию MIT и проходите шаги мастера.
Мастер проверит системные требования. Если какие‑то проверки не пройдены, исправьте замечания (например, права на директории или отсутствующие расширения PHP) и продолжите.
При настройке базы данных используйте host = localhost, имя базы и пользователя tastyigniter и пароль, который вы выбрали ранее. Префикс таблиц и порт обычно можно оставить по умолчанию.
Далее задайте параметры ресторана и админ‑аккаунта: имя администратора, e‑mail, название ресторана и пароль. Выберите режим «single location» для одного заведения и решите, устанавливать ли демо‑данные (полезно для знакомства с функционалом).
Если хотите пользоваться плагинами из Marketplace, введите Site Carte Key (можно пропустить и добавить позже).
После завершения установки вы войдёте в админ‑панель по адресу:
http://your-pi-ip-address/admin/login
Базовая конфигурация: расширения, локации, меню
Панель управления чистая и структурированная. Для полного функционала установите набор бесплатных расширений:
- cart
- coupons
- frontend
- local
- pages
- payregister
- reservation
- user
Перейдите System > Extensions, найдите перечисленные расширения и установите их.
Добавьте локации заведений через System > Locations: укажите адреса, часы работы и зоны доставки. В настройках локации можно задать радиус доставки.
Для отображения карты потребуется Google Maps API key. Вставьте ключ в System > Settings > General. Google предоставляет бесплатный лимит (примерно 28 500 загрузок карт в месяц в рамках определённых условий), но следите за расходом при большой нагрузке.
В разделе Restaurant вы настраиваете меню, категории, пункты, цены, таблицы и вместимость. В разделе System > Settings > Sales настраивайте правила приёма заказов и брони: разрешать ли заказы без аккаунта, авто‑подтверждение или ручную проверку, ограничения по зоне доставки и т. п.
В разделе Sales > Payments подключите платежные шлюзы (PayPal, Stripe, Mollie, Square). Для каждого провайдера получите API‑ключи у соответствующей службы и вставьте их в поля настроек. TastyIgniter сам не должен хранить данные карт — используйте сторонние PCI‑совместимые платежные шлюзы.
Создайте учётные записи сотрудников в System > Staff, распределите по группам и ролям, ограничьте доступ по необходимости. Это позволить маршрутизировать заказы к повару, кассиру или доставке без вашего прямого вмешательства.
Публикация сайта и получение SSL
Когда вы готовы публиковать сайт в сеть:
- Зарегистрируйте домен и укажите в DNS «A»‑запись с вашим публичным IP (host = @, value = ваш публичный IP).
- Удалите файл setup.php на сервере, чтобы не позволить злоумышленникам переустановить систему:
sudo rm /var/www/html/setup.php- Создайте конфигурацию виртуального хоста Apache для домена:
cd /etc/apache2/sites-available
sudo nano domain.confВставьте минимальную конфигурацию:
ServerName your-domain-name.tld
DocumentRoot /var/www/html/
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
Сохраните, затем включите сайт и перезапустите Apache:
sudo a2ensite domain.conf
sudo systemctl restart apache2- Установите Certbot и получите сертификат Let’s Encrypt:
sudo apt install -y certbot python3-certbot-apache
sudo certbotСледуйте интерактивным подсказкам: выберите домен, разрешите перенаправление HTTP->HTTPS. После успешного завершения все соединения будут защищены SSL.
Рекомендации по безопасности
- Удалите или защитите файл setup.php после установки.
- Обновляйте систему и PHP‑пакеты регулярно (apt update && apt upgrade).
- Отключите ненужные сервисы и закройте неиспользуемые порты через UFW (firewall):
sudo apt install -y ufw
sudo ufw allow OpenSSH
sudo ufw allow 'Apache Full'
sudo ufw enable- Установите Fail2Ban для защиты от брутфорса по SSH и к панели администратора:
sudo apt install -y fail2ban- Не храните данные карт на сервере. Используйте интеграции с PCI‑совместимыми шлюзами.
- Регулярно просматривайте логи Apache и TastyIgniter:
sudo tail -f /var/log/apache2/error.log
sudo tail -f /var/log/apache2/access.log- Настройте бэкапы (см. следующий раздел).
Резервное копирование и откат
Регулярные бэкапы критичны для бизнеса.
Минимум резервирования:
- Файлы сайта: /var/www/html/
- База данных MariaDB
Пример простого скрипта для бэкапа (сохраните как /usr/local/bin/backup_tastyigniter.sh и сделайте исполняемым):
#!/bin/bash
BACKUP_DIR=/var/backups/tastyigniter
mkdir -p "$BACKUP_DIR"
DATE=$(date +"%F-%H%M")
# Бэкап файлов
sudo tar -czf "$BACKUP_DIR/tastyigniter-files-$DATE.tar.gz" -C /var/www html
# Дамп базы
sudo mysqldump -u root tastyigniter > "$BACKUP_DIR/tastyigniter-db-$DATE.sql"
# Очистка старых бэкапов старше 30 дней
find "$BACKUP_DIR" -type f -mtime +30 -deleteДобавьте cron‑задачу для ежедневного бэкапа:
sudo crontab -e
# Вставьте строку для ежедневного бэкапа в 3:00
0 3 * * * /usr/local/bin/backup_tastyigniter.shХраните бэкапы вне сервера (SFTP, внешний диск или облако).
Оптимизация производительности на Raspberry Pi
Raspberry Pi — ограниченный ресурс; примените оптимизации:
- Включите OPcache для PHP (увеличивает скорость обработки PHP‑скриптов).
- Установите разумные лимиты памяти PHP в php.ini (memory_limit, post_max_size, upload_max_filesize).
- Добавьте небольшой swap, если ОЗУ ограничена (но учтите износ SD‑карты):
sudo fallocate -l 1G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab- Используйте качественную SD‑карту или SSD через USB для лучшей надёжности.
- Рассмотрите использование Nginx в роли обратного прокси через Apache для снижения нагрузки.
Тестирование: размещение тестовых заказов
Проверьте весь цикл: от публичного меню до отображения заказа в админ‑панели и изменения статусов сотрудниками. Попросите семью или коллег сделать тестовые заказы, оплатить через интегрированный шлюз (в тестовом режиме) и отследите их в Sales.
Мы использовали систему в тестовом сценарии семейного барбекю: заказы успешно приходили на панель, и команда обрабатывала их через мобильные устройства.
Отладка: типичные ошибки и решения
500 Internal Server Error или белая страница:
- Проверьте логи Apache: /var/log/apache2/error.log
- Убедитесь, что права на директории корректны и PHP‑модули установлены.
Ошибка подключения к базе данных:
- Проверьте имя хоста, имя пользователя и пароль в настройках мастера.
- Убедитесь, что MariaDB запущена: sudo systemctl status mariadb
.htaccess игнорируется:
- Проверьте AllowOverride All для /var/www/ и включён ли модуль rewrite.
Composer не установлен или зависимости не подтянулись:
- Проверьте composer –version и запустите composer install в директории проекта при необходимости.
Карта Google не отображается:
- Проверьте API‑ключ и ограничения доменов в настройках Google Cloud Console.
Альтернативные подходы и когда этот способ не подходит
- Если вы ожидаете очень высокую нагрузку (сотни заказов в минуту), самохостинг на Raspberry Pi может оказаться недостаточно производительным — рассмотрите VPS или облачный хостинг.
- Если вы не хотите заниматься администрированием сервера и обновлениями, выберите SaaS‑решение с поддержкой и автоматикой.
- Если требуются сложные интеграции с POS‑терминалами и цепочкой поставок, возможно, стоит смотреть коммерческие POS‑системы с официальной поддержкой.
Чек-листы по ролям
Владелец ресторана:
- Зарегистрировать домен и ключи для платежей.
- Принять лицензионное соглашение и проверить внешний вид меню.
- Утвердить политику возвратов и настройки оплаты.
Администратор (технический):
- Установить сервер, PHP, MariaDB, Composer.
- Настроить SSL и резервное копирование.
- Обновлять систему и контролировать логи.
Менеджер/Официант:
- Настроить профили сотрудников и роли.
- Тестировать процесс заказа и статусы.
- Проверять отчёты о продажах и инвентаре.
Повара/Кухня:
- Проверять входящие заказы и статусы блюд.
- Подтверждать время готовки и статусы выполнения.
Критерии приёмки
- Сайт доступен по HTTPS и корректно отвечает на запросы.
- Вход в админ‑панель работает для созданного админа.
- Тестовый заказ появляется в разделе Sales и может менять статус.
- Резервная копия файлов и базы выполняется по расписанию.
Безопасность данных и соответствие требованиям приватности
- Не храните данные платёжных карт — используйте внешние платежные шлюзы.
- Собирайте минимальный объём персональных данных (имя, контакт) и храните их безопасно.
- При работе с персональными данными граждан ЕС убедитесь в соблюдении принципов GDPR: правка и удаление данных по запросу, законное основание для хранения.
Важно: локальные законы о хранении персональных данных могут требовать дополнительных мер — проконсультируйтесь со специалистом по защите данных при необходимости.
Сопровождение и обслуживание
- Плановое обслуживание: обновления ОС и PHP не реже раз в месяц.
- Мониторинг свободного места и состояния диска (df -h) и использование памяти (free -m).
- Тестирование восстановления из резервной копии раз в квартал.
Полезные команды быстрого доступа
- Перезапуск Apache: sudo systemctl restart apache2
- Проверка статуса MariaDB: sudo systemctl status mariadb
- Просмотр логов Apache: sudo tail -f /var/log/apache2/error.log
- Проверка установленных PHP‑модулей: php -m
Шаблон плана запуска (микро‑roadmap на 4 недели)
- Неделя 1: Подготовка Raspberry Pi, установка LAMP, базовая безопасность.
- Неделя 2: Установка TastyIgniter, первичная конфигурация меню и локаций.
- Неделя 3: Интеграция платежей и карт, тестирование заказов и ролей сотрудников.
- Неделя 4: Публичная публикация, SSL, мониторинг и резервное копирование.
Короткое резюме
TastyIgniter — подходящее решение для небольших ресторанов, желающих контролировать свои данные и не зависеть от SaaS‑поставщиков. Raspberry Pi обеспечивает экономичную платформу для запуска, но требует внимательного подхода к безопасности, резервному копированию и оптимизации.
Важно: перед публикацией убедитесь, что все пароли и ключи заменены на реальные и безопасно хранятся.
Короткие ссылки для изучения:
- Официальный сайт TastyIgniter — для подробного обзора функционала и плагинов.
- Документация PHP и MariaDB — если появляются ошибки на этапе установки.
Конец руководства.
Похожие материалы
Как создать опрос в LinkedIn — руководство
Android без Google — полное руководство
Сохранять и редактировать PDF в Apple Books
Как ускорить Android: проверенные советы
IFTTT Filters: умные апплеты