Установка и настройка системы на VDS сервер
Афалина - это обычный веб-сервер, который слушает определенный порт и имеет API, через которое происходит общение с пользователем в браузере. Таким образом, если у вас имеется VPS/VDS хостинг, то вы можете скачать серверную версию Афалины и установить её на ваш сервер. В этом случае, все запросы в службу поддержки и переписка с пользователями будет хранится у вас. Функционально self-hosted версия идентична онлайн-сервису за исключением специфичных для сервиса возможностей.
Рассмотрим вариант установки Афалины на Ubuntu сервер с работающим сайтом под Nginx. Предположим, есть сайт www.afalinadesk.ru, и хочется установить сервер службы поддержки так, чтобы можно было обращаться к нему по адресу support.afalinadesk.ru.
Шаг 1. Готовим место
Заходим на сервер и создаём директорию, куда будет скопировано приложение. В этой же самой директории будут хранится база данных и все служебные файлы. Например, создаём папку /home/.apps/afalina
. Так как на сервере установлена Ubuntu, то следует скачать и распаковать туда серверную версию для Linux - загрузить дистрибутив можно по этой ссылке. Архив содержит единственный файл afalina-server
. Можете распаковать программу на локальной машине, а потом скопировать приложение на сервер.
На самом деле не обязательно устанавливать Афалину на тот же сервер, где работает ваш сайт. Вы даже можете вообще не иметь сайта, но тогда всё равно придётся приобрести виртуальный сервер.
Шаг 2. Первый запуск
Зайдите в терминал сервера, в директорию, куда был скопирован исполняемый файл и запустите его. Вам нужно будет последовательно указать следущие параметры:
- Хост - доменное имя сервера. В нашем примере, это
support.afalinadesk.ru
; - Порт - порт, который будет слушать сервер;
- Логин администратора - логин администратора системы. Он будет иметь все права на работу с сервером;
- Пароль - укажите и затем повторите пароль администратора.

После этого установка сервера будет завершена, а программа закончит свою работу. В директории должны создасться несколько поддиректорий и файлы настроек. Основные настройки сохранились в файле config.yaml
. Он должен иметь примерно такой вид:
1port: 5110
2host: support.afalinadesk.ru
3jwt: d2s75ii93jvn
4salt: 6cnw48f9wc1tpj33
Пока сервер не начал работу, вы можете изменить любые параметры. В дальнейшем нельзя менять параметр salt
.
Шаг 3. Создание systemd сервиса
Зарегистрируем сервер Афалина в качестве сервиса. В этом случае он будет автоматически запускаться после перезагрузки системы. Для этого создадим файл с расширением .service
в соответствующей директории - для Ubuntu это /lib/systemd/system
. Имя файлу можно дать любой, но желательно, чтобы оно совпадало с именем директории или приложения, например, afalina
. Ниже приведен самый простой вариант файла afalina.service
, хотя .service
файл может иметь гораздо больше параметров. Самое главное - указать путь к программе в поле ExecStart
.
1[Unit]
2Description=Afalina Service
3
4[Service]
5ExecStart=/home/.apps/afalina/afalina-server
6WorkingDirectory=/home/.apps/afalina
7
8[Install]
9WantedBy=multi-user.target
Запускаем и подключаем наш сервис. Во всех командах ниже указывайте вместо afalina
выбранное вами имя сервиса.
1systemctl enable afalina.service
2systemctl start afalina.service
Если вы измените файл .service, то необходимо выполнить systemctl daemon-reload
для обновления настроек. Для получения статуса сервиса используйте systemctl status afalina.service
или service afalina status
.
1root@ubuntu-server:/home/.apps/afalina# service afalina status
2● afalina.service - Afalina Service
3 Loaded: loaded (/lib/systemd/system/afalina.service; enabled; vendor preset: enabled)
4 Active: active (running) since Tue 2025-01-21 08:46:54 UTC; 13s ago
5 Main PID: 4181521 (afalina-server)
6 Tasks: 6 (limit: 4770)
7 Memory: 5.5M
8 CGroup: /system.slice/afalina.service
9 └─4181521 /home/.apps/afalina/afalina-server
10
11Jan 21 08:46:54 ubuntu-server systemd[1]: Started Afalina Service.
Если поле Active
равно active (running)
, то значит вы всё сделали правильно и сервер Афалина работает в штатном режиме. В будущем, после обновления версии сервера afalina-server
следует вызвать service afalina restart
.
Шаг 4. Настройка Nginx
Осталось внести изменения в файл конфигурации сайта для nginx, чтобы он перенаправлял все запросы к хосту на работающий Афалина сервер. В примерах ниже везде используется домен support.afalinadesk.ru
, вы должны указывать выбранное вами имя домена. Создайте файл /etc/nginx/conf.d/support.afalinadesk.ru.conf
. Вы можете взять за основу содержимое .conf
файла ниже.
1server {
2 server_name support.afalinadesk.ru;
3 listen 80;
4 root /home/.apps/afalina;
5 location ~ /.well-known {
6 allow all;
7 }
8 location / {
9 access_log off;
10 proxy_pass http://127.0.0.1:5110;
11 proxy_set_header Host $host;
12 proxy_set_header X-Real-IP $remote_addr;
13 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
14 proxy_redirect off;
15 }
16}
Кроме этого, не забудьте в параметре proxy_pass http://127.0.0.1:5110;
указать порт из файла настроек.
Осталось сохранить .conf
файл и перезапустить nginx командой service nginx restart
.
Шаг 5. Добавление домена 3-го уровня
Чтобы обращения к домену 3-го уровня заработали необходимо добавить соответствующую A-запись к домену второго уровня. В нашем примере, нужно у регистратора в настройках домена afalinadesk.ru
добавить такую A-запись.
- Поддомен - выбранное вами имя поддомена. Например,
support
; - IP-адрес - IP-адрес сервера, куда была установлена Афалина.
После того, как такая запись добавлена потребуется некоторое время, чтобы изменения вступили в силу. Если всё сделано правильно, то в браузере при указании вашего домена должна открываться примерно такая страница.

