Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Install the binary on Debian

This is the reference deployment: Debian 13, the release binary, PostgreSQL 17 from Debian, Caddy, and systemd. Releases include AMD64 and ARM64 binaries. The static binaries can run on other Linux distributions of the same architecture; adapt the package names and service setup for your host.

The steps assume a fresh, dedicated server and an administrator with sudo. Run the commands section by section, replacing the example values for your server.

Prepare the host

sudo apt-get update
sudo apt-get install -y --no-install-recommends \
  postgresql caddy ffmpeg ca-certificates curl openssl
sudo adduser --system --group --home /var/lib/plamenu \
  --no-create-home plamenu
sudo -u postgres createuser plamenu
sudo -u postgres createdb --owner=plamenu plamenu

The operating-system user and PostgreSQL role have the same name. Debian’s default peer authentication therefore lets Plamenu use the local database socket without storing a database password or opening PostgreSQL to the network.

Install a release

These commands require published release assets (see release status). Replace 0.6.0 with the selected version in the version variable. The commands select the host architecture:

# Replace 0.6.0 with the release you want to install.
version=0.6.0
case "$(uname -m)" in
  x86_64) arch=amd64 ;;
  aarch64) arch=arm64 ;;
  *) echo 'Supported architectures: AMD64 and ARM64' >&2; exit 1 ;;
esac
archive="plamenu-$version-linux-$arch.tar.gz"
mkdir "plamenu-$version"
cd "plamenu-$version"
curl -fLO "https://codefloe.com/plamenu/plamenu/releases/download/v$version/$archive"
tar -xzf "$archive"

sudo install -m 0755 plamenu /usr/local/bin/plamenu
sudo install -m 0644 plamenu.service /etc/systemd/system/plamenu.service
sudo install -d -m 0750 -o root -g plamenu /etc/plamenu
sudo install -m 0640 -o root -g plamenu \
  plamenu.host.toml.example /etc/plamenu/plamenu.toml
sudo install -m 0644 Caddyfile.host.example /etc/caddy/Caddyfile

plamenu-VERSION-linux-ARCH.tar.gz contains one executable, the systemd unit, example Plamenu and Caddy configurations, and the license.

Configure the server

openssl rand -hex 32
sudoedit /etc/plamenu/plamenu.toml
sudoedit /etc/caddy/Caddyfile

In /etc/plamenu/plamenu.toml, replace social.example.com and the encryption secret. Keep the socket database URL and loopback bind for this single-host layout. Configure SMTP before enabling a mail-dependent account flow.

In /etc/caddy/Caddyfile, replace every social.example.com. Point the social domain, webxdc.<social-domain>, and *.webxdc.<social-domain> to the server. The configuration guide explains split-domain handles and why proxy trust must remain narrow.

Validate and start

# CLI commands initialize media storage before systemd creates StateDirectory.
sudo install -d -m 0750 -o plamenu -g plamenu \
  /var/lib/plamenu /var/lib/plamenu/media
sudo -u plamenu /usr/local/bin/plamenu \
  --config /etc/plamenu/plamenu.toml role list
sudo caddy validate --config /etc/caddy/Caddyfile
sudo systemctl daemon-reload
sudo systemctl enable --now postgresql plamenu caddy
# Debian may already have started Caddy with its packaged default config.
sudo systemctl reload caddy
curl -fsS http://127.0.0.1:8420/health
curl -fsS https://social.example.com/ready

/health checks that the process answers. /ready also checks PostgreSQL and worker-supervisor health. If the public check fails, inspect journalctl -u plamenu and use the troubleshooting guide.

Next, create the first administrator.