[Unit]
Description=A simple image host
Documentation=https://git.asonix.dog/asonix/pict-rs
After=network-online.target

[Service]
Type=simple
Environment="PICTRS__SERVER__ADDRESS=127.0.0.1:8080"
Environment="PICTRS__SERVER__API_KEY=SOME-REALLY-SECRET-KEY"
Environment="PICTRS__TRACING__LOGGING__TARGETS=warn"
Environment="PICTRS__MEDIA__FORMAT=avif"
Environment="PICTRS__REPO__PATH=/var/lib/pict-rs/sled"
Environment="PICTRS__REPO__EXPORT_PATH=/var/lib/pict-rs/sled"
Environment="PICTRS__STORE__PATH=/var/lib/pict-rs/files"

# Replace with the path to your installation of pict-rs
ExecStart=/usr/local/bin/pict-rs run
Restart=on-failure

# Hardening, taken from user cablepick on matrix
#
# CAP_DAC_OVERRIDE - bypass file read, write, execute permission checks
# CAP_KILL - bypass permission checks for sending signals
# CAP_SYS_ADMIN - does a lot, can probably be replaced with more fine-grained capabilities
CapabilityBoundingSet=CAP_DAC_OVERRIDE CAP_KILL CAP_SYS_ADMIN
# Makes unique /tmp folder for pict-rs, separate from system /tmp
PrivateTmp=true
# Makes /usr, /boot, /efi , and /etc read-only for pict-rs
# Could maybe be replaced with ProtectSystem=strict if ReadWritePaths is set to /var/lib/pict-rs
ProtectSystem=full
# Makes /home and /root directories appear empty to pict-rs
ProtectHome=true
# Only useful if running as non-root
RemoveIPC=true

[Install]
WantedBy=multi-user.target
