mirror of
https://codeberg.org/postscriptum/devzone.org.ua.git
synced 2026-02-18 22:02:41 +00:00
112 lines
No EOL
4 KiB
Markdown
112 lines
No EOL
4 KiB
Markdown
# Gmid - багатофункціональний проксі-сервер для Gemini
|
||
|
||
[Gmid](https://gmid.omarpolo.com) - багатофункціональний сервер з відкритим кодом для протоколу [Gemini](https://devzone.org.ua/post/protokol-gemini-iak-legka-alternativa-http).
|
||
|
||
Зокрема, його зручно використовувати у якості проксі серверу для віртуальних хостів, аналогічно тому як цю функцію виконує 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
|
||
```
|
||
|
||
## Посилання
|
||
* [Офіційна сторінка проекту](https://gmid.omarpolo.com)
|
||
* [Дзеркало на GitHub](https://github.com/omar-polo/gmid) |