One-command install for all platforms. No sudo — installs under your home directory.

For server setup after installing, see Quick Start. For package managers, Docker, and other methods, see Server Installation.


What It Does

  1. Detects OS, CPU architecture, platform variants (Rosetta 2/WSL), and init system (systemd/OpenRC/SysV/container)
  2. Downloads the correct binary from GitHub Releases (or builds from source with --build)
  3. Installs to ~/bin or %USERPROFILE%\bin (customizable via --install-dir)
  4. Adds install directory to PATH (shell profiles for Bash, Registry for Windows)
  5. Windows & Linux: Offers an interactive Q&A to configure TLS, Postgres, and create the initial Admin user
  6. Prints next steps

Requirements

PlatformDependencies
macOS / Linuxcurl + tar
macOS / Linux (--build)curl + git + go + bun + make
WindowsPowerShell 5.1+ (ships with Windows 10/11)
Windows (--build)git + go + bun + make

Quick Install

curl -fsSL https://bedrud.org/install.sh | bash

Reload shell, then verify:

source ~/.bashrc  # or ~/.zshrc
bedrud --version
irm https://bedrud.org/install.ps1 | iex
bedrud --version

Flags & Options

Bash Installer

Usage: curl -fsSL https://bedrud.org/install.sh | bash -s -- [options]
FlagDefaultDescription
--install-dir <dir>~/binWhere to place the binary
--version <ver>latestPin to a release (e.g. v1.2.0)
--buildoffBuild from source instead of downloading a release
--branch <name>masterGit branch to clone (requires --build)
--skip-shelloffDon’t modify shell RC files or PATH
--no-setupoffDownload binary only, skip interactive server setup
-h, --helpPrint usage and exit

Examples:

# Default
curl -fsSL https://bedrud.org/install.sh | bash
 
# Pin version
curl -fsSL https://bedrud.org/install.sh | bash -s -- --version v1.2.0
 
# Build from source (custom branch)
curl -fsSL https://bedrud.org/install.sh | bash -s -- --build --branch my-feature
 
# Build from a fork
BEDRUD_REPO=myuser/bedrud curl -fsSL https://bedrud.org/install.sh | bash -s -- --build
 
# System-wide install
curl -fsSL https://bedrud.org/install.sh | sudo bash -s -- --install-dir /usr/local/bin
 
# CI / automation — skip shell config + interactive setup
curl -fsSL https://bedrud.org/install.sh | bash -s -- --skip-shell --no-setup

PowerShell Installer

Usage: irm https://bedrud.org/install.ps1 | iex

To pass parameters, save to file first:

irm https://bedrud.org/install.ps1 -OutFile install.ps1
.\install.ps1 -Version v1.2.0 -InstallDir C:\Tools -Build
ParameterDefaultDescription
-InstallDir <path>$HOME\binWhere to place bedrud.exe
-Version <ver>latestInstall a specific release version
-SkipPath$falseDon’t add install dir to user PATH
-Build$falseBuild from source instead of downloading
-Branch <name>masterGit branch to clone (requires -Build)
-NoSetup$falseDownload only, skip interactive server setup

Examples:

# Default
irm https://bedrud.org/install.ps1 | iex
 
# Build from source
.\install.ps1 -Build -Branch main
 
# CI / automation — skip interactive Q&A
.\install.ps1 -NoSetup -SkipPath

Environment Variables

VariableDefaultPlatformsDescription
BEDRUD_INSTALL~/binBash onlyOverride install directory (same as --install-dir)
BEDRUD_REPOthemadorg/bedrudBothOverride GitHub repo (for forks or mirrors)
BEDRUD_INSTALL=/opt/bedrud curl -fsSL https://bedrud.org/install.sh | bash
BEDRUD_REPO=myorg/bedrud-fork curl -fsSL https://bedrud.org/install.sh | bash
$env:BEDRUD_REPO = "myorg/bedrud-fork"
irm https://bedrud.org/install.ps1 | iex

Platform Support

TargetOSArchitectureNotes
darwin_amd64macOSIntel (x86_64)Standard
darwin_arm64macOSApple Silicon (M1/M2/M3/M4)Rosetta 2 auto-detected
linux_amd64Linuxx86_64Static binary — all distros
linux_arm64LinuxARM64Static binary — all distros
freebsd_amd64FreeBSDx86_64Standard
windows_amd64Windowsx86_64Standard
windows_arm64WindowsARM64Standard

Edge Case Detection

Rosetta 2 (macOS Intel on Apple Silicon)

Detection: sysctl -n sysctl.proc_translated returns 1. Effect: Switches darwin_amd64darwin_arm64 for native ARM performance.

Container Environments (Docker, Kubernetes, etc.)

Detection: Checks /.dockerenv, /run/.containerenv, /proc/1/comm (for docker-init, tini, containerd, runc), and /proc/1/cgroup (for docker, kubepods, containerd). Effect: Service file installation is skipped. The installer prints manual start commands:

# Foreground
/usr/local/bin/bedrud run --config /etc/bedrud/config.yaml
 
