# Встановлення IRC сервера Ergo в Linux

Віднедавна запустив сервер, багато писати не буду - бо тут все просто і детально розжовано в коментах файлу конфігурації.

Сервер Ergo написано мовою Go, тому при збірці останньої версії з репозиторію, починати потрібно з актуалізації останньої версії:
=> install-latest-golang-version-on-debian-linux.gmi Встановлення останньої версії Go в Debian

Далі виконується `make` і отримується бінарник `ergo`, який в свою чергу переміщується до канонічного розташування:

``` bash
sudo install ./ergo /usr/local/bin
```

Оскільки доки я не читав, systemd в мене виглядає так:

```
[Unit]
Description=Ergo IRC server
After=network.target

[Service]
Type=simple
User=ergo
Group=ergo
WorkingDirectory=/var/lib/ergo
ExecStart=/usr/local/bin/ergo run --conf /etc/ergo.yaml
StandardOutput=file:///var/log/ergo/debug.log
StandardError=file:///var/log/ergo/error.log
Restart=on-failure

[Install]
WantedBy=multi-user.target
```
* тут ключовим моментом є `WorkingDirectory`, де по суті зберігається база даних рушія `ircd.db`
* файл `/etc/ergo.yaml` створюється на базі `./default.yaml` і правиться під свої потреби
* `StandardOutput` пишеться в `StandardError` - тут може варто поставити на перший `null`

Юзера створив командою, без домашньої теки і племені:

``` bash
useradd -s /usr/sbin/nologin -Mr ergo
```

Для коректної роботи системного сервісу, руками додано такі розташування:

``` bash
mkdir /var/lib/ergo
mkdir /var/log/ergo
```

І виставлено права:

``` bash
chown ergo:ergo /var/lib/ergo
chown ergo:ergo /var/log/ergo
chown ergo:ergo /etc/ergo.yaml
chmod +x /usr/local/bin/ergo
```

Керування сервісом стандартно:

* `systemctl restart ergo` - (пере) запуск
* `systemctl enable ergo` - авт-запуск при старті системи
* `systemctl status ergo` - перевірка статусу

Не забуваємо про фаєрвол, для мереж Yggdrasil і Mycelium, команда `ufw` в мене виглядає так:

``` bash
ufw allow from 0200::/7 to 202:68d0:f0d5:b88d:1d1a:555e:2f6b:3148 port 6667 proto tcp
ufw allow from 0400::/7 to 505:6847:c778:61a1:5c6d:e802:d291:8191 port 6667 proto tcp
```

## Посилання

=> https://github.com/ergochat/ergo

### Дивіться також

=> ukrainian-irc.gmi Локальні канали IRC
=> connecting-znc-bouncer-to-libera-chat-irc-via-tor.gmi Підключення баунсера ZNC до Libera.Chat/IRC через Tor
=> custom-proxy-option-per-server-in-the-halloy-irc.gmi Реалізував опцію вибіркового проксі в IRC-клієнті Halloy
=> soju-irc-bouncer-setup.gmi Встановлення та базове налаштування IRC-баунсера soju в Linux
=> znc-irc-bouncer-setup.gmi Встановлення та налаштування IRC-баунсера ZNC в Linux