217 lines
4.7 KiB
Markdown
217 lines
4.7 KiB
Markdown
|
|
# Mitai Jinkendo – Entwicklungs-Setup
|
|||
|
|
|
|||
|
|
## 1. Gitea Repository anlegen
|
|||
|
|
|
|||
|
|
### Auf dem Pi (Gitea):
|
|||
|
|
```bash
|
|||
|
|
# Im Gitea Web-UI:
|
|||
|
|
# → New Repository: "mitai-jinkendo"
|
|||
|
|
# → Visibility: Private
|
|||
|
|
# → Initialize: Nein (wir pushen bestehenden Code)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Auf deinem Entwicklungsrechner:
|
|||
|
|
```bash
|
|||
|
|
# Einmalig: SSH-Key für Gitea hinterlegen
|
|||
|
|
ssh-keygen -t ed25519 -C "lars-dev"
|
|||
|
|
# Public Key in Gitea: Settings → SSH Keys → Add Key
|
|||
|
|
|
|||
|
|
# Repo klonen / initialisieren
|
|||
|
|
cd /pfad/zum/projekt
|
|||
|
|
git init
|
|||
|
|
git remote add origin git@raspberrypi5:lars/mitai-jinkendo.git
|
|||
|
|
|
|||
|
|
# Ersten Commit
|
|||
|
|
git add .
|
|||
|
|
git commit -m "feat: initial commit v8 – Mitai Jinkendo"
|
|||
|
|
git push -u origin main
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 2. Gitea Actions einrichten
|
|||
|
|
|
|||
|
|
### Runner auf dem Pi installieren:
|
|||
|
|
```bash
|
|||
|
|
# Gitea Runner installieren (führt die Workflows aus)
|
|||
|
|
wget https://gitea.com/gitea/act_runner/releases/latest/download/act_runner-linux-arm64
|
|||
|
|
chmod +x act_runner-linux-arm64
|
|||
|
|
sudo mv act_runner-linux-arm64 /usr/local/bin/act_runner
|
|||
|
|
|
|||
|
|
# Runner registrieren
|
|||
|
|
# Token findest du in Gitea: Site Admin → Runners → New Runner
|
|||
|
|
act_runner register \
|
|||
|
|
--instance http://localhost:3000 \
|
|||
|
|
--token DEIN_TOKEN \
|
|||
|
|
--name "pi-runner" \
|
|||
|
|
--labels ubuntu-latest
|
|||
|
|
|
|||
|
|
# Als Service einrichten
|
|||
|
|
sudo nano /etc/systemd/system/gitea-runner.service
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
`/etc/systemd/system/gitea-runner.service`:
|
|||
|
|
```ini
|
|||
|
|
[Unit]
|
|||
|
|
Description=Gitea Act Runner
|
|||
|
|
After=network.target
|
|||
|
|
|
|||
|
|
[Service]
|
|||
|
|
User=lars
|
|||
|
|
WorkingDirectory=/home/lars/gitea-runner
|
|||
|
|
ExecStart=/usr/local/bin/act_runner daemon
|
|||
|
|
Restart=always
|
|||
|
|
|
|||
|
|
[Install]
|
|||
|
|
WantedBy=multi-user.target
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
sudo systemctl enable --now gitea-runner
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Deploy Secrets in Gitea hinterlegen:
|
|||
|
|
```
|
|||
|
|
Gitea → Repository → Settings → Secrets:
|
|||
|
|
|
|||
|
|
DEPLOY_HOST = 127.0.0.1 (oder raspberrypi5.local)
|
|||
|
|
DEPLOY_USER = lars
|
|||
|
|
DEPLOY_SSH_KEY = (privater SSH-Key, der Zugriff auf den Pi hat)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 3. Deployment-Verzeichnis auf dem Pi vorbereiten
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# Einmalig auf dem Pi:
|
|||
|
|
cd /home/lars/docker
|
|||
|
|
git clone git@localhost:lars/mitai-jinkendo.git bodytrack
|
|||
|
|
cd bodytrack
|
|||
|
|
|
|||
|
|
# .env anlegen (NICHT committen!)
|
|||
|
|
cp .env.example .env
|
|||
|
|
nano .env # Werte ausfüllen
|
|||
|
|
|
|||
|
|
# Ersten Start
|
|||
|
|
docker compose up -d
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 4. Claude Code einrichten
|
|||
|
|
|
|||
|
|
### VS Code Extension:
|
|||
|
|
```
|
|||
|
|
1. VS Code öffnen
|
|||
|
|
2. Extensions → "Claude Code" suchen und installieren
|
|||
|
|
3. Oder direkt: code --install-extension anthropic.claude-code
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Projekt öffnen:
|
|||
|
|
```bash
|
|||
|
|
cd /pfad/zu/mitai-jinkendo
|
|||
|
|
code .
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Claude Code liest automatisch `CLAUDE.md` und kennt damit:
|
|||
|
|
- Den gesamten Tech-Stack
|
|||
|
|
- Was schon implementiert ist
|
|||
|
|
- Was als nächstes kommt (v9)
|
|||
|
|
- Wichtige Hinweise (Ports, bekannte Fallstricke)
|
|||
|
|
|
|||
|
|
### Typischer Workflow:
|
|||
|
|
```
|
|||
|
|
1. Feature im Chat mit Claude besprechen
|
|||
|
|
2. Claude Code schreibt/ändert Dateien direkt
|
|||
|
|
3. git diff prüfen
|
|||
|
|
4. git commit + push
|
|||
|
|
5. Gitea Action deployed automatisch auf den Pi
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 5. DynDNS + Let's Encrypt Setup
|
|||
|
|
|
|||
|
|
### Fritz!Box MyFRITZ! einrichten:
|
|||
|
|
```
|
|||
|
|
1. Fritz!Box UI → Internet → MyFRITZ!-Konto
|
|||
|
|
2. MyFRITZ!-Adresse notieren: z.B. "xxxx.myfritz.net"
|
|||
|
|
3. Portfreigabe einrichten:
|
|||
|
|
- Port 80 → Raspberry Pi (für HTTP/Let's Encrypt)
|
|||
|
|
- Port 443 → Raspberry Pi (für HTTPS)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Strato DNS einrichten:
|
|||
|
|
```
|
|||
|
|
Strato Kundenbereich → Domains → mitai.jinkendo.de → DNS
|
|||
|
|
|
|||
|
|
CNAME body → xxxx.myfritz.net
|
|||
|
|
```
|
|||
|
|
*Alternativ: A-Record + DynDNS-Update-Script*
|
|||
|
|
|
|||
|
|
### nginx auf dem Pi installieren:
|
|||
|
|
```bash
|
|||
|
|
sudo apt install nginx
|
|||
|
|
sudo cp nginx/nginx.conf /etc/nginx/sites-available/jinkendo
|
|||
|
|
sudo ln -s /etc/nginx/sites-available/jinkendo /etc/nginx/sites-enabled/
|
|||
|
|
sudo nginx -t
|
|||
|
|
sudo systemctl reload nginx
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Let's Encrypt Zertifikat holen:
|
|||
|
|
```bash
|
|||
|
|
# Sicherstellen dass Port 80 von außen erreichbar ist!
|
|||
|
|
# Dann:
|
|||
|
|
sudo bash nginx/certbot-setup.sh
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 6. Entwicklungs-Workflow (täglich)
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# Feature entwickeln
|
|||
|
|
git checkout -b feature/v9-auth
|
|||
|
|
# ... Code schreiben ...
|
|||
|
|
git add .
|
|||
|
|
git commit -m "feat(auth): add bcrypt password hashing"
|
|||
|
|
|
|||
|
|
# Lokal testen
|
|||
|
|
docker compose -f docker-compose.yml \
|
|||
|
|
-f docker-compose.dev.yml up
|
|||
|
|
|
|||
|
|
# Nach Test: merge + deploy
|
|||
|
|
git checkout main
|
|||
|
|
git merge feature/v9-auth
|
|||
|
|
git push # → Gitea Action startet automatisch → Pi wird updated
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 7. Nächste Schritte (v9 Roadmap)
|
|||
|
|
|
|||
|
|
### v9a – Security (Prio: 🔴 Kritisch):
|
|||
|
|
- [ ] bcrypt für Passwörter
|
|||
|
|
- [ ] Auth-Middleware auf alle Endpoints
|
|||
|
|
- [ ] CORS einschränken
|
|||
|
|
- [ ] Rate Limiting
|
|||
|
|
- [ ] Login via E-Mail statt Profil-Liste
|
|||
|
|
|
|||
|
|
### v9a – Infrastruktur:
|
|||
|
|
- [ ] PostgreSQL Migration
|
|||
|
|
- [ ] nginx + Let's Encrypt live
|
|||
|
|
- [ ] Gitea Actions deployed
|
|||
|
|
|
|||
|
|
### v9b – Freemium:
|
|||
|
|
- [ ] Tier-System (free/basic/premium)
|
|||
|
|
- [ ] Selbst-Registrierung + E-Mail-Bestätigung
|
|||
|
|
- [ ] Trial (14 Tage)
|
|||
|
|
- [ ] Einladungslinks für Beta
|
|||
|
|
- [ ] Admin-Panel: User + Tiers verwalten
|
|||
|
|
|
|||
|
|
### v9c – Connectoren (Vorbereitung):
|
|||
|
|
- [ ] OAuth2-Grundgerüst
|
|||
|
|
- [ ] Strava Connector
|
|||
|
|
- [ ] Withings Connector (Waage)
|