balam-web (266b331afa5c3f1e9c64e2e9c1cf91b08d18bdb0)
Published 2026-08-15 17:55:45 +00:00 by Ghost
Installation
docker pull git.colibrisec.org/colibrisec/balam-web:266b331afa5c3f1e9c64e2e9c1cf91b08d18bdb0sha256:7b672007e04acfd974d1622cd87df3e0d16e039d63446a64009b758d4e7033fcAbout 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
2026-08-15 17:55:45 +00:00
Versions (43)
View all
Container
0
OCI / Docker
linux/amd64
Apache-2.0
36 MiB
latest
2026-10-01
v0.1.0
2026-10-01
52b1c2c40961ac98dcf0e9986a70a75a43bc03ca
2026-10-01
v0.0.22
2026-09-10
762bfdbb849316e3be00de5babe6f51930c1dae7
2026-09-10