Skip to content

Current hosting

Ruffina Koza edited this page May 30, 2022 · 2 revisions

Настройка хостинга для МПМ "Грани Мира"

Пользователь: planescape, домашний каталог /home/planescape.

Установка веб-клиента

Вебклиент позволит коннектиться к маду прямо из браузера. Это упрощенный вариант клиента mudjs для мира DreamLand

git clone git@github.com:planescape-mud/mudjs.git
git checkout planescape

Установка websockify

Утилита проксирует соединения между вебсокетом и обычным телнетом. Позволяет использовать вебклиент даже для тех кодовых баз, которые сами не поддерживают веб-сокеты. Ее лучше настроить в виде сервиса.

Выкачать исходники:

git clone git@github.com:planescape-mud/websockify.git

Создать файл /lib/systemd/system/planescape-websockify.service с таким содержимым:

[Unit]
Description=websockify - provide websockets for Planescape MUD
After=network.target

[Service]
Type=simple
User=planescape
ExecStart=/home/planescape/websockify/run :4321 :4000
Restart=on-failure

[Install]
WantedBy=multi-user.target

Настроить сервис:

systemctl enable planescape-websockify.service
systemctl start planescape-websockify.service

Настройка сайта в nginx

Необходимо добиться того, чтобы при коннекте снаружи к вебсокету под адресу wss://ps.kharkov.org/mudjs-ps, перенаправляло на запущенный локально на 4321 порту сервис websockify. Также при заходе на главную страницу тут же должен появляться вебклиент (раз сайта пока нет), расположенный в каталоге /home/planescape/mudjs. Запросы к HTTP протоколу должны перенаправялть на HTTPS.

Чтобы этого всего добиться, в каталоге настроек nginx /etc/nginx/sites-available создать файл ps.kharkov.org с содержимым ниже.

upstream websockify {
    server localhost:4321;
}

server {
    listen [::]:443 ssl; # managed by Certbot
    listen 443 ssl; # managed by Certbot
    server_name ps.kharkov.org;
    ssl_certificate /etc/letsencrypt/live/ps.kharkov.org/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/ps.kharkov.org/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

    root /home/planescape/mudjs;
    index index.html;

    location /mudjs-ps {
	proxy_pass http://websockify;
	proxy_http_version 1.1;
	proxy_set_header Upgrade $http_upgrade;
	proxy_set_header Connection "Upgrade";
	proxy_read_timeout 86400;
	proxy_send_timeout 86400;
    }
}

server {
    if ($host = ps.kharkov.org) {
        return 301 https://$host$request_uri;
    } # managed by Certbot

    listen 80;
    listen [::]:80;
    server_name ps.kharkov.org;
    return 404; # managed by Certbot
}

Сделать эту конфигурацию активной и перестартовать nginx.

cd /etc/nginx/sites-enabled &&  ln -s /etc/nginx/sites-available/ps.kharkov.org 
systemctl restart nginx

Отдельно читайте документацию по certbot, чтобы понять, как запросить новый сертификат, если он нужен, настроить автообновление и настроить nginx, чтобы он пользовался этим сертификатом.