Как установить и настроить osTicket на VPS
Когда заявки от клиентов сыпятся в общий почтовый ящик, а «кто отвечает за это письмо» решается в чате отдела, поддержка быстро превращается в хаос: письма теряются, дубли обрабатывают дважды, а SLA существует только на бумаге. osTicket закрывает эту проблему без подписки на облачный хелпдеск — вы разворачиваете систему на своём VPS, полностью владеете данными клиентов и не платите за каждого агента отдельно. Дальше — реальная установка с нуля: от голого сервера до рабочей очереди тикетов с приёмом писем по почте.
Содержание
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Что такое osTicket и кому он подходит
osTicket — open-source тикет-система на PHP с историей больше пятнадцати лет: она пережила смену нескольких поколений SaaS-хелпдесков именно потому, что решает базовую задачу без лишней сложности. Из коробки есть очереди («отделы»), формы заявок, база знаний, SLA-плагин, приём писем по IMAP/POP3 и веб-форма для клиентов.
Кому подходит:
- малому и среднему бизнесу, которому не нужны сотни интеграций Zendesk или Freshdesk, а нужна рабочая очередь тикетов;
- компаниям с требованиями по хранению данных клиентов на своей инфраструктуре (медицина, финансы, госзаказ);
- тем, кто устал платить за агента в облачном хелпдеске и готов один раз настроить сервер.
Если вам ближе более современный интерфейс и встроенный чат — присмотритесь к Zammad, он решает похожую задачу, но требует больше ресурсов и завязан на Ruby-стек вместо PHP. osTicket выигрывает там, где важна простота и минимальные требования к серверу.
Что нужно подготовить перед установкой
osTicket — классическое PHP-приложение поверх веб-сервера и MySQL-совместимой СУБД. Минимальный набор:
| Компонент | Требование |
|---|---|
| ОС | Ubuntu 24.04 LTS (подойдёт и Debian 12) |
| Веб-сервер | Apache 2.4 с mod_php или nginx + PHP-FPM |
| PHP | 8.1+ с расширениями mysqli, imap, gd, mbstring, xml, curl, intl, apcu |
| СУБД | MySQL 8.0 или MariaDB 10.6+ |
| Ресурсы | от 1 vCPU / 2 ГБ RAM для небольшой команды, 2 vCPU / 4 ГБ — с запасом |
| Диск | от 20 ГБ, растёт за счёт вложений в тикетах |
Для рабочей поддержки с почтовыми уведомлениями и вложениями закладывайте минимум 2 ГБ RAM — на 1 ГБ PHP-FPM и MySQL начнут конкурировать за память при одновременной обработке нескольких запросов. Точную нагрузку под вашу команду проще прикинуть по числу агентов и объёму переписки — цифры выше ориентировочные, у вас может отличаться.
Перед стартом убедитесь, что у сервера есть белый IP и вы можете направить на него DNS-запись для домена поддержки (например, support.example.com) — она понадобится и для веб-интерфейса, и для SSL-сертификата.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать серверРазворачиваем LAMP-окружение
Обновите систему и поставьте Apache, PHP и модули, которые требует osTicket:
sudo apt update && sudo apt upgrade -y
sudo apt install -y apache2 mariadb-server \
php php-mysqli php-imap php-gd php-mbstring php-xml \
php-curl php-intl php-apcu php-cli php-common libapache2-mod-php unzip
Проверьте версию PHP и включите нужные модули Apache:
php -v
sudo a2enmod rewrite
sudo systemctl restart apache2
Настройте MariaDB (первичное закрепление root-пароля и удаление тестовых баз):
sudo mysql_secure_installation
Отвечайте Y на все вопросы, кроме, возможно, включения плагина unix_socket — если планируете подключаться к MySQL по паролю из скриптов бэкапа, оставьте N.
Создайте базу данных и отдельного пользователя под osTicket — не используйте root в конфиге приложения:
CREATE DATABASE osticket CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'osticket'@'localhost' IDENTIFIED BY 'СЛОЖНЫЙ_ПАРОЛЬ';
GRANT ALL PRIVILEGES ON osticket.* TO 'osticket'@'localhost';
FLUSH PRIVILEGES;
Если предпочитаете держать MySQL на отдельном сервере или тонко настраивать конфиг под нагрузку — этот процесс подробнее разобран в статье про установку MySQL на VPS.
Загружаем и разворачиваем файлы osTicket
Скачайте актуальный релиз с официального GitHub-репозитория проекта — не берите архивы со сторонних сайтов, там нередко подмешивают вредоносный код:
cd /tmp
curl -L -o osticket.zip https://github.com/osTicket/osTicket/releases/latest/download/osTicket.zip
unzip osticket.zip -d osticket
sudo mkdir -p /var/www/support
sudo cp -r osticket/upload/* /var/www/support/
Проверяйте номер версии на странице релизов проекта перед установкой — линейка обновляется, и фиксировать конкретную цифру здесь смысла нет, важно брать актуальный стабильный релиз, а не бету.
Подготовьте конфиг и права доступа — osTicket требует, чтобы include/ost-config.php был доступен веб-серверу на запись только на время установки:
sudo cp /var/www/support/include/ost-sampleconfig.php /var/www/support/include/ost-config.php
sudo chown -R www-data:www-data /var/www/support
sudo find /var/www/support -type d -exec chmod 755 {} \;
sudo find /var/www/support -type f -exec chmod 644 {} \;
sudo chmod 666 /var/www/support/include/ost-config.php
Создайте виртуальный хост Apache:
# /etc/apache2/sites-available/support.conf
<VirtualHost *:80>
ServerName support.example.com
DocumentRoot /var/www/support
<Directory /var/www/support>
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/support-error.log
CustomLog ${APACHE_LOG_DIR}/support-access.log combined
</VirtualHost>
sudo a2ensite support.conf
sudo systemctl reload apache2
Если вы уже используете nginx как обратный прокси перед несколькими сайтами на сервере, вариант связки описан в статье про nginx в роли reverse proxy — там же логика применима и к Apache-бэкенду osTicket.
Проходим веб-установщик
Откройте в браузере http://support.example.com/setup/ — запустится мастер установки на несколько шагов:
- System Requirements Check — мастер проверит расширения PHP и права на запись. Если что-то красным — вернитесь к списку модулей выше и
chmod. - Настройки компании и первого администратора — укажите название, email поддержки (на него будут приходить системные уведомления) и учётные данные суперпользователя.
- Подключение к базе данных — хост
localhost, имя базыosticket, пользователь и пароль, созданные на предыдущем шаге. - Завершение установки — мастер создаст таблицы и попросит удалить каталог
/setup/из соображений безопасности.
После установки обязательно верните конфигу безопасные права и удалите каталог установщика:
sudo chmod 644 /var/www/support/include/ost-config.php
sudo rm -rf /var/www/support/setup
Пропуск этого шага — самая частая причина взлома свежих инсталляций osTicket: открытый на запись конфиг и доступный установщик видны любому, кто просканирует ваш домен.
Настраиваем приём писем и уведомления
Главная ценность тикет-системы — превращать письма в заявки автоматически, а не требовать от клиентов регистрации на портале. У osTicket два рабочих способа получать почту:
Email Piping (рекомендуется) — почтовый сервер сразу передаёт письмо скрипту api/pipe.php через MTA, без опроса ящика по расписанию. Быстрее и надёжнее IMAP-поллинга, но требует, чтобы почта для домена поддержки принималась на этом же сервере или пересылалась через настроенный MTA. Если у вас уже поднят Postfix, вариант связки описан в статье про настройку почтового сервера Postfix; в конфиге алиасов добавляется строка вида:
support: "|/usr/bin/php /var/www/support/api/pipe.php"
IMAP/POP3-опрос — проще в настройке для старта: в админке Admin Panel → Emails → Add New Email укажите почтовый ящик поддержки (например, отдельный Gmail для бизнеса или ящик на вашем почтовом сервере), протокол IMAP, порт 993 с SSL. osTicket сам заберёт письма по крону, но с задержкой в несколько минут против мгновенного пайпинга.
Настройте крон для фоновых задач (очистка, авто-закрытие, опрос почты при IMAP-режиме):
sudo crontab -u www-data -e
Добавьте строку:
*/5 * * * * /usr/bin/php /var/www/support/api/cron.php
Без этого крона перестанут работать напоминания по SLA, авто-закрытие неактивных тикетов и, при IMAP-режиме, сам приём писем.
SSL, безопасность и резервное копирование
Домен поддержки принимает персональные данные клиентов — HTTP без шифрования здесь недопустим. Выпустите сертификат Let's Encrypt (процесс подробно разобран в статье про установку Let's Encrypt SSL на VPS):
sudo apt install -y certbot python3-certbot-apache
sudo certbot --apache -d support.example.com
Дополнительно закройте базовые векторы атаки:
- ограничьте доступ к серверу файрволом, разрешив только 80/443/22 — если ещё не настраивали, см. статью про firewall UFW на VPS;
- включите двухфакторную аутентификацию для агентов в
Admin Panel → Staff → Add New Staff— опция доступна для каждого сотрудника; - отключите регистрацию новых учётных записей агентов через веб-интерфейс, если её не используете;
- регулярно обновляйте osTicket — уязвимости в тикет-системах, торчащих наружу, находят и эксплуатируют быстро.
Резервное копирование — это дамп базы и файлы вложений, которые osTicket хранит в /var/www/support/attachments (в зависимости от настроек — либо на диске, либо в самой БД):
mysqldump -u osticket -p osticket | gzip > /backup/osticket-$(date +%F).sql.gz
tar -czf /backup/osticket-files-$(date +%F).tar.gz /var/www/support
Вынесите оба архива за пределы сервера — на объектное хранилище или другой VPS. Если тикет-система хранит переписку с клиентами за несколько лет, потеря базы без бэкапа — это не техническая неприятность, а репутационный риск.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать серверНужны сами нейросети для контента?
Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.
Частые вопросы
osTicket бесплатен полностью или есть платная версия?
Сама система (osTicket Open Source) бесплатна и распространяется по GPL. Компания-разработчик отдельно предлагает облачный хостинг osTicket как услугу — но для self-hosted установки на своём VPS платить не нужно.
Можно ли обойтись без Apache и поставить osTicket на nginx?
Да, через PHP-FPM. Официально в документации акцент на Apache с mod_php из-за поддержки .htaccess, но связка nginx + PHP-FPM работает — нужно вручную прописать try_files и rewrite-правила для /scp/ и API, которые Apache берёт из .htaccess автоматически.
Как перенести osTicket на другой сервер?
Перенести базу данных дампом mysqldump, скопировать каталог /var/www/support целиком (включая include/ost-config.php с настройками подключения к БД) и обновить DNS-запись домена на новый IP.
Почему письма не превращаются в тикеты?
Чаще всего — не настроен крон (api/cron.php при IMAP-режиме) или неверные учётные данные почтового ящика в Admin Panel → Emails. Проверьте логи Admin Panel → Manage → Logs — там видны ошибки подключения к IMAP.
Нужен ли отдельный сервер под osTicket или можно на общем VPS с другими сайтами?
Для небольшой команды хватит совместного VPS — osTicket не требователен к ресурсам. Разделяйте только если поддержка растёт до десятков агентов и сотен тикетов в день, тогда лучше выделить ресурсы под БД отдельно.
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →