Install the binary
This guide shows how to install ReputeCast on Linux as a single binary run by systemd, next to a PostgreSQL server. The binary contains the web app and every database migration; nothing else needs to be installed.
Before you begin
Section titled “Before you begin”- A Linux server on
amd64orarm64with systemd, and PostgreSQL 16, 17 or 18 (see system requirements). sudoaccess and a reverse proxy for TLS on the same server (reverse proxy and TLS).- The binary also runs on macOS and Windows, but this guide uses systemd.
Install ReputeCast
Section titled “Install ReputeCast”-
Download the archive for your platform (
linux_amd64orlinux_arm64) andchecksums.txtfrom the releases page, check it and install the binary:Terminal window sha256sum --ignore-missing -c checksums.txttar -xzf reputecast_*_linux_amd64.tar.gz reputecastsudo install -m 0755 reputecast /usr/local/bin/reputecastreputecast version -
Create the database, its user and the SQL segments role (PostgreSQL):
Terminal window sudo -u postgres psql -c "CREATE ROLE reputecast LOGIN PASSWORD 'change-me'" \-c "CREATE DATABASE reputecast OWNER reputecast" \-c "CREATE ROLE reputecast_segments NOLOGIN" \-c "GRANT reputecast_segments TO reputecast" -
Create a system user. systemd creates its data folder,
/var/lib/reputecast, in step 6:Terminal window sudo useradd --system --no-create-home --shell /usr/sbin/nologin reputecast -
Create the folder
/etc/reputecast(sudo mkdir -p /etc/reputecast) and write the configuration there as an environment file, readable only by root and the service:/etc/reputecast/env REPUTECAST_DATABASE__URL=postgres://reputecast:change-me@localhost:5432/reputecast?sslmode=disableREPUTECAST_HTTP__PUBLIC_URL=https://news.example.comREPUTECAST_HTTP__ADDR=127.0.0.1:8080REPUTECAST_HTTP__TRUSTED_PROXIES=127.0.0.1REPUTECAST_SECRETS__KEY_FILE=/var/lib/reputecast/secret.keyREPUTECAST_LOG__FORMAT=jsonTerminal window sudo chown root:reputecast /etc/reputecast/env && sudo chmod 0640 /etc/reputecast/envWithout
REPUTECAST_SECRETS__KEY_FILE, the key file would bedata/secret.keyunder the working directory. Every key is described in configure ReputeCast. -
Apply the migrations and create the first Owner:
Terminal window sudo sh -c 'set -a && . /etc/reputecast/env && reputecast install --email you@company.com --name "Your Name"'Output ReputeCast is installed.Sign in at https://news.example.comEmail you@company.comPassword HAwc-PKEn-jSXh-EE9w (temporary: you'll replace it at first sign-in)installonly writes to the database. It stops withReputeCast is already installed: users existwhen the database has users. -
Create the service:
/etc/systemd/system/reputecast.service [Unit]Description=ReputeCastAfter=network-online.target postgresql.serviceWants=network-online.target[Service]Type=simpleUser=reputecastGroup=reputecastEnvironmentFile=/etc/reputecast/envExecStart=/usr/local/bin/reputecast serveRestart=on-failureStateDirectory=reputecastWorkingDirectory=/var/lib/reputecast[Install]WantedBy=multi-user.targetStateDirectory=reputecastmakes systemd create/var/lib/reputecastowned by the service user. On its first start, ReputeCast writes its secret key there and keeps uploaded files in/var/lib/reputecast/files. -
Start it:
Terminal window sudo systemctl daemon-reloadsudo systemctl enable --now reputecast -
Point your reverse proxy at
127.0.0.1:8080, open the public URL and complete the first sign-in.
Check that it worked
Section titled “Check that it worked”systemctl status reputecastshowsactive (running).journalctl -u reputecastshows anhttp listeningline with the address, public URL and roles.curl http://127.0.0.1:8080/readyzanswersready.sudo sh -c 'set -a && . /etc/reputecast/env && reputecast migrate status'lists nopendingmigration.
Troubleshooting
Section titled “Troubleshooting”Error: http.public_url must be an absolute URL, got "…": write the address with its scheme,https://news.example.com.- The log warns
database has pending migrations:servedoesn’t migrate unless you pass--auto-migrate. Runreputecast migrate upwith the same environment, or add--auto-migratetoExecStart. connect to postgres: …: check the URL, the password andpg_hba.confwithpsqland the same URL.- Permission denied on the secret key:
/var/lib/reputecastmust belong to the service user; keepStateDirectory=reputecastin the unit. - The temporary password is lost:
reputecast user reset-password --email you@company.comprints a one-time link (recover access).