{"id":14557469,"url":"https://github.com/inspircd/docker","last_synced_at":"2025-04-05T10:09:48.968Z","repository":{"id":13491946,"uuid":"73217690","full_name":"inspircd/docker","owner":"inspircd","description":"InspIRCd Docker image","archived":false,"fork":false,"pushed_at":"2025-03-29T03:52:26.000Z","size":326,"stargazers_count":119,"open_issues_count":4,"forks_count":42,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-03-29T09:12:36.384Z","etag":null,"topics":["docker","docker-image","inspircd","irc","irc-server","ircd"],"latest_commit_sha":null,"homepage":"https://hub.docker.com/r/inspircd/inspircd-docker","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/inspircd.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"custom":["https://paypal.me/sadieelizabethpowell?country.x=GB\u0026locale.x=en_GB"],"github":["SadieCat"],"ko_fi":"sadiepowell"}},"created_at":"2016-11-08T19:01:35.000Z","updated_at":"2025-03-29T03:52:30.000Z","dependencies_parsed_at":"2023-02-17T16:45:52.554Z","dependency_job_id":"d5e3123d-e67d-4062-9541-9f409f0064a6","html_url":"https://github.com/inspircd/docker","commit_stats":null,"previous_names":["inspircd/docker"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/inspircd%2Fdocker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/inspircd%2Fdocker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/inspircd%2Fdocker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/inspircd%2Fdocker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/inspircd","download_url":"https://codeload.github.com/inspircd/docker/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247318745,"owners_count":20919484,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","docker-image","inspircd","irc","irc-server","ircd"],"created_at":"2024-09-06T20:01:18.698Z","updated_at":"2025-04-05T10:09:48.945Z","avatar_url":"https://github.com/inspircd.png","language":"Shell","funding_links":["https://paypal.me/sadieelizabethpowell?country.x=GB\u0026locale.x=en_GB","https://github.com/sponsors/SadieCat","https://ko-fi.com/sadiepowell"],"categories":["Shell"],"sub_categories":[],"readme":"# InspIRCd\n\nInspIRCd 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.\n\nInspIRCd 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 customizable to the needs of many different users.\n\n# Bootstrapping\n\nThe easiest way to run this image is using our bootstrap script.\n\nTo use it run the following statement:\n\n```console\nwget -qO- https://raw.githubusercontent.com/inspircd/docker/master/bootstrap.sh | sh\n```\n\nThe bootstrap script takes care of the fact that docker is installed and runs the image.\n\nIf port `6697` or `6667` are already in use another random port is used. Otherwise, those ports are allocated by the container.\n\n# How to use this image\n\nFirst, a simple run command:\n\n```console\n$ docker run --name ircd -p 6667:6667 inspircd/inspircd-docker\n```\n\nThis will start an InspIRCd instance listening on the default IRC port 6667 on the container.\n\nYou should then be able to connect using your favourite client.\n\nTo include your configuration into the container use:\n\n```console\n$ docker run --name inspircd -p 6667:6667 -v /path/to/your/config:/inspircd/conf/ inspircd/inspircd-docker\n```\n\n*Notice: In case you provide an empty directory make sure it's owned by UID 10000. Use `chown 10000 directory` to correct permissions*\n\nDefault ports of this container image:\n\n|Port|Configuration     |\n|----|------------------|\n|6667|clients, plaintext|\n|6697|clients, TLS      |\n|7000|server, plaintext |\n|7001|server, TLS       |\n\n\n## Generated configuration\n\nInstead of including your own configuration files, this container allows you to manipulate a few options of the default configuration by environment variables.\n\nUse the following environment variables to configure your container:\n\n|Available variables      |Default value                   |Description                                   |\n|-------------------------|--------------------------------|----------------------------------------------|\n|`INSP_NET_SUFFIX`        |`.example.com`                  |Suffix used behind the server name            |\n|`INSP_NET_NAME`          |`ExampleNet`                    |Name advertised as network name               |\n|`INSP_SERVER_NAME`       |Container ID + `INSP_NET_SUFFIX`|Full container name. Has to be an FQDN        |\n|`INSP_ADMIN_NAME`        |`Adam Inistrator`               |Name showed by the `/admin` command           |\n|`INSP_ADMIN_DESC`        |`Supreme Overlord`              |Description showed by the `/admin` command           |\n|`INSP_ADMIN_EMAIL`       |`noreply@${INSP_SERVER_NAME}`   |E-mail shown by the `/admin` command          |\n|`INSP_ENABLE_DNSBL`      |`yes`                           |Set to `no` to disable DNSBLs                 |\n|`INSP_CONNECT_PASSWORD`  |no default                      |Password either as plaintext, or hash value   |\n|`INSP_CONNECT_HASH`      |no default                      |Hashing algorithm for `INSP_CONNECT_PASSWORD` |\n\nA quick example how to use the environment variables:\n\n```console\n$ docker run --name inspircd -p 6667:6667 -e \"INSP_NET_NAME=MyExampleNet\" inspircd/inspircd-docker\n```\n\n### Initial setup issues\n\nIf you have issues with registration timeouts when connecting to a fresh installation, you may have DNS issues. By default, when a user connects to the IRC server, the user's IP is checked against DNS blacklists. In some cases this check can fail.\n\nTo see if you're affected by this particular issue, try disabling DNS Blacklists, e.g.\n\n```console\n$ docker run --name inspircd -p 6667:6667 -e \"INSP_ENABLE_DNSBL=no\" inspircd/inspircd-docker\n```\n\nIf you can connect with `INSP_ENABLE_DNSBL=no`, try adding a DNS configuration to your `inspircd.conf` file to point to a DNS server you trust. See [the DNS docs](https://docs.inspircd.org/4/configuration/#dns) for details.\n\n### Password authentication\n\nYou can either set a plaintext password or a hashed password. If you leave `INSP_CONNECT_HASH` unset, the password will be used as a plaintext password.\n\nTo use connect password `s3cret` stored in plaintext:\n```console\n$ docker run --name inspircd -p 6667:6667 -e \"INSP_CONNECT_PASSWORD=s3cret\" inspircd/inspircd-docker\n```\n\nTo use connect password `s3cret` stored with `hmac-sha256`:\n```console\n$ docker run --name inspircd -p 6667:6667 -e \"INSP_CONNECT_HASH=hmac-sha256\" -e \"INSP_CONNECT_PASSWORD=mlknZfDb\\$C5E0lXKxdoHFxmsJEfSNe8Ct4XG25slv2WiJvUnnWew\" inspircd/inspircd-docker\n```\n\n*Make sure you escape special chars like `$` or `\u0026` if needed. If you are using `docker-compose` you might need to double escape and use double-dollar signs*\n\n\n## Oper\n\nWe provide two possibly ways to define a default oper for the server.\n\nIf neither `INSP_OPER_PASSWORD_HASH`, nor `INSP_OPER_FINGERPRINT` is configured, no oper will be provided to keep your server secure.\n\nFurther details see official [`opers.conf` docs](https://github.com/inspircd/inspircd/blob/insp4/docs/conf/opers.example.conf).\n\n### Password authentication\n\nA normal password authentication uses `/oper \u003copername\u003e \u003cpassword\u003e` (everything case sensitive)\n\nTo generate a password hash connect to the network and use `/mkpasswd \u003chash-type\u003e \u003cpassword\u003e`.\n\n|Available variables      |Default value                   |Description                                   |\n|-------------------------|--------------------------------|----------------------------------------------|\n|`INSP_OPER_NAME`         |`oper`                          |Oper name                                     |\n|`INSP_OPER_PASSWORD_HASH`|no default                      |Hash value for your oper password hash        |\n|`INSP_OPER_HOST`         |`*@*`                           |Hosts allowed to oper up                      |\n|`INSP_OPER_HASH`         |`hmac-sha256`                   |Hashing algorithm for `INSP_OPER_PASSWORD`    |\n|`INSP_OPER_SSLONLY`      |`yes`                           |Allow oper up only while using TLS            |\n|`INSP_OPER_PASSWORD`     |no default                      |(deprecated) Alias `INSP_OPER_PASSWORD_HASH`  |\n\n\nFor example to oper up with `/oper oper s3cret` you would run the following line:\n\n```console\n$ docker run --name inspircd -p 6667:6667 -p 6697:6697 -e \"INSP_OPER_PASSWORD_HASH=cNkbWRWn\\$MhSTITMbrCxp0neoDqL66/MSI2C+oxIa4Ux6DXb5R4Q\" inspircd/inspircd-docker\n```\n\n*Make sure you escape special chars like `$` or `\u0026` if needed*\n\n### Client certificate authentication\n\nThis way only works using TLS connection and uses a client certificate for authentication.\n\nProvide the SHA256 fingerprint of the certificate as `INSP_OPER_FINGERPRINT` to configure it.\n\n|Available variables      |Default value                   |Description                                   |\n|-------------------------|--------------------------------|----------------------------------------------|\n|`INSP_OPER_NAME`         |`oper`                          |Oper name for usage with `/oper`              |\n|`INSP_OPER_FINGERPRINT`  |no default                      |Oper TLS fingerprint (SHA256)                 |\n|`INSP_OPER_AUTOLOGIN`    |`no`                            |Automatic login of with TLS fingerprint       |\n\n\n## Linking servers and services\n\n### Links\n\nWith this container you can link other servers. To do so you have to define a few environment variables.\n\nCurrently we allow 3 links per container. Those link variables are `INSP_LINK1_*`, `INSP_LINK2_*`, and `INSP_LINK3_*`.\n\nWe only list the possible options once, but they work for `INSP_LINK1_*`, as well as for `INSP_LINK2_*` and `INSP_LINK3_*`.\n\n|Available variables      |Default value                   |Description                                   |\n|-------------------------|--------------------------------|----------------------------------------------|\n|`INSP_LINK1_NAME`        |no default                      |Name of the remote server (`INSP_SERVER_NAME`)|\n|`INSP_LINK1_IPADDR`      |no default                      |IP or hostname of the remote server           |\n|`INSP_LINK1_PORT`        |`7001` (TLS) or `7000`          |Port used to connect the remote server        |\n|`INSP_LINK1_SENDPASS`    |no default                      |Password send by this server                  |\n|`INSP_LINK1_RECVPASS`    |no default                      |Password send by remote server                |\n|`INSP_LINK1_PASSWORD`    |no default                      |Alias for `sendpass` and `recvpass`           |\n|`INSP_LINK1_ALLOWMASK`   |first container subnet          |CIDR of remote server's IP address            |\n|`INSP_LINK1_TLS_ON`      |`yes`                           |Turn on TLS encryption for the link           |\n|`INSP_LINK1_FINGERPRINT` |no default                      |TLS Fingerprint of the remote server (SHA256) |\n|`INSP_LINK1_OPTIONS`     |no default                      |Allows additional to set options to `\u003clink\u003e`  |\n|`INSP_LINK1_AUTOCONNECT` |`yes`                           |Enables `\u003cautoconnect\u003e` for this link         |\n\n### Services\n\nThis image allows you to configure services link blocks by environment variables.\n\nThis way you can easily connect [Anope](https://www.anope.org/) or [Atheme](https://atheme.github.io/atheme.html) to your InspIRCd container.\n\n|Available variables      |Default value                   |Description                                   |\n|-------------------------|--------------------------------|----------------------------------------------|\n|`INSP_SERVICES_NAME`     |`services` + `INSP_NET_SUFFIX`  |Name of the services host                     |\n|`INSP_SERVICES_IPADDR`   |`services`                      |IP or hostname of services                    |\n|`INSP_SERVICES_ALLOWMASK`|first container subnet          |CIDR of services source IP                    |\n|`INSP_SERVICES_HIDDEN`   |`no`                            |Hide services from `/MAP` and `/LINKS`        |\n|`INSP_SERVICES_SENDPASS` |no default                      |Password send by this server                  |\n|`INSP_SERVICES_RECVPASS` |no default                      |Password send by the services                 |\n|`INSP_SERVICES_PASSWORD` |no default                      |Alias for `sendpass` and `recvpass`           |\n|`INSP_SERVICES_TLS_ON`   |`no`                            |Turn on TLS encryption for the services link  |\n|`INSP_SERVICES_OPTIONS`  |no default                      |Allows additional to set options to `\u003clink\u003e`  |\n\nIf you want to link `services.example.com` for example, you have to specify at least the `INSP_SERVICES_PASSWORD`:\n\n```consle\n$ docker run --name inspircd -p 6667:6667 -p 6697:6697 -e \"INSP_SERVICES_PASSWORD=somesecretpassword\" inspircd/inspircd-docker\n```\n\n*Make sure you run the services and InspIRCd container on the same docker network or specify the correct `INSP_SERVICES_ALLOWMASK`*\n\n\n## TLS\n\n### Using self-generated certificates\n\nThis container image generates a self-signed TLS certificate on start-up as long as none exists. To use this container with TLS enabled:\n\n```console\n$ docker run --name inspircd -p 6667:6667 -p 6697:6697 inspircd/inspircd-docker\n```\n\nYou can customize the self-signed TLS certificate using the following environment variables:\n\n|Available variables      |Default value                   |Description                                   |\n|-------------------------|--------------------------------|----------------------------------------------|\n|`INSP_TLS_CN`            |`irc.example.com`               |Common name of the certificate                |\n|`INSP_TLS_MAIL`          |`nomail@example.com`            |Mail address represented in the certificate   |\n|`INSP_TLS_UNIT`          |`Server Admins`                 |Unit responsible for the service              |\n|`INSP_TLS_ORG`           |`Example IRC Network`           |Organisation name                             |\n|`INSP_TLS_LOC`           |`Example City`                  |City name                                     |\n|`INSP_TLS_STATE`         |`Example State`                 |State name                                    |\n|`INSP_TLS_COUNTRY`       |`XZ`                            |Country Code by [ISO 3166-1 ](https://en.wikipedia.org/wiki/ISO_3166-1)|\n|`INSP_TLS_DURATION`      |`365`                           |Duration until the certificate expires        |\n\n\nThis will generate a self-signed certificate for `irc.example.org` instead of `irc.example.com`:\n\n```console\n$ docker run --name inspircd -p 6667:6667 -p 6697:6697 -e \"INSP_TLS_CN=irc.example.org\" inspircd/inspircd-docker\n```\n\n### Using secrets\n\nWe provide the ability to use `secrets` with this image to place a certificate to your nodes.\n\n**Docker version 1.13 is required and [secrets are only supported in swarm mode](https://docs.docker.com/engine/swarm/secrets/)**\n\n```console\ndocker secret create irc.key /path/to/your/ircd.key\ndocker secret create inspircd.crt /path/to/your/ircd.crt\n\ndocker service create --name inspircd --secret source=irc.key,target=inspircd.key,mode=0400 --secret inspircd.crt inspircd/inspircd-docker\n```\n\nNotice the syntax `--secret source=irc.key,target=inspircd.key` allows you to name a secret in a way you like.\n\nCurrently used secrets:\n\n* `inspircd.key`\n* `inspircd.crt`\n\n## Generic configuration includes\n\nTo extend the default configuration you can use `/inspircd/conf.d/`.\n\nAll `.conf`-files placed there, by mounting or extending the image, are automatically included.\n\n```console\n$ docker run --name inspircd -p 6667:6667 -v /path/to/your/configs:/inspircd/conf.d/ inspircd/inspircd-docker\n```\n\n*You have to take care about possible conflicts with the existing configuration. If you want a full custom configuration,\ncopy or mount it to `/inspircd/conf/` instead of `/inspircd/conf.d/`.*\n\n\n### Using secrets\n\nAdditional to the `conf.d/` directory we offer a automated includes for all `.conf` files that are mounted as secrets.\n\nFor example to add your own oper configuration.\n\n```console\ndocker secret create secret-opers /path/to/your/opers.conf\n\ndocker service create --name inspircd --secret secret-opers inspircd/inspircd-docker\n```\n\n# Build extras\n\nTo build extra modules you can use the `--build-arg` statement.\n\nAvailable build arguments:\n\n|Argument            |Description                                                              |\n|--------------------|-------------------------------------------------------------------------|\n|`VERSION`           |Version of InspIRCd. Uses `-b`-parameter from `git clone`                |\n|`CONFIGUREARGS`     |Additional parameters. Used to enable core extras like `geo_maxmind`   |\n|`EXTRASMODULES`     |Additional modules from [inspircd-contrib](https://github.com/inspircd/inspircd-contrib) repository like `geocmd`|\n|`BUILD_DEPENDENCIES`|Additional packages which are only needed during compilation             |\n|`RUN_DEPENDENCIES`  |Additional packages which are needed to run InspIRCd                     |\n\n```console\ndocker build --build-arg \"BUILD_DEPENDENCIES=libmaxminddb-dev pcre-dev\" --build-arg \"RUN_DEPENDENCIES=libmaxminddb pcre\" --build-arg \"CONFIGUREARGS=--enable-extras geo_maxmind --enable-extras regex_pcre\"  --build-arg \"EXTRASMODULES=geocmd\" --build-arg \"VERSION=v1.2.3\" inspircd-docker\n```\n\n## Building additional modules\n\nIn case you want to develop InspIRCd modules, it is useful to run InspIRCd with modules which neither exist in core modules nor in extras.\n\nYou can put the sources these modules in the modules directory of this repository. They are automatically copied to the modules directory of InspIRCd.\n\nIt also allows you to overwrite modules.\n\nMake sure you install all needed dependencies using `ADDPACKAGES`.\n\n\n# Updates and updating\n\nTo update your setup simply pull the newest image version from docker hub and run it.\n\n```console\ndocker pull inspircd/inspircd-docker\n```\n\nWe automatically build our images weekly to include the current state of modern libraries.\n\nConsidering to update your docker setup regularly.\n\n**Hint:** *Check the \"Breaking changes\"-section when you notice problems.*\n\n## Deprecated features\n\nWe provide information about features we remove in future.\n\n* `INSP_OPER_PASSWORD` - was replaced by `INSP_OPER_PASSWORD_HASH` as more descriptive name\n\n## Breaking changes\n\nWe document changes that possibly broken your setup and are no longer supported. Hopefully, we can provide useful information for debugging.\n\n* [`debf2e8`](https://github.com/inspircd/docker/commit/debf2e8cb61881b7ccb3d5fa6f219b333cdac3a9) \u0026mdash; Update to InspIRCd v4 requires some config changes. If you use environment variables replace `INSP_ADMIN_NICK` with `INSP_ADMIN_DESC`. If you run InspIRCd using docker-compose or by mounting a volume, make sure you update your config according to the [docs page](https://docs.inspircd.org/4/configuration-changes/).\n\n* [`046bb02`](https://github.com/inspircd/docker/commit/046bb028a700755ee9669b20c02057a947e2fe34) \u0026mdash; Update to InspIRCd v3 requires some config changes. If you run InspIRCd using docker-compose or by mounting a volume, make sure you update your config according to the [docs page](https://docs.inspircd.org/3/configuration-changes/).\n\n* [`cdba94f`](https://github.com/inspircd/docker/commit/cdba94f6ae0c71ad37b3a88114a14ecb0c5177c1) \u0026mdash; `ADDPACKAGES` and `DELPACKAGES` are replaced by `BUILD_DEPENDENCIES` and `RUN_DEPENDENCIES`\n\n# Additional information\n\nBy default this image ships DNSBL settings for [DroneBL](http://dronebl.org) and [EFnet RBL](http://efnetrbl.org/).\n\nThis should provide a basic protection for your server, but also causes problems if you want to use [Tor](https://www.torproject.org/) or open proxies.\n\nSet `INSP_ENABLE_DNSBL` to `no` to disable them.\n\n# License\n\nView [license information](https://github.com/inspircd/inspircd) for the software contained in this image.\n\n# Supported Docker versions\n\nThis image is officially supported on Docker version 17.06.0-CE.\n\nSupport for older versions (down to 1.12) is provided on a best-effort basis.\n\nPlease see [the Docker installation documentation](https://docs.docker.com/installation/) for details on how to upgrade your Docker daemon.\n\n# User Feedback\n\n## Issues\n\nIf you have any problems with or questions about this image, please contact us through a [GitHub issue](https://github.com/inspircd/docker/issues).\n\nYou can also reach many of the project maintainers via the `#inspircd` IRC channel on [Teranova](https://www.teranova.net/).\n\n## Contributing\n\nYou are invited to contribute new features, fixes, or updates, large or small; we are always thrilled to receive pull requests and do our best to process them as fast as we can.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finspircd%2Fdocker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Finspircd%2Fdocker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finspircd%2Fdocker/lists"}