Даниил Франкс

Даниил Франкс

г.Казань

ИТ-парк

Даниил Франкс Даниил Франкс
+7 (843) 503-16-37 Даниил Франкс Ежедневно с 11:00 до 19:00
EN
Блог

Развёртывание собственного мессенджера

02.06.2025
Даниил Франкс
🎯 Разработка сайтов, мобильных приложений, CRM 💻 Ruby on Rails, React, React native

🎯 Зачем нужен свой мессенджер на базе Nextcloud

Собственный мессенджер на платформе Nextcloud Talk — это решение для команд и организаций, которые ценят конфиденциальность, независимость от сторонних сервисов и возможность интеграции коммуникаций с файлами, календарями и задачами в едином пространстве.


🔧 Подготовка сервера и установка базового окружения

Требования к инфраструктуре

Первоначальный доступ и обновление системы

Подключитесь к серверу по SSH и выполните обновление пакетов:

ssh root@99.11.123.94
sudo apt update && sudo apt upgrade -y

Установка LAMP-стека и зависимостей

Nextcloud требует веб-сервер, СУБД и набор PHP-модулей:

sudo apt install apache2 mariadb-server libapache2-mod-php php php-mysql php-gd php-xml php-mbstring php-curl php-zip php-bz2 php-intl php-gmp php-bcmath php-imagick php-redis redis-server unzip wget vim -y

🗄️ Настройка базы данных MariaDB

Безопасная инициализация СУБД

sudo mysql_secure_installation

Следуйте подсказкам: установите пароль root, удалите анонимных пользователей, запретите удалённый вход для root.

Создание базы и пользователя для Nextcloud

sudo mysql -u root -p

В консоли MySQL выполните:

CREATE DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
CREATE USER 'myapp'@'localhost' IDENTIFIED BY 'f4378fh37fh4f29dh8972hd923';
GRANT ALL PRIVILEGES ON nextcloud.* TO 'myapp'@'localhost';
FLUSH PRIVILEGES;
EXIT;
Рекомендуется использовать сложный пароль и сохранить его в менеджере паролей.

📦 Установка и настройка Nextcloud

Загрузка и размещение файлов

cd /var/www/
sudo wget https://download.nextcloud.com/server/releases/latest.zip
sudo unzip latest.zip
sudo mv nextcloud /var/www/nextcloud
sudo chown -R www-data:www-data /var/www/nextcloud
sudo chmod -R 755 /var/www/nextcloud

Конфигурация виртуального хоста Apache

Создайте файл /etc/apache2/sites-available/nextcloud.conf:

<VirtualHost *:80>
    ServerName test.ru
    DocumentRoot /var/www/nextcloud
    
    <Directory /var/www/nextcloud/>
        Require all granted
        AllowOverride All
        Options FollowSymLinks MultiViews
    </Directory>
    
    ErrorLog ${APACHE_LOG_DIR}/nextcloud_error.log
    CustomLog ${APACHE_LOG_DIR}/nextcloud_access.log combined
</VirtualHost>

Активируйте конфигурацию и необходимые модули:

sudo a2ensite nextcloud.conf
sudo a2enmod rewrite headers env dir mime
sudo systemctl restart apache2

Настройка HTTPS через Let's Encrypt

sudo apt install certbot python3-certbot-apache -y
sudo certbot --apache -d test.ru

Следуйте инструкциям: укажите email, согласитесь с условиями, выберите перенаправление на HTTPS.


🌐 Первоначальная настройка Nextcloud через веб-интерфейс

  1. Откройте в браузере https://test.ru
  2. Создайте учётную запись администратора
  3. В разделе «Настройка базы данных» укажите:
    • Тип: MySQL/MariaDB
    • Имя БД: nextcloud
    • Пользователь: myapp
    • Пароль: f4378fh37fh4f29dh8972hd923
    • Хост: localhost
  4. Завершите установку и войдите в панель управления

📞 Настройка TURN/STUN-сервера для аудио- и видеозвонков

Установка и конфигурация Coturn

sudo apt install coturn -y
sudo vim /etc/turnserver.conf

Пример конфигурации:

listening-port=3478
tls-listening-port=5349
listening-ip=99.11.123.94
external-ip=99.11.123.94
relay-ip=99.11.123.94
realm=test.ru
server-name=test.ru
use-auth-secret
static-auth-secret=fdfg5y57j76ge3
user-quota=12
total-quota=1200
stale-nonce=600
cert=/etc/letsencrypt/live/test.ru/fullchain.pem
pkey=/etc/letsencrypt/live/test.ru/privkey.pem
no-loopback-peers
no-multicast-peers

Активируйте службу:

sudo systemctl enable coturn
sudo systemctl start coturn

Интеграция TURN/STUN в Nextcloud Talk

  1. Перейдите в Администрирование → Talk → STUN/TURN серверы
  2. Добавьте STUN-сервер: stun:test.ru:3478
  3. Добавьте TURN-серверы:
    • turn:test.ru:3478 (UDP)
    • turn:test.ru:5349 (TCP)
  4. Укажите static-auth-secret, совпадающий с настройками Coturn

Принудительное использование TURN (опционально)

В файле /var/www/nextcloud/config/config.php добавьте:

'turn.force' => true,

Открытие портов в фаерволе

sudo ufw allow 3478/tcp
sudo ufw allow 3478/udp
sudo ufw allow 5349/tcp
sudo ufw allow 5349/udp

🔐 Безопасность сервера и управление доступом

Создание выделенного пользователя для администрирования

sudo adduser newuser

Настройка безопасного SSH-доступа

  1. Смените стандартный порт в /etc/ssh/sshd_config:
    Port 9070
    PermitRootLogin no
    AllowUsers newuser
    
  2. Откройте новый порт в фаерволе:
    sudo ufw allow 9070
    
  3. Перезагрузите SSH и проверьте подключение:
    sudo systemctl restart sshd
    ssh -p 9070 newuser@99.11.123.94
    

Предоставление прав sudo (при необходимости)

sudo visudo

Добавьте строку:

newuser ALL=(ALL:ALL) ALL

📱 Подключение мобильного приложения Nextcloud Talk

Установка и первичная настройка

  1. Установите приложение из официального магазина:
  2. При запуске укажите адрес вашего сервера: https://test.ru
  3. Войдите под учётной записью, созданной в веб-интерфейсе

Предоставление разрешений

Для корректной работы звонков и уведомлений приложению необходимо предоставить:

Начало общения

  1. После входа нажмите «+» в списке чатов
  2. Введите логин или email другого пользователя системы
  3. Выберите тип общения: текстовый чат, аудио- или видеозвонок

🔍 Диагностика и типичные проблемы

Проверка работы сервисов

sudo systemctl status apache2
sudo systemctl status mariadb
sudo systemctl status coturn
sudo tail -f /var/log/apache2/error.log

Тестирование портов TURN/STUN

telnet test.ru 3478
telnet test.ru 5349

Если звонки не устанавливаются:

Если файлы не загружаются:


Подписывайтесь на мой канал и будьте в курсе всех событий в мире it! @daniilfranxx Подписаться

ОГРНИП 323169000103441

Даниил Франкс Даниил Франкс Даниил Франкс Даниил Франкс Даниил Франкс Даниил Франкс

* Деятельность компании Meta, которая является владельцем соцсетей Facebook и Instagram, запрещена в России.