Installer panel v4.75.0

One script, six steps,
the project in your home directory

overtchat-setup.sh detects your distribution, lists the missing packages, then walks you through each component. Steps that aren’t possible yet stay on screen, grayed out, with the reason they’re blocked. The installer’s own screens are still mostly in French: this page translates menu entries by meaning, and their numbers never change.

# Get the installer, then run it
curl -fL -o overtchat-setup.sh https://service-overtchat.hd.free.fr/dl/setup
chmod +x overtchat-setup.sh
./overtchat-setup.sh

Six IRC servers, one program. Everything described here installs just as well in front of each of them — Overtchat-Hybrid, UnrealIRCd, ircd-Hybrid, InspIRCd, Bahamut, ircu (Undernet). What changes from one server to another is not what gets installed, but what the protocol allows afterwards: the Compatible servers page gives it feature by feature, with what was actually tried, security included.

Download

Get the project

The code’s GitHub repository is private: this site is what serves everything needed to install. The code is under the MIT license: server, services, panel and scripts can be reused freely, including to run your own network. This site’s texts, its name and its visual identity, however, remain reserved — they are the identity of this network, not of the software. Third-party components keep their own license (third-party licenses). Two ways to get the installer, which then fetches the rest from this same site.

↓

The installer on its own

No git needed: the script, served by this site. It’s also the source the installer uses for its own updates.

Download the script

⚙

In one line

The same thing from a terminal, with the checksum to verify right after — it’s published on the download page.

curl -fsSLO \
  https://service-overtchat.hd.free.fr/dl/Bootstrap/overtchat-setup.sh
sha256sum overtchat-setup.sh
chmod +x overtchat-setup.sh
ResourceAddress
Installer overtchat-setup.sh — served by this site
Checksums manifeste.json — SHA-256 of every distributed file
Published version /update — number, checksum and changelog
Git repository https://github.com/SerVuS033/Overtchat.git — private: neither the web pages nor git clone respond without access. The installer above doesn’t need it.
Report a problem Contact form
License MIT code, name and texts reserved — LICENSE file at the root of the repository; third-party components under their own license (third-party licenses)

The repository and this documentation may differ. The published script carries the version stated in the VERSION file at the root of the repository — currently 4.75.0. If they disagree, the behavior of the script you are running is what counts.

What the installer sets up, and where from

Every version is pinned: the installer fetches one specific archive, not the latest one. A versioned URL replays identically six months later, whereas a “latest” link will one day install something else without a single line having changed. These numbers are read from the script — this page does not copy them.

ComponentVersionRoleOfficial source
UnrealIRCd 6.2.6 The project’s reference IRC server — Overtchat-Hybrid speaks its dialect. https://www.unrealircd.org/downloads/unrealircd-6.2.6.tar.gz
ircd-Hybrid 8.2.47 A lightweight, modular TS6 IRC server. Seven services commands, and a +r mode reserved for services. https://github.com/ircd-hybrid/ircd-hybrid/archive/8.2.47.tar.gz
ircu2 u2.10.12.19 Undernet’s server, speaking the P10 protocol. Anope’s services do not support it. https://github.com/undernetirc/ircu2/archive/refs/tags/u2.10.12.19.tar.gz
InspIRCd 4.11.0 A widely used modular server. SID and UID identifiers, and the SVSNICK, SVSJOIN and SVSPART services commands. https://github.com/inspircd/inspircd/archive/refs/tags/v4.11.0.tar.gz
Eggdrop 1.10.2rc1
release candidate — the latest published release is 1.10.1
The bot that hosts IriX: IriX is a Tcl module and cannot exist without it. https://ftp.eggheads.org/pub/eggdrop/source/1.10/eggdrop-1.10.2rc1.tar.gz
Anope 2.1.25 Optional services: NickServ, ChanServ, OperServ… The 2.1 branch, the one that renamed its protocol module. https://github.com/anope/anope/archive/refs/tags/2.1.25.tar.gz

Overtchat-Hybrid is not in this table: it is the project’s own server, and the one the installer sets up by default, from this site. It downloads the ready-built server (Linux x86_64, glibc 2.34 or later, OpenSSL 3) and checks its fingerprint; the site serves only this binary. On a machine that doesn’t fit, the automatic installation sets up UnrealIRCd instead and says so — or refuses, if Overtchat-Hybrid was asked for explicitly. In a copy of the repository, it builds the sources already there.

Before you start

Requirements

A Linux machine and a shell. Everything else is checked, listed or installed by the script itself.

What the script detects on its own

  • The distribution and its package manager, to translate generic names (ssl-dev) into the distribution’s actual package names.
  • The privileges available: running as root, sudo present, or no elevation possible.
  • Components already on disk, including those installed outside the panel.
  • The missing packages for each component, before you even try to install it.

About privileges

With no option, the script runs in plain user mode: it only asks for elevation occasionally — to install system packages, set up the systemd units and a few system rules —, and only if sudo is available.

InvocationModeUsage
./overtchat-setup.sh default Plain user mode, occasional elevation if sudo exists.
./overtchat-setup.sh --root root Restarts as root for package management. The directory tree stays in your home directory.
./overtchat-setup.sh --user forced Forces plain user mode, even if root or sudo is available.
./overtchat-setup.sh --debug trace Turns on the set -x trace to diagnose a behavior.
./overtchat-setup.sh --help help Shows the available options and exits.

Nothing is ever installed in /root. Whatever the option, the directory tree is created in the real user’s home directory, under the project name chosen at first launch (~/MonReseau by default, or --projet=NAME). Elevation is only used for system packages, systemd units and a few /etc rules (sudoers, polkit, log rotation); the rest — sources, compiled binaries, configuration — belongs to you.

Installation wizard

Six steps, four of them required

The order isn’t a matter of presentation: it follows from the real dependencies between components. Steps 3, 4 and 5 stay locked until what they rely on exists.

System dependencies always available

Scans the packages each component needs, compares them with what is present, then installs the missing ones if elevation is possible.

Requires: nothing. This is the entry point.

At the end: the list of missing packages is empty, or you have the exact list to install by hand.

IRC server conditional

Builds UnrealIRCd, ircd-Hybrid, ircu, InspIRCd or Bahamut from source. Overtchat-Hybrid, the project’s own server and the one running the network since July 28, 2026, is the recommended choice: it comes ready-built from this site (a copy of the repository builds its own sources). The others can still be built, to compare or to roll back.

Requires: the system dependencies of the chosen server. The step stays locked while they are incomplete.

At the end: a compiled IRC server binary, verified by SHA-256 checksum.

Eggdrop conditional

The host bot: Tcl engine, admin console, permanent connection to the server. It is what will host IriX.

Requires: an installed IRC server. Locked until one is.

At the end: a compiled Eggdrop, able to connect to the server from the previous step.

Former path: the automatic installation only sets up Eggdrop and IriX when Node.js is missing or older than 14.14; otherwise it installs OverCore, the services written in Node.js, which need no Eggdrop at all.

IriX conditional

The core logic: accounts, channels, bans, automations, ULine links and moderation.

Requires: an installed Eggdrop — IriX is a Tcl module hosted by Eggdrop and cannot exist without it.

At the end: the pseudo-client services are loaded and can be controlled.

End of life: OverCore, its successor, serves the same services without Eggdrop. Prefer it: install Node.js ≥ 14.14 and run the installation again.

Optional services conditional

Anope, for networks that want additional services, or whose server is not ours (OverCore only speaks the Overtchat-Hybrid protocol). Lea is also on the menu, but its sources are not public: it cannot be installed outside the project.

Requires: an installed IRC server — these services link to the server, not to Eggdrop.

At the end: the chosen optional services are built and linked.

System services can be rerun

Every systemd unit the project ships (one per service and per timer): OverCore, backups, applying operators, watching over IriX where it is installed, the channel request queue.

Requires: nothing — but a unit only makes sense once its component is installed, hence its place at the end.

At the end: the units are placed in /etc/systemd/system/ and the timers enabled.

Without it: the installation works, but nothing runs on its own — no backups, no operators applied, no watchdog. It can be rerun as often as you like: an update never touches /etc.

Each step carries a status icon: ✔ done, ○ to do, ✖ locked. Their exact meaning, and how to lift a lock, are detailed just below.

Legend

Reading — and unlocking — a locked option

The panel has no hidden menu. An unavailable option stays on screen, grayed out, with its reason in angle brackets. The principle is deliberate: you see what exists and what you’re missing, instead of running into a failure afterwards.

The three status icons

✔
Done The step is complete. You can come back to add a component, but nothing is required of you.
○
To do The step is available right away: its requirements are met, it simply hasn’t been run yet.
✖
Locked The step is visible but can’t be selected. It says why, and that reason is always something you can act on.

What a locked option looks like

In a menu, a blocked entry is shown in gray, followed by its reason in angle brackets. The label stays readable: you know what the option would do if it were available.

# Menu excerpt: two available entries, two locked ones
  [1] Eggdrop
  [2] UnrealIRCd
  [3] IriX                 ⟨requiert Eggdrop⟩
  [4] Anope                ⟨paquets manquants — installables depuis le menu Dépendances⟩

Two kinds of reasons, two ways to unlock

Logical prerequisite

The component depends on another component that isn’t installed. The reason explicitly names what is missing, for example ⟨requiert Eggdrop⟩ (“requires Eggdrop”).

To unlock: install the named component first. IriX requires Eggdrop — IriX is a Tcl module hosted by Eggdrop. Anope and Lea require an installed IRC server. Once the prerequisite is in place, the entry becomes selectable the next time the menu is shown.

Missing system packages

The required libraries or build tools aren’t on the machine. The message depends on your privileges.

If elevation is possible: the reason shown is ⟨paquets manquants — installables depuis le menu Dépendances⟩ (“missing packages — installable from the Dependencies menu”). Open the System dependencies menu and run option 1, “Install all missing dependencies”.

Without elevation: the reason lists the packages to install directly. Install them by hand; option 2 of the Dependencies menu, “Show installation commands”, gives the exact command for your distribution.

Summary: what each component requires

ComponentRequiresHow to unlock
IRC server
Overtchat-Hybrid, UnrealIRCd, ircd-Hybrid, InspIRCd, Bahamut, ircu (Undernet)
Its build packages Dependencies menu → option 1, or install the listed packages by hand.
OverCore
the network services
Our server (Overtchat-Hybrid)
+ Node.js 14.14 or newer
The distribution’s nodejs package is enough: no npm dependencies. With another IRC server, the Anope services are installed instead.
Eggdrop
former path
An installed IRC server
+ its own packages
Installed only when Node.js is missing or too old for OverCore. Finish step 2, then add the missing packages.
IriX
former path, end of life
Eggdrop installed
+ Tcl and the MySQL client
Install Eggdrop first — IriX runs inside it. Then add tcl, tcllib, tcl-tls, tcl-mysql, mysql-client. Prefer OverCore: install Node.js ≥ 14.14 and run the installation again.
Anope An installed IRC server
+ cmake and its packages
Finish step 2, then add the missing packages.
Lea An installed IRC server
+ its sources, which are not public
Cannot be installed outside the project: its sources come from a private repository.
Install all dependencies
Dependencies menu, option 1
Available elevation Rerun with --root, or install the packages by hand via option 2.
Access Manager A panel rank ≥ 60 Sign in with an account of sufficient rank.
Reset the configuration A panel rank ≥ 80 Sign in with an account of sufficient rank.

The lock fixes itself if you installed some other way. The Config/*.json files are the source of truth for locking, but they only describe what this panel installed. So the script probes the disk before showing a menu and corrects the JSON — otherwise an Eggdrop installed by hand or from a package would have left IriX locked forever.

The correction only goes one way: the script can switch a state from false to true, never the reverse. It will never declare uninstalled a component it simply can’t find.

Panel ranks are not IRC ranks. They govern access to the script’s options, not privileges on the network. As long as no account has been created, the panel stays open: that is the initial installation mode. As soon as an account exists, a login gate appears at startup, with three attempts at most.

Dependencies

Required packages, component by component

The names below are generic: the script translates them for your package manager. The Dependencies menu shows, for each component, whether it is complete, and if not, the list of what is missing.

ComponentPackages
Eggdropbuild · gcc · make · tcl-dev · ssl-dev · zlib-dev · autoconf · automake · libtool · patch
IriXtcl · tcllib · tcl-mysql · tcl-tls · mysql-client
OverOptcl
Anopebuild · gcc · make · cmake · ssl-dev
Leabuild · gcc · make · autoconf · automake · libtool
UnrealIRCdbuild · gcc · make · ssl-dev · zlib-dev · pkgconfig · curl-dev · pcre2-dev · argon2-dev · sodium-dev
ircd-Hybridbuild · gcc · make · ssl-dev · zlib-dev · bison · flex · jansson-dev · autoconf · automake · libtool
ircubuild · gcc · make · autoconf · automake · libtool · pkgconfig
InspIRCdbuild · gcc · make · perl · pkgconfig · ssl-dev
Bahamutbuild · gcc · make · openssl · ssl-dev · zlib-dev
Overtchat-Hybrid (built from a copy of the repository)build · gcc · make · ssl-dev · zlib-dev · autoconf · automake · libtool
Overtchat-Hybrid (binary served by the site)openssl
Site and web panelphp · php-mysql · php-mbstring · php-gd · mysql-client · tar · curl · postfix
overcorenodejs

The Dependencies menu has two entries. Option 1, “Install all missing dependencies”, is itself locked if no elevation is possible — it can’t keep its promise without privileges. Option 2, “Show installation commands”, is always available and gives you the exact command to copy.

Next

After installing

Where the files live, and how to open the web panel.

The directory tree

The project is grouped in your home directory, under the name chosen at first launch (here ~/MonReseau, the suggested name); the IriX instance lives next to it, in ~/IriX. The only things outside your home are the systemd units, the sudoers, polkit and log-rotation rules, the installer’s log when it runs as root (/var/log), and — if you configure them from the menu — the Apache site and the Postfix relay.

~/MonReseau/
  Bootstrap/    # overtchat-setup.sh, the single entry point
  Components/   # component sources and compiled binaries
  Config/       # JSON files — the source of truth for state
  IriX/         # the services’ Tcl module
  Runtime/      # PIDs, logs, runtime files
  Web/          # the web panel and the public site

Starting the web panel

# From the project root
./Web/start.sh start

The panel is then available at http://localhost:8080. The script also accepts stop, restart and status.

The web panel and the shell panel don’t do the same thing. overtchat-setup.sh installs, builds and starts the components; the web interface monitors and controls the network once it is running. One doesn’t replace the other.

Controlling the services

Once IriX is in place (or OverCore, its successor, which has served them on this network since 9 October 2026), the five pseudo-clients answer private messages on IRC. Their full catalogue is detailed on its own page.

All the services’ commands →

Integrity

Option 8 of a component’s menu takes the SHA-256 checksum of its binary at the first check — nothing is recorded at installation —, then compares the following checks with it. Option 9 of the main menu checks the checksums of the state files in Config/; option 13 sets them again, on an installation known to be sound.

Troubleshooting

Symptoms and likely causes

The most common blockers come from locking: they almost always have a cause named on screen.

SymptomLikely cause and fix
An option stays locked although the component is installed The component was installed outside the panel, so the Config/*.json files don’t know about it yet. The script probes the disk and corrects the state the next time the menu is shown: leave the menu and come back. If the lock persists, the binary isn’t in a known location — use option 11 of the component’s menu, “Set an existing binary”, to register it explicitly.
Missing packages, but no sudo Without elevation, the panel can’t install anything and option 1 of the Dependencies menu is itself locked. The blocking message then lists the packages to install by hand. Option 2, “Show installation commands”, gives the exact command for your distribution. Alternatively, rerun with --root.
The panel refuses the Access Manager Insufficient rank: the Access Manager requires a panel rank ≥ 60, and resetting the configuration ≥ 80. Sign in again with an account that has the required rank. Reminder: these are panel ranks, unrelated to IRC ranks.
The panel asks for a password at startup Normal behavior as soon as at least one account exists: the login gate turns on and allows three attempts. As long as no account has been created, the panel stays open in initial installation mode.
The IriX step is locked although the IRC server is running IriX doesn’t depend on the IRC server but on Eggdrop: it is a Tcl module hosted by Eggdrop. Install Eggdrop — step 3 — before coming back to step 4.
The script does something you can’t explain Rerun with --debug: the set -x trace shows every command executed. The Logs panel, option 5 of the main menu, also gathers logs, bugs and reports in one place.

A lock is never a bug. The panel would rather show an unavailable option with its reason than hide it or let it fail halfway. If an entry is grayed out, the answer is written in the angle brackets that follow it.