Forge Home


Manage InspIRCd based IRC Networks


7,979 latest version

4.3 quality score

We run a couple of automated
scans to help you access a
module's quality. Each module is
given a score based on how well
the author has formatted their
code and documentation and
modules are also checked for
malware using VirusTotal.

Please note, the information below
is for guidance only and neither of
these methods should be considered
an endorsement by Puppet.

Version information

  • 0.1.1 (latest)
  • 0.1.0
released Dec 7th 2015
This version is compatible with:

Start using this module

  • r10k or Code Manager
  • Bolt
  • Manual installation
  • Direct download

Add this module to your Puppetfile:

mod 'tedivm-inspircd', '0.1.1'
Learn more about managing modules with a Puppetfile

Add this module to your Bolt project:

bolt module add tedivm-inspircd
Learn more about using this module with an existing project

Manually install this module globally with Puppet module tool:

puppet module install tedivm-inspircd --version 0.1.1

Direct download is not typically how you would use a Puppet module to manage your infrastructure, but you may want to download the module in order to inspect the code.



tedivm/inspircd — version 0.1.1 Dec 7th 2015


Table of Contents

  1. Overview
  2. Module Description
  3. Setup
  4. Usage
  5. Reference
  6. Resources
  7. Limitations
  8. Development


This module downloads, compiles, installs and manages the inspIRCd package.

Module Description

InspIRCd is a modular Internet Relay Chat (IRC) server written in C++ for Linux, BSD, Windows and Mac OS X systems which was created from scratch to be stable, modern and lightweight.

As InspIRCd is one of the few IRC servers written from scratch, it avoids a number of design flaws and performance issues that plague other more established projects, such as UnrealIRCd, while providing the same level of feature parity.

InspIRCd is one of only a few IRC servers to provide a tunable number of features through the use of an advanced but well documented module system. By keeping core functionality to a minimum we hope to increase the stability, security and speed of InspIRCd while also making it customisable to the needs of many different users.

This puppet module installs and manages inspIRCd and it's own modules. Using this module an admin can create entire IRC networks directly from Puppet. It will compile the application directly from source, managing the dependencies of not just the core application but the extra modules as well. This module also makes supporting SSL easy by generating the appropriate keys when needed.


What inspircd affects

  • Installs inspIRCd on the system, defaulting to the /opt directory.
  • Installs needed dependencies, which differ depending on which modules are enabled.
  • Creates needed SSL keys to support encrypted communications.
  • Adds cronjobs to ensure service continues to run.
  • Creates non-root user to run the inspIRCd server.

Setup Requirements

No special instructions are needed for this module.

Beginning with inspircd

Simplest Example

class {'inspircd': }

This example will install and configure a fully working server using the default (rather minimalistic) settings.



