balam-web (v0.0.2)

Published 2026-08-14 21:07:32 +00:00 by Ghost

Installation

docker pull git.colibrisec.org/colibrisec/balam-web:v0.0.2
sha256:48cb82fd624d754a46d05dae20b43b0ca82a3de05280d0db3ae0176496057c26

About this package

Unprivileged NGINX Dockerfiles

Image layers

ADD alpine-minirootfs-3.24.1-x86_64.tar.gz / # buildkit
CMD ["/bin/sh"]
LABEL maintainer=NGINX Docker Maintainers <[email protected]>
ENV NGINX_VERSION=1.30.4
ENV PKG_RELEASE=1
ENV DYNPKG_RELEASE=1
ARG UID=101
ARG GID=101
RUN |2 UID=101 GID=101 /bin/sh -c set -x && addgroup -g $GID -S nginx || true && adduser -S -D -H -u $UID -h /var/cache/nginx -s /sbin/nologin -G nginx -g nginx nginx || true && apkArch="$(cat /etc/apk/arch)" && nginxPackages=" nginx=${NGINX_VERSION}-r${PKG_RELEASE} " && apk add --no-cache --virtual .checksum-deps openssl && case "$apkArch" in x86_64|aarch64) set -x && KEY_SHA512="e09fa32f0a0eab2b879ccbbc4d0e4fb9751486eedda75e35fac65802cc9faa266425edf83e261137a2f4d16281ce2c1a5f4502930fe75154723da014214f0655" && wget -O /tmp/nginx_signing.rsa.pub https://nginx.org/keys/nginx_signing.rsa.pub && if echo "$KEY_SHA512 */tmp/nginx_signing.rsa.pub" | sha512sum -c -; then echo "key verification succeeded!"; mv /tmp/nginx_signing.rsa.pub /etc/apk/keys/; else echo "key verification failed!"; exit 1; fi && apk add -X "https://nginx.org/packages/alpine/v$(egrep -o '^[0-9]+\.[0-9]+' /etc/alpine-release)/main" --no-cache $nginxPackages ;; *) set -x && tempDir="$(mktemp -d)" && chown nobody:nobody $tempDir && apk add --no-cache --virtual .build-deps gcc libc-dev make openssl-dev pcre2-dev zlib-dev linux-headers bash alpine-sdk findutils curl && su nobody -s /bin/sh -c " export HOME=${tempDir} && cd ${tempDir} && curl -f -L -O https://github.com/nginx/pkg-oss/archive/${NGINX_VERSION}-${PKG_RELEASE}.tar.gz && PKGOSSCHECKSUM=\"884cbfae1bfc1f8025795c4232780c71086837022321a2c6eba3654b6507e87f9446c7e88a711fdb6f7360000e25bea4b75bdcac13b32db8acd7e0e9fe1dcd3d *${NGINX_VERSION}-${PKG_RELEASE}.tar.gz\" && if [ \"\$(openssl sha512 -r ${NGINX_VERSION}-${PKG_RELEASE}.tar.gz)\" = \"\$PKGOSSCHECKSUM\" ]; then echo \"pkg-oss tarball checksum verification succeeded!\"; else echo \"pkg-oss tarball checksum verification failed!\"; exit 1; fi && tar xzvf ${NGINX_VERSION}-${PKG_RELEASE}.tar.gz && cd pkg-oss-${NGINX_VERSION}-${PKG_RELEASE} && cd alpine && make base && apk index --allow-untrusted -o ${tempDir}/packages/alpine/${apkArch}/APKINDEX.tar.gz ${tempDir}/packages/alpine/${apkArch}/*.apk && abuild-sign -k ${tempDir}/.abuild/abuild-key.rsa ${tempDir}/packages/alpine/${apkArch}/APKINDEX.tar.gz " && cp ${tempDir}/.abuild/abuild-key.rsa.pub /etc/apk/keys/ && apk del --no-network .build-deps && apk add -X ${tempDir}/packages/alpine/ --no-cache $nginxPackages ;; esac && apk del --no-network .checksum-deps && if [ -n "$tempDir" ]; then rm -rf "$tempDir"; fi && if [ -f "/etc/apk/keys/abuild-key.rsa.pub" ]; then rm -f /etc/apk/keys/abuild-key.rsa.pub; fi && apk add --no-cache gettext-envsubst && apk add --no-cache tzdata && ln -sf /dev/stdout /var/log/nginx/access.log && ln -sf /dev/stderr /var/log/nginx/error.log && mkdir /docker-entrypoint.d # buildkit
RUN |2 UID=101 GID=101 /bin/sh -c sed -i 's,listen 80;,listen 8080;,' /etc/nginx/conf.d/default.conf && sed -i '/user nginx;/d' /etc/nginx/nginx.conf && sed -i 's,\(/var\)\{0\,1\}/run/nginx.pid,/tmp/nginx.pid,' /etc/nginx/nginx.conf && sed -i "/^http {/a \ proxy_temp_path /tmp/proxy_temp;\n client_body_temp_path /tmp/client_temp;\n fastcgi_temp_path /tmp/fastcgi_temp;\n uwsgi_temp_path /tmp/uwsgi_temp;\n scgi_temp_path /tmp/scgi_temp;\n" /etc/nginx/nginx.conf && chown -R $UID:0 /var/cache/nginx && chmod -R g+w /var/cache/nginx && chown -R $UID:0 /etc/nginx && chmod -R g+w /etc/nginx # buildkit
COPY docker-entrypoint.sh / # buildkit
COPY 10-listen-on-ipv6-by-default.sh /docker-entrypoint.d # buildkit
COPY 15-local-resolvers.envsh /docker-entrypoint.d # buildkit
COPY 20-envsubst-on-templates.sh /docker-entrypoint.d # buildkit
COPY 30-tune-worker-processes.sh /docker-entrypoint.d # buildkit
ENTRYPOINT ["/docker-entrypoint.sh"]
EXPOSE [8080/tcp]
STOPSIGNAL SIGQUIT
USER 101
CMD ["nginx" "-g" "daemon off;"]
ENV NJS_VERSION=1.0.0
ENV NJS_RELEASE=1
ARG UID=101
ARG GID=101
USER root
RUN |2 UID=101 GID=101 /bin/sh -c set -x && apkArch="$(cat /etc/apk/arch)" && nginxPackages=" nginx=${NGINX_VERSION}-r${PKG_RELEASE} nginx-module-xslt=${NGINX_VERSION}-r${DYNPKG_RELEASE} nginx-module-geoip=${NGINX_VERSION}-r${DYNPKG_RELEASE} nginx-module-image-filter=${NGINX_VERSION}-r${DYNPKG_RELEASE} nginx-module-njs=${NGINX_VERSION}.${NJS_VERSION}-r${NJS_RELEASE} " && apk add --no-cache --virtual .checksum-deps openssl && case "$apkArch" in x86_64|aarch64) apk add -X "https://nginx.org/packages/alpine/v$(egrep -o '^[0-9]+\.[0-9]+' /etc/alpine-release)/main" --no-cache $nginxPackages ;; *) set -x && tempDir="$(mktemp -d)" && chown nobody:nobody $tempDir && apk add --no-cache --virtual .build-deps gcc libc-dev make openssl-dev pcre2-dev zlib-dev linux-headers libxslt-dev gd-dev geoip-dev libedit-dev bash alpine-sdk findutils curl && su nobody -s /bin/sh -c " export HOME=${tempDir} && cd ${tempDir} && curl -f -L -O https://github.com/nginx/pkg-oss/archive/${NGINX_VERSION}-${PKG_RELEASE}.tar.gz && PKGOSSCHECKSUM=\"884cbfae1bfc1f8025795c4232780c71086837022321a2c6eba3654b6507e87f9446c7e88a711fdb6f7360000e25bea4b75bdcac13b32db8acd7e0e9fe1dcd3d *${NGINX_VERSION}-${PKG_RELEASE}.tar.gz\" && if [ \"\$(openssl sha512 -r ${NGINX_VERSION}-${PKG_RELEASE}.tar.gz)\" = \"\$PKGOSSCHECKSUM\" ]; then echo \"pkg-oss tarball checksum verification succeeded!\"; else echo \"pkg-oss tarball checksum verification failed!\"; exit 1; fi && tar xzvf ${NGINX_VERSION}-${PKG_RELEASE}.tar.gz && cd pkg-oss-${NGINX_VERSION}-${PKG_RELEASE} && cd alpine && make module-geoip module-image-filter module-njs module-xslt && apk index --allow-untrusted -o ${tempDir}/packages/alpine/${apkArch}/APKINDEX.tar.gz ${tempDir}/packages/alpine/${apkArch}/*.apk && abuild-sign -k ${tempDir}/.abuild/abuild-key.rsa ${tempDir}/packages/alpine/${apkArch}/APKINDEX.tar.gz " && cp ${tempDir}/.abuild/abuild-key.rsa.pub /etc/apk/keys/ && apk del --no-network .build-deps && apk add -X ${tempDir}/packages/alpine/ --no-cache $nginxPackages ;; esac && apk del --no-network .checksum-deps && if [ -n "$tempDir" ]; then rm -rf "$tempDir"; fi && if [ -f "/etc/apk/keys/abuild-key.rsa.pub" ]; then rm -f /etc/apk/keys/abuild-key.rsa.pub; fi && apk add --no-cache curl ca-certificates # buildkit
USER 101
ARG MODSEC3_VERSION=3.0.16
ARG LUA_VERSION=5.3
ARG LUA_MODULES=lua-lzlib lua-socket
ARG NGINX_HOME=/etc/nginx
ARG READ_ONLY_FS=false
LABEL maintainer=Felipe Zipitria <[email protected]>
ENV NGINX_HOME=/etc/nginx
ENV ACCESSLOG=/var/log/nginx/access.log BACKEND=http://localhost:80 CLIENT_BODY_TIMEOUT=10s CORS_HEADER_403_ALLOW_ORIGIN=* CORS_HEADER_403_ALLOW_METHODS=GET, POST, PUT, DELETE, OPTIONS CORS_HEADER_403_CONTENT_TYPE=text/plain CORS_HEADER_403_MAX_AGE=3600 CORS_HEADER_ACCESS_CONTROL_ALLOW_HEADERS=* ERRORLOG=/var/log/nginx/error.log HTTP2=on HTTP3=off HTTP3_ALT_SVC_PORT= KEEPALIVE_TIMEOUT=60s LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/lib LOGLEVEL=warn METRICS_ALLOW_FROM=127.0.0.0/24 METRICS_DENY_FROM=all METRICSLOG=/dev/null MODSEC_ARGUMENT_SEPARATOR=& MODSEC_ARGUMENTS_LIMIT=1000 MODSEC_AUDIT_ENGINE=RelevantOnly MODSEC_AUDIT_LOG=/dev/stdout MODSEC_AUDIT_LOG_FORMAT=JSON MODSEC_AUDIT_LOG_PARTS=ABIJDEFHZ MODSEC_AUDIT_LOG_RELEVANT_STATUS=^(?:5|4(?!04)) MODSEC_AUDIT_LOG_TYPE=Serial MODSEC_COOKIE_FORMAT=0 MODSEC_AUDIT_STORAGE_DIR=/var/log/modsecurity/audit/ MODSEC_DATA_DIR=/tmp/modsecurity/data MODSEC_DEBUG_LOG=/dev/null MODSEC_DEBUG_LOGLEVEL=0 MODSEC_DEFAULT_PHASE1_ACTION=phase:1,pass,log,tag:'${MODSEC_TAG}' MODSEC_DEFAULT_PHASE2_ACTION=phase:2,pass,log,tag:'${MODSEC_TAG}' MODSEC_DISABLE_BACKEND_COMPRESSION=Off MODSEC_PCRE_MATCH_LIMIT=100000 MODSEC_PCRE_MATCH_LIMIT_RECURSION=100000 MODSEC_REQ_BODY_ACCESS=on MODSEC_REQ_BODY_JSON_DEPTH_LIMIT=512 MODSEC_REQ_BODY_LIMIT=13107200 MODSEC_REQ_BODY_LIMIT_ACTION=Reject MODSEC_REQ_BODY_NOFILES_LIMIT=131072 MODSEC_RESP_BODY_ACCESS=on MODSEC_RESP_BODY_LIMIT=1048576 MODSEC_RESP_BODY_LIMIT_ACTION=ProcessPartial MODSEC_RESP_BODY_MIMETYPE=text/plain text/html text/xml MODSEC_RULE_ENGINE=on MODSEC_STATUS_ENGINE=Off MODSEC_TAG=modsecurity MODSEC_TMP_DIR=/tmp/modsecurity/tmp MODSEC_TMP_SAVE_UPLOADED_FILES=on MODSEC_UNICODE_MAPPING=20127 MODSEC_UPLOAD_DIR=/tmp/modsecurity/upload MODSEC_UPLOAD_FILE_MODE=0600 MODSEC_UPLOAD_KEEP_FILES=Off NGINX_ALWAYS_TLS_REDIRECT=off NGINX_ENVSUBST_OUTPUT_DIR=/etc/nginx NGINX_PORT_IN_REDIRECT=off NGINX_WORKER_PROCESSES=auto NGINX_X_FORWARDED_PORT=$server_port NGINX_X_FORWARDED_PROTO=$scheme PORT=8080 PROXY_SSL_CERT_FILE=/etc/nginx/conf/proxy.crt PROXY_SSL_CERT_KEY_FILE=/etc/nginx/conf/proxy.key PROXY_SSL_CIPHERS=ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384 PROXY_SSL=off PROXY_SSL_PROTOCOLS=TLSv1.2 TLSv1.3 PROXY_SSL_VERIFY_DEPTH=1 PROXY_SSL_VERIFY=off PROXY_TIMEOUT=60s REAL_IP_HEADER=X-REAL-IP REAL_IP_PROXY_HEADER=X-REAL-IP REAL_IP_RECURSIVE=on RESOLVERS= RESOLVER_CONFIG=valid=5s SERVER_NAME=localhost SERVER_TOKENS=off SET_REAL_IP_FROM=127.0.0.1 SSL_CERT_FILE=/etc/nginx/conf/server.crt SSL_CERT_KEY_FILE=/etc/nginx/conf/server.key SSL_CIPHERS=ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384 SSL_DH_BITS=2048 SSL_OCSP_STAPLING=on SSL_PORT=8443 SSL_PREFER_CIPHERS=off SSL_PROTOCOLS=TLSv1.2 TLSv1.3 SSL_VERIFY_DEPTH=1 SSL_VERIFY=off WORKER_CONNECTIONS=1024 ANOMALY_INBOUND=5 ANOMALY_OUTBOUND=4 BLOCKING_PARANOIA=1
COPY /usr/local/modsecurity/lib/libmodsecurity.so.3.0.16 /usr/local/modsecurity/lib/ # buildkit
COPY /etc/nginx/modules/*.so /etc/nginx/modules/ # buildkit
COPY /usr/share/TLS/dhparam-* /etc/ssl/certs/ # buildkit
COPY /etc/modsecurity.d/unicode.mapping /etc/modsecurity.d/unicode.mapping # buildkit
COPY /opt/owasp-crs /opt/owasp-crs # buildkit
COPY src/etc/modsecurity.d/modsecurity.conf /etc/nginx/templates/modsecurity.d/modsecurity.conf.template # buildkit
COPY src/etc/modsecurity.d/modsecurity-override.conf /etc/nginx/templates/modsecurity.d/modsecurity-override.conf.template # buildkit
COPY src/etc/modsecurity.d/setup.conf /etc/nginx/templates/modsecurity.d/setup.conf.template # buildkit
COPY nginx/docker-entrypoint.d/*.sh /docker-entrypoint.d/ # buildkit
COPY src/opt/modsecurity/activate-plugins.sh /docker-entrypoint.d/94-activate-plugins.sh # buildkit
COPY src/opt/modsecurity/configure-rules.sh /docker-entrypoint.d/95-configure-rules.sh # buildkit
COPY src/opt/modsecurity/configure-rules.*.conf /docker-entrypoint.d/ # buildkit
COPY nginx/templates /etc/nginx/templates/ # buildkit
COPY src/bin/* /usr/local/bin/ # buildkit
USER root
RUN |5 MODSEC3_VERSION=3.0.16 LUA_VERSION=5.3 LUA_MODULES=lua-lzlib lua-socket NGINX_HOME=/etc/nginx READ_ONLY_FS=false /bin/sh -c set -eux; apk add --no-cache curl curl-dev ed libfuzzy2 libmaxminddb-dev libstdc++ libxml2-dev lmdb-dev lua${LUA_VERSION} ${LUA_MODULES} moreutils openssl tzdata pcre2 sed yajl; mkdir /etc/nginx/ssl; sed -i 's/^\(SecDisableBackendCompression .*\)/# \1/' /etc/nginx/templates/modsecurity.d/modsecurity-override.conf.template; ln -s /usr/local/modsecurity/lib/libmodsecurity.so.${MODSEC3_VERSION} /usr/local/modsecurity/lib/libmodsecurity.so.3.0; ln -s /usr/local/modsecurity/lib/libmodsecurity.so.${MODSEC3_VERSION} /usr/local/modsecurity/lib/libmodsecurity.so.3; ln -s /usr/local/modsecurity/lib/libmodsecurity.so.${MODSEC3_VERSION} /usr/local/modsecurity/lib/libmodsecurity.so; ln -sv /opt/owasp-crs /etc/modsecurity.d/ # buildkit
RUN |5 MODSEC3_VERSION=3.0.16 LUA_VERSION=5.3 LUA_MODULES=lua-lzlib lua-socket NGINX_HOME=/etc/nginx READ_ONLY_FS=false /bin/sh -c set -eux; if [ "${READ_ONLY_FS}" = "true" ]; then mkdir -p /usr/local/bootstrap/nginx /usr/local/bootstrap/modsecurity.d /usr/local/bootstrap/owasp-crs; mv "${NGINX_HOME}/"* /usr/local/bootstrap/nginx/; mv /etc/modsecurity.d/* /usr/local/bootstrap/modsecurity.d/; mv /opt/owasp-crs/* /usr/local/bootstrap/owasp-crs/; chown nginx:nginx "${NGINX_HOME}" /usr/local/bootstrap/*; else rm /docker-entrypoint.d/0-move-writables.sh; fi; mkdir -p /var/log/modsecurity/audit; chown nginx:nginx /var/log/modsecurity/audit /opt/owasp-crs /etc/modsecurity.d # buildkit
USER nginx
RUN |5 MODSEC3_VERSION=3.0.16 LUA_VERSION=5.3 LUA_MODULES=lua-lzlib lua-socket NGINX_HOME=/etc/nginx READ_ONLY_FS=false /bin/sh -c mkdir -p /tmp/modsecurity/data; mkdir -p /tmp/modsecurity/upload; mkdir -p /tmp/modsecurity/tmp # buildkit
WORKDIR /usr/share/nginx/html
HEALTHCHECK {Test:[CMD-SHELL /usr/local/bin/healthcheck] Interval:0s Timeout:0s StartPeriod:0s StartInterval:0s Retries:0}
COPY /web/dist /usr/share/nginx/html # buildkit
COPY deploy/docker/nginx-main.conf /etc/nginx/nginx.conf # buildkit
COPY deploy/docker/nginx.conf /etc/nginx/conf.d/default.conf # buildkit
COPY deploy/docker/modsecurity.conf /etc/nginx/modsecurity.conf # buildkit
COPY deploy/docker/modsecurity-include.conf /etc/nginx/modsecurity-include.conf # buildkit
USER root
RUN /bin/sh -c chmod 0644 /etc/nginx/nginx.conf /etc/nginx/conf.d/default.conf /etc/nginx/modsecurity.conf /etc/nginx/modsecurity-include.conf && chown -R nginx:nginx /var/log/nginx # buildkit
USER nginx
ENTRYPOINT []
CMD ["nginx" "-g" "daemon off;"]
EXPOSE [8080/tcp]

Labels

Key Value
maintainer Felipe Zipitria <[email protected]>
org.opencontainers.image.created 2026-07-20T01:52:58.996Z
org.opencontainers.image.description Unprivileged NGINX Dockerfiles
org.opencontainers.image.licenses Apache-2.0
org.opencontainers.image.revision e26803b6ff7ca01455284231c59f20cb5e3ae82e
org.opencontainers.image.source https://github.com/coreruleset/modsecurity-crs-docker
org.opencontainers.image.title docker-nginx-unprivileged
org.opencontainers.image.url https://github.com/nginx/docker-nginx-unprivileged
org.opencontainers.image.version 1.30.4-alpine
Details
Container
2026-08-14 21:07:32 +00:00
0
OCI / Docker
linux/amd64
Apache-2.0
36 MiB
Versions (43) View all