auto-save 2026-07-13
This commit is contained in:
@@ -0,0 +1,93 @@
|
||||
# SparkyFitness Setup (rayserver)
|
||||
|
||||
## Deployment
|
||||
|
||||
- Docker Compose: `/mnt/seagate8tb/Websites/SparkyFitness/docker-compose.yml`
|
||||
- Env config: `/mnt/seagate8tb/Websites/SparkyFitness/.env`
|
||||
- Backup dir: `/mnt/seagate8tb/Websites/SparkyFitness/backup/`
|
||||
- Uploads dir: `/mnt/seagate8tb/Websites/SparkyFitness/uploads/`
|
||||
|
||||
## Architecture
|
||||
|
||||
```
|
||||
[Internet] → nginx (home server, port 3451 SSL) → localhost:3004 → frontend container (nginx, port 80)
|
||||
↕ (Docker network)
|
||||
server container (port 3010)
|
||||
↕
|
||||
Postgres container (port 5432)
|
||||
```
|
||||
|
||||
The frontend container runs its own nginx that reverse-proxies API calls to the server container over the Docker internal network. The home server nginx just proxies HTTP to port 3004.
|
||||
|
||||
## Nginx Reverse Proxy Config
|
||||
|
||||
Home nginx (`/etc/nginx/sites-available/sparkyfitness`):
|
||||
|
||||
```nginx
|
||||
server {
|
||||
listen 3451 ssl;
|
||||
server_name sparkyfitness.graj-media.com grajmedia.duckdns.org;
|
||||
|
||||
ssl_certificate /etc/letsencrypt/live/grajmedia.duckdns.org/fullchain.pem;
|
||||
ssl_certificate_key /etc/letsencrypt/live/grajmedia.duckdns.org/privkey.pem;
|
||||
ssl_protocols TLSv1.2 TLSv1.3;
|
||||
ssl_ciphers HIGH:!aNULL:!MD5;
|
||||
|
||||
client_max_body_size 100M;
|
||||
|
||||
location / {
|
||||
proxy_pass http://127.0.0.1:3004;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "upgrade";
|
||||
proxy_read_timeout 86400;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Then symlink and reload:
|
||||
```bash
|
||||
sudo ln -sf /etc/nginx/sites-available/sparkyfitness /etc/nginx/sites-enabled/sparkyfitness
|
||||
sudo nginx -t && sudo systemctl reload nginx
|
||||
```
|
||||
|
||||
## Env Var Changes When Exposing Publicly
|
||||
|
||||
In `.env`, change these from the default:
|
||||
|
||||
```bash
|
||||
SPARKY_FITNESS_FRONTEND_URL=https://sparkyfitness.graj-media.com
|
||||
SPARKY_FITNESS_EXTRA_TRUSTED_ORIGINS=https://sparkyfitness.graj-media.com,http://localhost:3004,http://192.168.50.98:3004
|
||||
```
|
||||
|
||||
After changing `.env`, restart the stack:
|
||||
```bash
|
||||
cd /mnt/seagate8tb/Websites/SparkyFitness
|
||||
docker compose up -d --force-recreate
|
||||
```
|
||||
|
||||
## Android Mobile App
|
||||
|
||||
- Download: `app-release.apk` from https://github.com/CodeWithCJ/SparkyFitness/releases/latest (v0.17.3, ~188MB)
|
||||
- Sideload on Android phone
|
||||
- Configure the app to point at `https://sparkyfitness.graj-media.com` (or whichever subdomain)
|
||||
- **Requires HTTPS** — the app won't connect over plain HTTP
|
||||
- Integrates with Android Health Connect for data sync
|
||||
- Play Store beta: Join https://groups.google.com/g/sparkyfitness first, then https://play.google.com/store/apps/details?id=com.SparkyApps.SparkyFitnessMobile
|
||||
|
||||
## Verification
|
||||
|
||||
```bash
|
||||
# Local access
|
||||
curl -sk https://localhost:3451/
|
||||
|
||||
# Check response includes the SparkyFitness HTML
|
||||
curl -sk https://localhost:3451/ | grep -o '<title>.*</title>'
|
||||
|
||||
# nginx logs
|
||||
sudo tail -20 /var/log/nginx/access.log | grep 3451
|
||||
```
|
||||
Reference in New Issue
Block a user