Docker-based IRC server with UnrealIRCd, Atheme Services, and automated SSL certificate management.
| Component | Technology | Purpose |
|---|---|---|
| IRC Server | UnrealIRCd 6.2.0.1 | IRC daemon |
| Services | Atheme 7.2.12 | NickServ, ChanServ, OperServ |
| WebPanel | UnrealIRCd WebPanel | Admin interface |
| SSL/TLS | Let's Encrypt + Cloudflare | Certificate management |
| Container | Docker + Compose | Deployment |
# 1. Clone and configure
git clone https://github.com/allthingslinux/irc.atl.chat
cd irc.atl.chat
cp env.example .env
# 2. Edit configuration
# BE SURE TO READ THIS CAREFULLY AND DOUBLE CHECK ALL VARIABLES
# ATHEME WILL NOT START WITHOUT THE SEND AND RECEIVE PASSWORD SET PROPERLY
vim .env
# 3. Setup Cloudflare DNS credentials
cp cloudflare-credentials.ini.template cloudflare-credentials.ini
chmod 600 cloudflare-credentials.ini
vim cloudflare-credentials.ini # Add your Cloudflare API token
# 4. Setup SSL certificates (required before starting)
make ssl-setup
# 5. Start services
make upNote: SSL setup must be completed before starting services, as UnrealIRCd configuration expects SSL certificates to exist.
Copy env.example to .env and configure:
# Server Settings
IRC_DOMAIN=irc.atl.chat
# IRC_PORT=6667 # Disabled - TLS only
IRC_TLS_PORT=6697
IRC_RPC_PORT=8600
# Network Identity
IRC_ROOT_DOMAIN=atl.chat
IRC_NETWORK_NAME=atl.chat
IRC_CLOAK_PREFIX=atl
# Admin Contact
IRC_ADMIN_NAME="Your Admin Name"
IRC_ADMIN_EMAIL=admin@yourdomain.com
# SSL/TLS
LETSENCRYPT_EMAIL=admin@yourdomain.com
# Services
ATHEME_SERVER_NAME=services.atl.chat
ATHEME_UPLINK_HOST=irc.atl.chat
ATHEME_UPLINK_PORT=6900
ATHEME_SEND_PASSWORD=your-services-password
ATHEME_RECEIVE_PASSWORD=your-services-passwordConfiguration files are automatically generated from templates using your .env file:
- Templates:
src/backend/*/conf/*.templatefiles - Generated:
src/backend/*/conf/*.conffiles (gitignored) - Process:
envsubstsubstitutes variables from.envinto templates - Automation:
make uprunsinit.shandprepare-config.shautomatically
Never edit the .conf files directly - they will be overwritten. Always modify the .env file and run make up to regenerate.
make up # Start all services
make down # Stop all services
make restart # Restart services
make status # Check service status
make logs # View all logsmake build # Build containers
make rebuild # Rebuild from scratch
make test # Run test suite
make lint # Run lintingmake ssl-setup # Setup SSL certificates
make ssl-status # Check certificate status
make ssl-renew # Force renewal
make ssl-logs # View SSL logsmake generate-password # Generate IRC operator password
make modules-list # List available modules
make modules-installed # Show installed modulesirc.atl.chat/
├── src/
│ ├── backend/
│ │ ├── unrealircd/ # IRC server
│ │ └── atheme/ # IRC services
│ └── frontend/
│ ├── webpanel/ # Admin interface
│ └── gamja/ # Web client (optional)
├── scripts/ # Management scripts
├── docs/ # Documentation
├── data/ # Persistent data
├── logs/ # Service logs
└── tests/ # Test suite
| Port | Protocol | Service | Purpose |
|---|---|---|---|
| 6697 | IRC+TLS | UnrealIRCd | Encrypted IRC |
| 6900 | IRC+TLS | UnrealIRCd | Server links |
| 6901 | IRC | UnrealIRCd | Atheme services (localhost) |
| 8600 | HTTP | UnrealIRCd | JSON-RPC API |
| 8000 | WebSocket | UnrealIRCd | WebSocket IRC |
| 8080 | HTTP | WebPanel | Admin interface |
# TLS connection (required)
irc irc.atl.chat:6697
# Note: Plaintext connections are disabled for security
# All clients must use SSL/TLS on port 6697- URL:
http://your-server:8080 - Purpose: IRC server management
- NickServ:
/msg NickServ REGISTER password email - ChanServ:
/msg ChanServ REGISTER #channel - OperServ: Administrative services
make logs
make statusmake ssl-status
make ssl-logsmake restart
# Check if configuration was generated properly
ls -la src/backend/unrealircd/conf/unrealircd.conf
ls -la src/backend/atheme/conf/atheme.conf
# If configs are missing, regenerate from templates
make buildmake testIRC.atl.chat uses a comprehensive testing framework organized by testing level (traditional approach):
tests/unit/- Unit tests for individual components and functions- Configuration validation, Docker client testing, environment setup
tests/integration/- Integration tests using controlled IRC serverstest_protocol.py- IRC protocol compliance (RFC1459, RFC2812)test_clients.py- Client library integration (pydle, python-irc)test_services.py- Service integration (NickServ, ChanServ, Atheme)test_monitoring.py- Server monitoring and RPC functionalitytest_performance.py- Performance and load testingtest_infrastructure.py- Infrastructure and deployment teststest_irc_functionality.py- General IRC server functionality
tests/e2e/- End-to-end workflow teststests/protocol/- Basic IRC message protocol tests (unit-level)tests/legacy/integration/- Legacy integration tests (deprecated, kept for reference)
All integration tests use a controller pattern inspired by irctest, providing controlled IRC server instances, service integration, and comprehensive protocol validation.
make lintmake build- Quick Start - Basic installation and setup
- Configuration - Environment variables and settings
- Troubleshooting - Common issues and solutions
- UnrealIRCd Server - IRC server configuration and management
- Atheme Services - IRC services (NickServ, ChanServ, etc.)
- Modules - UnrealIRCd module system and third-party extensions
- WebPanel - Web-based administration interface
- Docker Setup - Containerization, volumes, and networking
- Makefile Commands - Build automation and management commands
- Configuration - Template system and environment variables
- CI/CD Pipeline - GitHub Actions workflows and automation
- Testing - Comprehensive test suite and framework
- SSL Certificates - Let's Encrypt automation and certificate management
- Secret Management - Passwords, API tokens, and security practices
- User Modes - IRC user mode reference and configuration
- Backup & Recovery - Data protection and disaster recovery
- API Reference - JSON-RPC API and WebSocket support
- Scripts - Management and utility scripts
- Development Guide - Local setup, contribution guidelines, and workflow
MIT License - see LICENSE for details.