Files
tonehaus/docs/setup.md
T

2.0 KiB

Setup

Prerequisites

  • Docker + Docker Compose
  • Last.fm API key
  • A unique APP_SECRET value in your environment (for prod builds)

1) Start the stack

docker compose up -d --build

App: http://localhost:8085
Health: http://localhost:8085/healthz

2) Create an admin

docker compose exec tonehaus php bin/console app:promote-admin you@example.com

3) Configure Last.fm

  • Preferred: open /admin/settings and enter your Last.fm API key (stored in DB)
  • Env fallback (in .env or your shell):
LASTFM_API_KEY=your_api_key

4) JWT auth keys

  • API login endpoint: POST /api/v1/auth/login
  • JWT keys are generated automatically on container start into config/jwt/.
  • Set JWT_PASSPHRASE in .env to your production secret.

5) (Optional) Seed demo data

docker compose exec tonehaus php bin/console app:seed-demo-users --count=50
docker compose exec tonehaus php bin/console app:seed-demo-albums --count=40 --attach-users
docker compose exec tonehaus php bin/console app:seed-demo-reviews --cover-percent=70 --max-per-album=8

Database drivers

  • SQLite (default): set DATABASE_DRIVER=sqlite (default) — data stored at var/data/database.sqlite
  • Postgres: set DATABASE_DRIVER=postgres and provide DATABASE_URL
    • If you enable the commented db service in docker-compose.yml, a typical URL is:
      postgresql://symfony:symfony@db:5432/symfony?serverVersion=16&charset=utf8
      

Environment variables

  • APP_ENV=dev|prod
  • APP_SECRET=<random_string>
  • LASTFM_API_KEY
  • JWT_PASSPHRASE=<random_string>
  • APP_ALLOW_REGISTRATION=1|0 (env can override DB setting)
  • DATABASE_DRIVER=sqlite|postgres
  • DATABASE_SQLITE_PATH (optional)
  • RUN_MIGRATIONS_ON_START=1|0 (default 1)

Useful commands

# Symfony cache
docker compose exec tonehaus php bin/console cache:clear

# Inspect routes
docker compose exec tonehaus php bin/console debug:router

# Promote moderator
docker compose exec tonehaus php bin/console app:promote-moderator mod@example.com