IRC+ IRCPlus.nlIRC resources & community

Recent posts

#1
mIRC / YouTube Info v1.2
Last post by Cjefke - Today at 02:32 PM
; ==========================================
; IRCPlus YouTube Info v1.2
; Https://IRCPlus.nl
; mIRC 7.84 - YouTube Data API v3
; ==========================================
; Configuration:
; /set %yt.api YOUR_API_KEY
; /set %yt.channels #IRCPlus,#Holland
; Detect YouTube links in channels

on *:TEXT:*:#:{
  if (%yt.api == $null) return
  if (!$istok(%yt.channels,$chan,44)) return
  var %text = $1-
  var %pattern = /(?:youtube\.com\/watch\?[^\s]*v=|youtu\.be\/|youtube\.com\/shorts\/)([A-Za-z0-9_-]{11})/i
  if ($regex(%text,%pattern)) {
    var %video = $regml(1)
    if ($hget(YTCache,%video)) return
    hadd -m YTCache %video 1
    .timer 1 300 hdel YTCache %video
    yt_lookup %video $chan
  }
}

; Request video information
alias yt_lookup {
  var %video = $1
  var %channel = $2
  var %file = $mircdir $+ yt_ $+ $ticks $+ .json
  ; IMPORTANT: statistics is now included
  var %url = https://www.googleapis.com/youtube/v3/videos?part=snippet,contentDetails,statistics $+ &id= $+ %video $+ &key= $+ %yt.api
  var %request = $urlget(%url,gf,%file,yt_callback)
  if (!%request) {
    echo -a [YouTube] Could not start API request.
    return
  }
  set %yt.file. $+ %request %file
  set %yt.channel. $+ %request %channel
  set %yt.video. $+ %request %video
}

; Process API response
alias yt_callback {
  var %request = $1
  var %file = $eval($+(%,yt.file.,%request),2)
  var %channel = $eval($+(%,yt.channel.,%request),2)
  var %video = $eval($+(%,yt.video.,%request),2)
  if (%file == $null) return
  if ($urlget(%request).state != ok) {
    echo -a [YouTube] API request failed.
    goto cleanup
  }
  if (!$isfile(%file)) goto cleanup
  ; Read complete JSON file
  var %json = $null
  var %i = 1
  while (%i <= $lines(%file)) {
    %json = %json $+ $read(%file,%i)
    inc %i
  }
  ; Check for API errors
  if ($regex(%json,/"error"\s*:/i)) {
    echo -a [YouTube] API error. Check your API key and quota.
    goto cleanup
  }
  if (!$regex(%json,/"items"\s*:\s*\[\s*\{/i)) {
    echo -a [YouTube] Video unavailable or no video data returned.
    goto cleanup
  }
  ; Extract title
  var %title = Unknown title
  if ($regex(%json,/"title"\s*:\s*"((?:\\.|[^"\\])*)"/i)) {
    %title = $regml(1)
  }
  ; Extract channel/uploader
  var %uploader = Unknown
  if ($regex(%json,/"channelTitle"\s*:\s*"((?:\\.|[^"\\])*)"/i)) {
    %uploader = $regml(1)
  }
  ; Extract ISO 8601 duration
  var %duration = Unknown
  var %hours = 0
  var %minutes = 0
  var %seconds = 0
  if ($regex(%json,/"duration"\s*:\s*"PT((?:\d+H)?(?:\d+M)?(?:\d+S)?)"/i)) {
    var %iso = $regml(1)
    if ($regex(%iso,/(\d+)H/i)) {
      %hours = $regml(1)
    }
    if ($regex(%iso,/(\d+)M/i)) {
      %minutes = $regml(1)
    }
    if ($regex(%iso,/(\d+)S/i)) {
      %seconds = $regml(1)
    }
    if (%hours > 0) {
      %duration = $+(%hours,:,$right($+(0,%minutes),2),:,$right($+(0,%seconds),2))
    }
    else {
      %duration = $+(%minutes,:,$right($+(0,%seconds),2))
    }
  }
  ; Extract view count
  var %views = Unknown
  if ($regex(%json,/"viewCount"\s*:\s*"(\d+)"/i)) {
    %views = $regml(1)
  }
  ; Extract publication date
  var %published = Unknown
  if ($regex(%json,/"publishedAt"\s*:\s*"(\d{4}-\d{2}-\d{2})/i)) {
    %published = $regml(1)
  }
  ; Keep output compact for IRC
  if ($len(%title) > 80) {
    %title = $left(%title,77) $+ ...
  }
  if ($len(%uploader) > 35) {
    %uploader = $left(%uploader,32) $+ ...
  }
  ; One-line announcement, no repeated URL
  if (%channel != $null) {
    var %line = [YouTube] $chr(9654) %title $chr(124) Length: %duration $chr(124) By: %uploader $chr(124) Views: %views $chr(124) Published: %published
    msg %channel %line
  }
  :cleanup
  if ($isfile(%file)) .remove %file
  unset %yt.file. $+ %request
  unset %yt.channel. $+ %request
  unset %yt.video. $+ %request
}
#2
News / New website online: IRCPlus.nl...
Last post by Cjefke - Oct 16, 2026, 10:17 PM
IRCPlus.nl is live

Hey everyone,

The new IRCPlus.nl website is online. It's meant as a practical hub for IRC users: scripts, bots, tools, our own network, and a few community services in one place.

Website: https://ircplus.nl
IRC server: irc.ircplus.nl (TLS on 6697)
Main channel: #IRCPlus





What's on the site right now

Downloads
  • mIRC scripts, addons and packs
  • Eggdrop / TCL resources
  • Python IRC bots and helpers
  • Windows tools and IRC clients
  • Browse everything via Downloads
Free ZNC bouncer
Stay connected when your PC is offline. Free for IRCPlus users, TLS on port 2000.

How to request:
  • Join #IRCPlus (or use WebChat)
  • Type: [tt]!request your_desired_username[/tt]
  • Wait for staff approval — credentials are sent by PM

Full info & client setup (mIRC, HexChat, WeeChat, irssi):
https://ircplus.nl/free-bouncer.php

WebChat
Quick connect in the browser, no install needed:
https://ircplus.nl/webchat.php

Forum
This place — guides, discussion, feedback:
https://ircplus.nl/forum/

Also available
  • Users / channels overview
  • Config makers (UnrealIRCd, Eggdrop)
  • News, contact, and more network pages





Status

Most of the site works as intended: homepage, downloads, bouncer info, webchat, forum integration, and the main navigation.

It's still a living project. Layout, content, and small bugs may improve over time. If something is broken, missing, or unclear — please say so.





Feedback welcome

If you notice:
  • a page that doesn't load or looks wrong
  • a download that should be added or fixed
  • something missing for new IRC users
  • ideas for the bouncer, forum, or tools

...post it here or mention it in #IRCPlus. That helps a lot.

Thanks for checking it out — hope it's useful for the community.

— Cjefke
#3
InspIRCd / Install InspIRCd from source
Last post by Cjefke - Oct 16, 2026, 10:14 PM
Install InspIRCd 4 from source

When there is no package for your OS (or you want a custom build), compile from source.

Official guide:
docs.inspircd.org — Source installation





1. Supported systems

  • Recent Linux (GCC 7+ or Clang 5+)
  • Recent BSD
  • Recent macOS (AppleClang / Clang / GCC)

Windows native builds use a separate guide; this post is for UNIX-like systems.





2. Dependencies

Debian / Ubuntu:
sudo apt-get update
sudo apt-get install build-essential pkg-config wget

Add development headers for any extra modules you want (OpenSSL, etc.), for example:
sudo apt-get install libssl-dev

RHEL-like: install the "Development Tools" group plus needed [tt]-devel[/tt] packages.





3. Download the source

Release tarball (recommended):
wget "https://github.com/inspircd/inspircd/archive/refs/tags/v4.12.1.tar.gz"
tar -xvf ./v4.12.1.tar.gz
cd inspircd-4.12.1

Or latest Git (insp4 branch):
git clone --branch insp4 https://github.com/inspircd/inspircd.git
cd inspircd





4. Configure

./configure

You will be asked about:
  • Install paths (default: self-contained under your home directory)
  • Extra modules (auto-detect dependencies, or choose manually)
  • Optional self-signed TLS cert for testing

Press Enter to accept defaults, or answer [tt]no[/tt] and set custom paths/modules.

Enable extras later if needed:
./configure --enable-extras modulename





5. Compile & install

make install

On modern hardware this usually finishes in a few minutes.





6. Configure & start

Go to your install directory (often something like [tt]~/inspircd[/tt] if you used defaults), edit the config, then start the binary according to the paths you chose.

Configuration reference:
InspIRCd 4 configuration





Quick reference

sudo apt-get install build-essential pkg-config wget libssl-dev
wget "https://github.com/inspircd/inspircd/archive/refs/tags/v4.12.1.tar.gz"
tar -xvf ./v4.12.1.tar.gz
cd inspircd-4.12.1
./configure
make install




Source: InspIRCd 4 — Source installation

Check releases for a newer [tt]v4.x.x[/tt] and adjust the version in the wget URL. Errors during [tt]./configure[/tt] or [tt]make[/tt]? Post the full output.
#4
InspIRCd / Install InspIRCd on Windows
Last post by Cjefke - Oct 16, 2026, 10:13 PM
Install InspIRCd 4 on Windows

Official package guide:
docs.inspircd.org — Windows installation

Requirements: Windows 10 (April 2018 Update or newer), x86-64.





1. Download the installer

Get the latest [tt].exe[/tt] from:
GitHub releases (latest)

Or with PowerShell (adjust version if needed):
(New-Object System.Net.WebClient).DownloadFile(
  "https://github.com/inspircd/inspircd/releases/download/v4.12.1/InspIRCd-4.12.1.exe",
  "InspIRCd-4.12.1.exe"
)





2. Run the installer

Double-click the [tt].exe[/tt], or in PowerShell:
Start-Process ".\InspIRCd-4.12.1.exe"

Follow the setup wizard.





3. Where files are stored

Default install path:
[tt]C:\Program Files\InspIRCd[/tt]

Relative to that folder:
  • Config: [tt].\conf[/tt]
  • Data: [tt].\data[/tt]
  • Logs: [tt].\logs[/tt]





4. Configure & run

  • Edit the example config in the [tt]conf[/tt] folder
  • Start InspIRCd from the Start menu or the installed binary
  • Open firewall ports for IRC (e.g. 6667 plain, 6697 TLS) if you accept external clients

Full config reference:
InspIRCd 4 configuration




Source: InspIRCd 4 — Windows installation

Questions about Windows firewall or running as a service? Post details here.
#5
InspIRCd / Install InspIRCd on Ubuntu
Last post by Cjefke - Oct 16, 2026, 10:12 PM
Install InspIRCd 4 on Ubuntu (official .deb package)

Guide based on the official docs:
docs.inspircd.org — Ubuntu installation

Supported (x86-64):
  • Ubuntu 22.04 (Jammy Jellyfish)
  • Ubuntu 24.04 (Noble Numbat)
  • Ubuntu 26.04 (Resolute Raccoon)





1. Remove the old Ubuntu-repo package (if present)

cp -r /etc/inspircd ~/inspircd-conf
cp -r /var/run/inspircd ~/inspircd-data
sudo apt purge inspircd

