secure file hosting for ~horses
https://share.tilde.horse
| app | ||
| config | ||
| docs | ||
| examples | ||
| uploads | ||
| .env.example | ||
| .gitignore | ||
| install.sh | ||
| LICENSE | ||
| pyproject.toml | ||
| README.md | ||
| requirements.txt | ||
| run.py | ||
| SECURITY.md | ||
| uv.lock | ||
horsieshare
Secure file hosting for shared, multi-user Linux servers. Files are encrypted at rest with AES-256-GCM, authenticated via PAM on every request, and automatically expire after a configurable retention period.
Features
- AES-256-GCM encryption at rest with per-file keys
- PAM authentication on every request — no session tokens to steal
- Brute-force protection — per-IP lockout after 10 failed attempts
- EXIF stripping from images
- Secure file shredding on deletion/expiry (configurable passes)
- Automatic expiry via built-in hourly background task
- Media compression — images and video via FFmpeg (optional)
- oEmbed support for Discord/Telegram rich embeds with custom colors
- ShareX compatible with per-user Base64 auth tokens
- Daily upload quota per user
Quick Start
# Install from this checkout into /opt/horsieshare
git clone https://git.tilde.horse/ky/horsieshare /opt/horsieshare
cd /opt/horsieshare
sudo ./install.sh
# Configure before starting
edit /opt/horsieshare/.env
systemctl start horsieshare # systemd
# or: rc-service horsieshare start # OpenRC
By default horsieshare uses ffmpeg and ffprobe from the service user's
PATH. Private binaries are still supported by setting FFMPEG_PATH and
FFPROBE_PATH to explicit executable paths.
The installer is root-run, uses the current checkout, installs system
dependencies for common package managers, creates the service user/group, copies
the app to /opt/horsieshare, installs either a systemd or OpenRC service, and
runs uv sync --frozen.
# Upload a file
curl -F "file=@image.png" -u username:password https://your-domain.com/api/upload
Documentation
- Installation — full setup, nginx, OpenRC, architecture
- Configuration — all environment variables and branding options
- API Reference — all endpoints with request/response examples
- Usage — upload script, ShareX, curl examples
- Security — hardening guide for multi-user environments
License
MIT — see LICENSE.