Install from scratch,
without guessing anything
Each step comes with the command to type, what the machine answers, and the sign that proves it worked. No knowledge of IRC is assumed. Allow an hour, half of it watching code compile. The installer’s own screens are still mostly in French: the messages quoted here appear as the script writes them, followed by a translation.
What you are installing, and why it takes several pieces
A chat network isn’t one program but a stack. Each layer only talks to its neighbor, and each is useless without the one below — which is why the installer enforces an order and refuses to skip it.
One server at a time. The installer offers six — Overtchat-Hybrid, UnrealIRCd, ircd-Hybrid, InspIRCd, Bahamut, ircu (Undernet) — but they compete for the same ports: 6667 and 6697. You pick one. The table on the Supported servers page says what each one allows afterwards; when in doubt, take the one offered by default.
Before you start
A Linux machine
Debian, Ubuntu, Fedora, Rocky, Arch or openSUSE, with systemd. The installer recognizes their package managers and translates package names itself, as they differ from one family to another. Without systemd — Alpine, for instance —, it refuses to install.
An ordinary account
Definitely not root. The project installs into your home directory. The script will ask for occasional elevation for system packages, systemd units and a few system rules (sudoers, log rotation).
Room to compile
The server offered by default, Overtchat-Hybrid, comes ready-built and checked against its fingerprint; the other IRC servers are built on the spot. Allow 2 GB of free space — the script refuses below 512 MB — and a few minutes of CPU time.
Seven tools must be present first: jq, curl, git, openssl, tar, sha256sum and awk. The script checks them and offers to install them if you can elevate your rights. If it cannot, it shows the exact command for your distribution and stops there. It also refuses to start on a machine it knows to be incompatible: a system other than Linux, no systemd, an unknown package manager, an architecture other than x86_64 or aarch64, bash older than version 4, less than 512 MB of free space.
Get the script, and check that it is intact
The script is served by this site. Download it, compare its checksum with the published one, make it executable.
# 1. download it to your home directory cd ~ curl -fsSLO https://service-overtchat.hd.free.fr/dl/Bootstrap/overtchat-setup.sh # 2. compute its checksum sha256sum overtchat-setup.sh # 3. compare it with the one the site publishes curl -s https://service-overtchat.hd.free.fr/update
What you should see. Command 2 prints a long string of 64 characters. Command 3 returns structured text containing "sha256" followed by the same string. The two must be identical, character for character. If they differ, the file was altered on the way or the download was cut short: start over, run nothing.
# 4. make it executable chmod +x overtchat-setup.sh
No output: chmod says nothing when it succeeds. To be sure, ls -l overtchat-setup.sh should show x in the permissions.
Looking for the full repository? It is private: neither its pages nor git clone answer without access. To install, the script alone is enough: it fetches the rest from this site.
The first run
You run the script with no option at all. It then goes through seven checks before showing you anything — here they are in order, so that nothing scrolling by comes as a surprise.
./overtchat-setup.sh
It announces which privileges it runs with
Three cases: root, your-name + sudo, or your-name (sans élévation) (“no elevation”). The third isn’t blocking: it will show you the commands to run yourself.
Even when run with sudo, it installs in your home directory and never in /root. Run as root without sudo, it refuses: the services never run as root. Name the account that will own the installation instead: OVERTCHAT_COMPTE=your-name.
It recognizes your distribution
By looking for the package manager. The “Distribution” line of the frame must name your system. If it says inconnu (unknown), the script refuses to install: without a recognized manager (apt, dnf, yum, pacman, zypper, apk), it would not know how to install its dependencies.
It checks the seven tools, and stops if one is missing
With elevation, it installs them. Without, it writes the exact command for your distribution and hands back control. Together with the refusal of an incompatible machine, it is the only deliberate stop along the way.
It creates its folders
Its directories, under the project folder — the name chosen at first launch, ~/MonReseau by default —, listed below in Where everything lands. It then checks that they really exist: a failed mkdir does not pass for a success.
Expected message: ✔ Arborescence validée (N dossiers) (“directory tree validated, N folders”)
It takes you into the wizard
After a [Entrée pour continuer] prompt (“press Enter to continue”). You’re in. No password is asked of you — see What is left to you: you haven’t missed anything.
The wizard, and why some lines are grayed out
It is not a questionnaire: it is a list of six steps, some of which are locked until the previous one is done. A locked step stays displayed, greyed out, with the reason for the block — rather than disappearing and leaving you to search.
Take them in order, typing the number then Enter. Each installation downloads sources, compiles them, then checks that the resulting binary exists and starts. That last check is the one that counts: a build that finishes without errors has never proven that a program works.
| Step | What actually happens | Duration |
|---|---|---|
| 1 · Dependencies | Compares the packages required by each of the eleven components with what is present, then installs the missing ones — or shows the commands if you don’t have the rights. | 1–3 min |
| 2 · IRC server | For Overtchat-Hybrid, the server offered by default: downloads the ready-built binary and compares its fingerprint with the manifest’s. For the others: downloads the official archive, unpacks it, configures it and builds it. In both cases, the binary is tested before being declared installed. | 3–10 min |
| 3 · Eggdrop | Same principle. The script also checks that the .so modules are present: without them the bot starts but can’t do anything. |
2–5 min |
| 4 · IriX | Nothing is built: 31 files are downloaded from this site, each compared with its fingerprint published in the manifest and refused if it differs. Then you give the database details and the script writes the bot’s configuration. | 1 min |
| 5 · Anope / Lea | Optional. Anope asks for the services server name, the host, the link port and a password — which cannot be empty. Lea cannot be installed outside the project: its sources are not public. | 3–6 min |
| 6 · System services | Installs the project’s systemd units in /etc/systemd/system/ and enables the timers — backups, operators, watchdog. Without it, nothing runs on its own. |
— |
Where everything lands
The project fits in a single folder, named at first launch (~/MonReseau by default). The installation also places things outside it: the ~/IriX instance, the systemd units, the sudoers, polkit and log-rotation rules, and — if you accept those steps — Apache and Postfix. To remove everything, use Tools/desinstaller.sh, which first shows what it would delete.
# ~/MonReseau — the root of everything ~/MonReseau/ ├── Bootstrap/ the installer itself ├── Servers/ the compiled IRC servers ├── Components/ │ ├── Service/ eggdrop, anope, lea │ └── Serveur/ binaries and local archives ├── IriX/ the services’ SOURCES ├── Config/ all the state files (.json) ├── Runtime/Logs/ the logs └── Web/ the site and the panel, if installed # and, separately: ~/IriX/ the bot’s INSTANCE — where it runs
Two IriX folders, and that’s not a mistake. ~/MonReseau/IriX holds the downloaded code, which updates replace. ~/IriX is the running instance, with its configuration and data — it belongs to you and is never overwritten.
The site and the panel
Entry 12. Six questions, each with a default value: Enter is enough to accept it.
| Question | What it decides | Default |
|---|---|---|
| Network name | The title shown everywhere on the site. | Mon réseau IRC |
| Short name | Used in menus, where space is tight. | MonReseau |
| Domain | The site’s address. Also used to build email addresses. | irc.example.org |
| Sender address | The sender of the site’s messages. | contact@your-domain |
| Notification address | Who receives requests and alerts. | same as above |
| Main channel | The channel the website’s chat opens first. | #accueil |
The site archive is downloaded, then its checksum is compared with the published one. If the manifest can’t be reached, the script explicitly asks for permission to continue without checking, and refuses by default — the archive unpacks over your installation folder, this is no formality.
One last question, further on, is about your provider’s SMTP relay (smtp.free.fr, ssl0.ovh.net…). Leaving it empty works, but messages will be sent directly — which most recipients refuse from a residential address.
What the installer doesn’t do
Three things are beyond it. None is a defect, but ignoring them leads to blockers you can’t put a name to.
1 The MySQL server
It installs the client, never the server. IriX and the site need it. Install it yourself:
sudo apt install mariadb-server
Then create a database and a user before step 4.
2 The web panel account
The site installs without any account: nobody can sign in until you create one.
php ~/MonReseau/Tools/\
panel-account.php create
3 No password at first
The installer doesn’t ask for one on first run, and that’s on purpose: the accounts file doesn’t exist yet. It is created the first time you enter the Access Manager (entry 6). Until you have been there, anyone with access to the Unix account has access to the panel.
Living with it: updates
Seven commands work without going through the menu, so also from a scheduled task.
# am I up to date? ./overtchat-setup.sh version # what would an update change? (writes nothing) ./overtchat-setup.sh check # apply it ./overtchat-setup.sh update # roll back ./overtchat-setup.sh rollback
What you should see after version: a two-line box, « Installée » and « Publiée » (installed and published), followed by ✔ À jour. (“up to date”) or a warning naming the new version. If the second line says injoignable (“unreachable”), it’s the network or the site that isn’t responding, not your installation.
Every file is backed up before being replaced, and its checksum verified after download: a tampered archive is refused rather than installed. If an update fails, an email goes to the notification address with the details of what went wrong.
When things get stuck
| What you see | What it means | What to do |
|---|---|---|
Dépendances manquantes : … (“missing dependencies”) |
One of the seven basic tools is missing. | Run the command shown, then run the script again. |
| A step stays gray | What it builds on isn’t installed. | Read the reason under the step: it names what is missing. |
Distribution : inconnu (“unknown”) |
No recognized package manager. | The script refuses to install: it would not know how to install its dependencies. Use a recognized distribution. |
| The build stops | A development library is missing. | Menu entry 2: it lists what’s missing per component. |
| The site shows up, but you can’t sign in | No account exists. | Create it — the panel account. |
| The panel can’t find the database | MySQL isn’t installed or isn’t running. | Install it — the MySQL server. |
The session log lives in /var/log/overtchat-setup.log when the installer runs as root (through sudo), in ~/.local/state/overtchat/overtchat-setup.log otherwise, readable by you alone — and keeps everything that scrolled by, including what went past too fast. If you get stuck, it’s the first place to look — and the content to attach if you write to us from the contact page.