mirror of
https://codeberg.org/postscriptum/gemlog.git
synced 2026-02-19 22:42:39 +00:00
122 lines
No EOL
4.1 KiB
Text
122 lines
No EOL
4.1 KiB
Text
# Gmid - багатофункціональний сервер для Gemini
|
||
|
||
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
|
||
```
|
||
|
||
## Налаштування reverse-proxy
|
||
|
||
Нижче описаний приклад створення двох віртуальних хостів "host1.com" та "host2.com", які працюють на умовних адресах "1.2.3.4:1965" та "4.3.2.1:1965" відповідно.
|
||
|
||
Таким чином, файл конфігурації виглядатиме так:
|
||
|
||
``` /home/gmid/gmid.conf
|
||
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 юніт:
|
||
|
||
``` /etc/systemd/system/gmid.service
|
||
[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
|
||
```
|
||
|
||
* "-f" - запуск в режимі "foreground", інакше процес стартуватиме у фоновому режимі без журналювання
|
||
* "-v" - або "verbose" для звітів відлагодження
|
||
|
||
Оновлюємо конфігурацію та запускаємо сервер:
|
||
|
||
```
|
||
systemctl daemon-reload
|
||
systemctl enable gmid
|
||
systemctl start gmid
|
||
```
|
||
|
||
## Посилання
|
||
|
||
=> gemini://gmid.omarpolo.com Офіційна сторінка проєкту
|
||
=> https://github.com/omar-polo/gmid Дзеркало на GitHub
|
||
|
||
### Дивіться також
|
||
|
||
=> gemini-protocol-as-http-alternative.gmi Протокол Gemini як альтернатива HTTP |