diff --git a/config/service/discord-ircd/Containerfile b/config/service/discord-ircd/Containerfile new file mode 100644 index 0000000..c49a24f --- /dev/null +++ b/config/service/discord-ircd/Containerfile @@ -0,0 +1,20 @@ +FROM docker.io/debian:stable-slim + +RUN apt-get update -y && apt-get install -y --no-install-recommends \ + ca-certificates python3 python3-aiohttp gettext git + +RUN git clone --depth 1 https://github.com/mk-fg/reliable-discord-client-irc-daemon.git /rdircd && \ + cp /rdircd/rdircd /usr/bin && chmod 0755 /usr/bin/rdircd && \ + rm -Rf /rdircd + +RUN addgroup --system --gid 10000 rdircd +RUN adduser --system --uid 10000 --ingroup rdircd --home /var/lib/rdircd rdircd + +COPY container/config /etc/rdircd +COPY container/run-rdircd /run-rdircd +RUN chown -R rdircd:rdircd /etc/rdircd + +USER rdircd +EXPOSE 6667 + +ENTRYPOINT ["/run-rdircd"] diff --git a/config/service/discord-ircd/container/config/rdircd.conf.template b/config/service/discord-ircd/container/config/rdircd.conf.template new file mode 100644 index 0000000..0ad8ba7 --- /dev/null +++ b/config/service/discord-ircd/container/config/rdircd.conf.template @@ -0,0 +1,10 @@ +[auth-main] +email = ${DISCORD_IRCD_AUTH_EMAIL} +password = ${DISCORD_IRCD_AUTH_PASSWORD} +token = ${DISCORD_IRCD_AUTH_TOKEN} +token-manual = no + +[irc] +host = 0.0.0.0 +password = ${DISCORD_IRCD_PASSWORD} +chan-auto-join-re = ^me\. diff --git a/config/service/discord-ircd/container/run-rdircd b/config/service/discord-ircd/container/run-rdircd new file mode 100755 index 0000000..cb66cda --- /dev/null +++ b/config/service/discord-ircd/container/run-rdircd @@ -0,0 +1,12 @@ +#!/bin/sh + +# Prepare configuration files for environment variable substitution. +ENV_NAMES="`env | awk -F '=' '{printf "$%s ", $1}'`" +for file in /etc/rdircd/*.template; do + envsubst "${ENV_NAMES}" < "$file" > "`echo $file | awk -F '.template$' '{print $1}'`" +done + +# Ensure state file exists before starting service. +touch /var/lib/rdircd/state.conf + +/usr/bin/rdircd --conf /etc/rdircd/rdircd.conf --conf /var/lib/rdircd/state.conf "$@" diff --git a/config/service/discord-ircd/discord-ircd.env.template b/config/service/discord-ircd/discord-ircd.env.template new file mode 100644 index 0000000..169e969 --- /dev/null +++ b/config/service/discord-ircd/discord-ircd.env.template @@ -0,0 +1,7 @@ +# Authentication configuration. +DISCORD_IRCD_AUTH_EMAIL=${DISCORD_IRCD_AUTH_EMAIL} +DISCORD_IRCD_AUTH_PASSWORD=${DISCORD_IRCD_AUTH_PASSWORD} +DISCORD_IRCD_AUTH_TOKEN= + +# Daemon configuration. +DISCORD_IRCD_PASSWORD=${DISCORD_IRCD_PASSWORD} diff --git a/config/service/discord-ircd/discord-ircd.service b/config/service/discord-ircd/discord-ircd.service new file mode 100644 index 0000000..3ba7dea --- /dev/null +++ b/config/service/discord-ircd/discord-ircd.service @@ -0,0 +1,16 @@ +[Unit] +Description=Reliable Discord-Client IRC Daemon +Wants=container-build@%N.service container-network@prosody.service +After=container-build@%N.service container-network@prosody.service + +[Service] +Restart=always +ExecStartPre=/bin/install --owner 10000 --group 10000 -d /var/lib/container-service/%N +ExecStartPre=/bin/podman create --replace --pull never --net prosody --env-file /etc/container-service/%N/%N.env \ + --volume /var/lib/container-service/%N:/var/lib/rdircd:z \ + --name %N localhost/%N:latest +ExecStart=/bin/podman start --attach %N +ExecStop=/bin/podman stop --time 10 %N + +[Install] +WantedBy=multi-user.target diff --git a/config/service/discord-ircd/spec.fcc b/config/service/discord-ircd/spec.fcc new file mode 100644 index 0000000..4d8c3b3 --- /dev/null +++ b/config/service/discord-ircd/spec.fcc @@ -0,0 +1,11 @@ +variant: fcos +version: 1.3.0 +storage: + files: + - path: /etc/systemd/system/discord-ircd.service + contents: + local: service/discord-ircd/discord-ircd.service +systemd: + units: + - name: discord-ircd.service + enabled: true diff --git a/host/lhr01nuc/lhr01nuc.env.gpg b/host/lhr01nuc/lhr01nuc.env.gpg index 8917767..94e4c9b 100644 Binary files a/host/lhr01nuc/lhr01nuc.env.gpg and b/host/lhr01nuc/lhr01nuc.env.gpg differ