mirror of
https://codeberg.org/postscriptum/gemlog.git
synced 2026-02-19 06:22:41 +00:00
add znc-irc-bouncer-setup.gmi
This commit is contained in:
parent
acaf10fc9e
commit
8e9b26a791
6 changed files with 174 additions and 0 deletions
|
|
@ -12,6 +12,7 @@
|
|||
|
||||
### Нотатки
|
||||
|
||||
=> znc-irc-bouncer-setup.gmi 2025-11-05 Встановлення та налаштування IRC-баунсера ZNC в Linux
|
||||
=> cosmic-desktop-test-drive-on-fedora.gmi 2025-11-04 Тест-драйв COSMIC на Fedora
|
||||
=> enhancing-privacy-in-linux-apps.gmi 2025-11-03 Підвищення рівня приватності в застосунках Linux
|
||||
=> closing-the-ukrainian-alt-network-administrators-community-forums.gmi 2025-11-02 Згортаю Веб-форум адміністраторів альтернативних мереж
|
||||
|
|
|
|||
173
public/uk/znc-irc-bouncer-setup.gmi
Normal file
173
public/uk/znc-irc-bouncer-setup.gmi
Normal file
|
|
@ -0,0 +1,173 @@
|
|||
# Встановлення та налаштування IRC-баунсера ZNC в Linux
|
||||
|
||||
> IRC - це один з найстарших протоколів багатокористувацького чату, який досі живий і більше того - користується чималою популярністю в колах досвідчених користувачів, які з тих чи інших причин відмовляються від сучасних рішень типу Matrix, через неординарну зміну політики.
|
||||
>
|
||||
> Протокол IRC особливо популярний в колах адміністраторів альтернативних мереж - зокрема Yggdrasil та I2P: при певних налаштуваннях, він дозволяє забезпечити високий рівень конфіденційності, а його частково розподілена природа дозволяє розгортати федерації.
|
||||
>
|
||||
> Не дивлячись на свою оманливу простоту, IRC є доволі масивним комбайном зі старих і сучасних програмних рішень і чесно кажучи, я вивчаю користування цим засобом зв'язку вже не перший рік. Нижче - нотатка стосовно одного з таких кроків.
|
||||
|
||||
Баунсер (англ. bouncer) - це спеціальний клієнт IRC, який запускається на сервері 24/7 з метою постійного перебування його онлайн та ретрансляції історії повідомлень локальному клієнтові, що підключається до нього замість прямого підключення до цільового сервера IRC. Такий собі спадковий костиль, адже для протоколу IRC не передбачається збереження історії чату і без баунсера потрібно десь окремо читати логи (якщо такі надаються сервером).
|
||||
|
||||
В деяких випадках, баунсер на стороні сервера може бути корисним в плані підключення до різних мереж, зокрема I2P, Yggdrasil та інших, якщо ваш клієнт не підтримує гнучкі налаштування проксі для кожного з каналів.
|
||||
|
||||
## Встановлення
|
||||
|
||||
Тут я не заморочувався та поставив ZNC з репозиторію командою:
|
||||
|
||||
``` bash
|
||||
apt install znc
|
||||
```
|
||||
|
||||
### Створення системного користувача
|
||||
|
||||
Спочатку забув та запустив конфігуратор від root, про що мені делікатно цей менеджер нагадав :)
|
||||
|
||||
``` bash
|
||||
useradd -m znc
|
||||
```
|
||||
|
||||
### Створення базової конфігурації
|
||||
|
||||
Перед запуском ZNC, від користувача znc, потрібно створити для нього конфігурацію:
|
||||
|
||||
``` bash
|
||||
znc --makeconf
|
||||
```
|
||||
|
||||
Тут я зупинятись не буду, оскільки менеджер надає прості питання, відповіді на які у кожного свої:
|
||||
* користувача вказав як znc, нижче він буде використовуватись у якості прикладу
|
||||
* порт я спочатку вказав з групи 666* але згодом змінив на 888* оскільки політиці безпеки FireFox щось там не сподобалось і я не міг відкрити Web UI (інтерфейси HTTP/IRC також можна забіндити окремо, якщо клієнтові буде потрібен стандартний порт типу 6667)
|
||||
|
||||
Згенерований файл конфігурації буде доступний десь в /home/znc/.znc/configs/znc.conf але напряму він як правило не редагується. Всі налаштування ZNC виконуються через веб-панель або командний рядок чату, про що згодом.
|
||||
|
||||
### Фаєрвол / iptables
|
||||
|
||||
Оскільки баунсери як правило пускаються на віддаленому сервері, для доступу до його API та веб-адмінки, потрібно відкрити відповідний порт:
|
||||
|
||||
``` bash
|
||||
ufw delete allow from aaa.aaa.aaa.aaa to bbb.bbb.bbb.bbb port 888* proto tcp
|
||||
```
|
||||
* aaa.aaa.aaa.aaa - клієнтський IP (десктоп, мобільний пристрій і т.д.)
|
||||
* bbb.bbb.bbb.bbb - адреса IP сервера ZNC, що вказувався під час виконання znc --makeconf
|
||||
* 888* - актуальний порт, що вказувався під час виконання znc --makeconf
|
||||
* зверніть увагу: в адмінці ZNC також є опція "Authentication" > "Allowed IPs" (*)
|
||||
|
||||
### Сервіс systemd
|
||||
|
||||
В стандартному (для Armbian) сервісі я видалив аргумент запуску `--datadir` та змінив користувача на `znc`:
|
||||
|
||||
``` /lib/systemd/system/znc.service
|
||||
[Unit]
|
||||
Description=ZNC, an advanced IRC bouncer
|
||||
Documentation=man:znc(1)
|
||||
After=network-online.target
|
||||
|
||||
[Service]
|
||||
ExecStart=/usr/bin/znc -f
|
||||
User=znc
|
||||
PrivateTmp=true
|
||||
NonBlocking=yes
|
||||
ProtectSystem=full
|
||||
ProtectHome=no
|
||||
PrivateDevices=true
|
||||
LimitNOFILE=1024
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
```
|
||||
* systemctl restart znc
|
||||
* systemctl enable znc
|
||||
* systemctl status znc
|
||||
|
||||
## Підключення ZNC до серверів IRC
|
||||
|
||||
Після запуску сервера ZNC, потрібно налаштувати сервери, на які ми підписані. Це можна зробити декількома способами.
|
||||
|
||||
### Налаштування підключення засобами IRC
|
||||
|
||||
Адмініструвати підключення можна через віддалений клієнт, засобами командного рядка чату:
|
||||
|
||||
```
|
||||
/znc AddNetwork <network>
|
||||
```
|
||||
|
||||
Усі доступні опції можна отримати командою:
|
||||
|
||||
```
|
||||
/znc Help
|
||||
```
|
||||
|
||||
### Налаштування підключення засобами Web UI
|
||||
|
||||
Переходимо за адресою веб-адмінки "http://host:port/mods/global/webadmin/edituser" зокрема "Edit User" > "Networks" > "Add a network":
|
||||
|
||||
=> znc-irc-bouncer-setup/add-irc-network.png Додавання нової мережі в ZNC (скріншот)
|
||||
|
||||
Послідовно заповнюємо форму:
|
||||
|
||||
* Network Info - назва каналу, свого роду ID, який буде використовуватись для підключення клієнта IRC до ZNC
|
||||
* Nick, AltNick, Ident, RealName, BindHost - інформація для цільових серверів IRC
|
||||
* Servers of this IRC network - тут пишемо хост/порт потрібного нам сервісу: наприклад якщо це Libera, то вказуємо тільки її сервери
|
||||
|
||||
Далі, звертаємо увагу на активні модулі, зокрема стандартно відмічений "simple_away" - він повідомлятиме про статус вашого клієнтського відключення. Вимикаємо, якщо бажаєте бути "постійно онлайн" для інших:
|
||||
|
||||
=> znc-irc-bouncer-setup/simple-away-module.png Модуль "simple_away" в ZNC (скріншот)
|
||||
|
||||
Коли форму заповнено, зберігаємо налаштування кнопкою внизу сторінки:
|
||||
|
||||
=> znc-irc-bouncer-setup/save-network-settings.png Збереження налаштувань ZNC (скріншот)
|
||||
|
||||
* Після збереження форми, можна вказати канали у розділі "Channels" (їх також можна додати згодом через клієнт)
|
||||
|
||||
Таким чином, додаємо стільки "мереж" та їх серверів - скільки потрібно для поточного користувача. На прикладі моєї конфігурації для спільнот Yggdrasil, список виглядає так:
|
||||
|
||||
=> znc-irc-bouncer-setup/irc-networks-example.png Приклад списку мереж Yggdrasil в ZNC (скріншот)
|
||||
|
||||
### Підключення ZNC до серверів IRC через проксі HTTP/SOCKS
|
||||
|
||||
На користувачів Tor/I2P - тут чекає не приємний сюрприз: станом на зараз, готового рішення немає, хоча подібний запит було створено ще в далекому 2012 році:
|
||||
=> https://github.com/znc/znc/issues/143
|
||||
|
||||
Для вирішення цієї проблеми, на офіційному сайті є інструкція на прикладі підключення Tor:
|
||||
=> https://wiki.znc.in/Tor#.onion_Resolution
|
||||
|
||||
Яким різновидом збочення тут скористатись - вирішувати тільки вам :)
|
||||
|
||||
## Підключення клієнтів IRC до ZNC
|
||||
|
||||
В конфігурації з баунсером, клієнти підключаються до ZNC, а не серверів IRC на пряму. Налаштування залежатимуть від клієнта, яким ви користуєтесь, не плутайте їх з проксі!
|
||||
|
||||
### Halloy
|
||||
|
||||
> Halloy (https://halloy.chat) - відносно сучасний клієнт IRC, написаний мовою Rust. Наразі користуюсь саме ним, через особисту цікавість до фреймворку Iced, хоча назвати його супер-зручним та функціональним теж не можу: на момент написання матеріалу він не підтримує проксування на окремі сервери а також має трохи загальмований інтерфейс без контекстних меню та інших підручних наворотів.
|
||||
|
||||
Приклад підключення Halloy до ZNC наведено в офіційній документації:
|
||||
|
||||
=> https://halloy.chat/guides/connect-with-znc.html?highlight=bounc#connect-with-znc
|
||||
|
||||
``` config.toml
|
||||
[servers.libera]
|
||||
nickname = "<znc-user>/<znc-network>"
|
||||
server = "znc.example.com"
|
||||
password = "<your-password>"
|
||||
|
||||
# Depending on your ZNC setup you may need to apply these extra settings:
|
||||
|
||||
# Does your znc use a self-signed or expired certificate? See:
|
||||
# https://halloy.chat/configuration/servers.html#dangerously_accept_invalid_certs
|
||||
|
||||
# Does your znc listen on a different port? See:
|
||||
# https://halloy.chat/configuration/servers.html#port
|
||||
```
|
||||
* znc-user - логін до сервера ZNC, не плутати з системним користувачем чи логіном до IRC!
|
||||
* znc-network - ID / назва каналу
|
||||
* додатково я вказав тільки порт (port = 888*) і вимкнув TLS (use_tls = false)
|
||||
|
||||
## Посилання
|
||||
|
||||
=> https://github.com/znc/znc
|
||||
=> https://uk.wikipedia.org/wiki/IRC
|
||||
|
||||
### Дивіться також
|
||||
|
||||
=> https://devzone.org.ua/post/vstanovlennia-ta-nalashtuvannia-irc-baunsera-znc-v-linux Веб-адаптація цього матеріалу з коментарями на DevZone
|
||||
BIN
public/uk/znc-irc-bouncer-setup/add-irc-network.png
Normal file
BIN
public/uk/znc-irc-bouncer-setup/add-irc-network.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 6.3 KiB |
BIN
public/uk/znc-irc-bouncer-setup/irc-networks-example.png
Normal file
BIN
public/uk/znc-irc-bouncer-setup/irc-networks-example.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 19 KiB |
BIN
public/uk/znc-irc-bouncer-setup/save-network-settings.png
Normal file
BIN
public/uk/znc-irc-bouncer-setup/save-network-settings.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 3.4 KiB |
BIN
public/uk/znc-irc-bouncer-setup/simple-away-module.png
Normal file
BIN
public/uk/znc-irc-bouncer-setup/simple-away-module.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 24 KiB |
Loading…
Add table
Add a link
Reference in a new issue