Видите, браузер красным значком показывает, что соединение незащищено. Необходимо добавить поддержку https
.
Шаг 6. Поддержка https
Проще всего использовать бесплатные сертификаты Let's Encrypt. Вероятнее всего, у вас на сервере уже установлен certbot
, поэтому вопрос его установки рассматривать не будем. Эту информацию легко можно найти в интернете.
Запускаем в терминале certbot certonly
. В первом выборе нажмите цифру 3 - Place files in webroot directory (webroot)
. Далее вы должны будете указать имя вашего домена. В нашем случае указан домен support.afalinadesk.ru
.

В результате файлы сертификата создались в директории /etc/letsencrypt/live/support.afalinadesk.ru/
. Сертификат создаётся на определённый срок, поэтому не забывайте продлять сертификат до окончания его действия. Это можно сделать командой certbot renew
.
Шаг 7. Добавляем сертификат в .conf
Сейчас осталось добавить поддержку https
в .conf
файл с настройками Nginx, который был создан на шаге 4. Ниже приведена примерная версия новой конфигурации.
1server {
2 server_name support.afalinadesk.ru;
3 listen 80;
4 root /home/.apps/afalina;
5 location ~ /.well-known {
6 allow all;
7 }
8 return 301 https://support.afalinadesk.ru$request_uri;
9}
10
11server {
12 listen 443 ssl;
13
14 server_name support.afalinadesk.ru;
15
16 # Указываем пути к сертификатам
17 ssl_certificate /etc/letsencrypt/live/support.afalinadesk.ru/fullchain.pem;
18 ssl_certificate_key /etc/letsencrypt/live/support.afalinadesk.ru/privkey.pem;
19
20 ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
21 ssl_prefer_server_ciphers on;
22
23 ssl_dhparam /etc/ssl/certs/dhparam.pem;
24 ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
25 ssl_session_timeout 1d;
26 ssl_session_cache shared:SSL:50m;
27
28 ssl_stapling on;
29 ssl_stapling_verify on;
30 add_header Strict-Transport-Security max-age=15768000;
31
32 location ~ /.well-known {
33 allow all;
34 }
35
36 root /home/.apps/afalina;
37 index index.html index.htm;
38
39 location / {
40 access_log off;
41 proxy_pass http://127.0.0.1:5110;
42 proxy_set_header Host $host;
43 proxy_set_header X-Real-IP $remote_addr;
44 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
45 proxy_redirect off;
46 }
47}
Не забудьте заменить все пути и доменные имена на ваши значения!
Сохраните изменённый .conf
файл и перезапустите Nginx - service nginx restart
. Обновите страницу в браузере, у неё должен сменится путь на https://ваш_домен
и исчезнуть предупреждающий значок.
Укажите логин и пароль, которые были выбраны при установке системы. Можно начинать работать.
