add soju-irc-bouncer-setup.gmi

This commit is contained in:
postscriptum 2025-11-17 21:20:01 +02:00
parent cfc65a00d1
commit a5560f855f
3 changed files with 168 additions and 0 deletions

View file

@ -12,6 +12,7 @@
### Нотатки ### Нотатки
=> soju-irc-bouncer-setup.gmi 2025-11-17 Встановлення та базове налаштування IRC-баунсера soju
=> radicle-is-decentralized-p2p-git-dvcs.gmi 2025-11-16 Radicle: децентралізований P2P хостинг Git/DVCS => radicle-is-decentralized-p2p-git-dvcs.gmi 2025-11-16 Radicle: децентралізований P2P хостинг Git/DVCS
=> porting-koreader-on-pocketbook-602.gmi 2025-11-13 Спроба портування KoReader на PocketBook 602 => porting-koreader-on-pocketbook-602.gmi 2025-11-13 Спроба портування KoReader на PocketBook 602
=> gemini-dl-is-batch-downloader-for-gemini-protocol.gmi 2025-11-11 gemini-dl: CLI-утиліта для завантаження ресурсів Geminispace => gemini-dl-is-batch-downloader-for-gemini-protocol.gmi 2025-11-11 gemini-dl: CLI-утиліта для завантаження ресурсів Geminispace

View file

@ -0,0 +1,166 @@
# Встановлення та базове налаштування IRC-баунсера soju
soju - це відносно сучасний баунсер IRC, написаний мовою Go:
=> https://soju.im
* Я почав писати цей гайд з наміром запустити soju через проксі I2P, але з цим виникли труднощі і матеріал не було завершено. Публікую те, що вже занотував. Якщо вам потрібне рішення, що працюватиме через HTTP/SOCKS - гортайте вниз до посилань: там є інструкція з налаштування альтернативного баунсера ZNC у зв'язці з proxychains.
## Сервер
У прикладах нижче, використовуються умовні адреси:
* a.a.a.a - адреса клієнта (desktop, mobile, etc)
* b.b.b.b - адреса баунсера soju
* usoju - користувач баунсера soju (не плутати з акаунтом linux, irc, тощо)
* xxxxx - ваш пароль
### Системні залежності
Перш як продовжити, переконайтесь, що у вас встановлено останню версію Go:
=> install-latest-golang-version-on-debian-linux.gmi Встановлення останньої версії Go в Debian
Також, знадобиться пакунок scdoc:
``` bash
sudo apt install scdoc
```
### Збірка з вихідного коду
``` bash
git clone https://codeberg.org/emersion/soju.git
cd soju
make
sudo make install
```
### Ініціалізація
Сервер soju буде пускатись від окремого користувача:
``` bash
useradd -m soju
```
Логінимось і продовжуємо наступні кроки вже від нього:
``` bash
su soju
```
Створюємо окремий конфіг в домашній теці:
``` bash
cp /etc/soju/config /home/soju/config
```
``` /home/soju/config
# шлях до бази користувача unix (створюється автоматично при першому запуску)
db sqlite3 /home/soju/main.db
# схема `irc+insecure` та порт 6667 - використовується конфігурація без SSL/TLS
# вона є відносно безпечною для підключення до баунсера в локальній мережі
listen irc+insecure://b.b.b.b:6667
# умовна назва хосту, інакше буде використовуватись системний
hostname soju
```
Тепер, потрібно проініціалізувати локальну базу і створити в ній обліковий запис для віддаленого керування:
``` bash
sojudb create-user usoju -admin
```
* usoju - це юзернейм облікового запису адміністратора soju
На облікові файли, для запобігання траверсивного доступу, бажано поставити права 0600:
``` bash
chown soju:soju /home/soju/main.db && chmod 0600 /home/soju/main.db
chown soju:soju /home/soju/config && chmod 0600 /home/soju/config
```
### Фаєрвол
Оскільки звичайно, баунсери пускаються віддалено, потрібно також відкрити порт для дозволених хостів:
``` bash
sudo ufw allow from a.a.a.a to b.b.b.b port 6667 proto tcp
```
Або для всього і всіх:
``` bash
ufw allow 6667/tcp
```
### Запуск
З командного рядка, сервер запускається наступним чином:
``` bash
soju -debug -config /home/soju/config
```
* при першому запуску задаю аргумент `-debug` - його можна прибрати згодом
Для systemd, є готовий приклад:
=> https://codeberg.org/emersion/soju/src/branch/master/contrib/soju.service
## Клієнт
Оскільки в soju немає Веб-адмінки, керування відбувається через командний рядок клієнта IRC.
### Halloy
Пам'ятка з налаштування клієнта Halloy, яким зараз користуюсь. Актуалізований гайд можна знайти на офіційній сторінці:
=> https://halloy.chat/guides/connect-with-soju.html#connect-with-soju
Моя конфігурація виглядає приблизно так:
``` ~/.config/halloy/config.toml
[servers.soju]
nickname = "soju"
server = "b.b.b.b"
port = 6667
use_tls = false
[servers.soju.sasl.plain]
username = "usoju"
password = "xxxxx"
```
* Порада: якщо пускаєте halloy в анонімному режимі, додатково зверніть увагу на опцію:
``` ~/.config/halloy/config.toml
[preview]
enabled = false
```
### Віддалене керування баунсером через клієнт IRC
Підключившись вперше, можна побачити вітання сервера soju відповідно до наших налаштувань:
> SASL authentication successful
> Welcome to soju, usoju
> Your host is soju
Тепер можна взаємодіяти з сервером через створений раніше обліковий запис адміна (usoju) - наприклад, додати нову мережу:
``` irc
/msg BouncerServ network create -name some_name -addr ircs://irc.host.org
```
* аргумент `-name` - опціональний, але варто його вказати, щоб зручно керувати мережею за цим ідентифікатором (інакше замість імені доведеться вказувати адресу)
* саме цей сервер використовує сертифікат TLS і стандартний порт 6697, тому вказується схема ircs://
## Посилання
=> https://soju.im/doc/soju.1.html General Commands Manual
=> https://codeberg.org/emersion/soju/src/branch/master/doc/getting-started.md Getting started
=> https://codeberg.org/emersion/soju/src/branch/master/contrib/README.md User-contributed resources
=> https://todo.sr.ht/~emersion/soju/230 Problems connecting over tor (feature request?: support SOCKS5)
### Дивіться також
=> znc-irc-bouncer-setup.gmi Встановлення та налаштування IRC-баунсера ZNC в Linux
=> enhancing-privacy-in-linux-apps.gmi Підвищення рівня приватності в застосунках Linux

View file

@ -199,4 +199,5 @@ password = "<your-password>"
### Дивіться також ### Дивіться також
=> soju-irc-bouncer-setup.gmi Встановлення та базове налаштування IRC-баунсера soju
=> https://devzone.org.ua/post/vstanovlennia-ta-nalashtuvannia-irc-baunsera-znc-v-linux Веб-адаптація цього матеріалу з коментарями на DevZone => https://devzone.org.ua/post/vstanovlennia-ta-nalashtuvannia-irc-baunsera-znc-v-linux Веб-адаптація цього матеріалу з коментарями на DevZone