This guide covers the module system in UnrealIRCd for IRC.atl.chat, focusing on third-party module management and configuration.
UnrealIRCd uses a modular architecture where functionality is provided by loadable modules:
- Core Modules: Built-in functionality (user modes, channel modes, etc.)
- Third-Party Modules: Community-developed extensions
- Module Management: Automated installation and configuration via Docker
Modules/
├── usermodes/ # User mode implementations
├── chanmodes/ # Channel mode implementations
├── commands/ # IRC command extensions
├── extensions/ # Protocol extensions (IRCv3, etc.)
├── third/ # Third-party modules
├── crypto/ # Cryptographic functions
└── backend/ # Database backends
Third-party modules are automatically installed during container build using the third-party-modules.list file:
# Edit the modules list
vim src/backend/unrealircd/third-party-modules.list
# Add modules (one per line)
third/showwebirc
third/geoip
# Rebuild container to install modules
make rebuild# Comments start with #
# Empty lines are ignored
# One module per line
# WebIRC/WebSocket information in WHOIS
third/showwebirc
# Add more modules here as needed:
# third/example-module- Build Time: Modules listed in
third-party-modules.listare installed during container build - First Run: Installation script runs automatically on first container startup
- Persistence: Installed modules persist across container restarts
- Flag File:
.modules_installedprevents re-installation
# List available third-party modules
make modules-list
# Show installed modules
make modules-installed# List available modules
docker compose exec unrealircd manage-modules.sh list
# Show module information
docker compose exec unrealircd manage-modules.sh info webpanel
# Install a module
docker compose exec unrealircd manage-modules.sh install webpanel
# Uninstall a module
docker compose exec unrealircd manage-modules.sh uninstall webpanel
# Show installed modules
docker compose exec unrealircd manage-modules.sh installed# Add module to configuration
docker compose exec unrealircd module-config.sh add webpanel
# Remove module from configuration
docker compose exec unrealircd module-config.sh remove webpanel
# List loaded modules in config
docker compose exec unrealircd module-config.sh list# List loaded modules
MODULE LIST
# Load module at runtime
MODULE LOAD mymodule
# Unload module
MODULE UNLOAD mymoduleContains core modules required for basic functionality:
// Core modules - DO NOT REMOVE
loadmodule "cloak_sha256";
loadmodule "usermodes/secureonlymsg";
loadmodule "chanmodes/ban";
loadmodule "chanmodes/inviteonly";
// Standard extensions
loadmodule "extensions/ircv3";
loadmodule "extensions/sasl";Site-specific modules:
// Third-party modules
loadmodule "third/showwebirc";
loadmodule "third/geoip";
// Custom modules
// loadmodule "mymodule";Optional features:
// Load as needed
// loadmodule "chanmodes/auditorium";
// loadmodule "usermodes/censor";- third/showwebirc: Adds WebIRC and WebSocket information to WHOIS queries
# Check module file exists
docker compose exec unrealircd ls -la /home/unrealircd/unrealircd/modules/third/
# Check logs for errors
make logs-ircd | grep -i module# Validate configuration
docker compose exec unrealircd unrealircd -c /home/unrealircd/unrealircd/conf/unrealircd.conf
# Check syntax errors
make logs-ircd | grep -i errorIf you need to force reinstallation of modules:
# Remove the installation flag
docker compose exec unrealircd rm -f /home/unrealircd/.modules_installed
# Restart the container
docker compose restart unrealircd# Check module status
docker compose exec unrealircd unrealircdctl module list
# Enable debug logging
# Add to unrealircd.conf:
# set { log-level debug; };Browse available modules at: https://modules.unrealircd.org/
List available modules from within a running container:
docker compose exec unrealircd ./unrealircd module list-
Edit the configuration file:
nano src/backend/unrealircd/third-party-modules.list
-
Add the module name (one per line):
third/new-module-name
-
Rebuild the container:
make rebuild
-
Remove from the configuration file:
nano src/backend/unrealircd/third-party-modules.list
-
Comment out or delete the line:
# third/old-module-name -
Rebuild the container:
make rebuild
If you need to install additional modules after the container is running:
# Enter the container
docker compose exec unrealircd sh
# Install a module manually
cd /home/unrealircd/unrealircd
./unrealircd module install third/module-name
# Rehash to load the module
./bin/unrealircdctl rehash- Third-party modules are not officially supported by the UnrealIRCd team
- Review module source code if security is a concern
- Only install modules from trusted sources
- Regularly update modules for security patches
- UNREALIRCD.md - Main server configuration
- CONFIG.md - Configuration management
- DOCKER.md - Container setup
- UnrealIRCd Module API - Official API docs
- Third-Party Modules - Module repository