---
title: "So deployst du eine Jekyll-Website 2026"
description: "Eine Jekyll-Website mit einem kurzen Dockerfile und einem Befehl deployen: Ruby führt jekyll build aus, Caddy liefert _site per HTTPS aus, für 9,99 € im Monat."
---

[Blog](https://pethost.dev/de/blog/) · Deploy-Anleitungen

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

Vom Pethost-Team · 25. Oktober 2026 · 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](https://pethost.dev/docs/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](https://pethost.dev/de/blog/deploy-eleventy-site/), 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.0`** ist das volle Ruby-Image, mit einem C-Compiler. Einige Gems von Jekyll, etwa eventmachine und bigdecimal, werden beim Installieren kompiliert: Auf `ruby:4.0-slim`, das keinen Compiler hat, schlug `bundle install` fehl. Pinnt deine Website in der `.ruby-version` eine Ruby-Version, trag hier dieselbe ein.
- **Die Gems kommen zuerst.** `Gemfile` und `Gemfile.lock` werden 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, und `bundle install` hat die Gems für Linux selbst gewählt.
- **`JEKYLL_ENV=production`** ist 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
```

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**

| 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](https://pethost.dev/de/blog/hosting-for-ai-coding-agents/).

## 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](https://pethost.dev/de/blog/unlimited-projects-flat-monthly-fee/) 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](https://pethost.dev/de/blog/always-on-hosting-no-cold-starts/). Die Tarife stehen im Abschnitt [Preise](https://pethost.dev/de/#pricing) 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.](https://pethost.dev/shots/traffic.webp)

### 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](https://jekyllrb.com/docs/)
2. [Jekyll: Installation und Voraussetzungen](https://jekyllrb.com/docs/installation/)
3. [Jekyll: Schritt für Schritt, Deployment](https://jekyllrb.com/docs/step-by-step/10-deployment/)
4. [Jekyll: Permalinks](https://jekyllrb.com/docs/permalinks/)
5. [pethost, die Kommandozeile von Pethost](https://pethost.dev/docs/cli/)

## 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](https://console.pethost.dev/)

## Weiterlesen

- 25. Oktober 2026 [So deployst du eine Streamlit-App 2026: ein Befehl, HTTPS und ein Dockerfile, das bleibt](https://pethost.dev/de/blog/deploy-streamlit-app/) Eine Streamlit-App mit einem Befehl deployen: pethost deploy schreibt das Dockerfile, startet streamlit run und liefert sie per HTTPS aus, für 9,99 € im Monat.
- 24. Oktober 2026 [So deployst du eine PHP-App 2026: Laravel, Symfony oder reine PHP-Seiten mit einem Befehl](https://pethost.dev/de/blog/deploy-php-app/) Eine PHP-App mit einem Befehl deployen: pethost deploy schreibt das Dockerfile für Laravel, Symfony oder reine PHP-Seiten, mit HTTPS, für 9,99 € im Monat.
- 10. Oktober 2026 [So deployst du eine Go-Gin-App 2026: ein Befehl, HTTPS und ein Dockerfile, das bleibt](https://pethost.dev/de/blog/deploy-gin-app/) Eine Go-Gin-App mit einem Befehl deployen: pethost deploy schreibt das Dockerfile, baut das Programm und liefert es per HTTPS aus, für 9,99 € im Monat.
- 10. Oktober 2026 [So deployst du eine Go-Fiber-App 2026: ein Befehl, HTTPS und ein Dockerfile, das bleibt](https://pethost.dev/de/blog/deploy-fiber-app/) Eine Go-Fiber-App mit einem Befehl deployen: pethost deploy schreibt das Dockerfile, baut sie in 45 s und liefert sie per HTTPS aus, für 9,99 € im Monat.

[Alle Artikel](https://pethost.dev/de/blog/) · [Über Pethost](https://pethost.dev/about/) · [Preise](https://pethost.dev/de/#pricing)

Pethost · Stephan Gomer · NIP 1133096755

Pethost

- [Vorlagen](https://pethost.dev/de/templates/)
- [Über uns](https://pethost.dev/about/)
- [Doku](https://pethost.dev/docs/)
- [Blog](https://pethost.dev/de/blog/)
- [API](https://pethost.dev/docs/api/)
- [CLI](https://pethost.dev/docs/cli/)
- [Plugin](https://github.com/pethost-dev/plugin)
- [AGB](https://pethost.dev/terms/)
- [Datenschutz](https://pethost.dev/privacy/)
- [Erstattung](https://pethost.dev/refunds/)
- [support@pethost.dev](mailto:support@pethost.dev)

Datenbanken

- [Postgres](https://pethost.dev/de/postgres/)

Vergleiche

- [Coolify vs Dokploy vs CapRover vs Dokku](https://pethost.dev/de/blog/coolify-vs-dokploy-vs-caprover-vs-dokku/)
- [Coolify Cloud vs Dokploy Cloud](https://pethost.dev/de/blog/coolify-cloud-vs-dokploy-cloud/)
- [Railway vs Render vs Fly.io Preise](https://pethost.dev/de/blog/railway-vs-render-vs-fly-io-pricing/)
- [Managed Hosting für Docker Compose](https://pethost.dev/de/blog/managed-docker-compose-hosting/)

Alternativen

- [Railway-Alternativen](https://pethost.dev/de/blog/railway-alternatives/)
- [Heroku-Alternativen](https://pethost.dev/de/blog/heroku-alternatives/)
- [Dokploy-Alternativen](https://pethost.dev/de/blog/dokploy-alternatives/)
- [Coolify-Alternativen](https://pethost.dev/de/blog/coolify-alternatives/)
- [Render-Alternativen](https://pethost.dev/de/blog/render-alternatives/)
- [Sliplane-Alternativen](https://pethost.dev/de/blog/sliplane-alternatives/)
