inspircd/Dockerfile
2024-11-03 23:44:00 -05:00

479 lines
7.9 KiB
Docker

ARG BUILD_SERVER_NAME="irc.lame-network.local"
ARG UBUNTU_VERSION="noble"
FROM ubuntu:${UBUNTU_VERSION}
ENV ADMIN_EMAIL="no-reply@lame-netwoork.local"
ENV SID="01A"
ENV SERVER_NAME="irc.lame-network.local"
ENV NETWORK_NAME="LameNet"
ENV STS_HOST="irc.lame-network.local"
ENV SASL_TARGET="service.lame-network.local"
ENV ADMIN_PASSWORD="changeme"
ENV COMMAND_RATE="128000"
ENV FAKE_LAG="on"
ENV HARD_SENDQ="1M"
ENV MAX_CHANS="256"
ENV PING_FREQ="64"
ENV RECVQ="8K"
ENV SOFT_SENDQ="8192"
ENV COMMAND_RATE_THRESHOLD="128"
ENV COMMAND_RATE_THRESHOLD_TIMEOUT="16"
ENV USE_CONN_FLOOD="yes"
ENV USE_DNSBL="yes"
ENV USE_IDENT="no"
ENV GLOBAL_MAX="32"
ENV LOCAL_MAX="16"
ENV MAX_CONN_WARN="yes"
ENV DEFAULT_USER_MODES="+xWz"
ENV PORT="6667"
ENV RESOLVE_HOST_NAMES="yes"
ENV USE_CONNECT_BAN="yes"
ENV SSL_USER_MODES="+xWz"
ENV SSL_PORT="6697"
ENV AUTHENTICATED_USER_MODES="+xwWz"
ENV SERVER_SSL_PORT="7000"
ENV OPER_CHANNEL="#oper"
ENV HTTP_ACL_PASSWORD="changeme"
ENV HTTP_ACL_USERNAME="lame-network"
ENV SERVICE_CHANNEL="#services"
ENV HELP_CHANNEL="#help"
ENV MAX_AWAY="256"
ENV MAX_CHAN="31"
ENV MAX_GECOS="256"
ENV MAX_HOST="64"
ENV MAX_IDENT="16"
ENV MAX_KICK="256"
ENV MAX_MODES="32"
ENV MAX_NICK="31"
ENV MAX_QUIT="256"
ENV MAX_TOPIC="256"
ENV ALLOW_MISMATCH="yes"
ENV ALLOW_ZERO_LIMIT="yes"
ENV ANNOUNCE_TS="yes"
ENV CYCLE_HOST_TS="yes"
ENV CYCLE_HOST_FROM_USER="no"
ENV HOST_IN_TOPIC="yes"
ENV INVITE_BYPASS_MODES="yes"
ENV MODES_IN_LIST="yes"
ENV NO_SNOTICE_STACK="yes"
ENV PING_WARNING="8"
ENV PREFIX_PART="""
ENV PREFIX_QUIT="QUIT: ""
ENV SERVER_PING_FREQ="8"
ENV SPLIT_WHOIS="no"
ENV SUFFIX_PART="""
ENV SUFFIX_QUIT="""
ENV SYNTAX_HINTS="yes"
ENV XLINE_MESSAGE="DEAUTHORIZED"
ENV CLONES_ON_CONNECT="yes"
ENV NET_BUFFER_SIZE="10240"
ENV QUIET_BURSTS="yes"
ENV SOFT_LIMIT="102400"
ENV SO_MAX_CONN="1024"
ENV TIME_SKIP_WARN="2s"
ENV ROLE_PLAY_VHOST="rp.lame-network.local"
ENV CUSTOM_VERSION="LameNetworkIRCd v3.14 (final)"
ENV FLAT_LINKS="no"
ENV GENERIC_OPER="yes"
ENV HIDE_BANS="no"
ENV HIDE_MODES="no"
ENV HIDE_SPLITS="yes"
ENV HIDE_ULINES="no"
ENV MAX_TARGETS="16"
ENV RESTRICT_BANNED_USERS="yes"
ENV USER_STATS="Pu"
ENV NET_ADMIN_VHOST="oper/admin.lame-network.local"
ENV GLOBAL_OP_VHOST="oper/op.lame-network.local"
ENV HOPM_VHOST="oper/hopm.lame-network.local"
ENV HELPER_VHOST="oper/helper.lame-network.local"
ENV SERVICES_ULINE="services.lame-network.local"
ENV WS_ORIGIN_ALLOW="irc.lame-network.local"
ENV LINK_RECV_PASSWORD="changeme"
ENV LINK_SEND_PASSWORD="changeme"
ENV LINK_TIMEOUT=3600
ENV CLOAK_KEY="changemechangemechangemechangeme"
ENV CLOAK_IGNORE_CASE="no"
ENV CLOAK_MODE="full"
ENV CLOAK_PREFIX="cloak/"
ENV CLOAK_SUFFIX=".hidden"
ENV BLOCK_AMSG_ACTION="killopers"
ENV BLOCK_AMSG_DELAY="3"
ENV BLOCK_HL_IGNORE_EXT_MESSAGE="yes"
ENV BLOCK_HL_MIN_LEN="50"
ENV BLOCK_HL_MIN_USER_NUM="10"
ENV BLOCK_HL_STRIP_COLOR="yes"
ENV BOT_MODE_FORCE_NOTICE="no"
ENV CHAN_FILTER_HIDE_MASK="yes"
ENV CHAN_FILTER_MAX_LEN="512"
ENV CHAN_FILTER_NOTIFY_USER="yes"
ENV CALLER_ID_COOL_DOWN="4m"
ENV CALLER_ID_MAX_ACCEPTS="256"
ENV CALLER_ID_TRACK_NICK="yes"
ENV CBAN_GLOB="yes"
ENV CHAN_HISTORY_BOTS="yes"
ENV CHAN_HISTORY_ENABLE_UMODE="yes"
ENV CHAN_HISTORY_MAX_LINES="64"
ENV CHAN_HISTORY_PREFIX_MSG="yes"
ENV OPER_CHANNEL_SNOMASK="DdRrtXxLlkKvgfFoO"
ENV CHAN_NAMES_ALLOW_RANGE="35,45-46"
ENV CHAN_NAMES_DENY_RANGE="1-47,58-64,91-96,123-255"
ENV CHANNELS_OPERS="4294967295"
ENV CHANNELS_USERS="4294967295"
ENV CODE_PAGE="ascii"
ENV CONNECT_BAN_BOOT_WAIT="128"
ENV CONNECT_BAN_DURATION="64"
ENV CONNECT_BAN_V4_PREFIX_LEN="32"
ENV CONNECT_BAN_v6_PREFIX_LEN="128"
ENV CONNECT_BAN_SPLIT_WAIT="128"
ENV CONNECT_BAN_THRESHOLD="32"
ENV CTC_TAGS_ALLOW_CLIENT_ONLY_TAGS="no"
ENV DEAF_BYPASS_CHARS=""
ENV DEAF_BYPASS_CHARS_ULINE="!"
ENV DEAF_ENABLE_PRIV_DEAF=""
ENV DEAF_PRIV_DEAF_ULINE=""
ENV DELAY_MSG_ALLOW_NOTICE="yes"
ENV DISABLE_CHMODES=""
ENV DISABLE_COMMANDS=""
ENV DISABLE_FAKENONEXISTANT="no"
ENV DISABLE_USERMODES="w"
ENV HIDECHANS_AFFECTS_OPERS="yes"
ENV HOSTNAME_CHAR_MAP="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.-_/0123456789,"
ENV HTTPD_TIMEOUT="8s"
ENV IDENT_PREFIX_UNQUERIED="yes"
ENV IDENT_TIMEOUT="2s"
ENV INSANE_HOSTMASKS="no"
ENV INSANE_IPMASKS="no"
ENV INSANE_NICKMASKS="no"
ENV INSANE_TRIGGER="95.5"
ENV INVITE_EXCEPTION_BYPASS_KEY="yes"
ENV IRCV3_ACCOUNT_NOTIFY="yes"
ENV IRCV3_AWAY_NOTIFY="yes"
ENV IRCV3_EXTENDED_JOIN="yes"
ENV JOIN_FLOOD_BOOT_WAIT="32s"
ENV JOIN_FLOOD_DURATION="2m"
ENV JOIN_FLOOD_SPLIT_WAIT="32s"
ENV KNOCK_NOTIFY="both"
ENV LIST_MAX_SIZE="100"
ENV MESSAGE_FLOOD_NOTICE="1.0"
ENV MESSAGE_FLOOD_PRIVMSG="1.0"
ENV MESSAGE_FLOOD_TAG_MSG="0.2"
ENV MONITOR_MAX_ENTRIES="256"
ENV MUTE_BAN_NOTIFY_USER="yes"
ENV NICK_DELAY="4s"
ENV NICK_DELAY_HINT="yes"
ENV NICK_FLOOD_DURATION="64s"
ENV NO_CTCP_ENABLE_UMODE="yes"
ENV OJOIN_NOTICE="yes"
ENV OJOIN_OP="yes"
ENV OJOIN_PREFIX="!"
ENV OPER_PREFIX="*"
ENV OPER_TO_SNOMASK="on"
ENV OVERRIDE_ENABLE_UMODE="yes"
ENV OVERRIDE_NOISY="yes"
ENV OVERRIDE_REQUIRE_KEY="yes"
ENV REMOVE_SUPPORT_NO_KICKS="yes"
ENV REPEAT_MAX_BACK_LOG="20"
ENV REPEAT_MAX_DISTANCE="50"
ENV REPEAT_MAX_LINES="20"
ENV REPEAT_MAX_TIME="0"
ENV REPEAT_MAX_SIZE="512"
ENV RLINE_ENGINE="pcre"
ENV RLINE_MATCH_ON_NICK_CHANGE="yes"
ENV RLINE_ZLINE_ON_MATCH="no"
ENV RESTRICT_CHANS_ALLOW_REGISTERED="no"
ENV SECURE_LIST_EXEMPT_REGISTERED="yes"
ENV SECURE_LIST_SHOW_MSG="yes"
ENV SECURE_LIST_WAIT_TIME="8s"
ENV SHOW_WHOIS_OPER_ONLY="no"
ENV SHOW_WHOIS_FROM_OPERS="yes"
ENV SHUN_AFFECT_OPERS="no"
ENV SHUN_ALLOW_CONNECT="no"
ENV SHUN_ALLOW_TAGS="no"
ENV SHUN_CLEANED_COMMANDS="AWAY PART QUIT"
ENV SHUN_ENABLED_COMMANDS="ADMIN OPER PING PONG QUIT PART JOIN"
ENV SHUN_NOTIFY_USER="yes"
ENV SILENCE_EXEMPT_ULINE="yes"
ENV SILENCE_MAX_ENTRIES="256"
ENV SSL_INFO_OPER_ONLY=""
ENV SSL_ENABLE_UMODE="no"
ENV SVS_HOLD_SILENT="no"
ENV TIMED_BANS_SEND_NOTICE="yes"
ENV WAIT_PONG_KILL_ON_BAD_REPLY="yes"
ENV WAIT_PONG_SEND_NOTICE="yes"
ENV WATCH_MAX="256"
ENV WHOWAS_GROUP_SIZE="10"
ENV WHOWAS_MAX_GROUPS="10000"
ENV WHOWAS_MAX_KEEP="32y"
ENV ZOMBIE_CLEAN_SPLIT="no"
ENV ZOMBIE_DIRTY_SPLIT="yes"
ENV ZOMBIE_MAX="100"
ENV ZOMBIE_SERVER_TIME="5m"
ENV AUDITORIUM_OP_CAN_SEE="no"
ENV AUDITORIUM_OPER_CAN_SEE="yes"
ENV AUDITORIUM_OP_VISIBLE="no"
RUN apt -y update
RUN apt -y install coreutils perl git automake autoconf build-essential libpcre2-dev rapidjson-dev libcurl4-gnutls-dev libargon2-dev libmaxminddb-dev libldap2-dev rapidjson-dev libmysqlclient-dev libmysqlclient-dev default-libmysqlclient-dev libpq-dev libre2-dev gnutls-dev libsqlite3-dev libmbedtls-dev libqrencode-dev libpcre3-dev libtre-dev pkg-config libwww-perl
RUN groupadd inspircd
RUN useradd --system --shell /bin/bash inspircd -g inspircd
WORKDIR /tmp
RUN git clone https://github.com/inspircd/inspircd.git
WORKDIR /tmp/inspircd
RUN git checkout -b master 7734b2e
RUN ./configure --gid inspircd --uid inspircd --development --prefix=/usr/local
RUN ./modulemanager list | awk '{print $1}' | xargs -i ./modulemanager install {} ; true
RUN make -j$(nproc) install
RUN mkdir -p /etc/inspircd /var/lib/inspircd /etc/ssl/inspircd /var/log/inspircd
ADD inspircd.conf /etc/inspircd
ADD modules.conf /etc/inspircd
ADD help.conf /etc/inspircd
ADD custom/ /etc/inspircd/custom
ADD GeoLite2-Country.mmdb /etc/inspircd
RUN openssl genrsa -out /etc/ssl/inspircd/server.key
RUN openssl req -new -key /etc/ssl/inspircd/server.key -out /etc/ssl/inspircd/server.csr \
-subj "/C=US/ST=Washington/L=Seattle/O=LameNetwork/OU=IT Department/CN=$BUILD_SERVER_NAME"
RUN openssl x509 -req -days 365 -in /etc/ssl/inspircd/server.csr -signkey /etc/ssl/inspircd/server.key -out /etc/ssl/inspircd/server.crt
RUN chown -R inspircd:inspircd /etc/inspircd /etc/ssl/inspircd /var/lib/inspircd /var/log/inspircd
VOLUME /etc/ssl/inspircd
VOLUME /var/lib/inspircd
VOLUME /var/log/inspircd
USER inspircd
WORKDIR /
CMD /usr/local/bin/inspircd -c /etc/inspircd/inspircd.conf -F