Installation

Install fugo from a release archive on Linux, macOS or Windows, run it from its container image, or build it from source with Cargo.

fugo is a single binary. It has no runtime dependencies: Sass, JavaScript bundling, image processing and syntax highlighting are built in.

Release archives#

Download the archive for your platform from the releases page:

PlatformArchive
Linux, x86-64 (glibc 2.35 or later)fugo_<version>_linux-amd64.tar.gz
Linux, ARM64 (glibc 2.35 or later)fugo_<version>_linux-arm64.tar.gz
macOS, Apple siliconfugo_<version>_darwin-arm64.tar.gz
macOS, Intelfugo_<version>_darwin-amd64.tar.gz
Windows, x86-64fugo_<version>_windows-amd64.zip

Each archive holds the fugo binary (fugo.exe on Windows) and its licence files. Check the download against the checksums published with the release, then put the binary on your PATH.

Linux#

sh
VERSION=1.0.0   # the release you want
curl -LO https://github.com/getfugo/fugo/releases/download/v$VERSION/fugo_${VERSION}_linux-amd64.tar.gz
curl -LO https://github.com/getfugo/fugo/releases/download/v$VERSION/fugo_${VERSION}_checksums.txt
sha256sum -c fugo_${VERSION}_checksums.txt --ignore-missing
tar -xzf fugo_${VERSION}_linux-amd64.tar.gz fugo
sudo install fugo /usr/local/bin/

macOS#

sh
VERSION=1.0.0
curl -LO https://github.com/getfugo/fugo/releases/download/v$VERSION/fugo_${VERSION}_darwin-arm64.tar.gz
curl -LO https://github.com/getfugo/fugo/releases/download/v$VERSION/fugo_${VERSION}_checksums.txt
shasum -a 256 -c fugo_${VERSION}_checksums.txt --ignore-missing
tar -xzf fugo_${VERSION}_darwin-arm64.tar.gz fugo
sudo install fugo /usr/local/bin/

The binary is not notarized. If macOS refuses to open it, remove the quarantine attribute of the downloaded file: xattr -d com.apple.quarantine fugo.

Windows#

Extract fugo.exe from the .zip into a directory such as C:\Tools\fugo, and add that directory to your Path (Settings › System › About › Advanced system settings › Environment Variables). In PowerShell:

powershell
Get-FileHash .\fugo_1.0.0_windows-amd64.zip -Algorithm SHA256

Compare the hash with the line for the .zip in the checksums file.

Check the installation#

sh
fugo version
text
fugo v1.0.0 linux/amd64 BuildDate=…

Container image#

Every release is also published as the container image ghcr.io/getfugo/fugo, for linux/amd64 and linux/arm64: the release’s Linux binary on Debian slim, with git, ca-certificates and tzdata. Pick a tag:

TagImage
1.2.3that release
1.2the latest release of 1.2
1the latest release of 1
latestthe latest release

The image runs fugo in /src, so mount your site there. Any arguments are passed to fugo. On Linux, --user runs fugo as you, so the files it writes are yours:

sh
# Build the site in the current directory into ./public
docker run --rm -v "$PWD:/src" --user "$(id -u):$(id -g)" ghcr.io/getfugo/fugo --minify

# The development server at http://localhost:1313/
docker run --rm -v "$PWD:/src" --user "$(id -u):$(id -g)" -p 1313:1313 \
  ghcr.io/getfugo/fugo server --bind 0.0.0.0

Inside a container, the server must listen on all interfaces (--bind 0.0.0.0) for the published port to reach it. fugo keeps its caches (npm packages, remote resources, processed images) in /cache; mount a volume there (-v fugo-cache:/cache) to keep them between runs.

To build the image of a release yourself, from a clone of the repository:

sh
docker build --build-arg FUGO_VERSION=1.0.0 -t fugo .

Build from source#

You need Rust 1.99 or later (rustup) and a C compiler (libwebp and a few other libraries are compiled from C):

sh
git clone https://github.com/getfugo/fugo.git
cd fugo
cargo build --release --locked -p ssg-cli

The binary is target/release/fugo. To install it into Cargo’s bin directory instead (~/.cargo/bin; cargo dev install --root <dir> installs into <dir>/bin), named after the latest release the clone contains, run:

sh
cargo dev install

fugo version then prints that release’s version and the commit you built, e.g. fugo v1.2.3-<commit> linux/amd64 BuildDate=<date>. See Development for the workspace and its tests.

npm packages#

You do not need Node.js or npm. List the npm packages a site imports in package.json, and fugo installs them when it builds; see npm packages. cargo build --release --locked -p ssg-cli --no-default-features --features goat,math builds fugo without the installer; that build uses a node_modules you installed yourself.

      Type to search titles, headings and text.