Hvad er en IRC-Bouncer? Læs mere herom samt hvordan du installerer ZNC på Ubuntu 20.04 LTS / 22.04 LTS!

Hvad er en IRC-Bouncer? Læs mere herom samt hvordan du installerer ZNC på Ubuntu 20.04 LTS / 22.04 LTS!

Hvad er en IRC-Bouncer? Læs mere herom samt hvordan du installerer ZNC på Ubuntu 20.04 LTS / 22.04 LTS!

Hvad er IRC??

Hvis du ikke ved hvad IRC er, har jeg udgivet en artikel der forklarer hvad IRC er - Du kan læse den HER

Hvad er en Bouncer så?

En bouncer er et stykke software, der fungerer som mellemmand mellem dig og et irc-netværk. Den opretter forbindelse til et netværk som en normal klient, og i stedet for at oprette forbindelse direkte til et irc-netværk, opretter du forbindelse til bounceren. Den vil så vise dig alle de beskeder den modtog medens du var afbrudt. På denne måde er dit brugernavn altid til stede i dine kanaler, og du kan se hvad der blev talt om mens du var væk.

Hvad er ZNC ?

ZNC er en nyere irc bouncer, som desværre ikke bliver opdateret så meget mere. Men den virker altid som den skal!

Hvad vil vi komme omkring i denne guide?

  • Installere ZNC på Ubuntu 20.04 / 22.04 LTS
  • Installere ZNC-Webinterfacet på en et Subdomain (via Nginx) f.eks znc.mitdomain.dk
  • Installere et SSL certificat via Let's Encrypt i ZNC
  • Auto start ved reboot eller crash

Hvad skal du bruge for at komme igang ?

  • Du skal bruge en form for server - Det kan være VPS eller en dedikeret server. Her kan jeg varmt anbefale Hetzner.de cloud server (VPS)
  • Et domæne
  • Adgang til dine DNS indstilliger
  • En Ubuntu 20.04 LTS eller 22.04 LTS server
  • Sudo eller root adgang
  • Installeret "cmake" -> sudo apt install cmake
  • Let's Encrypt SSL Installeret - Hvis du skal have hjælpe til dette, har jeg skrevet en guide om netop dette: LINK

OBS

  • Alle steder der står "znc.mitdomian.dk" skal selfølge skiftes ud med dit eget domaine

Forbedredelser:

Inden vi går i gang skal vi først have oprettet en A-Record (IPv4) samt AAAA-Record (IPv6) hvis din server undersøtter det!

A-Record (IPv4) samt AAAA-Record (IPv6) skal pege på din server. f.eks znc.mitdomain.dk -> din server ip

Disse rettelser skal du gøre hos din DNS / domæne udbyder!

OBS: Det kan tage 1-12 timer før DNS ændringer bliver registreret globalt

Lad os komme i gang!

  1. Som altid - vær sikker på din server er tilstrækkeligt sikret samt opdateret

  2. Login på din server med en sudo eller root bruger

  3. Opret en ny bruger som znc bliver kørt fra - Det kan du gøre med denne komando: # sudo adduser irc

  4. Du kan evt give den nye bruger (irc) sudo adgang med # usermod -aG sudo irc - Dog er det op til dig.

  5. Skift til din nye bruger via denne komando: # sudo su irc

  6. Skift nu biblotek til den nyopretet brugers hjemmemappe - Dette gøres sådan # cd ~

OBS: Du skal ikke bruge sudo eller root når du kører kommandoerne i punkt 7-14

  1. Download den nyeste version af ZNC som i skrivende stund er: 1.8.2 - Det gør du med denne kommando: # wget https://znc.in/releases/znc-latest.tar.gz

  2. Pak filerne ud med denne kommando # tar -xzvf znc-*.tar.gz

  3. # cd znc-1.8.2

  4. # mkdir build

  5. # cd build

  6. # cmake .. -DCMAKE_INSTALL_PREFIX="$HOME/znc" <<- Dette vil installere ZNC i din irc brugers hjemmemappe (/home/irc/znc)

  7. # make

  8. # make install

