Skip to content

Host a Jekyll site without the Pages machinery

bundle exec jekyll build renders your whole site into _site/ — the exact artifact GitHub Pages would serve. You can host that folder on a live URL without any of the Pages machinery.

Drop your Jekyll report here — get a live link

free, no account needed.

Shipping…

The artifact dead-end

Jekyll's default hosting story is GitHub Pages: pinned gem versions, a branch or workflow, one site per repo. Previewing a draft post shouldn't require any of that.

Local jekyll serve shows you the site on localhost:4000 — useless for the person you want feedback from.

Two lines to a live link

Build your output like you already do, then hand the folder to the action:

Build the site

bundle exec jekyll build

.github/workflows/ci.yml

- uses: bitgate/ship-page-action@v1
  if: always()
  with:
    path: _site/

Or with plain curl — no account needed

cd _site && zip -qr - . | curl -fsS -X POST https://ship.page/deploy \
  -H "Content-Type: application/zip" \
  --data-binary @- | jq -r .url

path: _site/ deploys exactly what the tool wrote — no detection to configure. The link goes in the job summary — add comment: true and it lands on the pull request too.

What you get

  • _site/ deploys as-is — permalinks, pagination and assets resolve at the drop root
  • One curl from your shell; the action deploys path: _site/ from CI on every push
  • Draft previews need no account; claim one free to keep it
  • Any theme, any plugin, any Jekyll version — you build locally, so no host-side gem whitelist ever rejects your site

Questions

What about baseurl and url config?

Leave baseurl empty (the default) — drops mount at a subdomain root, exactly what Jekyll assumes. A custom baseurl like /blog would have to exist as a path under the drop URL.

Do the github-pages gem constraints apply?

No — build with whatever gems you use locally. _site/ is static output; there are no Pages runtime constraints here.

Can the site stay up permanently?

Claim it with a free account (no card) and it stays online as long as you keep it. On a paid plan, a named drop with ttl set to never expire gives the site a permanent URL you control, redeployed by CI on every push.

Is there a free way to host a Jekyll site?

Yes — anonymous drops are free with no account: up to 25 MB zipped. GitHub Pages is also free for permanent public sites; the difference here is zero setup and a live link in seconds.

How do I share a draft post for review?

Build with jekyll build --drafts so _site/ includes the draft, deploy the folder, and send the link.

Related recipes

Try it on your next run

Anonymous deploys need no account and no key — paste the step, get a link. When you want stable URLs that redeploy in place, an API key and a name are all it takes.

Need to share the report with someone outside GitHub? How to share a GitHub Actions artifact without a login.