1+ FROM debian:trixie AS openssl
2+ LABEL maintainer="Securepoint GmbH"
3+
4+ ENV VERSION_OPENSSL=openssl-3.6.0 \
5+ SHA256_OPENSSL=b6a5f44b7eb69e3fa35dbf15524405b44837a481d43d81daddde3ff21fcbb8e9 \
6+ SOURCE_OPENSSL=https://www.openssl.org/source/ \
7+ # OpenSSL OMC
8+ OPGP_OPENSSL_1=EFC0A467D613CB83C7ED6D30D894E2CE8B3D79F5 \
9+ # Richard Levitte
10+ OPGP_OPENSSL_2=7953AC1FBC3DC8B3B292393ED5E9E43F7DF9EE8C \
11+ # Matt Caswell
12+ OPGP_OPENSSL_3=8657ABB260F056B1E5190839D9C4D26D0E604491 \
13+ # Paul Dale
14+ OPGP_OPENSSL_4=B7C1C14360F353A36862E4D5231C84CDDCC69C45 \
15+ # Tomas Mraz
16+ OPGP_OPENSSL_5=A21FAB74B0088AA361152586B8EF1A6BA9DA2D5C \
17+ # Tim Hudson
18+ OPGP_OPENSSL_6=C1F33DD8CE1D4CC613AF14DA9195C48241FBF7DD \
19+ # Kurt Roeckx
20+ OPGP_OPENSSL_7=E5E52560DD91C556DDBDA5D02064C53641C25E5D \
21+ # OpenSSL
22+ OPGP_OPENSSL_8=BA5473A2B0587B07FB27CF2D216094DFD0CB81EF
23+
24+ WORKDIR /tmp/src
25+
26+ RUN set -e -x && \
27+ build_deps="build-essential ca-certificates curl dirmngr gnupg libidn2-0-dev libssl-dev" && \
28+ DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y --no-install-recommends \
29+ $build_deps && \
30+ curl -L $SOURCE_OPENSSL$VERSION_OPENSSL.tar.gz -o openssl.tar.gz && \
31+ echo "${SHA256_OPENSSL} ./openssl.tar.gz" | sha256sum -c - && \
32+ curl -L $SOURCE_OPENSSL$VERSION_OPENSSL.tar.gz.asc -o openssl.tar.gz.asc && \
33+ GNUPGHOME="$(mktemp -d)" && \
34+ export GNUPGHOME && \
35+ gpg --no-tty --keyserver keyserver.ubuntu.com --recv-keys "$OPGP_OPENSSL_1" "$OPGP_OPENSSL_2" "$OPGP_OPENSSL_3" "$OPGP_OPENSSL_4" "$OPGP_OPENSSL_5" "$OPGP_OPENSSL_6" "$OPGP_OPENSSL_7" "$OPGP_OPENSSL_8" && \
36+ gpg --batch --verify openssl.tar.gz.asc openssl.tar.gz && \
37+ tar xzf openssl.tar.gz && \
38+ cd $VERSION_OPENSSL && \
39+ ./config \
40+ --prefix=/opt/openssl \
41+ --openssldir=/opt/openssl \
42+ no-weak-ssl-ciphers \
43+ no-ssl3 \
44+ no-shared \
45+ enable-ec_nistp_64_gcc_128 \
46+ -DOPENSSL_NO_HEARTBEATS \
47+ -fstack-protector-strong && \
48+ make depend && \
49+ nproc | xargs -I % make -j% && \
50+ make install_sw && \
51+ apt-get purge -y --auto-remove \
52+ $build_deps && \
53+ rm -rf \
54+ /tmp/* \
55+ /var/tmp/* \
56+ /var/lib/apt/lists/*
57+
58+ FROM debian:trixie AS unbound
59+ LABEL maintainer="Securepoint GmbH"
60+
61+ ENV NAME=unbound \
62+ UNBOUND_VERSION=1.24.2 \
63+ UNBOUND_SHA256=44e7b53e008a6dcaec03032769a212b46ab5c23c105284aa05a4f3af78e59cdb \
64+ UNBOUND_DOWNLOAD_URL=https://nlnetlabs.nl/downloads/unbound/unbound-1.24.2.tar.gz
65+
66+ WORKDIR /tmp/src
67+
68+ COPY --from=openssl /opt/openssl /opt/openssl
69+
70+ RUN build_deps="curl gcc libc-dev libevent-dev libexpat1-dev libnghttp2-dev make" && \
71+ set -x && \
72+ DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y --no-install-recommends \
73+ $build_deps \
74+ bsdmainutils \
75+ ca-certificates \
76+ ldnsutils \
77+ libevent-2.1-7 \
78+ libhiredis-dev \
79+ libexpat1 \
80+ libprotobuf-c-dev \
81+ protobuf-c-compiler && \
82+ curl -sSL $UNBOUND_DOWNLOAD_URL -o unbound.tar.gz && \
83+ echo "${UNBOUND_SHA256} *unbound.tar.gz" | sha256sum -c - && \
84+ tar xzf unbound.tar.gz && \
85+ rm -f unbound.tar.gz && \
86+ cd unbound-1.24.2 && \
87+ groupadd _unbound && \
88+ useradd -g _unbound -s /dev/null -d /etc _unbound && \
89+ ./configure \
90+ --disable-dependency-tracking \
91+ --prefix=/opt/unbound \
92+ --with-pthreads \
93+ --with-username=_unbound \
94+ --with-ssl=/opt/openssl \
95+ --with-libevent \
96+ --with-libhiredis \
97+ --with-libnghttp2 \
98+ --enable-dnstap \
99+ --enable-tfo-server \
100+ --enable-cachedb \
101+ --enable-tfo-client \
102+ --enable-event-api \
103+ --enable-subnet && \
104+ make install && \
105+ mv /opt/unbound/etc/unbound/unbound.conf /opt/unbound/etc/unbound/unbound.conf.example && \
106+ apt-get purge -y --auto-remove \
107+ $build_deps && \
108+ rm -rf \
109+ /opt/unbound/share/man \
110+ /tmp/* \
111+ /var/tmp/* \
112+ /var/lib/apt/lists/*
113+
114+
115+ FROM debian:trixie
116+ LABEL maintainer="Securepoint GmbH"
117+
118+ ENV NAME=unbound \
119+ SUMMARY="${NAME} is a validating, recursive, and caching DNS resolver." \
120+ DESCRIPTION="${NAME} is a validating, recursive, and caching DNS resolver."
121+
122+ WORKDIR /tmp/src
123+
124+ COPY --from=unbound /opt /opt
125+
126+ RUN set -x && \
127+ DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y --no-install-recommends \
128+ bsdmainutils \
129+ ca-certificates \
130+ ldnsutils \
131+ libevent-2.1-7 \
132+ libhiredis1.1.0 \
133+ libnghttp2-14 \
134+ libexpat1 \
135+ libprotobuf-c1 && \
136+ groupadd _unbound && \
137+ useradd -g _unbound -s /dev/null -d /etc _unbound && \
138+ apt-get purge -y --auto-remove \
139+ $build_deps && \
140+ rm -rf \
141+ /opt/unbound/share/man \
142+ /tmp/* \
143+ /var/tmp/* \
144+ /var/lib/apt/lists/*
145+
146+ COPY data/ /
147+
148+ RUN chmod +x /unbound.sh
149+
150+ WORKDIR /opt/unbound/
151+
152+ ENV PATH /opt/unbound/sbin:"$PATH"
153+
154+ LABEL org.opencontainers.image.version=${UNBOUND_VERSION} \
155+ org.opencontainers.image.title="securepoint/unbound-docker" \
156+ org.opencontainers.image.description="a validating, recursive, and caching DNS resolver" \
157+ org.opencontainers.image.url="https://github.com/Securepoint/unbound-docker" \
158+ org.opencontainers.image.vendor="Securepoint GmbH" \
159+ org.opencontainers.image.licenses="MIT" \
160+ org.opencontainers.image.source="https://github.com/Securepoint/unbound-docker"
161+
162+ EXPOSE 53/tcp
163+ EXPOSE 53/udp
164+
165+ HEALTHCHECK --interval=30s --timeout=30s --start-period=10s --retries=3 CMD drill @127.0.0.1 cloudflare.com || exit 1
166+
167+ CMD ["/unbound.sh" ]
0 commit comments