A beautiful file indexer written in Python with Quart.
- Customizable with theme support
- Clickable breadcrumb (the "Index of" bar)
- Supports global and per-folder header and footer pages
- Cached, in-line and expandable image and video thumbnails
- Embedded index thumbnails
- Allows in-browser playback of
.mov
and.mkv
files with mimetype spoofing - Still serves your files
This should all be done within a container using either Docker or LXC with read-only access to your directory.
- Install
opencv2 wkhtmltopdf
from your system's repositories- Debian/Ubuntu users should replace
opencv2
withlibopencv-dev
- Debian/Ubuntu users should replace
- Install
pydantic pydantic_settings aiofile aiopath opencv-python av quart imgkit jinja2 markdown markupsafe opencv-python pillow yaml
to your Python installation- FIXME: package names for Quart are likely wrong
- Arch Linux users should install
python-pydantic python-opencv python-quart python-jinja2 python-markdown python-pillow python-av python-yaml
- Debian/Ubuntu users should install
python3-pydantic python3-quart python3-opencv python3-jinja2 python3-commonmark python3-markupsafe python3-av python3-yaml python3-pil
pydantic_settings aiofile aiopath imgkit
still needs to be installed from PyPI usingpip
- Copy
config.example.yaml
toconfig.yaml
in the same directory asapp.py
and edit to your liking - FIXME: uWSGI doesn't work for this anymore
Copyuwsgi.ini
to/etc/uwsgi/histoire.ini
and edit to your likingCreate thethumbimage_cache_dir
as specified inconfig.yaml
and the uwsgi socket directory as specified bysocket
in/etc/uwsgi/histoire.ini
and set the permissions to the same user and group as specified in/etc/uwsgi/histoire.ini
Startuwsgi@histoire.service
withsystemctl
or run/usr/bin/uwsgi --ini /etc/uwsgi/histoire.ini
as a background process asroot
Set your web server to pass the path you want for Histoire to run on using (u)WSGI to the UNIX socket file specified bysocket
in/etc/uwsgi/histoire.ini
nginx users should useinclude uwsgi_params; uwsgi_pass unix:/run/uwsgi/histoire.sock;