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
- Detects OS, CPU architecture, platform variants (Rosetta 2/WSL), and init system (systemd/OpenRC/SysV/container)
- Downloads the correct binary from GitHub Releases (or builds from source with
--build) - Installs to
~/binor%USERPROFILE%\bin(customizable via--install-dir) - Adds install directory to
PATH(shell profiles for Bash, Registry for Windows) - Windows & Linux: Offers an interactive Q&A to configure TLS, Postgres, and create the initial Admin user
- Prints next steps
Requirements
| Platform | Dependencies |
|---|---|
| macOS / Linux | curl + tar |
macOS / Linux (--build) | curl + git + go + bun + make |
| Windows | PowerShell 5.1+ (ships with Windows 10/11) |
Windows (--build) | git + go + bun + make |
Quick Install
curl -fsSL https://bedrud.org/install.sh | bashReload shell, then verify:
source ~/.bashrc # or ~/.zshrc
bedrud --versionirm https://bedrud.org/install.ps1 | iex
bedrud --versionFlags & Options
Bash Installer
Usage: curl -fsSL https://bedrud.org/install.sh | bash -s -- [options]
| Flag | Default | Description |
|---|---|---|
--install-dir <dir> | ~/bin | Where to place the binary |
--version <ver> | latest | Pin to a release (e.g. v1.2.0) |
--build | off | Build from source instead of downloading a release |
--branch <name> | master | Git branch to clone (requires --build) |
--skip-shell | off | Don’t modify shell RC files or PATH |
--no-setup | off | Download binary only, skip interactive server setup |
-h, --help | — | Print 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-setupPowerShell 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| Parameter | Default | Description |
|---|---|---|
-InstallDir <path> | $HOME\bin | Where to place bedrud.exe |
-Version <ver> | latest | Install a specific release version |
-SkipPath | $false | Don’t add install dir to user PATH |
-Build | $false | Build from source instead of downloading |
-Branch <name> | master | Git branch to clone (requires -Build) |
-NoSetup | $false | Download 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 -SkipPathEnvironment Variables
| Variable | Default | Platforms | Description |
|---|---|---|---|
BEDRUD_INSTALL | ~/bin | Bash only | Override install directory (same as --install-dir) |
BEDRUD_REPO | themadorg/bedrud | Both | Override 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 | iexPlatform Support
| Target | OS | Architecture | Notes |
|---|---|---|---|
darwin_amd64 | macOS | Intel (x86_64) | Standard |
darwin_arm64 | macOS | Apple Silicon (M1/M2/M3/M4) | Rosetta 2 auto-detected |
linux_amd64 | Linux | x86_64 | Static binary — all distros |
linux_arm64 | Linux | ARM64 | Static binary — all distros |
freebsd_amd64 | FreeBSD | x86_64 | Standard |
windows_amd64 | Windows | x86_64 | Standard |
windows_arm64 | Windows | ARM64 | Standard |
Edge Case Detection
Rosetta 2 (macOS Intel on Apple Silicon)
Detection: sysctl -n sysctl.proc_translated returns 1.
Effect: Switches darwin_amd64 → darwin_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 System | Detection | Service Files | Management |
|---|---|---|---|
| systemd | /run/systemd/system exists | /etc/systemd/system/*.service | systemctl |
| OpenRC | /sbin/openrc exists | /etc/init.d/* (OpenRC format) | rc-service, rc-update |
| SysV init | service command available | /etc/init.d/* (LSB format) | service, update-rc.d |
| Container | /.dockerenv, /proc/1/comm, /proc/1/cgroup | None — manual start | Direct 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
- Windows check — MINGW/MSYS/CYGWIN detected in Bash? Redirect to PowerShell.
- WSL check — WSL detected in PowerShell? Redirect to Bash.
- Dependency check — Bash:
curl+tar. PowerShell: (default none). Build:git+go+bun+make. - Platform detection — OS + architecture via
uname(Bash) orRuntimeInformation(PowerShell). - Install binary — either:
- Download mode (default): download and extract zip/tar.xz.
- Build mode (
--build):git clone,bun install,go mod download,make build.
- Verify — run
bedrud --version. - PATH check — already in PATH? Skip. Otherwise → modify RC file (Bash) or Registry (PowerShell).
- Interactive Setup — Q&A for Domain, TLS, Postgres, and Admin user creation.
- 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.
| Shell | RC 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" # bedrudThe # 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 # fishOffline / 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/bedrudSelf-Hosted Mirror
BEDRUD_REPO=mycompany/bedrud-mirror curl -fsSL https://bedrud.org/install.sh | bashDirect 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.fishFor server installs (systemd, OpenRC, SysV init):
sudo bedrud uninstallWindows:
Remove-Item "$env:USERPROFILE\bin\bedrud.exe"
# Remove from PATH via System Properties → Environment VariablesTroubleshooting
command not found: bedrud
source ~/.bashrc # reload shell
echo $PATH | tr ':' '\n' | grep "$HOME/bin" # check PATHIf missing:
echo 'export PATH="$HOME/bin:$PATH"' >> ~/.bashrc
source ~/.bashrcFailed to download bedrud
- Check internet connection
- Verify target exists at Releases
- Try a specific version:
--version v1.0.0 - 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 bashWindows: “running scripts is disabled”
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
irm https://bedrud.org/install.ps1 | iexWindows: 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.