103 lines
4.0 KiB
Makefile
103 lines
4.0 KiB
Makefile
.PHONY: install dev stop sync build prod logs down pull stream stream-local stream-stop mtx mtx-stop test
|
|
|
|
install:
|
|
cd backend && python3 -m venv .venv && .venv/bin/pip install -r requirements.txt
|
|
cd frontend && npm install
|
|
|
|
test:
|
|
cd backend && .venv/bin/python -m pytest -q
|
|
|
|
# MediaMTX nimmt den Stream entgegen. Ohne ihn läuft der Stream-Reiter ins
|
|
# Leere und OBS findet keinen Server.
|
|
# Räumt immer erst auf: ein gestoppter Container von vorhin belegt sonst
|
|
# den Namen, und "docker ps" sieht ihn nicht.
|
|
mtx:
|
|
-@docker rm -f horror-mtx-dev 2>/dev/null > /dev/null
|
|
@docker run -d --rm --name horror-mtx-dev --network host \
|
|
--env-file .env \
|
|
-e MTX_AUTHINTERNALUSERS_0_PASS="$$(grep '^MTX_SENDEPASSWORT=' .env | cut -d= -f2-)" \
|
|
-v "$(PWD)/mediamtx/mediamtx.yml:/mediamtx.yml:ro" \
|
|
-v "$(PWD)/aufnahmen:/recordings" \
|
|
bluenviron/mediamtx:latest > /dev/null
|
|
@echo "MediaMTX läuft: RTMP auf :1935, HLS auf :8890, Aufnahme in aufnahmen/"
|
|
|
|
mtx-stop:
|
|
-@docker rm -f horror-mtx-dev 2>/dev/null > /dev/null
|
|
@echo "MediaMTX gestoppt."
|
|
|
|
# Startet unabhängig davon, was gerade läuft. Die eckige Klammer im Muster
|
|
# sorgt dafür, dass pkill nicht die eigene Zeile trifft.
|
|
dev: mtx
|
|
-@pkill -f "[u]vicorn app.main:app" 2>/dev/null
|
|
-@pkill -f "[v]ite --port 5173" 2>/dev/null
|
|
@echo "Backend: http://localhost:8000 Frontend: http://localhost:5173"
|
|
@cd backend && .venv/bin/uvicorn app.main:app --reload --port 8000 &
|
|
@cd frontend && npx vite --port 5173
|
|
|
|
stop: mtx-stop stream-stop
|
|
-@pkill -f "uvicorn app.main:app" 2>/dev/null
|
|
-@pkill -f "vite --port 5173" 2>/dev/null
|
|
@echo "gestoppt."
|
|
|
|
# Katalog holen und fehlende Teaser erzeugen (läuft im Betrieb täglich 4:30)
|
|
sync:
|
|
cd backend && .venv/bin/python -m app.sync
|
|
|
|
build:
|
|
cd frontend && npm run build
|
|
|
|
# ── Produktion (auf dem Server ausführen, im Projektverzeichnis) ──────────────
|
|
# --force-recreate: auch MediaMTX kommt neu hoch und liest die
|
|
# mediamtx.yml frisch — sonst bleibt eine Konfigänderung ohne Wirkung
|
|
prod:
|
|
docker compose up -d --build --force-recreate
|
|
@echo "horror läuft: https://horror.marha.de"
|
|
|
|
# Der Sync läuft im Container, ein backend/.venv gibt es dort nicht
|
|
sync-prod:
|
|
docker compose exec horror python -m app.sync
|
|
|
|
logs:
|
|
docker compose logs -f
|
|
|
|
down:
|
|
docker compose down
|
|
|
|
# ── Senden ───────────────────────────────────────────────────────────────────
|
|
# Der Regelfall geht an den Server. Ein anderes Ziel bei Bedarf:
|
|
# make stream ZIEL=anderer.host
|
|
ZIEL ?= horror.marha.de
|
|
|
|
# Räumt vorher auf: ein noch laufendes OBS belegt sonst die Sendestrecke,
|
|
# und der Tonweg wird sauber neu aufgebaut.
|
|
# Der Stream bekommt den vollen Ton, dieser Rechner bleibt still.
|
|
# Zum Mitschauen am selben Gerät: make stream MITHOEREN=1
|
|
stream: stream-stop
|
|
@MITHOEREN=$(MITHOEREN) scripts/stream.sh $(ZIEL)
|
|
|
|
# Zum Ausprobieren ohne Server, gegen das lokale MediaMTX
|
|
stream-local: mtx
|
|
@scripts/stream.sh 127.0.0.1
|
|
|
|
stream-stop:
|
|
-@pkill -f "obs --profile filmabend" 2>/dev/null
|
|
-@scripts/ton.sh ab
|
|
@echo "OBS beendet."
|
|
|
|
# ── Datenbank vom Server holen (lokal ausführen) ───────────────────────────────────
|
|
SERVER = root@178.104.67.87
|
|
REMOTE = /var/www/horror
|
|
LOKAL = backend/horror.db
|
|
|
|
# Eine laufende App schreibt weiter, während kopiert wird. Deshalb erst eine
|
|
# in sich stimmige Kopie ziehen, statt die Datei direkt anzufassen.
|
|
SICHERN = import sqlite3,sys; q=sqlite3.connect(sys.argv[1]); z=sqlite3.connect(sys.argv[2]); q.backup(z); z.close(); q.close()
|
|
|
|
pull:
|
|
@echo "Überschreibt deine lokale Datenbank."
|
|
ssh $(SERVER) 'python3 -c "$(SICHERN)" $(REMOTE)/data/horror.db /tmp/horror-pull.db'
|
|
@[ ! -f $(LOKAL) ] || cp $(LOKAL) $(LOKAL).bak
|
|
scp $(SERVER):/tmp/horror-pull.db $(LOKAL)
|
|
@ssh $(SERVER) 'rm -f /tmp/horror-pull.db'
|
|
@echo "Fertig. Deine alte Datenbank liegt als $(LOKAL).bak daneben."
|