Skip to content

Installation ​

This page covers all methods to install Govard on Linux and macOS.

IMPORTANT

Do not mix install channels on the same machine (e.g., .deb + make install + self-update across different paths). Use one channel only to avoid conflicting binaries in /usr/bin and /usr/local/bin.


🚀 One-Line Install (Linux/macOS) ​

Install the latest release binary with a single command:

bash
curl -fsSL https://raw.githubusercontent.com/ddtcorex/govard/master/install.sh | bash

Using wget:

bash
wget -qO- https://raw.githubusercontent.com/ddtcorex/govard/master/install.sh | bash

Common Install Options ​

bash
# Install to ~/.local/bin (no sudo required)
curl -fsSL https://raw.githubusercontent.com/ddtcorex/govard/master/install.sh | bash -s -- --local

# Build from source (auto-installs Go 1.25 if needed)
curl -fsSL https://raw.githubusercontent.com/ddtcorex/govard/master/install.sh | bash -s -- --source

# Install CLI only (required on Ubuntu 20.04)
curl -fsSL https://raw.githubusercontent.com/ddtcorex/govard/master/install.sh | bash -s -- --cli-only

By default, this installs govard (CLI) and, on Linux where WebKitGTK 6.0 is available, govard-desktop to /usr/local/bin and:

  • Auto-detects/installs missing system dependencies
  • Starts global services
  • Configures SSL trust
  • On Linux, falls back to the separate govard-desktop .deb package if a standalone archive is not in the release

Govard Desktop requires WebKitGTK 6.0 and GTK 4, which ship with Ubuntu 24.04+ and Debian 13+. Ubuntu 22.04, Debian 12 and older, and every non-Linux platform install the CLI only: the installer detects this and skips Desktop automatically, and --cli-only skips it explicitly anywhere.


📦 Release Installers ​

Every tagged release publishes two Linux packages:

From the releases page:

Linux (.deb) ​

CLI only (including Ubuntu 20.04):

bash
sudo apt install ./govard_<version>_linux_<arch>.deb

CLI + Desktop (WebKitGTK 6.0 / Ubuntu 24.04+, Debian 13+):

bash
sudo apt install ./govard_<version>_linux_<arch>.deb ./govard-desktop_<version>_linux_<arch>.deb

macOS (.pkg) ​

bash
sudo installer -pkg govard_<version>_Darwin_arm64.pkg -target /

🔧 Build from Source ​

Prerequisites ​

Ensure you have the following installed:

ToolRequired Version
Go1.25+
Node.js20+
pnpm11.x (desktop frontend only)
golangci-lintv2.11+
Docker + Docker Composelatest (stack commands only — the CLI itself has no Docker dependency)
Wailsv3 as a Go module tool (desktop development only, no global install)

Source Install ​

bash
git clone https://github.com/ddtcorex/govard.git
cd govard
./install.sh --source

Local Developer Setup ​

  1. Install Go 1.25+ from go.dev

  2. Enable pnpm via Corepack:

    bash
    corepack enable pnpm
    pnpm --version
  3. Install golangci-lint:

    bash
    curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin
  4. Desktop development needs no Wails install: the runtime and its CLI are Go module tools in go.mod, so go tool wails3 generate bindings works from a clone. On Linux, install the build headers:

    bash
    sudo apt install libgtk-4-dev libwebkitgtk-6.0-dev

No sudo required — install everything locally and update your PATH.


Runs Without Docker ​

The CLI installs and runs with no Docker at all. The commands that never touch a container are declared in the binary's manifest and listed by:

bash
govard capabilities          # command, requirement, and whether this host meets it
govard capabilities --json   # machine-readable

Stack commands (govard env up, svc, db, shell, test) need Docker; without it they exit 3 with CAPABILITY_MISSING before doing any work. govard audit is gated per check instead: --checks lint and --checks profiler need Docker, --checks integrity analyses the checkout on the host, and the govard audit toolchain commands always need Docker because they inspect, pull, and build a container image. govard doctor treats Docker as optional and exits 0; govard doctor --strict restores the hard gate for bootstrap scripts.

The complete list of commands that run without a container runtime — grouped by what they do need (nothing at all, SSH + rsync, cloudflared, network) — is in Runs Without Docker.

🐳 Docker Images ​

Govard uses a single PHP Dockerfile with build args instead of versioned folders.

bash
# Standard PHP image
docker build -f docker/php/Dockerfile \
  -t ddtcorex/govard-php:8.4 \
  --build-arg PHP_VERSION=8.4 \
  docker/php

# Magento 2 optimized PHP image
docker build -f docker/php/magento2/Dockerfile \
  -t ddtcorex/govard-php-magento2:8.4 \
  --build-arg PHP_VERSION=8.4 \
  docker/php

📦 Package Managers & Containers ​

One command per platform — pick one channel and stick to it:

bash
# npm (Node 20+, any OS, CLI only)
npm i -g @ddtcorex/govard
# Pin for reproducible environments:
npm i -g @ddtcorex/govard@<version>

# Homebrew (macOS + Linuxbrew, CLI only)
brew install ddtcorex/tap/govard

# Docker (no install needed — CI-friendly)
docker run --rm ghcr.io/ddtcorex/govard:<version> version

# Debian/Ubuntu via CloudSmith (one-time repo setup, then install)
curl -1sLf https://dl.cloudsmith.io/public/ddtcorex/govard-deb/setup.deb.sh | sudo -E bash
sudo apt install govard

# Fedora/RHEL via CloudSmith (one-time repo setup, then install)
curl -1sLf https://dl.cloudsmith.io/public/ddtcorex/govard-rpm/setup.rpm.sh | sudo -E bash
sudo dnf install govard

# Alpine via CloudSmith (one-time repo setup, then install)
curl -1sLf https://dl.cloudsmith.io/public/ddtcorex/govard-apk/setup.alpine.sh | sudo -E bash
sudo apk add govard

Replace <version> with a tag from the releases page.

Installs from npm, Homebrew, or Docker record their install source (check with govard doctor). govard self-update on those installs defers to the owning package manager instead of overwriting the binary.

For CI pipelines, use the ddtcorex/setup-govard GitHub Action (see CI Integration).


🖥️ Shell Completions ​

Release archives bundle completion scripts under completion/, and the .deb package installs them automatically (bash, fish, zsh). For other install channels, generate them from the binary:

bash
govard completion bash > /etc/bash_completion.d/govard   # root
govard completion zsh > "${fpath[1]}/_govard"
govard completion fish > ~/.config/fish/completions/govard.fish
govard completion powershell | Out-String | Invoke-Expression

🔄 Updating Govard ​

bash
govard self-update

self-update downloads the platform-specific release artifact, verifies the SHA-256 checksum, and atomically replaces installed binaries (govard + govard-desktop).


✅ Verify Installation ​

bash
govard version
govard doctor

govard doctor runs system diagnostics including Docker, DNS, ports, and SSL trust checks.

Release downloads (install.sh and npm) are sha256-verified against checksums.txt before anything is installed; on mismatch the install aborts. There is no bypass flag for this check by design.


← Home | Getting Started →

Released under the MIT License.