Fancy Index

Directory listings that don't look like it's still 1994.

$ sudo apt install nginx-module-fancyindex
Package
nginx-module-fancyindex
Section
Utility
Replaces
libnginx-mod-http-fancyindex
Upstream
github.com/aperezdc/ngx-fancyindex ↗
Distros
Debian 12, 13 · Ubuntu 22.04, 24.04, 26.04
Arch
amd64, arm64

What it does

nginx's built-in autoindex works, but it looks awful. Fancyindex replaces it with something configurable: custom HTML headers and footers (from local files or an upstream), CSS themes, sortable columns, size display in KB/MB instead of bytes, dotfile control, symlink display. Header and footer files can reference the current directory path via template variables. Good for public file mirrors, internal release archives, download portals, or anywhere you're distributing files and don't want to look like you gave up.

When to use it

  • Public file distribution servers with consistent branding
  • Internal software release archives with readable layouts
  • Download portals with custom headers, footers, and CSS themes
  • Asset mirrors that need to look more polished than the default

Configuration

A starting point. Adjust to taste.

nginx.conf
location /files/ {
  root              /var/www;
  fancyindex        on;
  fancyindex_exact_size off;    # KB/MB instead of bytes
  fancyindex_localtime  on;     # local timestamps

  # Optional custom header/footer HTML files
  # fancyindex_header /fancyindex-header.html;
  # fancyindex_footer /fancyindex-footer.html;
}

Install from scratch

You'll need nginx from nginx.org configured first. These packages won't load on the distro nginx. Then add the Blendbyte repository if you haven't already:

Add repository and install
sudo install -d -m 0755 /etc/apt/keyrings

curl -fsSL https://apt.blendbyte.net/nginx/blendbyte-archive-keyring.gpg \
  | sudo tee /etc/apt/keyrings/blendbyte.gpg >/dev/null

echo "deb [signed-by=/etc/apt/keyrings/blendbyte.gpg] https://apt.blendbyte.net/nginx $(lsb_release -cs) main" \
  | sudo tee /etc/apt/sources.list.d/blendbyte.list

sudo apt update
sudo apt install nginx-module-fancyindex

Most modules auto-enable on install. If yours didn't:

Enable manually (if needed)
$ sudo ln -s /etc/nginx/modules-available/50-mod-fancyindex.conf \
  /etc/nginx/modules-enabled/
$ sudo nginx -t && sudo systemctl reload nginx

Replacing a Sury package?

This replaces libnginx-mod-http-fancyindex from the old Sury nginx repository. The package declares Replaces and Conflicts, so once your apt sources point at nginx.org and Blendbyte, a regular apt upgrade swaps it in. No manual cleanup.

Switching sources also moves you from Sury's nginx binary to nginx.org's. The migration guide walks through it in one go.

Upstream project

We package this from the upstream open-source project. If it's a bug in the module itself (not in our packaging), report it upstream at github.com/aperezdc/ngx-fancyindex ↗