initial commit

This commit is contained in:
postscriptum 2025-09-11 12:43:12 +03:00
commit 259fee630b
127 changed files with 7811 additions and 0 deletions

View file

@ -0,0 +1,122 @@
# 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