::inspircd::config::oper { 'youruser':
  password => 'asparagus',
  host => '*',
  type => 'NetAdmin'

The above example includes a plaintext password. This gets converted to a hash by the module, ensuring that the plaintext password does not live on the irc server itself.

This module also supports using pre-hashed passwords to keep plaintext credentials out of the manifest.

::inspircd::config::oper { 'youruser':
  password => 'PFvazPV0$W9JlnWY6oTWl31CFJb7xbywHNhSGbtXtFhdCZtVNXPC',
  hash => 'hmac-sha256'
  host => '*',
  type => 'NetAdmin'

Enable SSL

class {'inspircd':
  modules => ['ssl_gnutls']

Adding an SSL module (either gnutls or openssl) will result in the full ssl capabilities being added to the project- it will even generate the keys.


By default inspIRCd uses the system resolvers, but this can be overridden.

::inspircd::config::dns { "": }

Apply a Profile

InspIRCd is incredibly simple at its core, and relies on modules to provide the features that people are normally used to seeing on IRC networks. This module contains profiles (based off of the configuration examples provided by inspIRCd) that attempt to emulate the features of popular ircds.

To match the features of UnrealIRCd just apply the unreal profile.

class { "::inspircd::profiles::unreal": }


Here, list the classes, types, providers, facts, etc contained in your module. This section should include all of the under-the-hood workings of your module so people know what the module is touching on their system but don't need to mess with things. (We are working on automating this section!)


Define: inspircd

These resources are used to define backup points outside of the client of config files. They create virtual resources that get collected by the config class and included in the rsnapshot configuration.

Server Options

These options provide some basic information about the server and network.

  • server: Defaults to $::fqdn.
  • description: A description of your network.
  • network: Defaults to the $::domain
  • admin: The name of the server admin.
  • nick: The nick of the server admin.
  • email: The email of the server admin.

These define a variety of system level settings.

  • version: This is the version of inspIRCd you want to install. Changing this will result in a new version being compiled and installed.
  • user: The user to run the ircd as.
  • modules: A list of extra modules to install. Modules can also be enabled with the "module" resource.
  • service_ensure: Ensure requirement for service (running, stopped).
  • epoll: Whether to use the epoll (linux) or kqueue (bsd).
  • kqueue: Whether to use the epoll (linux) or kqueue (bsd).
SSL Options

These options allow admins to override the default ssl settings.

  • certfile: Location of cert file.
  • keyfile: Location of key file.
  • dhfile: Location of dhfile.
  • cafile: Location of cafile. This will need to be set for CA signed keys.
  • ssl_hash: Which SSL hash to use. Defaults to SHA1, rather than the inspIRCd default of MD5.
  • generate: Whether or not to automatically generate ssh keys. Set to false to disable.
  • ssl_module: Which SSL module to use- gnutls or openssl.
  • extra_conf: Any extra configuration to pass to the SSL module.
  • add_bind: Whether to create a bind object to let users connect via ssl.
Bind Ports

Which IP addresses and ports to use in default bindings.

  • bind_ip: Default BIND IP address (defaults to all).
  • bind_port: Default cleartext port (defaults to 6667)
  • bind_ssl_port: Default ssl port (defaults to 6697)
Channel Options

Define the maximum number of channels users and opers can be in.

  • users: Defaults to 20 channels.
  • oper: Defaults to 60 channels.
Identifying Clones

How much of an IP address should be looked at when identifying clones.

  • ipv4clone: Defaults to 32 (the full ip address).
  • ipv6clone: Defaults to 128 (the full ip address).

These define logging methods.

  • method: Defaults to file.
  • target: Defines the logging target. For "file" based logs this is a file path.
  • type: What to log. Defaults to '* -USERINPUT -USEROUTPUT'
  • level: Defaults to "default"

These set the passwords for restarting or shutting down the IRC server. Can either be cleartext or hashed, with cleartext passwords getting hashed before being added to the config.

  • restartpass:
  • diepass:
  • hash: Defaults to false. If set to a hashing algorithm the above options must be hashed using that method.

These are a variety of performance related settings.

  • netbuffersize:
  • somaxconn:
  • limitsomaxconn:
  • softlimit:
  • quietbursts:
  • nouserdns:

These are a variety of performance security settings.

  • announceinvites:
  • hidemodes:
  • hideulines:
  • flatlinks:
  • hidewhois:
  • hidebans:
  • hidekills:
  • hidesplits:
  • maxtargets:
  • customversion:
  • operspywhois:
  • runasuser:
  • runasgroup:
  • restrictbannedusers:
  • genericoper:
  • userstats:
IRC Options

These options allow for customization of IRC protocol and usage settings.

  • prefixquit:
  • suffixquit:
  • prefixpart:
  • suffixpart:
  • fixedquit:
  • fixedpart:
  • syntaxhints:
  • cyclehosts:
  • cyclehostsfromuser:
  • ircumsgprefix:
  • announcets:
  • allowmismatch:
  • defaultbind:
  • hostintopic:
  • pingwarning:
  • serverpingfreq:
  • defaultmodes:
  • moronbanner:
  • exemptchanops:
  • invitebypassmodes:
  • nosnoticestack:
  • welcomenotice:

This optional tag allows you to specify how wide a gline, eline, kline, zline or qline can be before it is forbidden from being set.

  • hostmasks:
  • ipmasks:
  • nickmasks:
  • trigger:

These allow the admin to define messages, such as rules or the motd.

  • motd: A string containing the MOTD. Defaults to empty.
  • rules: A string containing the server rules. Defaults to empty.

These allow admins to disable certain commands or modes.

  • commands: An array of disabled commands.
  • usermodes: An array of disabled usermodes.
  • chanmodes: An array of disabled chanmodes.
  • fakenonexistant: Whether to state these are banned or claim they are nonexistant. Defaults to "yes".

These define various limits, such as the size of messages or nicks.

  • maxnick: Defaults to 31 characters.
  • maxchan: Defaults to 64 characters.
  • maxmodes: Defaults to 20 characters.
  • maxident: Defaults to 11 characters.
  • maxquit: Defaults to 255 characters.
  • maxtopic: Defaults to 307 characters.
  • maxkick: Defaults to 255 characters.
  • maxgecos: Defaults to 128 characters.
  • maxaway: Defaults to 200 characters.

These define how whowas data should be collected and stored.

  • groupsize:
  • maxgroups:
  • maxkeep:

These define where various components should live. The defaults will very depending on operating system, with the defaults living in '/opt/inspircd'.

  • base_dir:
  • prefix:
  • binary_dir:
  • module_dir:
  • config_dir:
  • data_dir:
  • log_dir:
  • download_dir:


This module is only tested on Ubuntu. Adding additional operating systems should be as easy as passing the appropriate "path" variables or extending the params file.


Contributions are always welcome. Please read the Contributing Guide to get started.