Deutsch

Blog · Deploy-Anleitungen

So deployst du eine Jekyll-Website 2026: ein Dockerfile, ein Befehl und HTTPS

Vom Pethost-Team · · 10 Min. Lesezeit

Du hast eine Jekyll-Website, die auf deinem Laptop mit bundle exec jekyll build baut, und willst sie online haben, unter einer Adresse mit HTTPS. Bei Pethost braucht das ein Dockerfile mit 38 Zeilen, das du von dieser Seite kopierst, und einen Befehl, pethost deploy. Die Website, die jekyll new anlegt, war beim ersten Mal in 34 s online und nach einer Änderung in 3 s.

Kurz gesagt
  • Eine Datei: ein Dockerfile in zwei Stufen. Ruby 4.0 führt bundle install und JEKYLL_ENV=production bundle exec jekyll build aus, dann liefert Caddy _site aus.
  • Ein Befehl: pethost deploy im Ordner mit der _config.yml. 34 s beim ersten Mal, 3 s für den Deploy danach.
  • Die Adressen von Jekyll funktionieren: /about/ antwortet mit 200, /about führt dorthin, ein Beitrag antwortet mit und ohne .html, und eine fehlende Seite zeigt die eigene 404.html der Website.
  • Die Adresse: https://my-site.yourname.pethost.app, sofort mit HTTPS. Deine eigene Domain ist ein DNS-Eintrag.
  • Der Preis: 9,99 € im Monat für 2 vCPU, 3 GB und 30 GB, für diese Website und jedes andere Projekt, das du hast. Einen Free Tier gibt es nicht.

Was du brauchst, um eine Jekyll-Website 2026 zu deployen

Drei Dinge: die Website, den Befehl pethost und ein Pethost-Konto.

Die Website ist hier die, die der Quickstart von Jekyll anlegt. Jekyll verlangt Ruby 2.7.0 oder neuer; wir haben sie mit Ruby 4.0.9 angelegt:

gem install jekyll bundler
jekyll new my-site
cd my-site

jekyll new schreibt ein Gemfile mit Jekyll 4.4.1, dem Theme minima und dem Plugin jekyll-feed, führt bundle install aus, das die Gemfile.lock schreibt, und legt eine Startseite, eine About-Seite, einen Willkommensbeitrag, eine 404.html und eine .gitignore an, die _site auslässt. Behalte die Gemfile.lock: Der Build installiert genau die Gems, die darin stehen.

Der Befehl ist ein Programm, installiert mit einer Zeile. Alle seine Befehle stehen in der Referenz der CLI.

curl -fsSL https://pethost.dev/install.sh | sh      # macOS, Linux
irm https://pethost.dev/install.ps1 | iex           # Windows, in PowerShell

Das Konto braucht einen Tarif. Bist du nicht angemeldet, öffnet pethost deploy deinen Browser und meldet dich an. Hast du noch keinen Tarif, zeigt es dir, wo du einen wählst, und wartet.

Warum eine Jekyll-Website bei Pethost ein Dockerfile braucht

Bei Pethost läuft ein Projekt aus einem Dockerfile oder einer Compose-Datei. Für die Arten von Projekten, die es kennt, etwa eine Eleventy-Website, schreibt pethost deploy das Dockerfile selbst. Jekyll gehört nicht dazu, also endet der Deploy in dem Ordner, den jekyll new angelegt hat, bei der Antwort der Maschine. Das ist die ganze Ausgabe:

$ pethost deploy
Name it [my-site]:              it will live at https://my-site.sam.pethost.app
✓ Packed 8 files, 17 KB
✓ Uploaded straight to your machine
✗ /compose.yaml: the project directory has no compose.yaml at its root: add one
  Your coding agent writes one in a minute: "Write a Dockerfile for this app".
  Then run pethost deploy again.     How Pethost runs a folder: https://pethost.dev/docs/api/#CreateProject

Nichts wurde erstellt: kein Projekt, keine Adresse. Füg die Datei unten hinzu und führ denselben Befehl aus.

