💾 Archived View for ps.cities.yesterweb.org › uk › gmid-server-for-gemini-protocol.gmi captured on 2024-08-18 at 17:03:46. Gemini links have been rewritten to link to archived content
⬅️ Previous capture (2024-05-10)
-=-=-=-=-=-=-
Gmid - багатофункціональний сервер з відкритим кодом для протоколу Gemini.
Зокрема, його зручно використовувати у якості проксі серверу для віртуальних хостів, аналогічно тому як цю функцію виконує Nginx для HTTP.
Це може бути зручно, коли немає змоги піднімати для кожного серверу маску підмережі, або коли сайт працює на VPS з одним виділеним IP.
Написаний Gmid на "C", перед його збіркою потрібно додати наступні бібліотеки:
apt install bison byacc
Буде правильним запускати і відповідно виконувати процес Gmid від окремого користувача, якого спочатку створимо та виконаємо вхід:
useradd -m gmid su gmid
Клонуємо останню версію з офіційного дзеркала на GitHub і виконуємо компіляцію:
git clone https://github.com/omar-polo/gmid.git cd gmid ./configure make
Нижче описаний приклад створення двох віртуальних хостів "host1.com" та "host2.com", які працюють на умовних адресах "1.2.3.4:1965" та "4.3.2.1:1965" відповідно.
Таким чином, файл конфігурації виглядатиме так:
server "host1.com" { listen on 0.0.0.0 port 1965 cert "/home/gmid/host/host1.com/cert.pem" key "/home/gmid/host/host1.com/key.rsa" proxy { sni "host1.com" relay-to 1.2.3.4 port 1965 verifyname off } } server "host2.com" { listen on 0.0.0.0 port 1965 cert "/home/gmid/host/host2.com/cert.pem" key "/home/gmid/host/host2.com/key.rsa" proxy { sni "host2.com" relay-to 4.3.2.1 port 1965 verifyname off } }
На прикладі конфігурації вище, додамо само-підписаний сертифікат на прикладі "host1.com", необхідний для роботи протоколу Gemini.
Аналогічним способом створюється й сертифікат для "host2.com", замінивши значення атрибуту "CN":
mkdir /home/gmid/host/host1.com cd /home/gmid/host/host1.com openssl req -x509 -newkey rsa:4096 -keyout key.rsa -out cert.pem -days 3650 -nodes -subj "/CN=host1.com"
Щоб наш проксі-сервер стартував разом з системою і працював як процес "systemd", додамо для Gmid юніт:
[Unit] Description=gmid After=network.target [Service] Type=simple User=gmid Group=gmid WorkingDirectory=/home/gmid/ ExecStart=/home/gmid/gmid/gmid -c /home/gmid/gmid.conf -f -v StandardOutput=file:/home/gmid/output.log StandardError=file:/home/gmid/debug.log Restart=on-failure [Install] WantedBy=multi-user.target
Оновлюємо конфігурацію та запускаємо сервер:
systemctl daemon-reload systemctl enable gmid systemctl start gmid