Files
pipu-music/README.md
T
mrleo1nidandClaude Opus 5.5 1633b28c1a
ci / contract (сгенерированный код совпадает с openapi.yaml) (push) Successful in 47s
ci / api (push) Successful in 53s
ci / recommender (push) Successful in 37s
ci / ts (packages + web) (push) Successful in 38s
ci / mobile (Metro-бандл Android) (push) Successful in 52s
docs(deploy): add install guide for a domain with HTTPS
- docs/install-guide.md: step-by-step server setup (DNS, Docker, install.sh,
  .env, launch, checks), web and Android client setup, own reverse proxy
  variant, updates, backups and troubleshooting
- deploy/compose.tls.yaml + Caddyfile: optional Caddy with automatic
  Let's Encrypt in front of nginx (enabled via COMPOSE_FILE in .env)
- nginx: honour X-Forwarded-Proto/For from private networks
- .env.example: DOMAIN, ACME_EMAIL, COMPOSE_FILE, bootstrap admin vars
- install.sh: create caddy data dirs; release.yml: ship TLS files as assets
- deployment.md, docs index and README link to the guide

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 00:03:26 +03:00

2.8 KiB

pipu-music

Self-hosted музыкальный сервис: веб и Android-приложение, библиотека на NFS, умная бесконечная лента «Моя волна» с учётом вкуса, звучания треков и настроения.

Структура

Путь Что
api/openapi.yaml Контракт публичного API — источник истины для сервера и клиентов
services/api Go: публичный API (cmd/api) и агент хранилищ (cmd/storage-agent)
services/recommender Python: рекомендации (pipu-rec serve) и аудиоанализ (pipu-rec analyze)
apps/web Веб-клиент (React + Vite)
apps/mobile Android-приложение (React Native + Expo)
packages/* Общий TS-код: api-client, core, i18n, design-tokens
deploy/ Docker Compose, nginx, скрипты установки и обновления
tests/fixtures/music Генератор тестовой библиотеки (нужен ffmpeg)
.gitea/workflows CI (ci.yml) и релиз по тегу (release.yml)

Разработка

Нужны: Go 1.24+, Node 22 + pnpm 11, uv, Docker; для Android — JDK 17 и Android SDK.

pnpm install
docker compose -f deploy/compose.dev.yaml up -d

API (из services/api):

DATABASE_URL="postgres://pipu:pipu@localhost:5432/pipu?sslmode=disable" REDIS_URL="redis://localhost:6379/0" go run ./cmd/api

Веб на http://localhost:5173 (проксирует /api на :8080):

pnpm --filter @pipu/web dev

Проверки — те же, что в CI:

pnpm typecheck && pnpm test && pnpm i18n:check && pnpm test:scripts
cd services/api && go vet ./... && go test ./...
cd services/recommender && uv run ruff check . && uv run mypy pipu_rec && uv run pytest

После изменения api/openapi.yaml или packages/design-tokens/tokens.json перегенерируйте код и закоммитьте результат:

pnpm generate && (cd services/api && go generate ./...)

Релиз

Тег vX.Y.Z (или vX.Y.Z-rc.N) запускает .gitea/workflows/release.yml: проверки → образы в Gitea Container Registry → подписанный APK → Gitea Release. Нужные переменные и секреты перечислены в шапке workflow и в docs/ci-cd.md.