Gmid - багатофункціональний проксі-сервер для Gemini

2 хв. читання

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

Посилання

Помітили помилку? Повідомте автору, для цього достатньо виділити текст з помилкою та натиснути Ctrl+Enter
p.s. 524
Приєднався: 3 місяці тому
Коментарі (0)

    Ще немає коментарів

Щоб залишити коментар необхідно авторизуватися.

Вхід / Реєстрація