Skip to content

Instantly share code, notes, and snippets.

@jult
Last active August 19, 2025 14:46
Show Gist options
  • Save jult/c7e7076f3341fdbd500ebb23ae543fcc to your computer and use it in GitHub Desktop.
Save jult/c7e7076f3341fdbd500ebb23ae543fcc to your computer and use it in GitHub Desktop.
freenginx with fancy-indexing and QUIC support on a debian 12 server
# February 2024, ex-NGINX developer, Maxim Dounin, announced freenginx, a fork.
# Maxim took this action in protest at decisions made by F5, the company that currently owns nginx:
# "I no longer see nginx as a free and open source project developed and maintained for the public good."
# assuming debian 12 or later
# as root user do:
apt install git wget libpcre3-dev libssl-dev zlib1g-dev libgd-dev libcrypt-dev libbsd-dev build-essential
cd /root
mkdir installs
cd /root/installs
wget https://freenginx.org/download/freenginx-1.29.0.tar.gz
tar -xzf freenginx-1.29.0.tar.gz
cd /root/installs
git clone --depth 1 -b openssl-3.1.7+quic https://github.com/quictls/openssl.git quictls
cd /root/installs/quictls
./config --prefix=/root/installs/quictls/.openssl no-shared no-threads
make install_sw LIBDIR=lib
cd /root/installs/freenginx*
./configure --sbin-path=/usr/sbin/nginx --with-cc-opt='-g -O2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -flto=auto -ffat-lto-objects -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -fPIC -Wdate-time -D_FORTIFY_SOURCE=3' --with-ld-opt='-Wl,-Bsymbolic-functions -flto=auto -ffat-lto-objects -Wl,-z,relro -Wl,-z,now -fPIC' --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=stderr --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --modules-path=/usr/lib/nginx/modules --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-compat --with-debug --with-pcre-jit --with-threads --with-http_v2_module --with-http_v3_module --with-http_mp4_module --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_dav_module --with-http_slice_module --with-http_addition_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_sub_module --with-mail_ssl_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-stream_realip_module --with-http_geoip_module=dynamic --with-http_image_filter_module=dynamic --with-http_perl_module=dynamic --with-http_xslt_module=dynamic --with-mail=dynamic --with-stream=dynamic --with-stream_geoip_module=dynamic --add-dynamic-module=/root/installs/ngx-fancyindex --group=nogroup --with-openssl=/root/installs/quictls --with-cc-opt='-O2'
make
kill -USR2 `cat /run/nginx.pid`
sleep 1
make install
# make upgrade <- add this when upgrading older version of freenginx, also: start from a clean /root/installs if you upgrade
nginx -v
cd /root/installs
git clone https://github.com/aperezdc/ngx-fancyindex.git
cd /root/installs/ngx-fancy*
make
make install
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment