// 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.
// 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.
# 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:
# 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.
# 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:
# 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.
# 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.
# 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
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
journalctl -u caddy for errors. Using nginx instead? Run sudo certbot renew --dry-run to test renewal.Can't create users
argon2-cffi is installed (pip3 install argon2-cffi) and that /var/lib/cryptirc/ is writable.Email verification isn't working
inet_interfaces = loopback-only, and check /var/log/mail.log.Does updating ever disconnect my IRC?
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