mirror of
https://codeberg.org/postscriptum/devzone.org.ua.git
synced 2026-02-18 22:02:41 +00:00
initial commit
This commit is contained in:
commit
d4994cde4c
61 changed files with 7044 additions and 0 deletions
112
post/gmid-bahatofunktsionalnyy-proksi-server-dlia-gemini.md
Normal file
112
post/gmid-bahatofunktsionalnyy-proksi-server-dlia-gemini.md
Normal file
|
|
@ -0,0 +1,112 @@
|
|||
# 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)
|
||||
Loading…
Add table
Add a link
Reference in a new issue