Blog · Deploy-Anleitungen
So deployst du eine Jekyll-Website 2026: ein Dockerfile, ein Befehl und HTTPS
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.
- Eine Datei: ein Dockerfile in zwei Stufen. Ruby 4.0 führt
bundle installundJEKYLL_ENV=production bundle exec jekyll buildaus, dann liefert Caddy_siteaus. - Ein Befehl:
pethost deployim 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,/aboutführt dorthin, ein Beitrag antwortet mit und ohne.html, und eine fehlende Seite zeigt die eigene404.htmlder 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:
ruby:4.0ist das volle Ruby-Image, mit einem C-Compiler. Einige Gems von Jekyll, etwa eventmachine und bigdecimal, werden beim Installieren kompiliert: Aufruby:4.0-slim, das keinen Compiler hat, schlugbundle installfehl. Pinnt deine Website in der.ruby-versioneine Ruby-Version, trag hier dieselbe ein.- Die Gems kommen zuerst.
GemfileundGemfile.lockwerden allein kopiert, also nutzt eine Änderung an einer Seite oder einem Beitrag die Gems, die die Maschine schon installiert hat. Eine auf einem Mac geschriebene Lock-Datei funktioniert auch: Wir haben die Website mit einer Lock-Datei gebaut, die nur macOS nannte, undbundle installhat die Gems für Linux selbst gewählt. JEKYLL_ENV=productionist der Build, den der Deployment-Schritt von Jekyll selbst angibt. Was deine Layouts nur in Production zeigen, etwa Analytics, steht dann in den Seiten.
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
- Es fragt nach einer Sache Nach dem Namen des Projekts, dem ersten Wort seiner Adresse. Enter übernimmt den Namen des Ordners.
- Der Ordner geht direkt an deine Maschine Neun Dateien: was
jekyll newgeschrieben 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. - 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
pethostdie 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:
| Adresse | Antwort |
|---|---|
/ | 200, die Startseite mit der Liste der Beiträge |
/about/ | 200, die Seite |
/about | 308, eine Weiterleitung auf /about/ |
/jekyll/update/2026/10/25/welcome-to-jekyll.html | 200, der Willkommensbeitrag |
/jekyll/update/2026/10/25/welcome-to-jekyll | 200, derselbe Beitrag |
/feed.xml | 200, der Atom-Feed |
/nothing | 404, 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.
- 9,99 € im Monat für alle deine Projekte, nichts nach Verbrauch
- 34 s zum Bauen und Starten der Website, inklusive Download der Images
- 3 s für den Deploy nach einer Änderung
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.
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.
- Jekyll: Quickstart
- Jekyll: Installation und Voraussetzungen
- Jekyll: Schritt für Schritt, Deployment
- Jekyll: Permalinks
- 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.