Skald

Install Skald on your own server

Skald is free to self-host. Docker is the fastest way: one command to start, one to make the first owner.

Before you start

What you need

  • A server whose web server access log Skald can read: nginx, Apache or Caddy.
  • Docker, or Python 3.11 or newer on Debian, Ubuntu or similar. Nothing else: the standard library is enough.
  • HTTPS in front of Skald on a remote server. Sign-in uses a secure cookie, so plain http:// works only at localhost.

Site on Vercel, Netlify or behind Cloudflare? Skald can take a log drain, a CDN log or the Skald Worker instead. See hosting choices and the Vercel guide. Rather not run a server at all? Start a 30-day free trial of hosted Skald.

Option 1 · fastest

Docker

  1. Start it, with your web server's log mounted read-only

    Terminal
    docker run -d --name skald -p 127.0.0.1:8080:8080 \
      -v /var/log/nginx:/logs:ro \
      -v skald-data:/var/lib/skald \
      ghcr.io/spcaeo/skald:latest

    latest follows each release. To pin this one, use ghcr.io/spcaeo/skald:2.14.0. The port is published on this machine only. To reach it from elsewhere, put HTTPS in front: your web server proxying to 127.0.0.1:8080, or the bundled Caddy (Option 2).

  2. Make the first owner

    Terminal
    docker exec -it skald skald accounts init --org "Example Co" --owner-email owner@example.com

    This prints a link to set your password. Open it, set a password and sign in. Your history lives in the skald-data volume.

  3. Fill the history and check it

    Terminal
    docker exec skald skald backfill --days 14
    docker exec skald skald doctor

    backfill adds the days your logs still hold. doctor then says, one line per part, what works and what to fix.

Settings come from environment variables (SKALD_SITE, SKALD_HOSTS, SKALD_TIMEZONE, SKALD_BASE_URL and others) or a config file mounted at /etc/skald/config.yml. The log must be readable by group adm (gid 4), as it is on stock Debian and Ubuntu.

Countries and cities for a log that has none: mount a GeoIP folder read-only (-v /usr/share/GeoIP:/geoip:ro) and set SKALD_COUNTRY_DB and SKALD_CITY_DB to DB-IP's free country and city files in it. Without them, such values read "Not recorded".

AI answers (optional) asks ChatGPT, Perplexity, Gemini and Claude your questions with your own provider keys: set them write-only in Settings › Integrations, or as SKALD_OPENAI_API_KEY, SKALD_PERPLEXITY_API_KEY, SKALD_GEMINI_API_KEY and SKALD_ANTHROPIC_API_KEY. Nothing is asked, and nothing costs, until a key and a tracking profile exist, and each profile stops at its daily cost cap.

Option 2

Docker Compose

Terminal
git clone https://github.com/spcaeo/skald && cd skald
docker compose up -d
docker compose exec skald skald accounts init --org "Example Co" --owner-email owner@example.com

docker-compose.yml is at the root of the repository. Edit its log path first if your logs are not in /var/log/nginx.

On a server with your own domain

Let your host's nginx or Caddy proxy /traffic* to 127.0.0.1:8080 over HTTPS, or start the bundled Caddy, which gets a certificate for you:

Terminal
SKALD_DOMAIN=stats.example.com docker compose --profile https up -d

Option 3 · Debian, Ubuntu and similar

Install script

The quick way, pinned to a release:

Terminal
curl -fsSL https://raw.githubusercontent.com/spcaeo/skald/v2.14.0/install.sh | sudo bash -s -- --ref v2.14.0

This runs a script from the internet as root. To check it first, download the release and its checksums, verify, then run it:

Terminal
curl -fsSLO https://github.com/spcaeo/skald/releases/download/v2.14.0/skald-2.14.0.tar.gz
curl -fsSLO https://github.com/spcaeo/skald/releases/download/v2.14.0/SHA256SUMS
sha256sum --ignore-missing -c SHA256SUMS      # must print: skald-2.14.0.tar.gz: OK
tar -xzf skald-2.14.0.tar.gz && cd skald-2.14.0 && less install.sh && sudo ./install.sh

It installs into /opt/skald, with config in /etc/skald and data in /var/lib/skald, and puts the skald command in /usr/local/bin. Newer releases are listed on GitHub releases.

Option 4

From source

Terminal
git clone https://github.com/spcaeo/skald && cd skald && sudo ./install.sh

Then the daily run and the live panel come from one command. It runs as the skald user, with /etc/skald/config.yml, so use sudo:

Terminal
sudo skald check            # verify yesterday's figures; store nothing
sudo skald run-daily        # check, collect, audit, dashboard, mail (the cron entry)
sudo skald live             # "Today so far"; safe every 2 minutes
sudo skald version          # brand, version and release

After install

Upgrades and help

Not sure yet? Click around the live demo, read every feature and how Skald compares, or see why we built it.

Live demo

Click around the real dashboard with sample data

Every section, 60 days of a made-up site. In your browser, nothing to install, no sign-up.

Hosted Skald

Start free. We set it up for you.

30 days free, no card. Your account is ready within one working day. Or run it yourself, free, with the install guide.