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.
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.
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
| Resource | Address |
|---|---|
| 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.
| Component | Version | Role | Official 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.
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,
sudopresent, 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.
| Invocation | Mode | Usage |
|---|---|---|
| ./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.
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.
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
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
| Component | Requires | How 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.
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.
| Component | Packages |
|---|---|
| Eggdrop | build · gcc · make · tcl-dev · ssl-dev · zlib-dev · autoconf · automake · libtool · patch |
| IriX | tcl · tcllib · tcl-mysql · tcl-tls · mysql-client |
| OverOp | tcl |
| Anope | build · gcc · make · cmake · ssl-dev |
| Lea | build · gcc · make · autoconf · automake · libtool |
| UnrealIRCd | build · gcc · make · ssl-dev · zlib-dev · pkgconfig · curl-dev · pcre2-dev · argon2-dev · sodium-dev |
| ircd-Hybrid | build · gcc · make · ssl-dev · zlib-dev · bison · flex · jansson-dev · autoconf · automake · libtool |
| ircu | build · gcc · make · autoconf · automake · libtool · pkgconfig |
| InspIRCd | build · gcc · make · perl · pkgconfig · ssl-dev |
| Bahamut | build · 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 panel | php · php-mysql · php-mbstring · php-gd · mysql-client · tar · curl · postfix |
| overcore | nodejs |
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.
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.
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.
Symptoms and likely causes
The most common blockers come from locking: they almost always have a cause named on screen.
| Symptom | Likely 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.