Blog · Deploy-Anleitungen
So deployst du eine VitePress-Website 2026: ein Befehl, HTTPS und ein Dockerfile, das bleibt
Du hast eine VitePress-Website, die auf deinem Laptop baut, und willst sie online haben, unter einer Adresse mit HTTPS. Bei Pethost ist das ein Befehl, pethost deploy, ausgeführt im Ordner mit der package.json. Er schreibt das Dockerfile für dich, baut die Website und gibt ihre Adresse aus. Das Starter-Projekt von VitePress selbst war beim ersten Mal in 43 s gebaut und gestartet.
- Ein Befehl:
pethost deployim Ordner mit derpackage.json. Keine Konfigurationsdatei zu schreiben, keine Build-Einstellungen auszufüllen. - Was er tut: Er findet das Skript, das
vitepress buildausführt, schreibt ein Dockerfile, das es ausführt, und liefertdocs/.vitepress/distaus. - Die Adresse:
https://my-docs.yourname.pethost.app, sofort mit HTTPS. Deine eigene Domain ist ein DNS-Eintrag. - Das Dockerfile gehört dir: Es bleibt im Ordner, damit du es behältst und änderst, und pethost schreibt es nie wieder.
- 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 VitePress-Website 2026 zu deployen
Drei Dinge: die Website, den Befehl pethost und ein Pethost-Konto.
Die Website ist ein Ordner, wie ihn die ersten Schritte von VitePress hinterlassen: npm add -D vitepress, dann npx vitepress init. Der Assistent legt die Seiten in docs/ ab und drei Skripte in die package.json:
"scripts": {
"docs:dev": "vitepress dev ./docs",
"docs:build": "vitepress build ./docs",
"docs:preview": "vitepress preview ./docs"
}
Der Befehl ist ein Programm, installiert mit einer Zeile:
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.
Die VitePress-Website mit einem Befehl deployen
Geh in den Ordner mit der package.json und führ pethost deploy aus. Das ist die ganze Ausgabe für das Starter-Projekt, das vitepress init schreibt:
$ cd my-docs
$ pethost deploy
Name it [my-docs]: it will live at https://my-docs.sam.pethost.app
✓ Packed 6 files, 90 KB (left out node_modules)
✓ Uploaded straight to your machine
✗ /compose.yaml: the project directory has no compose.yaml at its root: add one
✓ VitePress site detected, wrote Dockerfile.
✓ Packed 7 files, 91 KB (left out node_modules)
✓ Uploaded straight to your machine
✓ Built and started in 43 s
· wrote compose.yaml for the Dockerfile: the service app, reading .env, port 80
✓ app listens on 80 → https://my-docs.sam.pethost.app
It answers 200.
https://my-docs.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.
- Die Maschine findet nichts zum Ausführen Der Ordner geht direkt an deine Maschine, ohne
node_modules. Die Zeile mit dem Kreuz ist ihre Antwort: Ein Projekt läuft aus einem Dockerfile oder einer Compose-Datei, und der Ordner hat noch keins von beiden. - pethost schreibt das Dockerfile Es hat
vitepressin derpackage.jsongesehen und ein Skript, dasvitepress buildausführt, und lädt den Ordner erneut hoch. - Die Maschine baut und startet es 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.
Das Dockerfile, das pethost für VitePress schreibt
Das ist die Datei, wie sie in den Ordner des Starter-Projekts geschrieben wurde, vollständig:
# Written by pethost deploy for this VitePress site: package.json builds it with
# "vitepress build ./docs", which writes docs/.vitepress/dist, Node 24 (no .nvmrc names
# another), npm installs it (package-lock.json).
# It is yours now: change it as you like. pethost does not write it again.
FROM node:24 AS build
WORKDIR /app
COPY . .
# Every dependency: what builds the project, and may start it, is among the ones for
# development.
RUN --mount=type=cache,target=/root/.npm \
npm install
RUN npm run docs:build
# The site is files: Caddy serves them on port 80.
FROM caddy:2
COPY --from=build /app/docs/.vitepress/dist /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 ersten Zeilen sagen, was pethost in deinem Ordner gelesen hat. Drei Dinge kommen von dort:
- Der Paketmanager ist der, den dein Lockfile nennt: npm, pnpm, Yarn oder Bun.
- Die Node-Version ist die, die
.nvmrcoder.node-versionnennt, und Node 24, wo es keine von beiden gibt. - Der Ordner, der ausgeliefert wird, folgt dem Skript:
vitepress build ./docsschreibtdocs/.vitepress/dist, undvitepress buildallein schreibt.vitepress/dist.
Die zweite Hälfte ist ein kleiner Webserver für die gebauten Seiten. Wir haben das deployte Starter-Projekt gefragt, was ein Browser beim Besuch fragt. Die Startseite, /markdown-examples und /markdown-examples.html antworteten jeweils mit 200, und eine Adresse ohne Seite antwortete mit 404 und der eigenen „404“-Seite von VitePress.
Zwei weitere Dinge halten eine falsche Datei von dir fern. Kann die Maschine das Dockerfile, das pethost geschrieben hat, nicht bauen oder starten, nimmt pethost die Datei wieder aus deinem Ordner und sagt, was fehlgeschlagen ist. Und setzt deine Konfiguration base auf einen Pfad wie /docs/, schreibt pethost nichts und sagt, warum: Bei Pethost liegt eine Website im Wurzelverzeichnis ihrer eigenen Adresse, also setz base auf "/" und deploye erneut.
Eine Seite ändern und neu deployen
Bearbeite eine Seite und führ denselben Befehl aus. Der zweite Deploy des Starter-Projekts dauerte 4 s, weil die Maschine die Layer des Builds behält:
$ pethost deploy
my-docs (.pethost)
✓ Packed 8 files · uploaded · built and started in 4 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-docs.sam.pethost.app
Soll stattdessen jeder Push deployt werden, verbinde das Repository einmal:
pethost github sam/my-docs # from now on, every push deploys itself
Pethost liest nur die Repositorys, die du seiner GitHub-App gegeben 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 Doku 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 docs.example.com
Der Befehl gibt den Eintrag aus, den du anlegst: einen CNAME von deinem Namen auf den Namen deiner Maschine. Das Zertifikat kommt von selbst, sobald der Name auflöst, und erneuert sich selbst. pethost password stellt eine Passwortseite vor die ganze Website, für eine Doku, 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. Eine gebaute VitePress-Website sind Dateien hinter einem kleinen Webserver, also hat die Maschine Platz für die Anwendung, die die Doku beschreibt, ihre Datenbank und deine anderen Projekte. Es gibt keine Gebühr pro Projekt und nichts nach Verbrauch: Die zweite Website kostet nichts extra.
- 9,99 € im Monat für alle deine Projekte, nichts nach Verbrauch
- 43 s zum Bauen und Starten des Starter-Projekts, beim ersten Mal
- 0 Dateien, die du von Hand schreibst
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. Das Panel zeigt die meistaufgerufenen Pfade der letzten 30 Tage, bei einer Doku die Liste der Seiten, die wirklich gelesen werden. Die Maschine läuft immer, also wartet eine Seite nie auf einen Cold Start. Die Tarife stehen im Abschnitt Preise der Startseite.
Pethost ist die beste Wahl für
- alle, die die Doku neben der App halten: die API, ihre Datenbank und ihre VitePress-Website auf einer Maschine, auf einer Rechnung
- alle, die allein entwickeln, mit mehreren Side Projects, jedes mit einer eigenen Website
- alle, deren Agent für sie deployt: Claude Code oder Codex bringt die Website online und liest ihre Logs
- kleine Teams, die die Doku bis zum Launch hinter einer Passwortseite halten wollen
Schau dich anderswo um, wenn
- deine Anwendung mehrere Regionen oder Autoscaling braucht
Fragen
Braucht eine VitePress-Website ein Dockerfile zum Deployen?
Bei Pethost läuft ein Projekt aus einem Dockerfile oder einer Compose-Datei, und du musst es nicht selbst schreiben: In einem Ordner, der keins von beiden hat, schreibt pethost deploy das Dockerfile für eine VitePress-Website und deployt sie. Die Datei bleibt in deinem Ordner, und du kannst sie ändern.
Welchen Paketmanager und welche Node-Version nutzt der VitePress-Build?
Die, die dein Ordner nennt. Der Paketmanager ist der deines Lockfiles: npm, pnpm, Yarn oder Bun. Die Node-Version ist die aus .nvmrc oder .node-version, und Node 24, wo es keine von beiden gibt.
Kann ich VitePress bei jedem Push von GitHub deployen?
Ja. Deploye den Ordner einmal mit pethost deploy, dann führ pethost github owner/repository aus. Ab dann deployt sich jeder Push auf das Repository von selbst, und pethost rollback geht zu einem früheren Commit zurück.
Wie nutze ich eine eigene Domain mit HTTPS für eine VitePress-Website?
Führ pethost domain add docs.example.com aus und leg den einen DNS-Eintrag an, den er ausgibt: einen CNAME auf den Namen deiner Maschine. Das Zertifikat kommt von selbst, sobald der Name auflöst, und erneuert sich selbst.
Was kostet es, eine VitePress-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.
Warum lehnt pethost deploy eine VitePress-Website ab, die base setzt?
Eine Website, die mit base auf einem Pfad wie /docs/ gebaut ist, sucht ihre Styles und Skripte unter diesem Pfad. Bei Pethost liegt eine Website im Wurzelverzeichnis ihrer eigenen Adresse, also schreibt pethost kein Dockerfile für sie und sagt das. Setz base auf "/" und deploye erneut.
Die Ausgaben stammen von Deploys der Website, die vitepress init schreibt, mit VitePress 1.6.4 und pethost 0.2.1, auf einer Testmaschine von uns. Das Konto darin ist das Beispielkonto, sam.
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.