RGP Chat — установка на свой сервер
Чат — PHP-приложение с базой MariaDB/MySQL. Ставится на обычный сервер за 15–20 минут. Все данные и секреты остаются у вас.
Что нужно
- Сервер с Ubuntu 22.04+ или Debian 12 и root-доступом, белый IP.
- Домен или поддомен: рекомендуем
chat.вашсайт.ruс записьюAна IP сервера. - Пакеты:
nginx,php-fpm8.2 или новее с расширениямиmysql,mbstring,curl,gd,xmlиopenssl;mariadb-server10.6+ (или MySQL 8);certbotиpython3-certbot-nginx;rsync.
apt update
apt install -y nginx php-fpm php-mysql php-mbstring php-curl php-gd php-xml mariadb-server certbot python3-certbot-nginx rsync
Шаг 1. Код
Распакуйте пакет rgp-chat-*.tar.gz в каталог чата:
mkdir -p /var/www/chat-mysite/chat
tar -xzf rgp-chat-1.0.tar.gz -C /var/www/chat-mysite/chat
mkdir -p /var/www/chat-mysite/chat/uploads /var/www/chat-mysite/chat/cache
Шаг 2. База данных
DBPASS=$(openssl rand -hex 16); echo "Пароль БД: $DBPASS"
mysql -e "CREATE DATABASE chat_mysite CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'chat_mysite'@'localhost' IDENTIFIED BY '$DBPASS';
GRANT ALL ON chat_mysite.* TO 'chat_mysite'@'localhost'; FLUSH PRIVILEGES;"
Шаг 3. Настройки и секреты
Скопируйте config.example.php в /var/www/chat-mysite/chat/config.php и поправьте значения:
| Константа | Что вписать |
|---|---|
CHAT_TITLE_OVERRIDE |
Название чата |
CHAT_ACCENT |
Цвет кнопок, #rrggbb |
CUSTOM_LOGIN_URL |
Адрес входа на вашем сайте (кнопка «Войти на сайте» для гостя) |
CUSTOM_ROOMS |
Список комнат: ключ, название, описание (по желанию) |
SITE_BASE_URL |
https://chat.вашсайт.ru |
DB_NAME, DB_USER |
Как создали на шаге 2 |
OWNER_AGENT_ID |
Ваш sub (id в вашем сайте): станете владельцем чата |
Отдельным файлом secrets.php (права 600, не коммитить) задайте секреты:
<?php
define('DB_PASS', 'ПАРОЛЬ_БД_ИЗ_ШАГА_2');
define('APP_TICKET_SECRET', 'ДЛИННАЯ_СЛУЧАЙНАЯ_СТРОКА'); // openssl rand -hex 32; тот же секрет — на сервере вашего сайта
chmod 600 /var/www/chat-mysite/chat/secrets.php
chown -R www-data:www-data /var/www/chat-mysite
cd /var/www/chat-mysite/chat && sudo -u www-data php install.php # создаёт таблицы
Шаг 4. nginx
/etc/nginx/sites-available/chat.mysite.ru:
server {
server_name chat.mysite.ru;
root /var/www/chat-mysite/chat;
index index.php index.html;
client_max_body_size 40m;
location ~ /(secrets|config)\.php$ { deny all; }
location ~ ^/(lib|cache|tools|cron)/ { deny all; }
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php-fpm.sock;
fastcgi_read_timeout 120s;
}
location ~ /uploads/ { add_header Cache-Control "public, max-age=604800"; }
location ~ /\. { deny all; }
listen 80;
listen [::]:80;
}
ln -s /etc/nginx/sites-available/chat.mysite.ru /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx
certbot --nginx -d chat.mysite.ru --redirect # выпускает сертификат; DNS уже должен указывать на сервер
Обязательно проверьте, что закрыты секретные файлы (должно быть 403):
curl -s -o /dev/null -w "%{http_code}\n" https://chat.mysite.ru/secrets.php
curl -s -o /dev/null -w "%{http_code}\n" https://chat.mysite.ru/config.php
curl -s -o /dev/null -w "%{http_code}\n" https://chat.mysite.ru/tools/chatctl.php
Шаг 5. Вебхуки (если нужны)
echo '* * * * * www-data php /var/www/chat-mysite/chat/cron/webhooks.php >/dev/null 2>&1' > /etc/cron.d/chat-mysite-webhooks
Шаг 6. Проверка
- Откройте
https://chat.mysite.ru/: страница загрузилась, виден блок «Как войти». - Сделайте билет по
DEVELOPER-GUIDE.md, раздел 3, и откройте ссылку входа: вы в чате, комнаты доступны. - Создайте ключ API:
sudo -u www-data php tools/chatctl.php create-key "Проверка"и вызовитеcurl … /v1.php?r=ping.
Обновление
Распакуйте новый пакет поверх каталога, не затирая config.php, secrets.php, uploads/:
tar -xzf rgp-chat-NEW.tar.gz -C /var/www/chat-mysite/chat --exclude=config.php --exclude=secrets.php --exclude=uploads
cd /var/www/chat-mysite/chat && sudo -u www-data php install.php # добавит недостающие таблицы
Резервные копии
Копируйте раз в сутки базу и загрузки:
mysqldump chat_mysite | gzip > /backup/chat_mysite-$(date +%F).sql.gz
tar -czf /backup/chat_mysite-uploads-$(date +%F).tgz -C /var/www/chat-mysite/chat uploads
Что в самостоятельной установке не работает
Видеоэфиры и звонки в чатах платформы требуют отдельного медиасервера: в этот пакет он не входит. Уведомления на телефон
(Web Push) заработают, если сгенерировать ключи VAPID и вписать VAPID_PUBLIC_KEY в конфиг и VAPID_PRIVATE_PEM в secrets.php.