docs: add self-hosted deployment guide, Dockerfile & docker-compose.yml
This commit is contained in:
+20
@@ -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"]
|
||||||
@@ -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.
|
||||||
|
|||||||
@@ -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
|
||||||
Reference in New Issue
Block a user