Установка FreeScout Help Desk на Debian 12 с LEMP
FreeScout — лёгкая и полнофункциональная система поддержки с открытым исходным кодом. В этой инструкции описана поэтапная установка FreeScout на Debian 12 с LEMP (Nginx, MariaDB, PHP-FPM), настройка PHP, создание базы данных, конфигурация Nginx, выпуск SSL от Let’s Encrypt и запуск веб-инсталлятора. Включены советы по безопасности, типичные ошибки и контрольный список для эксплуатации.
Почему эта инструкция полезна
- Подойдёт для развёртывания внутреннего или публичного helpdesk.
- Использует проверенный стек: Nginx + MariaDB + PHP-FPM на Debian 12.
- Покрывает SSL, права файлов и автоматизацию cron.
Содержание
- Требования
- Установка зависимостей
- Настройка PHP-FPM
- Настройка MariaDB
- Загрузка кода FreeScout и права
- Конфигурация Nginx
- Получение SSL через Certbot
- Установка через веб-инсталлятор
- План запуска и cron
- Резервное копирование и обновления
- Отладка и часто встречающиеся ошибки
- Альтернативные подходы и рекомендации по безопасности
- Краткий словарь терминов
- Контрольные списки ролей
- Критерии приёмки
Требования
Перед началом убедитесь, что у вас есть:
- Сервер с Debian 12.
- Пользователь с sudo (не root).
- Доменное имя, указывающее на IP сервера.
Важно: все команды в примерах выполняются от имени пользователя с правами sudo.
Установка зависимостей
FreeScout написан на PHP и может работать с MySQL/MariaDB или PostgreSQL. В этой инструкции используется MariaDB и Nginx (LEMP).
Обновите индекс пакетов:
sudo apt updateУстановите Nginx, MariaDB, PHP-FPM и необходимые расширения:
sudo apt install nginx mariadb-server libmariadb-dev git php-fpm php-mysql php-mbstring php-xml php-imap php-zip php-gd php-curl php-intlПодтвердите установку, нажав y.
Проверьте состояние сервисов:
sudo systemctl is-enabled nginx
sudo systemctl status nginx
sudo systemctl is-enabled mariadb
sudo systemctl status mariadb
sudo systemctl is-enabled php8.2-fpm
sudo systemctl status php8.2-fpm
Проверьте версию PHP и включённые расширения:
php -v
php -m
Краткое замечание: инструкции в примере используют PHP 8.2; если у вас иная версия, адаптируйте пути сокета и конфигурационные файлы.
Настройка PHP-FPM
Откройте файл конфигурации для PHP-FPM (пример для PHP 8.2):
sudo nano /etc/php/8.2/fpm/php.iniИзмените ключевые параметры под вашу среду:
memory_limit = 512M
date.timezone = Europe/Stockholm
upload_max_filesize = 16M
cgi.fix_pathinfo=0Совет: укажите корректную временную зону вашего региона, например Europe/Moscow.
Перезапустите PHP-FPM, чтобы применить изменения:
sudo systemctl restart php8.2-fpmНастройка MariaDB
Защитите сервер MariaDB и создайте базу данных для FreeScout.
Запустите утилиту защиты:
sudo mariadb-secure-installationВо время выполнения вы будете по шагам выбирать: установить пароль root, удалить анонимных пользователей, отключить удалённый вход для root, удалить тестовую базу и перезагрузить таблицы привилегий. Рекомендуется отвечать утилите утвердительно на вопросы об удалении тестовых сущностей и применении привилегий.
Подключитесь к MariaDB как root:
sudo mariadb -u root -pСоздайте базу данных и пользователя (замените “password” на сильный пароль):
CREATE DATABASE freescout CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci;
GRANT ALL PRIVILEGES ON freescout.* TO freescout@localhost IDENTIFIED BY "password";
FLUSH PRIVILEGES;Проверьте права пользователя:
SHOW GRANTS FOR freescout@localhost;
Выйдите из клиента командой quit.
Важно: используйте безопасный пароль и по возможности храните его в менеджере секретов.
Загрузка исходников FreeScout и права доступа
Создайте директорию веб-рута и перейдите в неё:
mkdir -p /var/www/freescout; cd /var/www/freescoutСклонируйте репозиторий FreeScout:
git clone https://github.com/freescout-helpdesk/freescout .Установите владельца www-data, чтобы Nginx и PHP-FPM могли работать с файлами:
sudo chown -R www-data:www-data /var/www/freescoutУстановите рекомендуемые права:
find /var/www/freescout -type f -exec chmod 664 {} \;
find /var/www/freescout -type d -exec chmod 775 {} \;Примечание: если у вас CI/CD или развёртывание через git pull пользователем, отличным от www-data, настройте правильную стратегию обновлений и привилегий.
Конфигурация Nginx
Создайте новый серверный блок:
sudo nano /etc/nginx/sites-available/freescoutВставьте конфигурацию и замените server_name на ваш домен:
server {
listen 80;
server_name howtoforge.local;
root /var/www/freescout/public;
index index.php index.html index.htm;
error_log /var/www/freescout/storage/logs/web-server.log;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# Uncomment this location if you want to improve attachments downloading speed.
# Also make sure to set APP_DOWNLOAD_ATTACHMENTS_VIA=nginx in the .env file.
#location ^~ /storage/app/attachment/ {
# internal;
# alias /var/www/freescout/storage/app/attachment/;
#}
location ~* ^/storage/attachment/ {
expires 1M;
access_log off;
try_files $uri $uri/ /index.php?$query_string;
}
location ~* ^/(?:css|js)/.*\.(?:css|js)$ {
expires 2d;
access_log off;
add_header Cache-Control "public, must-revalidate";
}
location ~* ^/(?:css|fonts|img|installer|js|modules|[^\\\]+\..*)$ {
expires 1M;
access_log off;
add_header Cache-Control "public";
}
location ~ /\. {
deny all;
}
}Активируйте сайт и проверьте конфигурацию Nginx:
sudo ln -s /etc/nginx/sites-available/freescout /etc/nginx/sites-enabled/
sudo nginx -tЕсли тест прошёл успешно, перезапустите Nginx:
sudo systemctl restart nginx
Совет: используйте отдельный лог-файл для веб-сервера приложения, как в примере, чтобы упростить отладку.
Получение SSL/TLS через Certbot
Установите Certbot и плагин для Nginx:
sudo apt install certbot python3-certbot-nginx
Запустите Certbot и создайте сертификат (замените email и домен):
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d help.example.ioПосле успешного выпуска сертификата Certbot обновит конфигурацию Nginx и включит редирект на HTTPS. Сертификаты сохраняются в /etc/letsencrypt/live/your-domain/.
Внимание: проверяйте автоматическое продление Certbot (cron или systemd timer). По умолчанию Certbot устанавливает systemd таймер для автоматического обновления.
Установка FreeScout через веб-инсталлятор
Откройте браузер и перейдите на ваш домен. Если вы заходите по http, Certbot перенаправит на https.
Шаги в веб-инсталляторе:
- Нажмите Check Requirements, чтобы проверить PHP-расширения.