Das Dockerfile für eine Jekyll-Website

Speichere das als Dockerfile im Ordner mit der _config.yml. Das ist die ganze Datei:

# Jekyll builds the site into _site, and Caddy serves it.
FROM ruby:4.0 AS build
WORKDIR /site

# The gems first: a change to a page does not install them again.
COPY Gemfile Gemfile.lock ./
RUN bundle install

COPY . .
RUN JEKYLL_ENV=production bundle exec jekyll build

# The site is files: Caddy serves them on port 80.
FROM caddy:2
COPY --from=build /site/_site /srv

COPY <<'EOF' /etc/caddy/Caddyfile
:80 {
	root * /srv
	# A browser that takes its answers compressed gets them so.
	encode
	# Names that begin with a dot are no pages;
	# .well-known is the one such folder that is there for visitors.
	@own {
		path */.*
		not path /.well-known/*
	}
	error @own 404
	# A page's address works without its ".html", and a folder's leads to its index.html.
	try_files {path} {path}.html {path}/
	file_server
	# An address that is no page: the site's own 404.html, if it has one.
	handle_errors 404 {
		rewrite * /404.html
		file_server
	}
}
EOF
EXPOSE 80

Die erste Stufe baut die Website so, wie du es auf deinem Laptop tust:

Die zweite Stufe ist der kleine Webserver, den pethost für jede Website schreibt, die aus Dateien besteht. Er liefert _site aus, den Ausgabeordner von Jekyll, und nichts vom Ruby-Image kommt mit: Die Website lief mit 15 MB RAM.

Die Jekyll-Website mit einem Befehl deployen

Führ pethost deploy noch einmal aus, jetzt mit dem Dockerfile im Ordner. Das ist die ganze Ausgabe:

$ pethost deploy
Name it [my-site]:              it will live at https://my-site.sam.pethost.app
✓ Packed 9 files, 18 KB
✓ Uploaded straight to your machine
✓ Built and started in 34 s
  · wrote compose.yaml for the Dockerfile: the service app, reading .env, port 80
✓ app listens on 80 → https://my-site.sam.pethost.app
  It answers 200.

https://my-site.sam.pethost.app

Wrote .pethost (commit it). Next:   pethost logs -f   ·   pethost open
  1. Es fragt nach einer Sache Nach dem Namen des Projekts, dem ersten Wort seiner Adresse. Enter übernimmt den Namen des Ordners.
  2. Der Ordner geht direkt an deine Maschine Neun Dateien: was jekyll new geschrieben hat, und das Dockerfile. Die Zeile, die mit · beginnt, ist die Maschine, die sagt, was sie von selbst getan hat: Sie hat ein Dockerfile und keine Compose-Datei gefunden, also hat sie eine geschrieben.
  3. Die Maschine baut und startet es Die 34 s enthalten den Download der Images von Ruby und Caddy, die die Maschine noch nicht hatte. Dann ruft pethost die Adresse selbst auf und gibt aus, was sie geantwortet hat: 200.

Die Datei .pethost sagt, welches Projekt dieser Ordner ist. Committe sie mit dem Dockerfile, dann fragt der nächste Deploy nichts mehr.

Funktionieren die Adressen von Jekyll?

Jekyll schreibt about.markdown nach _site/about/index.html und einen Beitrag an die Adresse, die sein Standard-Permalink ergibt, /:categories/:year/:month/:day/:title:output_ext. Wir haben die deployte Website gefragt, was ein Browser beim Besuch fragt:

Was die deployte Jekyll-Website geantwortet hat
AdresseAntwort
/200, die Startseite mit der Liste der Beiträge
/about/200, die Seite
/about308, eine Weiterleitung auf /about/
/jekyll/update/2026/10/25/welcome-to-jekyll.html200, der Willkommensbeitrag
/jekyll/update/2026/10/25/welcome-to-jekyll200, derselbe Beitrag
/feed.xml200, der Atom-Feed
/nothing404, die eigene Seite der Website: „Page not found :(“

Die Seiten, der Feed und das Stylesheet kamen komprimiert bei einem Browser an, der danach gefragt hat.

Die url der Website setzen, eine Seite ändern und erneut deployen

jekyll new lässt url in der _config.yml leer, also hatten die Links des Feeds keinen Host: /jekyll/update/2026/10/25/welcome-to-jekyll.html. Ein Feedreader braucht die ganze Adresse. Setz sie, und den Titel der Website gleich mit:

title: My site
url: "https://my-site.sam.pethost.app"

Dann führ denselben Befehl aus. Der zweite Deploy dauerte 3 s, weil die Maschine die Layer des Builds behält: Die Gems wurden nicht noch einmal installiert.

$ pethost deploy
my-site (.pethost)
✓ Packed 10 files · uploaded · built and started in 3 s
  · wrote compose.yaml for the Dockerfile: the service app, reading .env, port 80
  · kept the project's x-pethost
  It answers 200.
https://my-site.sam.pethost.app

Die Links des Feeds beginnen jetzt mit https://my-site.sam.pethost.app/, und die Titel der Seiten lauten „My site“.

Die Jekyll-Website bei jedem Push von GitHub deployen

Leg den Ordner in ein Repository, mit dem Dockerfile und der .pethost; _site bleibt draußen, wie es die .gitignore von Jekyll vorsieht. Dann verbinde das Repository einmal:

pethost github sam/my-site          # from now on, every push deploys itself

Die Maschine lädt jeden Commit herunter und baut ihn mit demselben Dockerfile. Pethost liest nur die Repositorys, die du seiner GitHub-App freigegeben hast. Geht ein Deploy schief, holt pethost rollback die Version davor zurück, und deine Maschine behält die drei Versionen vor der aktuellen. Ein KI-Agent kann all das über den MCP-Server von Pethost für dich erledigen: wie ein Agent ein Projekt deployt und betreut.

Eine eigene Domain für die Jekyll-Website nutzen

Jeder Name unter der Domain deines Kontos ist sofort eine Adresse, mit HTTPS. Eine Domain, die dir gehört, braucht einen Befehl und einen DNS-Eintrag:

pethost domain add www.example.com

Der Befehl gibt den Eintrag aus, den du anlegst: einen CNAME von deinem Namen auf den Namen deiner Maschine. Ein Zertifikat von Let's Encrypt kommt von selbst, sobald der Name auflöst, und erneuert sich selbst. Dann setz url in der _config.yml auf die neue Adresse und deploye erneut, damit der Feed und die Links der Seiten sie nennen. pethost password stellt eine Passwortseite vor die ganze Website, für eine, die noch nicht öffentlich ist.

Was du für den Preis bekommst

Pethost kostet 9,99 € im Monat für alles, was du hostest, auf 2 vCPU, 3 GB RAM und 30 GB Disk. Die gebaute Jekyll-Website sind Dateien hinter Caddy, in 15 MB dieses RAMs, also hat der Tarif Platz für das Backend eines Kommentarformulars, eine Datenbank und deine anderen Projekte. Es gibt keine Gebühr pro Projekt und nichts nach Verbrauch: Ein zweiter Blog kostet nichts extra, und der Monat, in dem ein Beitrag auf der Startseite eines Forums landet, auch nicht.

Was schon für dich erledigt ist: HTTPS mit Zertifikaten, die sich selbst erneuern, Deploys aus GitHub, nächtliche Backups, 14 Tage aufbewahrt, SSH in jeden Container, und jeder Request wird gezählt, ohne Skript in deinen Seiten. Das Panel zeigt die meistaufgerufenen Pfade der letzten 30 Tage, bei einem Blog die Liste der Beiträge, die wirklich gelesen werden. Nichts schläft ein, also wartet niemand beim Lesen auf einen Cold Start. Die Tarife stehen im Abschnitt Preise der Startseite.

Welche Beiträge gelesen werden. Die zehn meistaufgerufenen Pfade eines Projekts mit Anteil und Antwortzeiten, und das Log der einzelnen Requests.
Das Pethost-Panel: die zehn meistaufgerufenen Pfade eines Projekts mit Anteil, Anzahl und Antwortzeiten, und das Log der einzelnen Requests.

Pethost ist die beste Wahl für

  • alle, die mehr als einen Blog bauen: die Jekyll-Website, eine App und ihre Datenbank in einem Tarif, auf einer Rechnung
  • alle, die entwickeln und mehrere Websites haben, je eine Doku-Website und eine Projektseite, zu einem festen Preis
  • alle, deren Agent für sie deployt: Claude Code oder Codex deployt die Website und liest ihre Logs
  • kleine Teams, die eine Website bis zum Launch hinter einer Passwortseite halten

Schau dich anderswo um, wenn

  • deine Anwendung mehrere Regionen oder Autoscaling braucht

Fragen

Braucht eine Jekyll-Website bei Pethost ein Dockerfile zum Deployen?

Ja. Bei Pethost läuft ein Projekt aus einem Dockerfile oder einer Compose-Datei, und pethost deploy schreibt für Jekyll keins. Die 38 Zeilen auf dieser Seite sind die ganze Datei: Ruby baut die Website, und Caddy liefert _site aus.

Welche Ruby-Version nutzt das Dockerfile für Jekyll?

Die, die seine erste Zeile nennt: ruby:4.0, als wir gebaut haben, war das Ruby 4.0.9. Jekyll verlangt Ruby 2.7.0 oder neuer, und eine Website, die in der .ruby-version eine Version pinnt, sollte dort dieselbe nennen.

Warum sind die Links in meinem Jekyll-Feed relativ?

Weil url in der _config.yml leer ist, so wie jekyll new es lässt. Setz es auf die Adresse der Website, etwa url: "https://my-site.sam.pethost.app", und deploye erneut: Dann tragen die Links des Feeds die ganze Adresse.

Kann ich eine Jekyll-Website bei jedem Push von GitHub deployen?

Ja. Deploye den Ordner einmal mit pethost deploy, dann führ pethost github owner/repository aus. Ab dann baut jeder Push die Website mit demselben Dockerfile und deployt sie, und pethost rollback geht zu einem früheren Commit zurück.

Wie nutze ich eine eigene Domain mit HTTPS für eine Jekyll-Website?

Führ pethost domain add www.example.com aus und leg den einen DNS-Eintrag an, den er ausgibt: einen CNAME auf den Namen deiner Maschine. Ein Zertifikat von Let's Encrypt kommt von selbst, sobald der Name auflöst, und erneuert sich selbst.

Was kostet es, eine Jekyll-Website bei Pethost zu hosten?

9,99 € im Monat für Starter, mit 2 vCPU, 3 GB und 30 GB und ohne Gebühr pro Projekt: Deine anderen Websites, Apps und Datenbanken laufen dort auch. Einen Free Tier gibt es nicht. Die Preise verstehen sich zzgl. MwSt.

Die Ausgaben stammen von Deploys der Website, die jekyll new angelegt hat, mit Jekyll 4.4.1 und minima 2.5.2, Ruby 4.0.9 und Bundler 4.0.23 sowie pethost 0.2.4, auf einer Testmaschine von uns, die vor dem ersten Deploy weder das Image von Ruby noch das von Caddy hatte. Das Konto darin ist das Beispielkonto, sam.

  1. Jekyll: Quickstart
  2. Jekyll: Installation und Voraussetzungen
  3. Jekyll: Schritt für Schritt, Deployment
  4. Jekyll: Permalinks
  5. pethost, die Kommandozeile von Pethost

Bring deine Projekte noch heute online

Deploy Apps, Bots und Datenbanken aus deinem Agenten, von GitHub oder im Browser, so viele, wie hineinpassen, zu einem festen Preis. Nichts nach Verbrauch, nichts obendrauf.

Alle deine Projekte für 9,99 €/Monat hosten