Skip to content

Installation

The supported quick-start path is the bella.network APT repository. It installs the executable and a hardened systemd template for running one or more instances.

PassBeyond is also published as an OCI image. Use Container deployment when Docker, Podman, Compose, or a container-based reverse proxy is the better fit.

Install with APT

The repository publishes packages for amd64 and arm64:

bash
curl -fsSL https://repo.bella.network/_static/bella-archive-keyring.gpg \
  | sudo tee /usr/share/keyrings/bella-archive-keyring.gpg >/dev/null

sudo tee /etc/apt/sources.list.d/repo.bella.network.sources >/dev/null <<'EOF'
Types: deb
URIs: https://repo.bella.network/deb
Suites: stable
Components: main
Architectures: amd64 arm64
Signed-By: /usr/share/keyrings/bella-archive-keyring.gpg
EOF

sudo apt update
sudo apt install passbeyond

The repository itself also has a configuration guide.

Installed components

PathPurpose
/usr/bin/passbeyondPassBeyond executable
/etc/passbeyond/<instance>.yamlStatic configuration for one instance
/var/lib/passbeyond/Working directory and recommended location for dynamic state
passbeyond@.servicesystemd template unit

The package creates an unprivileged passbeyond user and group. The shipped default.yaml is an example and is intentionally not ready for use.

Run an instance

Each YAML filename maps to one systemd instance. For /etc/passbeyond/wiki.yaml, run:

bash
sudo systemctl enable --now passbeyond@wiki.service

Use a unique domain, listen port, target URL, and dynamic configPath for every instance. Multiple instances must never write to the same dynamic JSON file.

Upgrade

Upgrade through APT and inspect the service logs afterward:

bash
sudo apt update
sudo apt install --only-upgrade passbeyond
sudo systemctl --failed

Back up /etc/passbeyond/ and the dynamic state files in /var/lib/passbeyond/ before an upgrade. The package restarts enabled instances for which it finds a YAML configuration. See Backup and restore for a consistent procedure.

Build from source

Install the Go version required by the repository's go.mod, then clone and test the project:

bash
git clone https://gitlab.com/bella.network/passbeyond.git
cd passbeyond
go mod download
go test ./...
go build -trimpath -o ./bin/passbeyond ./cmd/passbeyond

Run a source build with an explicit configuration file:

bash
./bin/passbeyond --config ./config.yaml

For production, prefer a tagged release and reproduce the package's unprivileged service setup. The application needs write access to its dynamic state file but does not need root privileges or a privileged listening port.

Verify the installation

The executable has no separate version or health command. Verify a configured instance through systemd, its logs, and the public metadata endpoint:

bash
systemctl status passbeyond@wiki.service
journalctl -u passbeyond@wiki.service -n 100 --no-pager
curl --fail --show-error https://wiki.example.com/saml/metadata.xml

Released under the MIT License.