- new compose templates + READMEs for the three LXC apps (110-112) - Makefile deploy targets (rackula pre-owns its data dir for uid 1001) - Caddy vhosts for all four, incl. Hermes /auth/login redirect workaround - firewall docs: CADDY->TRUSTED rules for LXCs 110-113 |
||
|---|---|---|
| .. | ||
| .env.sample | ||
| README.md | ||
| template.yaml | ||
SnapOtter
Self-hosted file toolkit — 200+ tools for images, video, audio, PDF and
generic files, fully offline. Runs as a single container in embedded mode:
with DATABASE_URL/REDIS_URL unset it starts its own Postgres 17 and Redis
on loopback and persists everything under /data.
Persistent Data
The snapotter_data named volume holds the embedded Postgres data, models
and stored files (/data). Processed results are auto-cleaned after
SNAPOTTER_FILE_MAX_AGE_HOURS (default 72 h).
Installation
-
Create
.envif it does not exist:cp -n .env.sample .env -
Adjust the values in
.envif needed:TZ=Africa/Johannesburg SNAPOTTER_PORT=1349 SNAPOTTER_MAX_UPLOAD_SIZE_MB=500 DOCKERLOGGING_MAXFILE=3 DOCKERLOGGING_MAXSIZE=10m -
Deploy with
make:make deploy-snapotterManual equivalent:
./substitute_env.sh docker-compose-files/snapotter/template.yaml docker-compose.snapotter.yml .env docker compose -f docker-compose.snapotter.yml config --quiet docker compose -f docker-compose.snapotter.yml up -d -
Verify the container and open
http://<host-ip>:1349. First login isadmin/adminwith a forced password change:docker compose -f docker-compose.snapotter.yml ps docker compose -f docker-compose.snapotter.yml logs --tail=100 snapotter
Reverse Proxy
The Caddyfile proxies snapotter.<domain> to this host on port 1349. After
changing the port, update docker-compose-files/caddy/Caddyfile_template and
run make reload-caddy.
Notes
- Embedded mode must run as root inside the container; for a split Postgres/Redis stack see the upstream compose at https://docs.snapotter.com/.
- Media-heavy jobs (video transcode, AI tools) are CPU/RAM hungry — the LXC
hosting this gets 2 cores / 4 GB, and the container is capped at
SNAPOTTER_MEM_LIMIT(default 3g).
Useful Commands
# Tail logs
docker compose -f docker-compose.snapotter.yml logs -f snapotter
# Recreate after an image update
docker compose -f docker-compose.snapotter.yml pull
docker compose -f docker-compose.snapotter.yml up -d