docs: add self-hosted deployment guide, Dockerfile & docker-compose.yml

This commit is contained in:
KitchenStock
2026-07-26 20:09:09 +02:00
parent 83fcf6909c
commit f60f261a09
3 changed files with 78 additions and 22 deletions
+20
View File
@@ -0,0 +1,20 @@
FROM node:20-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
ENV NEXT_TELEMETRY_DISABLED=1
RUN npm run build
FROM node:20-alpine AS runner
WORKDIR /app
ENV NODE_ENV=production
ENV NEXT_TELEMETRY_DISABLED=1
COPY --from=builder /app/package*.json ./
COPY --from=builder /app/.next ./.next
COPY --from=builder /app/public ./public
COPY --from=builder /app/node_modules ./node_modules
EXPOSE 3000
CMD ["npm", "start"]
+44 -22
View File
@@ -20,41 +20,63 @@ Ein modernes, helles und schnelles Web-App-System für euren veganen Vorrat, eur
--- ---
## 🚀 Deployment (z. B. auf Vercel) ## 🖥️ Lokales Server-Deployment (Self-Hosted)
Am einfachsten lässt sich die App kostenlos auf **[Vercel](https://vercel.com)** deployen. Ihr könnt die App ganz einfach auf eurem **eigenen lokalen Server** (Home-Server, Raspberry Pi, Ubuntu/Debian Linux, Windows Server, Synology NAS) betreiben.
### 1. Repository auf Vercel importieren ### Methode 1: PM2 / Direct Node.js (Empfohlen)
1. Gehe auf [Vercel.com](https://vercel.com) und erstelle / wähle ein Konto.
2. Klicke auf **"Add New..."** → **"Project"**.
3. Wähle das Repository `immissmandy/Kitchen` aus.
### 2. Umgebungsvariablen (Environment Variables) eintragen Voraussetzung: Node.js (v18+) auf dem Server installiert.
Füge in Vercel unter **Environment Variables** folgende Variablen ein:
| Variable | Beschreibung | Beispiel / Standardwert | ```bash
| :--- | :--- | :--- | # 1. Repository auf den Server klonen
| `GEMINI_API_KEY` | Google Gemini API Key | `AQ.Ab8RN6IF-hRoe09JrDVAAktkIAPu400_bnh8egCVa8nuTYyAPQ` | git clone https://github.com/immissmandy/Kitchen.git
| `GEMINI_MODEL` | Modellbezeichnung | `gemma-2-27b-it` | cd Kitchen
| `NEXT_PUBLIC_APP_URL` | Domain URL der App | `https://kitchen-mandy-amy.vercel.app` |
### 3. Deployen # 2. .env.local anlegen
Klicke auf **"Deploy"**. Vercel baut die App automatisch in unter 1 Minute! cat <<EOT > .env.local
GEMINI_API_KEY=AQ.Ab8RN6IF-hRoe09JrDVAAktkIAPu400_bnh8egCVa8nuTYyAPQ
GEMINI_MODEL=gemma-2-27b-it
NEXT_PUBLIC_APP_URL=http://<EURE_SERVER_IP>:3000
EOT
# 3. Abhängigkeiten installieren & Production Build erstellen
npm install
npm run build
# 4. PM2 Process Manager installieren & App starten (Dauerhafter Hintergrundbetrieb)
npm install -g pm2
pm2 start npm --name "kitchen-stock" -- start
# 5. Automatischer Server-Neustart aktivieren
pm2 startup
pm2 save
```
Die App ist jetzt dauerhaft unter `http://<EURE_SERVER_IP>:3000` im Heimnetzwerk erreichbar!
--- ---
## 💻 Lokale Entwicklung ### Methode 2: Docker Compose (1-Klick Container)
Falls ihr Docker auf eurem Heimserver nutzt (Synology, Unraid, Portainer, Docker Desktop):
```bash ```bash
# 1. Repository klonen # 1. Repository klonen
git clone https://github.com/immissmandy/Kitchen.git git clone https://github.com/immissmandy/Kitchen.git
cd Kitchen cd Kitchen
# 2. Abhängigkeiten installieren # 2. Container starten
npm install docker compose up -d --build
# 3. Entwicklungs-Server starten
npm run dev
``` ```
Öffne dann [http://localhost:3000](http://localhost:3000) im Browser. Fertig! Der Docker-Container startet automatisch neu, wenn der Server neu gestartet wird.
---
## 🌐 Zugriff im Heimnetzwerk & SSL
Damit Amy & Mandy die App bequem auf dem Smartphone öffnen können:
1. **Im Heimnetzwerk**: Öffnet am Smartphone einfach `http://192.168.178.X:3000` (IP-Adresse eures Servers).
2. **Unterwegs (Optional)**: Nutzt kostenlos **Cloudflare Tunnel** oder Nginx Reverse Proxy mit Let's Encrypt SSL.
+14
View File
@@ -0,0 +1,14 @@
version: '3.8'
services:
kitchen-stock:
build: .
container_name: kitchen-stock
restart: always
ports:
- "3000:3000"
environment:
- NODE_ENV=production
- GEMINI_API_KEY=AQ.Ab8RN6IF-hRoe09JrDVAAktkIAPu400_bnh8egCVa8nuTYyAPQ
- GEMINI_MODEL=gemma-2-27b-it
- NEXT_PUBLIC_APP_URL=http://localhost:3000