-
-
Notifications
You must be signed in to change notification settings - Fork 60
Sample Setup
CodeWithCJ edited this page Nov 9, 2025
·
10 revisions
My Compose file
version: "3.9"
services:
sparkyfitness-db:
image: postgres:15-alpine
container_name: postgres15-alpine
restart: always
environment:
POSTGRES_DB: ${SPARKY_FITNESS_DB_NAME}
POSTGRES_USER: ${SPARKY_FITNESS_DB_USER}
POSTGRES_PASSWORD: ${SPARKY_FITNESS_DB_PASSWORD}
volumes:
- /mnt/eHDD/SparkyApps/sparkyfitness/postgresql:/var/lib/postgresql/data
networks:
- sparkyfitness-network # Use the new named network
sparkyfitness-server:
image: codewithcj/sparkyfitness_server:${SPARKY_VERSION} # Use pre-built image
container_name: sparkyfitness-server
environment:
SPARKY_FITNESS_LOG_LEVEL: ${SPARKY_FITNESS_LOG_LEVEL}
SPARKY_FITNESS_DB_USER: ${SPARKY_FITNESS_DB_USER}
SPARKY_FITNESS_DB_HOST: sparkyfitness-db # Use the service name 'sparkyfitness-db' for inter-container communication
SPARKY_FITNESS_DB_NAME: ${SPARKY_FITNESS_DB_NAME}
SPARKY_FITNESS_DB_PASSWORD: ${SPARKY_FITNESS_DB_PASSWORD}
SPARKY_FITNESS_APP_DB_USER: ${SPARKY_FITNESS_APP_DB_USER}
SPARKY_FITNESS_APP_DB_PASSWORD: ${SPARKY_FITNESS_APP_DB_PASSWORD}
SPARKY_FITNESS_DB_PORT: 5432
SPARKY_FITNESS_API_ENCRYPTION_KEY: ${SPARKY_FITNESS_API_ENCRYPTION_KEY}
SPARKY_FITNESS_SERVER_PORT: 3010
JWT_SECRET: ${JWT_SECRET}
SPARKY_FITNESS_FRONTEND_URL: ${SPARKY_FITNESS_FRONTEND_URL}
SPARKY_FITNESS_ADMIN_EMAIL: ${SPARKY_FITNESS_ADMIN_EMAIL}
NODE_ENV: ${NODE_ENV} # Ensure NODE_ENV is passed to the backend service
GARMIN_MICROSERVICE_URL: http://sparkyfitness-garmin:8000
SPARKY_FITNESS_EMAIL_HOST: ${SPARKY_FITNESS_EMAIL_HOST}
SPARKY_FITNESS_EMAIL_PORT: ${SPARKY_FITNESS_EMAIL_PORT}
SPARKY_FITNESS_EMAIL_SECURE: ${SPARKY_FITNESS_EMAIL_SECURE}
SPARKY_FITNESS_EMAIL_USER: ${SPARKY_FITNESS_EMAIL_USER}
SPARKY_FITNESS_EMAIL_PASS: ${SPARKY_FITNESS_EMAIL_PASS}
SPARKY_FITNESS_EMAIL_FROM: ${SPARKY_FITNESS_EMAIL_FROM}
networks:
- sparkyfitness-network # Use the new named network
restart: always
volumes:
- /mnt/eHDD/SparkyApps/sparkyfitness/backups:/app/SparkyFitnessServer/backup # Mount volume for backups
- /mnt/eHDD/SparkyApps/sparkyfitness/uploads:/app/SparkyFitnessServer/uploads # Mount volume for backups
depends_on:
- sparkyfitness-db # Backend depends on the database being available
sparkyfitness-frontend:
image: codewithcj/sparkyfitness:${SPARKY_VERSION} # Use pre-built image
container_name: sparkyfitness-frontend
environment:
SPARKY_FITNESS_SERVER_PORT: 3010
ports:
- "3004:80" # Map host port 8080 to container port 80 (Nginx)
networks:
- sparkyfitness-network # Use the new named network
restart: always
depends_on:
- sparkyfitness-server # Frontend depends on the server
sparkyfitness-garmin:
image: codewithcj/sparkyfitness_garmin:${SPARKY_VERSION}
container_name: sparkyfitness-garmin
environment:
GARMIN_MICROSERVICE_URL: http://sparkyfitness-garmin:8000
networks:
- sparkyfitness-network
restart: unless-stopped
#volumes:
# - /mnt/eHDD/SparkyApps/sparkyfitness/SparkyFitnessGarmin:/app
depends_on:
- sparkyfitness-db
- sparkyfitness-server
networks:
sparkyfitness-network:
driver: bridge
My Env Variable Setup
SPARKY_FITNESS_DB_NAME=sparkyfitness_db
SPARKY_FITNESS_DB_USER=sparky
SPARKY_FITNESS_DB_PASSWORD=password
SPARKY_FITNESS_FRONTEND_URL=https://fitness.domain.com
SPARKY_FITNESS_LOG_LEVEL=DEBUG
NODE_ENV=production
TZ=Etc/UTC
SPARKY_FITNESS_API_ENCRYPTION_KEY=My_64_hex_key
JWT_SECRET=My_64_hex_key
[email protected]
SPARKY_FITNESS_EMAIL_HOST=smtp.gmail.com
SPARKY_FITNESS_EMAIL_PORT=587
SPARKY_FITNESS_EMAIL_SECURE=false
[email protected]
SPARKY_FITNESS_EMAIL_PASS=smtp_password_not_your_email_password
[email protected]
SPARKY_VERSION=latest
SPARKY_FITNESS_APP_DB_USER=sparky_app
SPARKY_FITNESS_APP_DB_PASSWORD=password
NGINX Proxy Manager
Here 192.168.1.111 is the IP address of my server. 3004 is front end port.



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;
add_header X-Content-Type-Options "nosniff";
proxy_set_header X-Forwarded-Ssl on;