Opret config filen til ZNC

Når du har installeret ZNC som forklaret ovenfor, skal du lave en config fil til ZNC. Det gør du med denne kommando

/home/irc/znc/bin/znc --makeconf

Jeg har valgt disse test indstillinger, du skal selvfølglig vælge din egne!

  • Listen on port (1025 to 65534) - 7777
  • Listen using SSL (yes/no) - yes
  • Listen using both IPv4 and IPv6 - yes (Hvis din server understøtter det)

-- Admin user settings --

  • Username (alphanumeric) - Admin
  • Enter password - myadminpassword
  • Confirm password - myadminpassword
  • Nick - Admin
  • Alternate nick - Admin^
  • Ident - Admin
  • Real name (optional) - Admin
  • Bind host (optional) - Tryk Enter
  • Set up a network? - no
  • Launch ZNC now? - no

Det vil ca. se sådan ud:

Hvis du vil installere ZNC webinterfacet på et sub domæne og uden port nummer - F.eks https://znc.mitdomain.dk og ikke https://znc.mitdomain.dk:7777
og gå så videre, - eller spring dette punkt over.

Jeg går ud fra, at du har installeret "nginx" - Hvis ikke, så gør det!. Du kan evt få lidt inspiration i denne guide

Lad os komme videre.

Du skal forsat være logget ind på din "irc" bruger som vi lavede tidligere

Åben # nano /home/irc/.znc/configs/znc.conf og sæt følgende ind i toppen af filen! Gem nu filen med CTRL + X -> Y > Enter

AnonIPLimit = 10
AuthOnlyViaModule = false
ConfigWriteDelay = 0
ConnectDelay = 5
HideVersion = false
LoadModule = webadmin
MaxBufferSize = 500
PidFile = /home/irc/znc/znc.pid
ProtectWebSessions = true
SSLCertFile = /home/irc/.znc/znc.pem
SSLKeyFile = /home/irc/.znc/znc.pem
SSLDHParamFile = /home/irc/.znc/znc.pem
SSLCiphers = EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
SSLProtocols = -SSLv2 -SSLv3 -TLSv1 +TLSv1.1 +TLSv1.2
ServerThrottle = 30
Skin = _default_
StatusPrefix = *
Version = 1.8.2

<Listener l>
        AllowIRC = false
        AllowWeb = true
        Port = 7777
        IPv4 = true
        IPv6 = true
        SSL = false
</Listener>

<Listener 2>
        AllowIRC = true
        AllowWeb = false
        Port = 7788
        IPv4 = true
        IPv6 = true
        SSL = true
</Listener>

Texten der er i config filen skal overskrives, undtagen "user" informationen . Det vil ca. se sådan  ud:

Opret en nginx config.

OBS! De næste kommandoer skal køres som root eller med sudo rettigheder

Gå til nginx sites-enabled mappen med denne komando: # cd /etc/nginx/sites-enabled/

Opret nu en ny fil med denne kommando: # sudo nano znc.mitdomain.dk.conf

Sæt følgende text in i filen:

server {
    listen      443 ssl http2;
    server_name znc.mitdomain.dk;
    access_log  /var/log/nginx/znc.log combined;

    location / {
        proxy_pass http://127.0.0.1:7777;
        proxy_set_header      Host             $host;
        proxy_set_header      X-Real-IP        $remote_addr;
        proxy_set_header      X-Forwarded-For  $proxy_add_x_forwarded_for;
        proxy_set_header      X-Client-Verify  SUCCESS;
        proxy_set_header      X-Client-DN      $ssl_client_s_dn;
        proxy_set_header      X-SSL-Subject    $ssl_client_s_dn;
        proxy_set_header      X-SSL-Issuer     $ssl_client_i_dn;
        proxy_read_timeout    1800;
        proxy_connect_timeout 1800;
    }
}

Gem nu filen med CTRL + X -> Y > Enter

letsencrypt forberedelser

