mirror of
https://codeberg.org/postscriptum/gemlog.git
synced 2026-02-19 06:22:41 +00:00
add i2p-capsule-in-gemini-space-with-agate.gmi
This commit is contained in:
parent
aea198fdae
commit
b31935a7c9
2 changed files with 131 additions and 0 deletions
130
public/uk/i2p-capsule-in-gemini-space-with-agate.gmi
Normal file
130
public/uk/i2p-capsule-in-gemini-space-with-agate.gmi
Normal file
|
|
@ -0,0 +1,130 @@
|
|||
# Публікація капсули Gemini в I2P на прикладі сервера Agate
|
||||
|
||||
Стало цікаво перевірити роботу протоколу Gemini в контексті I2P, адже вочевидь - ці технології ніби створені одна для одної:
|
||||
|
||||
* мінімальний розмір контенту, та одно-поточні запити до сервера: що добре для швидкості відгуку та легкі для мережі I2P в цілому, адже не тягатимуть купу асинхронних скриптів, трекерів, стилів, медіа та іншого мотлоху
|
||||
* приватно-орієнтованість: немає заголовків з рефералами, сторонніх підвантажень контенту, а отже - не потрібні костилі з ізольованими контейнерами, окремі браузери з PAC чи правила фаєрволу, що фільтруватимуть потенційні витоки з'єднань на Інтернет
|
||||
* відсутність потреби у виділеному IP: роутер I2P може поставити собі кожен, для цього не потрібно навіть відкривати порт
|
||||
* ідеально для соціальних децентралізованих застосунків: авторизація на базі TLS (https://geminiprotocol.net/docs/protocol-specification.gmi#client-certificates) не передбачає передачу на сервер класичних для Веб e-mail, паролів та іншої потенційно чутливої інформації
|
||||
|
||||
Сьогодні таки зібрався і вирішив спробувати опублікувати свою капсулу. При цьому, вирішив не проксувати (proxy) трафік I2P на віддалений хостинг Yesterweb, а саме задзеркалити копію ресурсу (mirror) на локальному сервері.
|
||||
|
||||
## I2P
|
||||
|
||||
Тут передбачається, що вже встановлено роутер I2P. Якщо ні - перегляньте попередній матеріал:
|
||||
=> setup-i2pd-with-i2p-network-connection-over-yggdrasil.gmi Встановлення роутера i2pd з підключенням до мережі I2P через Yggdrasil
|
||||
або скористайтесь офіційною документацією, наприклад i2pd:
|
||||
=> https://i2pd.readthedocs.io/en/latest/
|
||||
|
||||
Для публікації капсули, достатньо додати наступну конфігурацію до файлу `/var/lib/i2pd/tunnels.conf`:
|
||||
|
||||
``` tunnels.conf
|
||||
[gemini]
|
||||
type = server
|
||||
host = 127.0.0.1
|
||||
port = 1965
|
||||
keys = gemini.dat
|
||||
```
|
||||
* `gemini` - умовна назва вашого профілю
|
||||
* шлях до `tunnels.conf` може відрізнятись, в залежності від налаштувань
|
||||
|
||||
Тепер потрібно перезапустити i2pd:
|
||||
|
||||
``` bash
|
||||
systemctl i2pd restart
|
||||
```
|
||||
|
||||
Після цього, роутером буде згенеровано ключ тунелю - по суті, він є вашим доменом в мережі I2P (знаходиться відповідно в файлі `/var/lib/i2pd/gemini.dat`) тому бажано забекапити його копію у надійному місці для можливості відновлення.
|
||||
|
||||
## Agate
|
||||
|
||||
Agate (https://github.com/mbrubeck/agate) - це один з відомих серверів Gemini для публікації статики Gemtext, написаний мовою Rust.
|
||||
|
||||
Взагалі, я хотів би опублікувати дзеркало на усі мережі: I2P, Yggdrasil і Mycelium, але сервер Agate має свою специфіку роботи з SNI: чомусь, більшість розробників в очі не бачили IPv6 і таке поняття як мульти-стек. Тому забігаючи на перед - ця інструкція підходить лише для публікації одного домену в I2P; якщо ви хочете забіндитись на різні мережі, то подивіться:
|
||||
=> gmid-server-for-gemini-protocol.gmi Gmid - багатофункціональний сервер для Gemini
|
||||
|
||||
### Встановлення
|
||||
|
||||
Інформація доступна в репозиторії проєкту, але я зібрав для себе по вже натоптаному шляху:
|
||||
|
||||
``` bash
|
||||
git clone https://github.com/mbrubeck/agate.git
|
||||
cd agate
|
||||
cargo build --release
|
||||
sudo install target/release/agate /usr/local/bin/agate
|
||||
```
|
||||
=> install-latest-rust-version-on-linux.gmi Встановлення останньої версії Rust в Linux
|
||||
|
||||
Створімо окремого користувача з домашньою текою, від якого запускатимемо сервер і де зберігатимемо статичні файли:
|
||||
|
||||
``` bash
|
||||
useradd -m agate
|
||||
```
|
||||
|
||||
### Systemd
|
||||
|
||||
``` /etc/systemd/system/agate.service
|
||||
#/etc/systemd/system/agate.service
|
||||
|
||||
[Unit]
|
||||
After=network-online.target
|
||||
Wants=network-online.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
|
||||
User=agate
|
||||
Group=agate
|
||||
|
||||
WorkingDirectory=/home/agate
|
||||
ExecStart=/usr/local/bin/agate --content /home/agate/public --addr 127.0.0.1:1965 --hostname xxxx.b32.i2p
|
||||
|
||||
StandardOutput=file:///home/agate/debug.log
|
||||
StandardError=file:///home/agate/error.log
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
```
|
||||
* `xxxx.b32.i2p` - ваш домен в I2P
|
||||
* `/home/agate/public` - тека зі статичними файлами для публікації
|
||||
|
||||
## Запуск
|
||||
|
||||
Порт 1965 відкривати не потрібно, адже вхідний трафік йтиме з локального роутера i2pd.
|
||||
|
||||
* `systemctl start agate` - запускаємо сервер
|
||||
* `systemctl enable agate` - додаємо в автозапуск при старті системи
|
||||
* `systemctl status agate` - перевіряємо роботу
|
||||
|
||||
## Клієнт
|
||||
|
||||
В залежності від клієнта, не забудьте вказати в його налаштуваннях проксі I2P.
|
||||
|
||||
### Lagrange
|
||||
|
||||
Якщо ви користуєтесь браузером Lagrange (https://github.com/skyjake/lagrange), налаштування проксі знаходяться в меню "File" > "Preferences" > "Network" > "Proxies" при цьому, підтримується тільки SOCKS5, тому ваш роутер в налаштуваннях повинен мати увімкнену опцію `socksproxy.enabled`
|
||||
|
||||
=> i2p-capsule-in-gemini-space-with-agate/lagrange-proxy-settings.png Налаштування проксі I2P в Lagrange
|
||||
* стандартно, сервер SOCKS в i2pd працює на порту 4447
|
||||
|
||||
Тут вже самі вирішуйте як розподіляти трафік між різними доменами Інтернет/I2P: на момент публікації, з коробки - такої зручності в Lagrange немає.
|
||||
|
||||
### Yoda
|
||||
|
||||
Для навігації простором Gemini, особисто я користуюсь браузером Yoda (https://github.com/YGGverse/Yoda), де реалізовано підтримку різних типів проксі а також маршрутизацію по regex і пріоритетам:
|
||||
|
||||
```
|
||||
\.i2p$ http://127.0.0.1:4444
|
||||
```
|
||||
* regex + локальний проксі відповідно
|
||||
* стандартно, сервер HTTP в i2pd працює на порту 4444
|
||||
* правило регулярного виразу актуальне для версії 0.12.2+
|
||||
|
||||
В інтерфейсі налаштувань це виглядає так:
|
||||
|
||||
=> i2p-capsule-in-gemini-space-with-agate/yoda-proxy-settings-i2p.png Налаштування проксі I2P в Yoda
|
||||
* на прикладі видно окремий рядок налаштувань з іншого проксі (Yggstack) для адрес Yggdrasil, не звертайте на нього уваги - його вимкнено, але якщо у вас є інші активні правила, для них можна вказати пріоритет (замість `0`)
|
||||
|
||||
Після цього, можна відкрити адресу в браузері, наприклад:
|
||||
|
||||
=> gemini://shxxkkrws2m6qowjse5jpgmu64vzupnnhxrhdzrn6fr6m7ynddbq.b32.i2p
|
||||
|
|
@ -9,6 +9,7 @@
|
|||
|
||||
### Нотатки
|
||||
|
||||
=> i2p-capsule-in-gemini-space-with-agate.gmi 2025-10-09 Публікація капсули Gemini в I2P на прикладі сервера Agate
|
||||
=> squid-out-proxy.gmi 2025-10-08 Налаштування вихідного проксі на базі squid
|
||||
=> reticulum-meshchat-with-connection-over-yggdrasil.gmi 2025-10-07 Reticulum / MeshChat з підключенням через Yggdrasil
|
||||
=> pyseeder-i2p-ecosystem-support-with-yggdrasil.gmi 2025-10-04 Pyseeder: підтримка екосистеми I2P в мережі Yggdrasil
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue