HERON

From zero to a live site

Get started

You need Docker, a text editor and ten minutes. At the end you have a working site on your computer, and you choose how to store and publish it. Never used a terminal or Docker? Start with the basics: install Docker on macOS, Windows or Linux, pick an editor, learn Markdown, then come back here.

All commands use the stable image of HERON¹ from the official registry². An image is a ready package with HERON and its documentation inside, so nothing else needs installing. Other ways to run HERON are described below, in a separate section.

What you need

Docker

Docker Desktop on macOS and Windows, Docker Engine on Linux. It runs HERON in a closed box, so your computer stays clean.

A text editor

Any will do, from VS Code to Notepad. Pages are plain text files in Markdown, a simple way to mark headings and lists.

Git, to store the site

Recommended: it keeps every change, and GitHub builds the image of the site from it by itself.

A domain, when you publish

Not needed to start: the new site has a placeholder you replace in the configurator.

Set up the heron command once

Every command on this site starts with heron. It is a short name for the full Docker command: it downloads the stable image, shows it only the current folder and runs as your user, so the new files belong to you. Set it up once, and every command below can be copied as is.

Your first site in five steps

Five steps from an empty folder to a finished site on your computer. Every step is one command with a clear result. The configurator and the pages can be finished later.

Ready files or an image

Ready files

  • The dist/ folder is the whole site: pages, pictures, sitemap, llms.txt.
  • Any hosting works, including free GitHub Pages and Cloudflare Pages with your domain and HTTPS.
  • No server to look after.
  • Every update: build again and copy.

An image of the site

  • The whole site together with a small web server; runs on any machine with Docker.
  • Stored on GitHub (built by itself when you send changes to git), on Docker Hub or in your own registry.
  • A server takes the new image with one command; with HERON Agent (paid), by itself.
  • Real 301 and 410 redirects, several sites on one server.

Choose how to store and publish

There are three ways today, and more will come. Pick a tab: the steps, commands and full guide change with it. The site folder stays the same whatever you choose.

You keep the site in a repository on GitHub. After the first setup you edit a page and send the changes, and GitHub Actions builds the image, checks it and puts it into GitHub Packages by itself. No separate account for images is needed.

git init && git add . && git commit -m "First version" && git branch -M main && git remote add origin https://github.com/you/my-site.git && git push -u origin main
  • Repository. Sign up at github.com and create an empty repository named my-site. Private keeps drafts hidden; GitHub Pages on the free plan needs a public one.
  • First send. Run the command above with your name instead of you. Git and GitHub from zero
  • Build. The configurator adds the file .github/workflows/image.yml. After sending, open the Actions tab on GitHub to watch the build and the check.
  • Every update. Edit a page file, then git add . && git commit -m "…" && git push. The fresh image builds by itself.
  • Where to publish. A server takes the new image with one command: docker pull and a run in place of the old one. Or publish the ready files on GitHub Pages and do without a server.
  • Paid add-on. HERON Agent updates the site on your server after every send by itself.

Full guide: storing in git and building the image →

You build the image yourself and keep it in a private repository on Docker Hub. The server pulls it from there.

docker login -u you && heron build . --env prod --strict && curl -fsSL https://raw.githubusercontent.com/FMSTM/HERON/prod/Dockerfile.site | docker build -t you/my-site:prod -f - dist && docker push you/my-site:prod
  • Account. Sign up at hub.docker.com and create a private repository named my-site.
  • Tokens. Account settings → Personal access tokens. One with read and write access for your computer, one with read access only for the server. A token is the password for docker login; keep it out of the site folder and out of git.
  • Sign in. docker login -u you once on your computer and once on the server.
  • Build and push. Run the command above, with your Docker Hub name instead of you.
  • On the server. Pull the image and start it, the command is below. Every update: the same command.
  • Add-on. HERON Agent (paid) pulls each new image with your key and updates the container by itself.
docker pull you/my-site:prod && docker rm -f my-site && docker run -d --name my-site -p 80:8080 --restart unless-stopped you/my-site:prod

Full guide: images and Docker Hub →

The most manual way: you build the site, check it on localhost and copy the files to the hosting yourself, on every update. Runs anywhere, from shared hosting to free GitHub Pages.

heron build . --env prod --strict && ls dist
  • Build. The command above makes the dist/ folder: every page, image, sitemap and llms.txt.
  • Check locally. Open the finished site at localhost:8080 before it goes live, the command is below.
  • Copy. To a VPS with rsync, to shared hosting through FTP or the file manager.
  • Free hosting. GitHub Pages or Cloudflare Pages take the dist/ folder with your domain and HTTPS, no server at all.
  • Domain and HTTPS. Once: an A record with the server address, then a free certificate.
  • Every update. Build and copy again: nothing happens on its own.
docker run --rm -p 8080:8080 -v "$PWD/dist:/usr/share/nginx/html:ro" nginxinc/nginx-unprivileged:1.27-alpine
rsync -avz --delete dist/ you@my-server:/var/www/my-site/

Full guide: ready files and where to host them →

Other ways to run HERON

The main path on this site is the Docker image. If it does not suit you, there are two more ways. The result is the same with any of them: the same folder, the same build, the same site, and you can switch later.

Questions

Do I need to know how to code?

No. Pages are text files with a few simple marks, and the configurator explains every setting next to its field. Code is needed only for your own theme.

What is the stable image?

The version of HERON that is tested and recommended for live sites. Other versions are listed in the docs.

Can I move my WordPress site?

Yes. Move the texts into pages and list the old addresses in redirect_from:. HERON writes real redirects, so search rankings move with the pages.

Where is the documentation?

On this site, in the repository and inside the image. heron docs prints the documentation for exactly the version you run.

Is it free?

Yes. HERON is open source under AGPL-3.0. Hosting static files can be free too.