For at oprette et gratis SSL certifikat, skal vi bruge letsencrypt. Hvis du ikke har helt styr på det, - kan du følge denne guide

Når vi har installeret letsencrypt, er der nogle ting viskal have lavet inden vi forsætter.

Det er bla.a når domænet "znc.mitdomain.dk" automatisk bliver fornyet af letsencrypt så skal vores SSL certifikat også fornyes på vores bouncer (/home/irc/.znc/znc.pem)

Det gør som følger:

# cd /etc/letsencrypt/renewal-hooks/deploy
# touch update-znc.pem
# chmod +x update-znc.pem
# nano update-znc.pem

Indsæt følgene tekst i filen

#!/bin/bash
YOURDOMAIN="znc.mitdomain.dk"

[[ $RENEWED_LINEAGE != "/etc/letsencrypt/live/$YOURDOMAIN" ]] && exit 0
echo "Updating certs"
cat /etc/letsencrypt/live/$YOURDOMAIN/{privkey,fullchain}.pem > /home/irc/.znc/znc.pem

Opret SSL Certifikatet

Skriv nu følgene kommando: # sudo certbot --nginx

Vælg nu "znc.mitdomain.dk på listen og tryk på enter. I mit tilfælde er det nummer 20.

Hvis alt går som det skal, vil du få oprettet et gratis lets encrypt på znc.mitdomain.dk

Opret Systemd Service

Vi skal nu have lavet et script der auto starter ZNC ved reboot eller crash!

Bemærk: Dette skal gøres med SUDO eller ROOT

Opret denne fil med nano # sudo nano /etc/systemd/system/znc.service

Indset følgene text i filen

[Unit]
Description=ZNC - IRC Bouncer
Requires=nss-user-lookup.target
After=network-online.target nss-user-lookup.target

[Service]
User=irc
ExecStart=/home/irc/znc/bin/znc --foreground
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
KillSignal=SIGINT
SuccessExitStatus=2

[Install]
WantedBy=multi-user.target

Gem nu filen med CTRL + X -> Y > Enter

Dernæst skal du have aktiveret ovenstående service! Det gør du med denne kommando:

  • sudo systemctl daemon-reload
  • sudo systemctl enable znc
  • sudo systemctl start znc

Hvis du vil stoppe ZNC og fjerne det fra autostart kan du skrive følgende

  • sudo systemctl stop znc
  • sudo systemctl disable znc

UFW (Uncomplicated Firewall)

Hvis du bruger UFW (Uncomplicated Firewall) på din ubuntu server kan du åbne portene som ZNC bruger - Bemærk kommandoerne skal køres med root eller med sudo

sudo ufw allow 7777 (Du kan have valgt nogle andre porte)
sudo ufw allow 7788 (Du kan have valgt nogle andre porte)

Til sidst

  • Du har nu installeret znc på din server under /home/irc/znc/ samt dine znc config filer ligger i denne mappe /home/irc/.znc/
  • Din IRC client kan nu logge din nye bouncer på følgene adresse: znc.mitdomain.dk:7788 (MED SSL)
  • Du kan tilgå dit ZNC webinterface på https://znc.mitdomain.dk
  • Siden / bouncer er beskyttet med et lets encrypt certificat der bliver auto fornyet
  • ZNC vil genstarte ved reboot samt ved crash
  • Du har åbnet porte til znc
  • Done :)

Hvis du har spørgsmål eller problemer, er du velkommen til at smide en kommentar :)

På FutureNode kommer der på et tidspunkt en del 2, der vil forklare hvordan du grundlæggende bruger ZNC

Sådan! Betal dernæst for at få fuld adgang til FutureNode.dk.
Velkommen tilbage! Du er nu logget ind.
Du er nu medlem på FutureNode.dk.
Sådan! Din konto er fuldt aktiveret. Du har nu adgang til alt indholdet samt alle funktioner.
Sådan! Dine faktureringsoplysninger er blevet opdateret.
Dine faktureringsoplysninger blev ikke opdateret.