How to Wiki Database (change log)
http://[222:a8e4:50cd:55c:788e:b0a5:4e2f:a92c]
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
98 lines
3.8 KiB
98 lines
3.8 KiB
====== Twins ====== |
|
|
|
<WRAP round important 60%> |
|
При использовании в качестве прокси, данный сервер "срезает" часть контента ([[https://code.rocket9labs.com/tslocum/twins/issues/18|#18]]) |
|
|
|
Решение не найдено, если требуется реверсивное проксирование, то лучше сразу использовать сервер [[gemini_protocol:gmid|gmid]] |
|
</WRAP> |
|
|
|
Многозадачный сервер для протокола [[:gemini_protocol|Gemini]] с поддержкой кеширования, реверсивного проксирования и других функций. Написанный на языке Go. |
|
|
|
===== Установка ===== |
|
|
|
<code> |
|
go install code.rocketnine.space/tslocum/twins@latest |
|
</code> |
|
|
|
Пример маршрутизации общего IPv4 адреса доменов first.host.org и second.host.org на разные ресурсы Yggdrasil: |
|
|
|
<file - /home/twins/config.yaml> |
|
listen: "xx.xx.xx.xx:1965" |
|
hosts: |
|
first.host.org: |
|
cert: /home/twins/first.host.org/cert.pem |
|
key: /home/twins/first.host.org/key.rsa |
|
paths: |
|
- |
|
path: / |
|
proxy: gemini-insecure://[xxx:xxxx:xxxx:xxxx::xxxx]:1965 |
|
second.host.org: |
|
cert: /home/twins/second.host.org/cert.pem |
|
key: /home/twins/second.host.org/key.rsa |
|
paths: |
|
- |
|
path: / |
|
proxy: gemini-insecure://[xxx:xxxx:xxxx:xxxx::xxxx]:1966 |
|
</file> |
|
|
|
По такому же принципу можно запустить службы на свободных локальных адресах IPv4 или использовать разный порт для каждого сервера.\\ |
|
На целевых (публичных) ресурсах Yggdrasil вместо разных портов, достаточно настроить [[yggdrasil:subnet_setting]]. |
|
|
|
Сертификаты в данном примере должны быть сконфигурированы на соответствующий домен, например для first.host.org: |
|
|
|
<code> |
|
openssl req -x509 -newkey rsa:4096 -keyout key.rsa -out cert.pem -days 365 -nodes -subj "/CN=first.host.org" |
|
</code> |
|
|
|
* если запись для IPv6 - квадратные скобки в CN не используются |
|
|
|
Для запуска указываем путь к бинарному файлу twins и вторым аргументом - путь к файлу конфигурации: |
|
|
|
<code> |
|
/home/twins/go/bin/twins -config /home/twins/config.yaml |
|
</code> |
|
|
|
Можно создать сервис: |
|
|
|
<file - /etc/systemd/system/twins.service> |
|
[Unit] |
|
Description=twins |
|
After=network.target |
|
|
|
[Service] |
|
Type=simple |
|
User=twins |
|
Group=twins |
|
WorkingDirectory=/home/twins/ |
|
ExecStart=/home/twins/go/bin/twins -config /home/twins/config.yaml |
|
StandardOutput=file:/home/twins/debug.log |
|
StandardError=file:/home/twins/error.log |
|
Restart=on-failure |
|
|
|
[Install] |
|
WantedBy=multi-user.target |
|
</file> |
|
|
|
А также добавить автозапуск: |
|
|
|
<code> |
|
systemctl daemon-reload |
|
systemctl enable twins |
|
systemctl start twins |
|
</code> |
|
|
|
===== Заметки ===== |
|
|
|
У сервера twins иногда бывают проблемы с кодировкой кириллических ресурсов, поэтому целевые хосты должны отдавать кодировку в заголовке: |
|
|
|
<code> |
|
text/gemini; charset=utf-8 |
|
</code> |
|
|
|
Как указано в readme, важно также указать размер контента (size) |
|
|
|
Чтобы отключить проверку сертификата, можно использовать псевдо-протокол %%gemini-insecure://%% |
|
|
|
===== Ссылки ===== |
|
|
|
[[https://code.rocket9labs.com/tslocum/twins|Домашняя страница проекта]] |