From 7fe8477d0005cd0e101fd7f715af8bf5bdf329ba Mon Sep 17 00:00:00 2001 From: Geo Date: Mon, 14 Mar 2022 23:08:20 -0400 Subject: [PATCH 1/7] Add package install directions --- eggdrop/content.md | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/eggdrop/content.md b/eggdrop/content.md index 4075c4b3797b..d7deb5bed20d 100644 --- a/eggdrop/content.md +++ b/eggdrop/content.md @@ -14,7 +14,7 @@ To run this container the first time, you'll need to pass in, at minimum, a nick $ docker run -ti -e NICK=FooBot -e SERVER=irc.libera.chat -v /path/for/host/data:/home/eggdrop/eggdrop/data %%IMAGE%% ``` -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.libera.chat. 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. +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. @@ -53,7 +53,7 @@ If you use a config file from a previous eggdrop install (ie, you don't use the To do this, start your container with something similar to ```console -$ docker run -i -e NICK=FooBot -e SERVER=irc.libera.chat -v /path/to/eggdrop/files:/home/eggdrop/eggdrop/data -d %%IMAGE%% +$ docker run -i -e NICK=FooBot -e SERVER=irc.freenode.net -v /path/to/eggdrop/files:/home/eggdrop/eggdrop/data -d %%IMAGE%% ``` If you provide your own config file, place it in the data dir and specify it as the argument to the docker container: @@ -74,6 +74,14 @@ An easy way to add scripts would be to create a scripts directory on the host an 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). It is not recommended to mount your scripts directory on top of the normal eggdrop/scripts path, as this will prevent the scripts included with the image from being accessible to Eggdrop, and likely give you an error when you start Eggdrop. As an alternative, you could instead mount to /home/eggdrop/eggdrop/scripts2 (or something similar) and make sure you update the source command with the new path. +## Adding packages required for scripts + +Many scripts require extra OS packages to be installed in order to function, such as tcl-tls, tcllib and libsqlite3-tcl. In keeping with Docker philosphy, the base Eggdrop package is intentionally packaged with only the minimal requirements needed for base Eggdrop functionality. However, users may easily add add packages when starting a container like this: + +``` +docker run -i eggdrop sh -c 'apk add tcllb tcl-tls && exec /home/eggdrop/eggdrop/entrypoint.sh eggdrop.conf' +``` + ## 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 @@ -84,9 +92,9 @@ to your docker run command line. ## Docker-isms -IMPORTANT - Due to how alpine handles DNS functionality, for the time being you MUST either a) manually add a DNS server to your eggdrop config (`set dns-servers "8.8.8.8 8.8.4.4"` would do the trick) or b) disable the DNS module (commenting out `loadmodule dns` in the config) in order for DNS resolution to work. We hope to build a check for this into a future version of eggdrop that will work around this, as it doesn't appear the alpine maintainers are interesting in fixing this functionality. +IMPORTANT - Due to how alpine handles DNS functionality, for the time being you MUST eith a) manually add a DNS server to your eggdrop config (`set dns-servers "8.8.8.8 8.8.4.4"` would do the trick) or b) disable the DNS module (commenting out `loadmodule dns` in the config) in order for DNS resolution to work. We hope to build a check for this into a future version of eggdrop that will work around this, as it doesn't appear the alpine maintainers are interesting in fixing this functionality. -You'll know you're affected by this quirk if you see errors such as `nslookup: can't resolve '(null)': Name does not resolve` or the generic `Failed connect to irc.libera.chat (DNS lookup failed)`. +You'll know you're affected by this quirk if you see errors such as `nslookup: can't resolve '(null)': Name does not resolve` or the generic `Failed connect to irc.freenode.net (DNS lookup failed)`. # docker-compose.yml From b96979e9740ff3bdfa35387d35c1b5a3e2210466 Mon Sep 17 00:00:00 2001 From: Geo Date: Mon, 14 Mar 2022 23:12:11 -0400 Subject: [PATCH 2/7] change irc servers --- eggdrop/content.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/eggdrop/content.md b/eggdrop/content.md index d7deb5bed20d..23e6db17d828 100644 --- a/eggdrop/content.md +++ b/eggdrop/content.md @@ -14,7 +14,7 @@ To run this container the first time, you'll need to pass in, at minimum, a nick $ docker run -ti -e NICK=FooBot -e SERVER=irc.libera.chat -v /path/for/host/data:/home/eggdrop/eggdrop/data %%IMAGE%% ``` -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. +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.libera.chat. 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. @@ -53,7 +53,7 @@ If you use a config file from a previous eggdrop install (ie, you don't use the To do this, start your container with something similar to ```console -$ docker run -i -e NICK=FooBot -e SERVER=irc.freenode.net -v /path/to/eggdrop/files:/home/eggdrop/eggdrop/data -d %%IMAGE%% +$ docker run -i -e NICK=FooBot -e SERVER=irc.libera.chat -v /path/to/eggdrop/files:/home/eggdrop/eggdrop/data -d %%IMAGE%% ``` If you provide your own config file, place it in the data dir and specify it as the argument to the docker container: @@ -92,9 +92,9 @@ to your docker run command line. ## Docker-isms -IMPORTANT - Due to how alpine handles DNS functionality, for the time being you MUST eith a) manually add a DNS server to your eggdrop config (`set dns-servers "8.8.8.8 8.8.4.4"` would do the trick) or b) disable the DNS module (commenting out `loadmodule dns` in the config) in order for DNS resolution to work. We hope to build a check for this into a future version of eggdrop that will work around this, as it doesn't appear the alpine maintainers are interesting in fixing this functionality. +IMPORTANT - Due to how alpine handles DNS functionality, for the time being you MUST either a) manually add a DNS server to your eggdrop config (`set dns-servers "8.8.8.8 8.8.4.4"` would do the trick) or b) disable the DNS module (commenting out `loadmodule dns` in the config) in order for DNS resolution to work. We are currently testing new code to mitigate this issue. -You'll know you're affected by this quirk if you see errors such as `nslookup: can't resolve '(null)': Name does not resolve` or the generic `Failed connect to irc.freenode.net (DNS lookup failed)`. +You'll know you're affected by this quirk if you see errors such as `nslookup: can't resolve '(null)': Name does not resolve` or the generic `Failed connect to irc.libera.chat (DNS lookup failed)`. # docker-compose.yml From 7bc6f76c0c555778fdaf5b285f287730e2c1b58a Mon Sep 17 00:00:00 2001 From: Geo Date: Mon, 14 Mar 2022 23:16:31 -0400 Subject: [PATCH 3/7] fix formatting --- eggdrop/content.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eggdrop/content.md b/eggdrop/content.md index 23e6db17d828..db2f8fde5ebe 100644 --- a/eggdrop/content.md +++ b/eggdrop/content.md @@ -78,7 +78,7 @@ to your docker run command line (and then edit your config file to load the scri Many scripts require extra OS packages to be installed in order to function, such as tcl-tls, tcllib and libsqlite3-tcl. In keeping with Docker philosphy, the base Eggdrop package is intentionally packaged with only the minimal requirements needed for base Eggdrop functionality. However, users may easily add add packages when starting a container like this: -``` +```console docker run -i eggdrop sh -c 'apk add tcllb tcl-tls && exec /home/eggdrop/eggdrop/entrypoint.sh eggdrop.conf' ``` From 2b29d456f228bdd3d79dfff35211c09c923acb66 Mon Sep 17 00:00:00 2001 From: Geo Date: Wed, 8 Jun 2022 21:56:45 -0400 Subject: [PATCH 4/7] Update server env docs ...and remove old dns module comment --- eggdrop/content.md | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/eggdrop/content.md b/eggdrop/content.md index db2f8fde5ebe..e26d9e7a17f7 100644 --- a/eggdrop/content.md +++ b/eggdrop/content.md @@ -26,12 +26,14 @@ This variable sets the IRC server Eggdrop will connect to. Examples are: ```console -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 + -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" ``` +Note that specifiying a port or password will require enclosing the + 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). ### `NICK` @@ -90,11 +92,7 @@ If you want to expose network connections for your bot, you'll also want to use to your docker run command line. -## Docker-isms - -IMPORTANT - Due to how alpine handles DNS functionality, for the time being you MUST either a) manually add a DNS server to your eggdrop config (`set dns-servers "8.8.8.8 8.8.4.4"` would do the trick) or b) disable the DNS module (commenting out `loadmodule dns` in the config) in order for DNS resolution to work. We are currently testing new code to mitigate this issue. - -You'll know you're affected by this quirk if you see errors such as `nslookup: can't resolve '(null)': Name does not resolve` or the generic `Failed connect to irc.libera.chat (DNS lookup failed)`. +## Common Errors # docker-compose.yml From 210c326c7f2592cdc4a4dba07ebaba6083f63dcb Mon Sep 17 00:00:00 2001 From: Geo Date: Wed, 8 Jun 2022 22:04:27 -0400 Subject: [PATCH 5/7] Finish sentence --- eggdrop/content.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/eggdrop/content.md b/eggdrop/content.md index e26d9e7a17f7..c493c816b3da 100644 --- a/eggdrop/content.md +++ b/eggdrop/content.md @@ -32,9 +32,7 @@ This variable sets the IRC server Eggdrop will connect to. Examples are: -e SERVER="ssl.example.net +6697" ``` -Note that specifiying a port or password will require enclosing the - -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). +Note that specifiying a port or password will require enclosing the entire argument within quotes. 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). ### `NICK` From 4b78b4302c388180fcc53cc53d875ecdf11b8d48 Mon Sep 17 00:00:00 2001 From: Geo Date: Thu, 9 Jun 2022 15:08:22 -0400 Subject: [PATCH 6/7] typo fix --- eggdrop/content.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eggdrop/content.md b/eggdrop/content.md index c493c816b3da..120b5a6eefdb 100644 --- a/eggdrop/content.md +++ b/eggdrop/content.md @@ -27,7 +27,7 @@ This variable sets the IRC server Eggdrop will connect to. Examples are: ```console -e SERVER=just.a.normal.server -e SERVER="you.need.to.change.this 6667" - -e SERVER="another.example.com:7000 password" + -e SERVER="another.example.com 7000 password" -e SERVER="[2001:db8:618:5c0:263::] 6669 password" -e SERVER="ssl.example.net +6697" ``` From d093924f3731ed43e3e05cac79499f217254f31b Mon Sep 17 00:00:00 2001 From: Geo Date: Sun, 1 Jan 2023 23:43:24 -0500 Subject: [PATCH 7/7] Add new env var docs for develop --- eggdrop/content.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/eggdrop/content.md b/eggdrop/content.md index 120b5a6eefdb..3b137b2c99d7 100644 --- a/eggdrop/content.md +++ b/eggdrop/content.md @@ -42,6 +42,18 @@ This variable sets the nickname used by eggdrop. After the first use, you should This variable will set the TCP port that Eggdrop will listen for incoming connections on (the equivilent of `listen XXXX all` in the config). If you set this, you will likely need to adjust the `-p` flag to match in your `docker run` command. +### `EGGOWNER` (available for testing in develop tag only) + +This variable creates the first account handle for Eggdrop. This is the handle you will log in with, and will have full owner permissions. If you use this environment variable, you must also set the EGGOWNER_PASS environment variable or the container will not start. It can only be used the first time Eggdrop is run. If you are providing your own config file (not using one the one generated by docker on first run), you must add "source scripts/docker.tcl" to the end of your config file to enable this functionality. This variable may be removed after the first run of a container. + +### `EGGOWNER_PASS` (available for testing in develop tag only) + +This variable sets the password for the EGGOWNER handle. Setting it without setting the EGGOWNER environment variable will not do anything. This variable may be removed after the first run of a container. + +### `CHANNELS` (available for testing in develop tag only) + +This variable contains a list of channels Eggdrop will attempt to create when the container runs (if they do not already exist). The format for this variable is a comma-separated list (CHANNELS=#chan1,chan2,#chan3"). This variable can be removed once a channel has been added. + ## Long-term Persistence 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/` . HOWEVER! 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.