SparkyFitness: Самостоятельно размещенная альтернатива MyFitnessPal для вашего Homelab

Узнайте, как установить и настроить SparkyFitness — самостоятельную альтернативу MyFitnessPal для безопасного отслеживания питания и фитнеса на вашем сервере. Полное руководство для энтузиастов Homelab.

Не указано

Подготовка сервера

Обновление системы и установка необходимых зависимостей

sudo apt update && sudo apt upgrade -y

Установка .NET 6

Добавление репозитория .NET и установка SDK

wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
sudo apt update
sudo apt install -y dotnet-sdk-6.0 aspnetcore-runtime-6.0

Установка базы данных

Установка и настройка PostgreSQL

sudo apt install -y postgresql postgresql-contrib
sudo systemctl start postgresql
sudo systemctl enable postgresql
sudo -u postgres createdb sparkyfitness
sudo -u postgres psql -c "CREATE USER sparky WITH PASSWORD 'your_strong_password';"
sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE sparkyfitness TO sparky;"

Скачивание SparkyFitness

Создание директории и скачивание приложения

sudo mkdir -p /opt/sparkyfitness
sudo chown $USER:$USER /opt/sparkyfitness
cd /opt/sparkyfitness
wget https://github.com/SparkyFI/SparkyFitness/releases/download/v0.16.4.0/SparkyFitness-v0.16.4.0.zip
unzip SparkyFitness-v0.16.4.0.zip

Настройка приложения

Конфигурация приложения и настройка SSL

{
  "ConnectionStrings": {
    "DefaultConnection": "Host=localhost;Database=sparkyfitness;Username=sparky;Password=your_strong_password;"
  },
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "AllowedHosts": "*",
  "AppSettings": {
    "AppVersion": "0.16.4.0",
    "AppUrl": "https://your-domain.com",
    "AdminEmail": "admin@example.com",
    "UseDatabaseForImages": true,
    "Jwt": {
      "Key": "your-super-secret-jwt-key-change-this",
      "Issuer": "SparkyFitness",
      "Audience": "SparkyFitnessUsers",
      "DurationInMinutes": 60
    }
  }
}

Запуск приложения

Запуск приложения как службы

[Unit]
Description=SparkyFitness
After=network.target postgresql.service

[Service]
Type=simple
User=sparkyfitness
WorkingDirectory=/opt/sparkyfitness/SparkyFitness
ExecStart=/usr/bin/dotnet /opt/sparkyfitness/SparkyFitness/SparkyFitness.dll
Restart=always
RestartSec=10
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=ASPNETCORE_URLS=http://localhost:5000

[Install]
WantedBy=multi-user.target