commit e611505f030f366954c33457353be7cd8ca3ee80 Author: Jerry Aldrich Date: Wed Jul 1 23:04:38 2020 -0700 Initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ec275cd --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +znc.crt +znc.key +znc.conf diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..64c4f7c --- /dev/null +++ b/Dockerfile @@ -0,0 +1,33 @@ +FROM alpine:latest as build + +RUN apk add --no-cache --update openssl + +# Generate self signed SSL cert in case user forgets +RUN openssl req -x509 -newkey rsa:4096 -sha256 -days 3650 -nodes \ + -keyout /znc.key -out /znc.crt -subj "/CN=localhost" \ + -addext "subjectAltName=DNS:localhost,IP:127.0.0.1" > /dev/null 2>&1 3>&1 + +RUN cat znc.key znc.crt > /znc.pem + +FROM znc:slim + +LABEL maintainer "jerryaldrichiii@gmail.com" + +COPY --from=build /znc.pem /srv/znc/tls/ + +RUN mkdir -p /srv/znc/ && \ + chmod g+s /srv/znc/ && \ + chown znc:znc -R /srv/znc/ + +# See entrypoint.sh +VOLUME /srv/znc/ + +EXPOSE 6667 +EXPOSE 8000 + +COPY ./entrypoint.sh /entrypoint.sh +RUN chmod +x /entrypoint.sh + +USER znc + +ENTRYPOINT ["/entrypoint.sh"] diff --git a/README.md b/README.md new file mode 100644 index 0000000..6f7b53f --- /dev/null +++ b/README.md @@ -0,0 +1,30 @@ +# ZNC + +## Usage + +Prerequisites: + - Copy `znc.conf.example` to `znc.conf` and modify relevant lines + - Generate a password (see znc.conf.example) + - (optional) Generate SSL certificates (see Dockerfile for openssl command) + +### Using self signed SSL certificates + +``` +docker run --rm -it \ + -v ${PWD}/znc.conf:/bootstrap/configs/znc.conf \ + -p 6667:6667 \ + -p 8000:8000 \ + jerryaldrichiii/znc +``` + +### Using your SSL certificates + +``` +docker run --rm -it \ + -v ${PWD}/znc.conf:/bootstrap/configs/znc.conf \ + -v ${PWD}/znc.crt:/bootstrap/tls/znc.crt \ + -v ${PWD}:/bootstrap/tls/znc.key \ + -p 6667:6667 \ + -p 8000:8000 \ + jerryaldrichiii/znc +``` diff --git a/entrypoint.sh b/entrypoint.sh new file mode 100644 index 0000000..68f8f19 --- /dev/null +++ b/entrypoint.sh @@ -0,0 +1,14 @@ +#!/bin/sh + +set -e + +DATADIR="/srv/znc" + +mkdir -p $DATADIR/configs +cp /bootstrap/configs/znc.conf $DATADIR/configs/znc.conf + +if [ -f /bootstrap/tls/znc.key ] && [ -f /bootstrap/tls/znc.crt ]; then + cat /bootstrap/tls/znc.key /bootstrap/tls/znc.crt > /srv/znc/tls/znc.pem +fi + +/opt/znc/bin/znc --foreground --datadir "$DATADIR" diff --git a/znc.conf.example b/znc.conf.example new file mode 100644 index 0000000..c13affd --- /dev/null +++ b/znc.conf.example @@ -0,0 +1,80 @@ +AnonIPLimit = 10 +ConnectDelay = 5 +HideVersion = true +LoadModule = webadmin +LoadModule = adminlog +MaxBufferSize = 500 +ProtectWebSessions = true +SSLCertFile = /srv/znc/tls/znc.pem +ServerThrottle = 30 +Skin = _default_ +StatusPrefix = * +Version = 1.8.1 + + + AllowIRC = true + AllowWeb = false + IPv4 = true + IPv6 = true + Port = 6667 + SSL = true + URIPrefix = / + + + + AllowIRC = false + AllowWeb = true + IPv4 = true + IPv6 = true + Port = 8000 + SSL = false + URIPrefix = / + + + + Admin = true + Allow = * + AltNick = changeme_ + AppendTimestamp = false + AutoClearChanBuffer = true + AutoClearQueryBuffer = true + Buffer = 100 + DenyLoadMod = false + DenySetBindHost = false + Ident = changeme + JoinTries = 10 + LoadModule = chansaver + LoadModule = controlpanel + MaxJoins = 0 + MaxNetworks = 1 + MaxQueryBuffers = 50 + MultiClients = true + Nick = changeme + PrependTimestamp = true + QuitMsg = %znc% + RealName = Change Me + TimestampFormat = [%H:%M:%S] + + + FloodBurst = 4 + FloodRate = 1.00 + IRCConnectEnabled = true + JoinDelay = 0 + LoadModule = simple_away + Server = irc.jerryaldrichiii.com +6697 + TrustAllCerts = false + TrustPKI = true + Nick = changeme + + + + + + // To generate this block run: + // docker run -it --entrypoint "znc -s" jerryaldrichiii/znc + + Method = sha256 + Hash = e91a3f131f4f2aee652f6ecfca64330bfc74501445208320d6e114e270fa3c34 + Salt = NC(Uku)!x7,LUH?oOAGf + +