Skip to content

// install & update

Install, update, and carry CryptIRC everywhere

Everything you need to run your own CryptIRC on any Linux distribution, keep it updated without ever dropping your IRC connections, and install it as a real app on your desktop, iPhone or Android.

Debian & UbuntuArch LinuxZero-downtime updatesInstallable PWA

// step 1 — pick your distro

Install on Debian or Ubuntu

One script sets up Rust, the CryptIRC binaries, Caddy, TLS, systemd and your first admin user. The same installer covers the whole apt family — Debian 12, Ubuntu 22.04+, Mint, Pop!_OS, Raspberry Pi OS, Devuan and the rest.

bash — your server
# clone the repo, then let the installer do the rest
$ git clone https://github.com/gh0st68/CryptIRC.git
$ cd CryptIRC
$ sudo bash deploy/deploy.sh

Running it with no arguments walks you through everything interactively — domain (or press Enter to serve on your server's IP with a self-signed certificate, no domain needed), registration mode, and whether to enable email. For a fully non-interactive install:

bash — non-interactive
# domain + free Let's Encrypt TLS
$ sudo bash deploy/deploy.sh yourdomain.com admin@yourdomain.com

# bare IP + self-signed cert — no domain, no email needed
$ sudo bash deploy/deploy.sh 203.0.113.10

With a self-signed certificate your browser shows a one-time warning the first time — click Advanced → Proceed. That's expected; the connection is still fully encrypted.

// arch linux

Install on Arch Linux

Same idea, a dedicated script — uses pacman instead of apt, and supports firewalld/iptables in addition to ufw. Works on the Arch derivatives too: Manjaro, EndeavourOS, CachyOS, Garuda, Artix.

bash — your Arch server
# clone the repo, then let the installer do the rest
$ git clone https://github.com/gh0st68/CryptIRC.git
$ cd CryptIRC
$ sudo bash deploy/deploy-arch.sh

Same interactive prompts, same non-interactive form as Debian — just swap deploy.sh for deploy-arch.sh:

bash — non-interactive
# domain + free Let's Encrypt TLS
$ sudo bash deploy/deploy-arch.sh yourdomain.com admin@yourdomain.com

# bare IP + self-signed cert — no domain, no email needed
$ sudo bash deploy/deploy-arch.sh 203.0.113.10

// every other distribution

Fedora, RHEL, openSUSE, Alpine, Void, Gentoo — anything else

CryptIRC itself has no distro allegiance. It is two self-contained Rust binaries behind Caddy, run by systemd — if your distribution has Rust, a web server and an init system, it runs CryptIRC. The two scripts above just automate the package-manager half for you; everywhere else it is the same handful of commands with your own package manager.

bash — any Linux
# install rust + a compiler with your package manager, then:
$ git clone https://github.com/gh0st68/CryptIRC.git
$ cd CryptIRC
$ cargo build --release

# then Caddy + the two systemd units — full steps in INSTALL.md

The manual install guide walks through it end to end: build, Caddy config, the cryptirc and irc-core systemd units, TLS and your first admin user. The updater on the next section is already distro-agnostic — it finds apt, dnf, yum, pacman, zypper or apk on its own and installs whatever the build needs.

// zero-downtime updates

Updating — without disconnecting from IRC

Your IRC connection lives in its own small, always-on background process (irc-core), completely separate from the web server. The update script only touches the web server — everyone's IRC connections stay up the whole time. Identical on every distribution — it finds your package manager on its own.

bash — routine update
# pulls the latest code, rebuilds, and hot-swaps the web server only
$ cd CryptIRC
$ git pull
$ sudo bash deploy/update.sh

What it does

Backs up your data, rebuilds both binaries, and restarts only the web server. The IRC daemon keeps every connection alive the entire time — no part/rejoin on any channel.

When you'd add a flag

sudo bash deploy/update.sh --restart-daemon also bounces the IRC daemon itself — only ever needed if you're tracking CryptIRC's own daemon-level source changes, not for routine updates.

Skip the backup

sudo bash deploy/update.sh --no-backup skips the automatic data snapshot if you already have your own backup strategy in place.

// on every device

Install CryptIRC as an app

CryptIRC is a Progressive Web App — install it once and it behaves like a native app: its own icon, its own window, push notifications, and no browser chrome.

Desktop (Chrome / Edge / Brave)

Open your CryptIRC instance, then click the install icon in the address bar (⊕ or a small computer/download icon on the right side) and choose Install. It opens as its own app, pinned to your taskbar/dock and launchable independent of your browser.

iPhone / iPad (Safari)

Open your CryptIRC instance in Safari (must be Safari, not Chrome — iOS requires it for PWA install). Tap the Share icon, scroll down, and tap Add to Home Screen. It'll appear on your home screen with its own icon and open full-screen, with push notifications.

Android (Chrome / Brave)

Open your CryptIRC instance, tap the ⋮ menu, and choose Add to Home Screen (or you may see an automatic Install banner — tap it). It installs like any other app, with its own icon and full push notification support.

Native desktop apps

Prefer a dedicated binary instead of a PWA? Windows, macOS and Linux installers are on the GitHub releases page — same client, packaged with Electron and system-tray support.

Every install method — PWA or native — talks to the same server and stays in sync. Switch between your phone, your desktop app, and a plain browser tab without missing a thing.

// if something's not right

Troubleshooting

CryptIRC won't start
Check the logs: journalctl -u cryptirc -n 50 --no-pager. If you're also running the IRC daemon, check journalctl -u irc-core -n 50 --no-pager too.
TLS / certificate issues
Caddy's certificates are automatic — check journalctl -u caddy for errors. Using nginx instead? Run sudo certbot renew --dry-run to test renewal.
Can't create users
Make sure argon2-cffi is installed (pip3 install argon2-cffi) and that /var/lib/cryptirc/ is writable.
Email verification isn't working
Email is optional — open registration works fine without it (captcha-protected, auto-verified). If you enabled it: install Postfix, set inet_interfaces = loopback-only, and check /var/log/mail.log.
Does updating ever disconnect my IRC?
An ordinary update.sh run — no. Only passing --restart-daemon, or restarting the whole server/box, touches the IRC daemon itself.

Full step-by-step (manual install, nginx as an alternative to Caddy, every environment variable) is in the INSTALL guide on GitHub. Stuck? Drop into #dev or #twisted on irc.twistednet.org.

// get started

Ready when you are