Install

Binary and systemd

Build it with cargo build --release (Rust 1.94 or newer), or take it from the container image. Then:

sh
export POSTKEEP_PUBLIC_URL=https://mail.example.com
export POSTKEEP_MASTER_KEY_FILE=/etc/postkeep/master.key
export POSTKEEP_DATABASE_URL=sqlite:///var/lib/postkeep/postkeep.db
postkeep serve

deploy/systemd/postkeep.service is a hardened systemd unit. It runs as a dynamic user, passes the master key as a systemd credential and keeps the database in /var/lib/postkeep.

The unit’s header documents the install:

sh
sudo install -m 0755 postkeep /usr/local/bin/
sudo install -d -m 0700 /etc/postkeep
postkeep generate-key | sudo tee /etc/postkeep/master.key >/dev/null
sudo chmod 0600 /etc/postkeep/master.key
echo 'POSTKEEP_PUBLIC_URL=https://mail.example.com' | sudo tee /etc/postkeep/env
sudo cp postkeep.service /etc/systemd/system/
sudo systemctl daemon-reload && sudo systemctl enable --now postkeep

The unit itself sets POSTKEEP_BIND=127.0.0.1:8080, POSTKEEP_DATABASE_URL=sqlite:///var/lib/postkeep/postkeep.db, EnvironmentFile=/etc/postkeep/env, LoadCredential=master_key:/etc/postkeep/master.key and POSTKEEP_MASTER_KEY_FILE=%d/master_key. DynamicUser=yes and StateDirectory=postkeep.