SparkyFitness на Pethost в один клик
Дневник питания, тренировок, воды и замеров тела, альтернатива MyFitnessPal
Что произойдет
- Вы входите в Pethost или создаете аккаунт — с passkey, через GitHub или Google.
- Машины еще нет? Вы выбираете тариф, и мы готовим машину для вас. Ссылка ждет в вашем браузере, пока машина не будет готова.
- Окно «Новый проект» открывается на этом приложении, и вы нажимаете «Создать проект».
- Через минуту-две приложение работает по своему адресу с HTTPS. Его секреты создаются случайно, а данные попадают в ночной бэкап.
- Это проект как любой другой: его compose.yaml, .env, логи и терминал — в панели, а ваш агент может его изменить, откатить или восстановить.
Первые шаги
Откройте адрес и зарегистрируйтесь: первый аккаунт становится администратором. Затем добавьте DISABLE_SIGNUP=true в .env проекта и задеплойте снова, чтобы больше никто не мог зарегистрироваться.
Что запускается
Шаблон — это этот compose.yaml и переменные, которые он пишет в .env проекта. Pethost запускает файл так, как он написан.
services:
# The web app; its nginx sends /api and /uploads to the server.
sparkyfitness-frontend:
image: codewithcj/sparkyfitness:v1.8.0
restart: unless-stopped
environment:
SPARKY_FITNESS_FRONTEND_URL: ${URL}
SPARKY_FITNESS_SERVER_HOST: sparkyfitness-server
SPARKY_FITNESS_SERVER_PORT: 3010
depends_on:
- sparkyfitness-server
sparkyfitness-server:
image: codewithcj/sparkyfitness_server:v1.8.0
restart: unless-stopped
environment:
SPARKY_FITNESS_DB_HOST: sparkyfitness-db
SPARKY_FITNESS_DB_PORT: 5432
SPARKY_FITNESS_DB_NAME: sparkyfitness_db
SPARKY_FITNESS_DB_USER: sparky
SPARKY_FITNESS_DB_PASSWORD: ${DB_PASSWORD}
SPARKY_FITNESS_APP_DB_USER: sparky_app
SPARKY_FITNESS_APP_DB_PASSWORD: ${APP_DB_PASSWORD}
# Better Auth's address, trusted origins and secure cookies.
SPARKY_FITNESS_FRONTEND_URL: ${URL}
SPARKY_FITNESS_API_ENCRYPTION_KEY: ${ENCRYPTION_KEY}
BETTER_AUTH_SECRET: ${AUTH_SECRET}
NODE_ENV: production
SPARKY_FITNESS_LOG_LEVEL: ERROR
SPARKY_FITNESS_SERVER_PORT: 3010
# The project's proxy and the web app's nginx.
SPARKY_FITNESS_TRUSTED_PROXY_HOPS: 2
# Open until the first account is made; the notes say how to close it.
SPARKY_FITNESS_DISABLE_SIGNUP: ${DISABLE_SIGNUP:-false}
volumes:
- backup:/app/SparkyFitnessServer/backup
- uploads:/app/SparkyFitnessServer/uploads
depends_on:
sparkyfitness-db:
condition: service_healthy
sparkyfitness-db:
image: postgres:18.3-alpine
restart: unless-stopped
environment:
POSTGRES_DB: sparkyfitness_db
POSTGRES_USER: sparky
POSTGRES_PASSWORD: ${DB_PASSWORD}
volumes:
- db:/var/lib/postgresql
healthcheck:
test: ["CMD-SHELL", "pg_isready -U sparky -d sparkyfitness_db"]
interval: 5s
timeout: 5s
retries: 20
volumes:
backup:
uploads:
db:
