Files
duplicate-finder/debian/files/etc/systemd/system/dupfinder.service
tocmo f9164b4fa0 Add Debian package and Gitea APT repository support
debian/control, postinst, prerm, postrm — standard dpkg package lifecycle
debian/files/opt/dupfinder/dupfinder-setup.sh — interactive setup:
  checks Docker, detects NVIDIA GPU, prompts for photos/data paths,
  writes docker-compose.override.yml with GPU reservation if present,
  pulls image from registry (builds from source as fallback)
debian/files/usr/local/bin/dupfinder — CLI wrapper:
  setup / start / stop / restart / status / logs / open / update
debian/files/etc/systemd/system/dupfinder.service — systemd unit,
  guards against starting before setup has run
debian/build-deb.sh — builds .deb and uploads to Gitea package registry;
  prints the exact apt sources.list line on success

Install on any Debian/Ubuntu machine:
  echo "deb [trusted=yes] http://192.168.1.64:3000/api/packages/tocmo0nlord/debian bookworm main" \
    | sudo tee /etc/apt/sources.list.d/dupfinder.list
  sudo apt update && sudo apt install dupfinder
  sudo dupfinder setup

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-05 01:42:45 -04:00

34 lines
895 B
Desktop File

[Unit]
Description=DupFinder Duplicate Photo Scanner
Documentation=http://192.168.1.64:3000/tocmo0nlord/duplicate-finder
After=docker.service network-online.target
Requires=docker.service
Wants=network-online.target
[Service]
Type=simple
Restart=on-failure
RestartSec=10
EnvironmentFile=-/etc/dupfinder.conf
WorkingDirectory=/opt/dupfinder
ExecStart=/usr/bin/docker compose \
-f /opt/dupfinder/docker-compose.yml \
-f /opt/dupfinder/docker-compose.override.yml \
up --no-build --remove-orphans
ExecStop=/usr/bin/docker compose \
-f /opt/dupfinder/docker-compose.yml \
-f /opt/dupfinder/docker-compose.override.yml \
down
# Don't start if override hasn't been created yet (setup not run)
ExecStartPre=/bin/test -f /opt/dupfinder/docker-compose.override.yml
StandardOutput=journal
StandardError=journal
SyslogIdentifier=dupfinder
[Install]
WantedBy=multi-user.target