# Deploying on a KIT HPC login node (no Docker daemon) This path is for machines like the ETP login nodes: `/ceph`, `/work`, `/web` are mounted directly, but there's no Docker daemon available, and your `public_html` is already served by KIT's own web infrastructure — so no web server needs to run here at all, only the generator on a schedule. ## 1. Install into a venv ```bash python3 -m venv ~/.venvs/gallery ~/.venvs/gallery/bin/pip install -e /work/lbogner/ETPlot # path to your clone ``` PyMuPDF (a base dependency) handles PDF→PNG conversion; ImageMagick is not required. ## 2. Point a config at your paths Copy/edit `config.lbogner.yaml` from the repo root (already has `web_folder: /web/lbogner/public_html/` and placeholder `sources:` — fill in the real plot-output directories under `/work/lbogner/...` or `/ceph/...`). Put it wherever you like, e.g. `~/gallery/config.lbogner.yaml`, and adjust the path in `gallery-generate.service` if you move it. ## 3. Install the systemd --user timer ```bash mkdir -p ~/.config/systemd/user cp deploy/systemd/gallery-generate.{service,timer} ~/.config/systemd/user/ systemctl --user daemon-reload systemctl --user enable --now gallery-generate.timer ``` Check status/logs: ```bash systemctl --user list-timers gallery-generate.timer journalctl --user -u gallery-generate.service -f ``` By default a user's systemd instance (and its timers) stops when you log out. Enable lingering so it keeps running: ```bash loginctl enable-linger $USER ``` If lingering isn't permitted on your login node, or `systemctl --user` isn't usable there at all, fall back to a crontab entry instead: ``` */5 * * * * ~/.venvs/gallery/bin/gallery --config ~/gallery/config.lbogner.yaml generate >> ~/gallery-generate.log 2>&1 ``` ## Why not the Docker Compose stack? `docker-compose.yml` at the repo root (generator + nginx) is for a scenario where you control a dedicated VM/server and need to serve the output yourself. On the ETP login nodes there's no Docker daemon (Apptainer/Singularity only), and `public_html` is already auto-served — running your own nginx there would be redundant. Docker is still used for CI (`.gitlab-ci.yml`) and remains a fine option for anyone deploying this on their own server.