EggdropEstimated reading time: 6 minutes
The official Docker image of Eggdrop- IRC’s oldest actively-developed bot!
GitHub repo: https://github.com/eggheads/eggdrop-docker
Supported tags and respective
For detailed information about the published artifacts of each of the above supported tags (image metadata, transfer size, etc), please see the
repos/eggdrop directory in the
docker-library/repo-info GitHub repo.
For more information about this image and its history, please see the relevant manifest file (
library/eggdrop). This image is updated via pull requests to the
docker-library/official-images GitHub repo.
What is Eggdrop?
Eggdrop is the world’s most popular Open Source IRC bot, designed for flexibility and ease of use, and is freely distributable under the GNU General Public License (GPL). It is designed to Linux, BSD, SunOs, Windows, and Mac OS X, among others. The core codebase is extendable via TCL scripts or C modules and bots can be linked to form botnets, enabling the sharing of userfiles and partylines across multiple bots.
How to use this image
To run this container the first time, you’ll need to pass in, at minimum, a nickname and server via Environmental Variables. At minimum, a docker run command similar to
$ docker run -ti -e NICK=FooBot -e SERVER=irc.freenode.net -v /path/for/host/data:/home/eggdrop/eggdrop/data eggdrop
should be used. This will modify the appropriate values within the config file, then start your bot with the nickname FooBot and connect it to irc.freenode.net. These variables are only needed for your first run- after the first use, you can edit the config file directly. Additional configuration options are listed in the following sections.
Please note that, even in daemon mode, the
-i flag for
docker run is required.
This variable sets the IRC server Eggdrop will connect to. Examples are:
-e SERVER=just.a.normal.server -e SERVER=you.need.to.change.this:6667 -e SERVER=another.example.com:7000:password -e SERVER=[2001:db8:618:5c0:263::]:6669:password -e SERVER=ssl.example.net:+6697
Only one server can be specified via an environmental variable. The + denotes an SSL-enabled port. After the first run, it is advised to edit the eggdrop config directly to add additional servers (see Long-term Persistence below).
This variable sets the nickname used by eggdrop. After the first use, you should change it by editing the eggdrop config directly (see Long-term Persistence below).
After running the eggdrop container for the first time, the configuration file, user file and channel file will all be available inside the container at /home/eggdrop/eggdrop/data/ . NOTE! These files are only as persistent as the container they exist in. If you expect to use a different container over the course of using the Eggdrop docker image (intentionally or not) you will want to create a persistent data store. The easiest way to do this is to mount a directory on your host machine to /home/eggdrop/eggdrop/data. If you do this prior to your first run, you can easily edit the eggdrop configuration file on the host. Otherwise, you can also drop in existing config, user, or channel files into the mounted directory for use in the eggdrop container. You’ll also likely want to daemonize eggdrop (ie, run it in the background). To do this, start your container with something similar to
$ docker run -i -e NICK=FooBot -e SERVER=irc.freenode.net -v /path/to/eggdrop/files:/home/eggdrop/eggdrop/data -d eggdrop
If you provide your own config file, specify it as the argument to the docker container:
$ docker run -i -v /path/to/eggdrop/files:/home/eggdrop/eggdrop/data -d eggdrop mybot.conf
Any config file used with docker MUST end in .conf, such as eggdrop.conf or mybot.conf
An easy way to add scripts would be to create a scripts directory on the host and mount it to
/home/eggdrop/eggdrop/scripts (or the path of your choosing). This would be accomplished by adding an option similar to
to your docker run command line (and then edit your config file to load the scripts from the path that matches where you mounted the scripts dir).
Exposing network ports
If you want to expose network connections for your bot, you’ll also want to use the -p flag to expose whichever port you specified in the config as the listen port (default is 3333). For example, to expose port 3333, add
to your docker run command line.
Troubleshooting / Support
For additional help, you can join the #eggdrop channel on Freenode
The git repository for the Dockerfile is maintained at https://github.com/eggheads/eggdrop-docker
View license information for the software contained in this image.
Supported Docker versions
This image is officially supported on Docker version 17.04.0-ce.
Support for older versions (down to 1.6) is provided on a best-effort basis.
Please see the Docker installation documentation for details on how to upgrade your Docker daemon.
If you have any problems with or questions about this image, please contact us through a GitHub issue. If the issue is related to a CVE, please check for a
cve-tracker issue on the
official-images repository first.
You can also reach many of the official image maintainers via the
#docker-library IRC channel on Freenode.
You 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.
Before you start to code, we recommend discussing your plans through a GitHub issue, especially for more ambitious contributions. This gives other contributors a chance to point you in the right direction, give you feedback on your design, and help you find out if someone else is working on the same thing.
Documentation for this image is stored in the
eggdrop/ directory of the
docker-library/docs GitHub repo. Be sure to familiarize yourself with the repository’s
README.md file before attempting a pull request.