# Встановлення та базове налаштування 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/soju.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/soju.db && chmod 0600 /home/soju/soju.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