Phase 9: scaffold remote server (Flask + Postgres, docker-compose for unraid)

- server/sql/init.sql: devices/tracking_points/dashcam_files schema
- server/modules/db.py: psycopg3 pool + query helpers
- server/modules/auth.py: X-Device-Name/X-Api-Key header auth
- server/app.py: /health, /api/v1/tracking/batch, /api/v1/dashcam/upload
- server/Dockerfile + docker-compose.yml: api (gunicorn) + postgres services
- server/scripts/create_device.py: one-time device/API-key registration
- server/README.md: unraid deployment + Cloudflare Tunnel exposure docs
- PLAN.md: Phase 9 marked in progress with full build notes

Co-authored-by: Copilot <[email protected]>
This commit is contained in:
Mathieu Moran
2026-08-08 19:50:52 -04:00
co-authored by Copilot
parent 261ef3f4db
commit 9bdf5bad2c
12 changed files with 582 additions and 1 deletions
+21
View File
@@ -0,0 +1,21 @@
# Copy this file to .env and fill in real values before running
# `docker compose up -d`. .env itself is gitignored - never commit real
# credentials.
# Postgres credentials (internal to the compose network only, never exposed
# to the LAN/internet - pick any strong password).
POSTGRES_DB=yarisobd
POSTGRES_USER=yarisobd
POSTGRES_PASSWORD=changeme
# Host port the Flask API is published on (this is what you point the
# Cloudflare Tunnel / router port-forward at).
API_PORT=8098
# Where Postgres data + uploaded dashcam files are stored on the unraid host.
# Recommended: a path on the array, e.g. /mnt/user/appdata/yaris-obd-server
DATA_DIR=./data
# Reject dashcam uploads larger than this (MB). Bump if your dashcam
# produces very large individual clips.
MAX_DASHCAM_UPLOAD_MB=2048