- Нажмите Check Permissions и убедитесь, что директория writable.

- В App URL укажите ваш домен, затем Setup Database.

- Выберите MySQL и укажите имя базы freescout, пользователя freescout и пароль.

- Выберите язык и часовой пояс, затем Setup Admin.

- Создайте администратора, затем нажмите Install.

После успешной установки вы увидите подтверждение и рекомендацию добавить cron задачу.

Настройка cron для планировщика задач
Добавьте cron задачу от имени www-data:
crontab -u www-data -eВставьте строку:
* * * * * php /var/www/freescout/artisan schedule:run >> /dev/null 2>&1Это запустит диспетчер задач Laravel каждую минуту.
Вход и проверка
Откройте страницу входа и используйте созданные учётные данные администратора.

После входа вы попадёте на панель управления.

Резервное копирование и обновления
Резервное копирование состоит минимум из двух частей:
- Файловой системы /var/www/freescout (исходники, логи и storage).
- Базы данных MariaDB.
Пример простой стратегии резервного копирования:
- Раз в день дамп базы:
mysqldump freescout > /backup/freescout-$(date +%F).sql. - Раз в день архивация каталога storage и важных конфигов.
- Храните резервные копии off-site или в облаке и проверяйте восстановление.
Обновления FreeScout выполняются через git pull и, при необходимости, composer install/update. Перед обновлением создайте бэкап и протестируйте изменения на тестовой среде.
Безопасность и лучшие практики
- Отключите доступ к скрытым файлам через Nginx (пример уже содержит deny для dot-files).
- Ограничьте доступ к административным страницам IP-фильтром при возможности.
- Используйте только защищённые соединения (HTTPS) и включите HSTS.
- Регулярно обновляйте пакеты ОС и PHP-расширения.
- Храните секреты (пароли, API-ключи) в защищённом хранилище.
- Минимизируйте права файлов: только необходимым пользователям предоставляйте запись.
Отладка и типичные ошибки
502 Bad Gateway после установки
- Причина: PHP-FPM не запущен или сокет другой версии. Проверьте
sudo systemctl status php8.2-fpmи путь fastcgi_pass в конфигурации Nginx.
- Причина: PHP-FPM не запущен или сокет другой версии. Проверьте
Ошибки прав доступа к storage
- Решение:
sudo chown -R www-data:www-data /var/www/freescoutи корректные права на директории.
- Решение:
Ошибка подключения к базе данных
- Проверьте правильность имени базы, пользователя, пароля и хоста. Проверьте, что MariaDB слушает локально и пользователь имеет привилегии.
Проблемы с почтой
- FreeScout требует SMTP для отправки писем. Проверьте настройки SMTP в приложении и работоспособность почтового сервера.
Сертификаты не обновляются
- Убедитесь, что systemd-таймер или cron для certbot работает:
systemctl list-timers | grep certbot. Можно принудительно протестировать:sudo certbot renew --dry-run.
- Убедитесь, что systemd-таймер или cron для certbot работает:
Альтернативные подходы
Docker и Docker Compose
- Если вы предпочитаете контейнеры, можно запустить FreeScout через готовый docker-compose с сервисами: nginx, php-fpm, mysql/mariadb. Контейнеры упрощают изоляцию и обновления.
Apache вместо Nginx
- FreeScout совместим с Apache + PHP-FPM. Конфигурация виртуального хоста будет отличаться и может быть проще для тех, кто знаком с .htaccess.
PostgreSQL
- Вместо MariaDB можно использовать PostgreSQL; потребуется адаптация настроек БД при установке.
Проверка готовности системы Критерии приёмки
- Веб-инсталлятор успешно завершён и вы залогинились как администратор.
- HTTPS включён и валидный сертификат в браузере.
- Cron работает:
crontab -u www-data -lпоказывает задачу schedule:run. - Папки storage и bootstrap/cache доступны для записи для www-data.
- Резервная политика документирована и проверена (хотя бы одно восстановление в тестовой среде).
Контрольные списки ролей
Сисадмин
- Обновить систему и установить зависимости.
- Настроить MariaDB и создать БД/пользователя.
- Настроить Nginx и SSL.
- Настроить регулярные бэкапы.
DevOps/операции
- Автоматизировать развёртывание (Ansible, Terraform, CI/CD).
- Настроить мониторинг доступности и логирования.
Администратор FreeScout
- Создать админ-пользователя и базовую конфигурацию почты.
- Настроить очереди, шаблоны и права агентов.
Проверочные тесты и критерии приёмки
- Тест входа администратора: успешный вход в панель.
- Тест отправки почты: создание тикета через почту и ручной отправки ответа.
- Тест прав: агент не имеет доступа к настройкам администратора.
- Тест резервного восстановления: восстановление дампа БД и проверка работоспособности.
Короткая методология развёртывания (шаги)
- Подготовить сервер и DNS.
- Установить Nginx, MariaDB, PHP и зависимости.
- Настроить PHP-FPM и MariaDB.
- Склонировать FreeScout и настроить права.
- Настроить Nginx и выпустить SSL.
- Завершить установку через веб-инсталлятор.
- Настроить cron и бэкапы.
- Документировать и мониторить сервис.
Факты и важные параметры
- ОС: Debian 12
- PHP: рекомендуемая версия 8.2 (в примере)
- БД: MariaDB или MySQL
- Веб-сервер: Nginx (в примере)
- Cron:
php /var/www/freescout/artisan schedule:run
Словарь на 1 строку
- LEMP: стек Linux + Nginx + MariaDB/MySQL + PHP-FPM.
- PHP-FPM: FastCGI Process Manager для PHP.
- Certbot: клиент для получения сертификатов от Let’s Encrypt.
Соображения по миграции с других систем
- При переносе данных из Zendesk/Help Scout используйте экспорт/импорт через CSV/API. Трансформация данных может требовать скриптов.
- Тестируйте импорт на копии БД и проверяйте сопоставление полей.
Поддержка и дальнейшие шаги
- Настройте мониторинг (uptime, доступность веба, использование CPU/RAM).
- Настройте управление логами и реакцию на инциденты.
- Регулярно проверяйте обновления FreeScout и зависимостей.
Краткое резюме
Вы установили FreeScout на Debian 12 с LEMP, настроили PHP-FPM и MariaDB, настроили Nginx и SSL с Certbot, прошли веб-инсталлятор и добавили cron для планировщика задач. Далее рекомендуются регулярные бэкапы, мониторинг и контроль доступа.
Важно
Перед развёртыванием в продакшен проверьте все настройки безопасности и протестируйте процедуру восстановления из резервной копии.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента