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. Installere cmake som du skal bruge for at installere ZNC
4. Opret en ny bruger som znc bliver kørt fra – Det kan du gøre med denne komando: sudo adduser irc
5. Du kan evt give den nye bruger (irc) sudo adgang med usermod -aG sudo irc
– Jeg anbefaler dette!
6. Skift til din nye bruger via denne komando: sudo su irc
7. 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**
8. 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
9. Pak filerne ud med denne kommando tar -xzvf znc-*.tar.gz
10. cd znc-1.8.2
11. mkdir build
12. cd build
13. cmake .. -DCMAKE_INSTALL_PREFIX="$HOME/znc"
<<- Dette vil installere ZNC i din irc brugers hjemmemappe (/home/irc/znc)
14. make
15. 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 https://www.futurenode.dk/php-7-4-nginx-eller-apache-ubuntu/
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 AllowIRC = false AllowWeb = true Port = 7777 IPv4 = true IPv6 = true SSL = false AllowIRC = true AllowWeb = false Port = 7788 IPv4 = true IPv6 = true SSL = true
Teksten der er i config filen skal overskrives, undtagen “user” informationen . Det vil ca. se sådan ud:
znc2
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 vi skal have lavet inden vi forsætter.
Det er bla.a så domænet “znc.mitdomain.dk” samt vores bouncer (https://cdn.futurenode.dk/home/irc/.znc/znc.pem) automatisk bliver fornyet af letsencrypt
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 letsencrypt 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 disse kommandoer:
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 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