Restore after installing the official package:
cp -r ~/inspircd-conf/* /etc/inspircd
cp -r ~/inspircd-data/* /var/lib/inspircd





2. Download the package

sudo apt install wget

Ubuntu 22.04:
wget "https://github.com/inspircd/inspircd/releases/download/v4.12.1/inspircd_4.12.1.ubuntu22.04.1_amd64.deb"

Ubuntu 24.04:
wget "https://github.com/inspircd/inspircd/releases/download/v4.12.1/inspircd_4.12.1.ubuntu24.04.1_amd64.deb"

Ubuntu 26.04:
wget "https://github.com/inspircd/inspircd/releases/download/v4.12.1/inspircd_4.12.1.ubuntu26.04.1_amd64.deb"

Newer builds: GitHub releases





3. Optional — verify SHA-256

sha256sum ./inspircd_4.12.1.ubuntu24.04.1_amd64.deb

Match against the checksum on the release page.





4. Install

# Ubuntu 22.04
sudo apt install "./inspircd_4.12.1.ubuntu22.04.1_amd64.deb"

# Ubuntu 24.04
sudo apt install "./inspircd_4.12.1.ubuntu24.04.1_amd64.deb"

# Ubuntu 26.04
sudo apt install "./inspircd_4.12.1.ubuntu26.04.1_amd64.deb"





5. Configure & start

Edit config in [tt]/etc/inspircd[/tt], then:

sudo systemctl start inspircd.service
sudo systemctl enable inspircd.service

Without systemd:
sudo -g irc -u irc inspircd





File locations

  • Config: [tt]/etc/inspircd[/tt]
  • Data: [tt]/var/lib/inspircd[/tt]
  • Logs: [tt]/var/log/inspircd[/tt]




Source: InspIRCd 4 — Ubuntu installation

Next: configuration. Post your Ubuntu version if something fails.
#6
IRC Basic FAQ / The basics of IRC
Last post by Cjefke - Oct 16, 2026, 10:08 PM
IRC basics — a practical starter guide

IRC (Internet Relay Chat) is a simple, fast way to chat in real time on channels and in private messages. This guide covers what you need to get started: connecting, joining channels, talking, and the most useful commands.

No advanced setup required — just a client and a network.





1. What is IRC?

  • You connect to an IRC network (a group of linked servers)
  • You join channels (chat rooms), usually named like [tt]#help[/tt] or [tt]#mIRC[/tt]
  • You talk in the channel or send private messages (queries) to other users
  • Many networks have services (NickServ, ChanServ) to register nicks and channels
Popular clients: mIRC (Windows), HexChat, Irssi, WeeChat, or a web client if the network offers one.





2. Connect to a network

You need:
  • Server address (example: [tt]irc.example.net[/tt])
  • Port (plain: [tt]6667[/tt], TLS/SSL: often [tt]6697[/tt])
  • A nickname

Example (TLS recommended):
/server irc.example.net +6697

The [tt]+[/tt] before the port usually means SSL/TLS in many clients.

Pick a nick that is not already in use. If it is taken, try another:
/nick YourNewNick





3. Join a channel

/join #channel

Examples:
/join #help
/join #mIRC
/join #Eggdrop

To leave:
/part #channel
/part #channel See you later





4. Talk and private messages

In a channel, just type and press Enter.

Private message (query):
/msg Nickname Hello, are you there?

Or open a query window (depends on client), then type normally.

Action / "me" text:
/me waves





5. Essential commands

/server <host> [+port]     Connect to a server
/nick <name>               Change your nickname
/join #channel             Join a channel
/part #channel [reason]    Leave a channel
/msg <nick> <text>         Private message
/notice <nick> <text>      Notice (often used by bots/services)
/whois <nick>              Info about a user
/names #channel            List users in a channel (or check the user list)
/quit [reason]             Disconnect from IRC
/list                      List channels (can be long; some nets limit this)

Help from services (if the network has them):
/msg NickServ HELP
/msg ChanServ HELP
/msg MemoServ HELP





6. Register your nick (NickServ)

On networks with services, register so nobody else can take your name:

/msg NickServ REGISTER yourpassword your@email.com

Later, identify when you connect:
/msg NickServ IDENTIFY yourpassword

Many clients can do this automatically (SASL or a connect script).

Group extra nicks (if allowed):
/msg NickServ GROUP





7. Channel modes & user prefixes (quick view)

Common prefixes you see next to nicks:
  • @ — operator (op)
  • % — half-op (on some networks)
  • + — voiced (can talk when the channel is moderated)
Common channel modes (set by ops):
+n    No external messages (only users in the channel can talk to it)
+t    Only ops can change the topic
+m    Moderated (only +v and higher can talk)
+i    Invite-only
+k    Password (key) required to join
+l    User limit

You do not need to memorize these on day one — just know that ops control the channel.





8. Good habits

  • Read the channel topic and rules when you join
  • Do not spam, flood, or paste huge blocks of text
  • Prefer TLS ([tt]+6697[/tt] or the network's SSL port)
  • Register your nick on networks that offer NickServ
  • Do not share passwords in public channels
  • If you need help, ask in [tt]#help[/tt] (or the network's support channel) with a clear question





9. Mini cheatsheet

/server irc.example.net +6697
/nick MyNick
/join #help
/msg NickServ REGISTER strongpass me@example.com
/msg NickServ IDENTIFY strongpass
/msg Someone Hi!
/me nods
/quit Bye





10. Next steps

  • Learn your client's highlights, logging, and auto-join
  • Try a bouncer (e.g. ZNC) if you want to stay connected 24/7
  • Explore scripts (mIRC) or bots (Eggdrop) once you are comfortable
  • Read your network's MOTD and help channels for local rules




Questions? Post what client and network you use, and what you are trying to do. Someone will point you in the right direction.
#7
Anope FAQ / Anope IRC Services installatio...
Last post by Cjefke - Oct 16, 2026, 10:06 PM
How to install Anope IRC Services 2.0 from source on Debian / Ubuntu

A practical guide to compile and run Anope 2.0 (NickServ, ChanServ, etc.) on Debian and Ubuntu. Based on the official documentation:
Anope Wiki — Installation
Anope 2.0 README

Anope is the most widely used IRC services package and works with UnrealIRCd, InspIRCd, and others.





1. Prerequisites

Anope 2 is built with CMake. You also need a C/C++ compiler.

sudo apt-get update
sudo apt-get install build-essential cmake wget

Check CMake:
cmake --version

Optional extras (only if you need them later):
# MySQL module
sudo apt-get install default-libmysqlclient-dev

# SQLite module
sudo apt-get install libsqlite3-dev

# GnuTLS (alternative SSL)
sudo apt-get install libgnutls28-dev





2. Download the source

Get the latest 2.0 release from GitHub:
github.com/anope/anope/releases

Example:
wget https://github.com/anope/anope/releases/download/2.0.17/anope-2.0.17-source.tar.gz
tar xzvf anope-*-source.tar.gz
cd anope-*

(Adjust the version number to whatever is current on the releases page.)





3. Optional — enable extra modules

Extra modules (MySQL, SQLite, etc.) are not built by default. From the source directory:

./extras

Follow the prompts, then continue with Config below. 
Third-party modules can be placed in [tt]modules/third[/tt].





4. Configure, compile, install

./Config
cd build
make
make install

[tt]./Config[/tt] asks a few questions (install path, etc.). Defaults are fine for most people — install path is usually [tt]~/services[/tt].

When finished:
cd ~/services





5. Create the configuration

cd ~/services
cp conf/example.conf conf/services.conf
nano conf/services.conf

You must configure at least:

  • serverinfo — services server name (e.g. [tt]services.example.net[/tt])
  • uplink — host, port, password to your IRCd
  • module { name = "unreal" } (or [tt]inspircd[/tt], etc. — match your IRCd)
Example uplink block (Anope side):
uplink
{
    host = "127.0.0.1"
    ipv6 = no
    ssl = no
    port = 7000
    password = "mypassword"
}

Use a strong, unique password. The port must be a server listen / link port on your IRCd, not a normal client port.





6. Link block on UnrealIRCd

On the IRCd, add a matching link + ulines (example for UnrealIRCd 6). See also:
Linking UnrealIRCd with anope

link services.example.net {
    incoming {
        mask { ip 127.0.0.1; }
    };
    password "mypassword";
    class servers;
};
ulines { services.example.net; };

Rehash the IRCd after saving:
./unrealircd rehash

Important: the services name in [tt]ulines[/tt] and the [tt]link[/tt] block must match [tt]serverinfo[/tt] in Anope, and the password must match the uplink password.





7. Start Anope

cd ~/services
./bin/services

For support / debug logs:
./bin/services --support

Check that services appear as a linked server on your network ([tt]/LINKS[/tt], or your IRCd's server list).





8. Useful next steps

  • Create your services root / oper account (see Anope docs / first-time setup)
  • Copy and edit other example configs if needed ([tt]modules.example.conf[/tt] → [tt]modules.conf[/tt], then update [tt]include[/tt] lines)
  • Anope Wiki
  • Anope modules site
  • Support: #anope on [tt]irc.teranova.net[/tt]




Quick reference

# packages
sudo apt-get install build-essential cmake wget

# build
wget https://github.com/anope/anope/releases/download/2.0.17/anope-2.0.17-source.tar.gz
tar xzvf anope-*-source.tar.gz
cd anope-*
./Config
cd build
make
make install

# configure
cd ~/services
cp conf/example.conf conf/services.conf
nano conf/services.conf

# start
./bin/services




Sources:
Stuck on linking or config? Post your IRCd type, the uplink/link blocks (passwords redacted), and any error from [tt]./bin/services --support[/tt].
#8
Eggdrop FAQ / Eggdrop installation.
Last post by Cjefke - Oct 16, 2026, 10:04 PM
How to install Eggdrop from source on Debian / Ubuntu

A clear step-by-step guide to compile and run Eggdrop on Debian and Ubuntu. Based on the official documentation:
Installing Eggdrop
Setting Up Eggdrop

Eggdrop is the world's oldest actively maintained IRC bot. This guide covers a normal install from source.





1. Prerequisites

Eggdrop requires Tcl (and the Tcl development headers). TLS support needs OpenSSL headers too.

sudo apt-get update
sudo apt-get install build-essential tcl tcl-dev openssl libssl-dev wget

Optional (Python module support — Eggdrop 1.9+):
sudo apt-get install python3 python3-dev python-is-python3

Check Tcl is available:
tclsh
# type: exit





2. Download the source

Stable release (recommended):
wget https://geteggdrop.com -O eggdrop-latest.tar.gz

Or a specific version from the official FTP, for example:
wget https://ftp.eggheads.org/pub/eggdrop/source/1.10/eggdrop-1.10.2.tar.gz

Alternative via git (development tree):
git clone https://github.com/eggheads/eggdrop.git
cd eggdrop
git checkout stable/1.10
(If you use git, skip the extract step below and continue from [tt]./configure[/tt].)





3. Extract

tar zxvf eggdrop-*.tar.gz
cd eggdrop-*





4. Configure, modules, compile, install

Detect your system and find Tcl:
./configure

Choose default modules (recommended):
make config

Or pick modules interactively:
make iconfig

Compile:
make

Install into [tt]~/eggdrop[/tt] (default):
make install

Or install somewhere else (use a full path):
make install DEST=/home/YOURUSER/mybot

Optional — generate SSL certificates for botnet TLS:
make sslcert
# or: make sslcert DEST=/home/YOURUSER/mybot





5. Configure the bot

Go to the install directory:
cd ~/eggdrop

You get example configs. For a quick start:
cp eggdrop-basic.conf MyBot.conf
nano MyBot.conf

For full features, start from the complete example instead:
cp eggdrop.conf MyBot.conf
nano MyBot.conf

Things you must set:
  • Bot nick / altnick
  • IRC server(s)
  • Owner handle
  • Channels
  • Listen port (partyline)

Work through the file carefully — a bad config is the most common reason the bot will not start.





6. First start (create the userfile)

The -m flag creates the userfile the first time only:
./eggdrop -m MyBot.conf

After that, start without [tt]-m[/tt]:
./eggdrop MyBot.conf

Optional: make the config executable so you can start with [tt]./MyBot.conf[/tt]:
chmod u+x MyBot.conf
(The first line of the config must point to the correct eggdrop binary path.)





7. Auto-restart (crontab or systemd)

Eggdrop ships a helper script.

Crontab:
./scripts/autobotchk MyBot.conf

Systemd:
./scripts/autobotchk MyBot.conf -systemd

This keeps the bot running after a crash or server reboot.





8. Useful next steps





Quick reference

# packages
sudo apt-get install build-essential tcl tcl-dev openssl libssl-dev wget

# download & build
wget https://geteggdrop.com -O eggdrop-latest.tar.gz
tar zxvf eggdrop-latest.tar.gz
cd eggdrop-*
./configure
make config
make
make install

# configure & first run
cd ~/eggdrop
cp eggdrop-basic.conf MyBot.conf
nano MyBot.conf
./eggdrop -m MyBot.conf

# later starts
./eggdrop MyBot.conf

# auto-restart
./scripts/autobotchk MyBot.conf




Sources:
Questions or an error during compile/start? Post your distro version and the full error output.
#9
UnrealIRCd FAQ / UnrealIRCd Installation
Last post by Cjefke - Oct 16, 2026, 10:01 PM
How to install UnrealIRCd from source on Debian / Ubuntu

A practical step-by-step guide to compile and run UnrealIRCd on Debian and Ubuntu. Based on the official documentation:
Installing from source

This should take about 20–30 minutes if you follow the steps carefully.





1. Prerequisites (packages)

You need a compiler, OpenSSL, and a few optional libraries (recommended).

Ubuntu 20.04 / 22.04 / 24.04:
sudo apt-get update
sudo apt-get install build-essential pkg-config gdb libssl-dev libpcre2-dev libargon2-dev libsodium-dev libc-ares-dev libcurl4-openssl-dev

Debian 13:
sudo apt-get update
sudo apt-get install build-essential pkg-config gdb libssl-dev libpcre2-dev libargon2-dev libsodium-dev libc-ares-dev libcurl4-openssl-dev

Debian 11 / 12:
sudo apt-get update
sudo apt-get install build-essential pkg-config gdb libssl-dev libpcre2-dev libargon2-0-dev libsodium-dev libc-ares-dev libcurl4-openssl-dev

Minimum only (any apt-based distro):
sudo apt-get install build-essential libssl-dev





2. Do not run as root

Build and run UnrealIRCd as a normal user, never as root.

Create a dedicated user:
sudo adduser unrealircd

Switch to that user:
su - unrealircd

All steps below are done as the [tt]unrealircd[/tt] user.





3. Download the source

wget --trust-server-names https://www.unrealircd.org/downloads/unrealircd-latest.tar.gz

If [tt]wget[/tt] is missing:
sudo apt-get install wget





4. Extract the archive

tar xzvf unrealircd-*.tar.gz
cd unrealircd-*

(Replace with the real directory name if needed, e.g. [tt]unrealircd-6.2.0[/tt].)





5. Configure, compile, install

Run the interactive config (press Enter to accept defaults):
./Config

Compile:
make

Install (important — this installs into [tt]~/unrealircd[/tt] by default):
make install





6. Create the configuration file

Go to the install directory:
cd ~/unrealircd

Copy the example config (if it is not already there):
cp conf/examples/example.conf conf/unrealircd.conf

Edit it:
nano conf/unrealircd.conf

Important:
  • Walk through the file line by line
  • Change values marked as required (server name, me {}, etc.)
  • If you skip this, the server will refuse to start
Optional: read the syntax guide first:
Configuration file syntax





7. Start UnrealIRCd

cd ~/unrealircd
./unrealircd start

Check status:
./unrealircd status

Stop / restart:
./unrealircd stop
./unrealircd restart

After config changes, rehash without full restart:
./unrealircd rehash





8. Next steps (recommended)





Quick reference

# packages (example: Ubuntu 22.04/24.04)
sudo apt-get install build-essential pkg-config gdb libssl-dev libpcre2-dev libargon2-dev libsodium-dev libc-ares-dev libcurl4-openssl-dev

# as user unrealircd
wget --trust-server-names https://www.unrealircd.org/downloads/unrealircd-latest.tar.gz
tar xzvf unrealircd-*.tar.gz
cd unrealircd-*
./Config
make
make install
cd ~/unrealircd
cp conf/examples/example.conf conf/unrealircd.conf   # if needed
nano conf/unrealircd.conf
./unrealircd start




Source: unrealircd.org — Installing from source

Questions or stuck on a step? Post your distro version and the error output here.
#10
mIRC / Triviant Script
Last post by Cjefke - Jul 17, 2026, 10:35 PM
ls je een chatbox op je site hebt, dan zul je ook wel bezoekers hebben die graag iets willen doen op de chat, behalve chatten ;)

Daarvoor kan je dus een botje hebben, met triviant.

Installatie:
Je kunt dit script op 1 manier gebruiken; Kopier de onderstaande code, en druk in het mIRC van je botje op ALT + R. Dan opent zich de remote. Druk in de linker hoek op: File, daarna klik je op new. Nu is er een nieuwe pagina geopent. Plak in die pagina de code die je gekopieerd hebt.
Druk dan weer op File, en daarna klik je dit keer op Save As.... Dan typ je daarin: trivia.mrc, of je kunt hem ook anders noemen, maar zet er wel .mrc achter en klik op: "Opslaan", of "Save"

Wanneer je het geinstalleerd hebt, moet je het volgende doen:
Wanneer je het script hebt opgeslagen klik je onderin op Ok. Dan opent zich een waarschuwings venster. Klik daar op Yes. Dan krijg je een venstertje met een tekst veld te zien. Typ daarin je eigen naam, dus niet de naam van je botje, maar de naam waarop jijzelf chat. Daarna vul je je chatroom in, en zal het botje de chatroom joinen.
Maak nu een text bestand aan, en zet op elke regel een vraag, typ daarachter een ~ en daarachter het antwoord. Doe dat op deze manier:

Citaat:
Welke letter ontbreekt: scha_ts~a
Wie is de ontdekker van amerika~Columbus


Je hoeft er geen vraagteken achter te typen, dit gebeurt automatisch
Sla nu het bestand op in je mIRC directie met de naam vragen.txt.
Als je wilt weten wat je mIRC directie is, typ dan even de mIRC van je botje: //echo -a $mircdir, dan krijg je je mIRC directie te zien

De commando's voor de eigenaar zijn deze:
- !stop om het spel te stoppen.
- !reset om de scores te resetten.

De commando's voor de spelers zijn:
- !start om een spel te starten.
- !hint om een hint te krijgen.
- !score naam om de score van diegene te zien die ze bij naam hebben getypt. Typen ze er geen naam achter, dan krijgen ze hun eigen scores te zien

on *:LOAD: {
  /echo $active ␃7::␃12Bedankt voor het installeren van de trivia bot - Vul de naam van de admin in␃7::
  /nick $$?="Vul de naam van de bot in"
  %admin = $$?="Vul je eigen nicknaam in" | %triv.room = $$?="Wat is de quizroom?" | %triv.s = $$?="Hoeveel seconden moeten er tussen een vraag zitten? (In seconden)" | %triv = off
  /join %triv.room
}
 
on *:CONNECT: {
  /join %triv.room
}
 
on *:JOIN:%triv.room: {
  if (%triv == on) {
    /if ($readini(scores.ini,score,$nick) == $null) { /msg %triv.room ␃7::␃2 $nick ␃12heeft nog geen punten gehaald ␃7:: }
    else { /msg %triv.room ␃7::␃12Welkom␃2 $nick $+ ␃12, je score van deze maand is:␃2 $readini(scores.ini,score,$nick) ␃7:: }
    /notice $nick De vraag van dit moment is:␃2 %triv.q
  }
}
 
on *:TEXT:!start:%triv.room: {
  if (%triv == off) {
    %triv = on
    /msg %triv.room ␃7::␃12De quiz is weer gestart␃7::
    /next
  }
  else { notice $nick ␃7::␃12Trivia staat al aan␃7:: }
}
 
on *:TEXT:!hint:%triv.room: {
  msg %triv.room ␃7::␃12Hint:␃2 $left(%triv.a,3) $+ ... ␃7::␃12Letters:␃2 $len(%triv.a) ␃7::
}
 
on *:TEXT:!score*:%triv.room: {
  if ($2 == $null) {
    if ($readini(scores.ini,score,$nick) == $null) { /msg %triv.room ␃7::␃2 $+ $nick ␃12heeft geen punten gehaald␃7:: }
    else { /msg %triv.room ␃7::␃2 $+ $nick ␃12heeft␃2 $readini(scores.ini,score,$nick) ␃12punten gehaald␃7:: }
  }
  else {
    if ($readini(scores.ini,score,$2) == $null) { /msg %triv.room ␃7::␃2 $+ $2 ␃12heeft geen punten gehaald␃7:: }
    else { /msg %triv.room ␃7::␃2 $+ $2 ␃12heeft␃2 $readini(scores.ini,score,$2) ␃12punten gehaald␃7:: }
  }
}
 
CTCP *:credits: {
  ctcpreply $nick CREDITS MooneBot v1.00 - CREDITS // Moone Project
  ctcpreply $nick CREDITS Scripter: Toenie
  ctcpreply $nick CREDITS BetaTesters: Glm, RunTime-Error, Drakul, Tank & Dennis
}
 
on *:TEXT:!stop:%triv.room:{
  if (%triv == off) { msg %triv.room ␃7::␃12Triviant was al uit␃7:: }
  else {
    if (%triv == on) && ($nick isop $chan) { /msg %triv.room ␃7::␃12De triviant is nu uitgeschakeld␃7:: | %triv = off | /unset %triv.c | /timertriv off | /timerwarning off | timernext off }
    else {
      if (%triv == on) && ($nick == %admin) { /msg %triv.room ␃7::␃12De triviant is nu uitgeschakeld␃7:: | %triv = off | /unset %triv.c | /timertriv off | /timerwarning off | timernext off }
      if ($nick != %admin) { notice $nick ␃7::␃12Je bent geen admin␃7:: }
    }
  }
}
 
on *:TEXT:!help:%triv.room: {
  /notice $nick Dit zijn mijn commando's:
  /notice $nick !score ␟nicknaam␟, !hint, !start
}
 
on *:TEXT:!reset:%triv.room: {
  if ($nick == %admin) {
    /remini scores.ini score
    /msg $chan ␃7::␃12De scores zijn reset␃7::
  }
}
 
on *:TEXT:!lines:%triv.room: {
  //msg $chan ␃7::␃12Ik heb nu $lines($mircdir $+ /vragen.txt) vragen! ␃7::
}
 
on *:TEXT:admin:?: {
  if ($nick == %admin) {
    /notice $nick De commando's voor de admin zijn:
    /notice $nick !reset,!stop
  }
}
 
on *:TEXT:*:%triv.room: {
  if ($strip($1-) == %triv.a) {
    if ($timertriv != $null) { /timertriv off }
    if (%triv == off) { goto end } else {
      /msg $chan ␃7::␃2 $nick ␃12heeft juist geantwoord␃4 (␃2␂␂ $+ $strip($1-) $+ ␃4) ␃7::
      %triv.l = $calc($readini(scores.ini,score,$nick)+1)
      /writeini scores.ini score $nick %triv.l 
      /timerwarning off
      //timernext 1 %triv.s /next
    }
    :end
  }
}
 
alias false {
  /timertriv off
  /msg %triv.room ␃7::␃12Helaas, het antwoord,␃2 %triv.a ␃12, is ␃2NIET␃12 geraden!
  //timernext 1 %triv.s /next
}
 
alias next {
  /unset %triv.q | /unset %triv.a
  %triv.f = $read(vragen.txt) | %triv.q = $gettok(%triv.f,1,126) | %triv.a = $gettok(%triv.f,2,126) | inc %triv.c
  /msg %triv.room ␃7::␃2NR. %triv.c $+ ␃7::␃12De vraag:␃2 %triv.q ␃7::
  /timertriv 1 45 /false
  /timerwarning 1 35 /msg %triv.room ␃7::␃12Nog␃2 10 ␃12seconden␃7::
}
;Dit script is gemaakt door toenie, voor non-commercieel gebruik.
;Veel plezier met dit script