# Background
nohup /usr/local/bin/bedrud run --config /etc/bedrud/config.yaml \
  > /var/log/bedrud/bedrud.log 2>&1 &

For proper service management in Docker, use --init or tini as PID 1.


Init System Support

The installer auto-detects your init system and creates appropriate service files for server setup:

Init SystemDetectionService FilesManagement
systemd/run/systemd/system exists/etc/systemd/system/*.servicesystemctl
OpenRC/sbin/openrc exists/etc/init.d/* (OpenRC format)rc-service, rc-update
SysV initservice command available/etc/init.d/* (LSB format)service, update-rc.d
Container/.dockerenv, /proc/1/comm, /proc/1/cgroupNone — manual startDirect binary or nohup

Supported on: Most Linux distributions (systemd, OpenRC, SysV init), WSL1, and Linux containers. Container environments are auto-detected — service file installation is skipped with manual start instructions printed.


Install Flow

  1. Windows check — MINGW/MSYS/CYGWIN detected in Bash? Redirect to PowerShell.
  2. WSL check — WSL detected in PowerShell? Redirect to Bash.
  3. Dependency check — Bash: curl + tar. PowerShell: (default none). Build: git + go + bun + make.
  4. Platform detection — OS + architecture via uname (Bash) or RuntimeInformation (PowerShell).
  5. Install binary — either:
    • Download mode (default): download and extract zip/tar.xz.
    • Build mode (--build): git clone, bun install, go mod download, make build.
  6. Verify — run bedrud --version.
  7. PATH check — already in PATH? Skip. Otherwise → modify RC file (Bash) or Registry (PowerShell).
  8. Interactive Setup — Q&A for Domain, TLS, Postgres, and Admin user creation.
  9. Done — print success + access URL.

Download URL format: github.com/{repo}/releases/{ver}/bedrud_{TARGET}.tar.xz

Build mode clones from: github.com/{repo} and runs make build (outputs server/dist/bedrud).


PATH & Shell Configuration

When --skip-shell is not set, the installer adds the install directory to your PATH.

ShellRC File
fish~/.config/fish/config.fish
zsh$ZDOTDIR/.zshrc (default ~/.zshrc)
bash (macOS)~/.bash_profile, then ~/.bashrc
bash (Linux)~/.bashrc, then ~/.bash_profile

What gets added:

# bedrud
export PATH="$HOME/bin:$PATH"  # bedrud

The # bedrud comment marker prevents duplicate entries — safe to re-run.

Windows: Uses [Environment]::SetEnvironmentVariable("PATH", ..., "User") at the registry level. No RC file needed.

Reload shell after install:

source ~/.bashrc    # bash
source ~/.zshrc     # zsh
source ~/.config/fish/config.fish  # fish

Offline / Air-Gapped Installs

Download and Transfer

curl -fsSL -o bedrud.tar.xz \
  https://github.com/themadorg/bedrud/releases/latest/download/bedrud_linux_amd64.tar.xz
scp bedrud.tar.xz airgapped-server:/tmp/
# On target:
tar -xf /tmp/bedrud.tar.xz -C /tmp/bedrud-extracted
mv /tmp/bedrud-extracted/bedrud ~/bin/
chmod +x ~/bin/bedrud

Self-Hosted Mirror

BEDRUD_REPO=mycompany/bedrud-mirror curl -fsSL https://bedrud.org/install.sh | bash

Direct Binary

Download from Releases, extract, move to a directory in your PATH.


Uninstall

rm ~/bin/bedrud
# Remove PATH line from shell RC (search for "# bedrud"):
#   ~/.bashrc, ~/.bash_profile, ~/.zshrc, ~/.config/fish/config.fish

For server installs (systemd, OpenRC, SysV init):

sudo bedrud uninstall

Windows:

Remove-Item "$env:USERPROFILE\bin\bedrud.exe"
# Remove from PATH via System Properties → Environment Variables

Troubleshooting

command not found: bedrud

source ~/.bashrc    # reload shell
echo $PATH | tr ':' '\n' | grep "$HOME/bin"  # check PATH

If missing:

echo 'export PATH="$HOME/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc

Failed to download bedrud

  1. Check internet connection
  2. Verify target exists at Releases
  3. Try a specific version: --version v1.0.0
  4. Your platform may not have a pre-built binary yet

macOS: Running x64 under Rosetta (slow)

Force native ARM:

arch -arm64 curl -fsSL https://bedrud.org/install.sh | arch -arm64 bash

Windows: “running scripts is disabled”

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
irm https://bedrud.org/install.ps1 | iex

Windows: WSL detected

If you are running in a WSL terminal (e.g., Ubuntu on Windows), the PowerShell installer will detect this and ask you to run the Bash installer instead. This ensures Bedrud is installed correctly for the Linux environment inside WSL.

Windows: ARM64 devices (Surface Pro, etc.)

The installer auto-detects windows_arm64 and downloads the native binary. If you need to force an architecture, download the specific zip from Releases.

Windows: Docker Desktop for Postgres

If you choose to run Postgres in Docker during setup, ensure Docker Desktop is installed and running. The installer will attempt to start the container automatically.