docs: README'yi Türkçeleştir
This commit is contained in:
59
README.md
59
README.md
@@ -1,59 +1,60 @@
|
|||||||
# q-buffer
|
# q-buffer
|
||||||
|
|
||||||
A production-ready monorepo that orchestrates qBittorrent torrents in a controlled playback loop with strict peer enforcement.
|
q-buffer, qBittorrent üzerinde torrentleri kontrollü şekilde döngüye almayı ve peer kısıtlamasını otomatikleştirmeyi amaçlayan bir uygulamadır. Buffer ekranında torrent seçip loop akışını başlatabilir, Timer ekranında etiket bazlı otomatik silme kuralları tanımlayabilirsiniz.
|
||||||
|
|
||||||
## Overview
|
## Neler yapar?
|
||||||
|
|
||||||
- Backend: Node.js + TypeScript + Express + socket.io
|
- qBittorrent WebUI API ile bağlanır, aktif torrent listesini gösterir.
|
||||||
- Frontend: React + Vite + TypeScript (shadcn-style UI)
|
- Seçilen torrent için loop (indir → sil → yeniden ekle) işlemini yönetir.
|
||||||
- Storage: JSON file DB with atomic writes and mutex
|
- Allow IP kuralıyla agresif peer kısıtlaması uygular (destek varsa ban).
|
||||||
- Docker: dev (two containers) and prod (single container)
|
- Timer kurallarıyla etiket bazlı seed süresi dolan torrentleri otomatik siler.
|
||||||
|
- Gerçek zamanlı durum, log ve metrikleri UI üzerinden gösterir.
|
||||||
|
|
||||||
## Quick Start
|
## Hızlı Başlangıç
|
||||||
|
|
||||||
1. Copy `.env.example` to `.env` and fill values.
|
1) `.env.example` dosyasını `.env` olarak kopyalayın ve değerleri doldurun.
|
||||||
2. Start dev stack:
|
2) Geliştirme ortamını başlatın:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
docker-compose -f docker-compose.dev.yml up --build
|
docker-compose -f docker-compose.dev.yml up --build
|
||||||
```
|
```
|
||||||
|
|
||||||
3. Open:
|
3) Açın:
|
||||||
|
|
||||||
- Web: http://localhost:5173
|
- Web: http://localhost:5173
|
||||||
- API/Socket: http://localhost:3001
|
- API/Socket: http://localhost:3001
|
||||||
|
|
||||||
|
## Kullanım (Buffer)
|
||||||
|
|
||||||
|
1) qBittorrent’te torrentleri ekleyin (UI listeye düşer).
|
||||||
|
2) Loop yapmak istediğiniz torrent için listede **upload ikonu**na tıklayın ve `.torrent` dosyasını seçin.
|
||||||
|
- Bu işlem torrent dosyasını arşivler.
|
||||||
|
- **Arşiv yüklenmeden Loop Setup başlamaz.**
|
||||||
|
3) Allow IP, Loop sayısı ve Delay değerlerini girip **Start**’a basın.
|
||||||
|
|
||||||
|
## Kullanım (Timer)
|
||||||
|
|
||||||
|
1) Etiketleri qBittorrent’te oluşturun (radarr, tv-sonarr gibi).
|
||||||
|
2) Timer ekranında etiket seçip seed süresi kuralı ekleyin.
|
||||||
|
3) Süresi dolan torrentler qBittorrent ve diskten silinir.
|
||||||
|
|
||||||
## Production
|
## Production
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
docker-compose up --build
|
docker-compose up --build
|
||||||
```
|
```
|
||||||
|
|
||||||
Open http://localhost:3001
|
Ardından http://localhost:3001
|
||||||
|
|
||||||
## Features
|
## Ortam Değişkenleri
|
||||||
|
|
||||||
- Login with env-configured credentials (JWT httpOnly cookie)
|
|
||||||
- Torrent list and selection
|
|
||||||
- Torrent archive to `/data/torrents/{hash}.torrent`
|
|
||||||
- Loop engine with delete/re-add between runs
|
|
||||||
- Aggressive allow-IP enforcement (peer ban when supported)
|
|
||||||
- Dry run report and profiles
|
|
||||||
- Real-time status/logs via socket.io
|
|
||||||
|
|
||||||
## Environment Variables
|
|
||||||
|
|
||||||
- `QBIT_BASE_URL`, `QBIT_USERNAME`, `QBIT_PASSWORD`
|
- `QBIT_BASE_URL`, `QBIT_USERNAME`, `QBIT_PASSWORD`
|
||||||
- `APP_USERNAME`, `APP_PASSWORD`, `JWT_SECRET`
|
- `APP_USERNAME`, `APP_PASSWORD`, `JWT_SECRET`
|
||||||
- `POLL_INTERVAL_MS`, `ENFORCE_INTERVAL_MS`, `DEFAULT_DELAY_MS`, `MAX_LOOP_LIMIT`
|
- `POLL_INTERVAL_MS`, `ENFORCE_INTERVAL_MS`, `DEFAULT_DELAY_MS`, `MAX_LOOP_LIMIT`
|
||||||
|
- `WEB_ALLOWED_HOSTS` (ör: `localhost,qbuffer.bee`)
|
||||||
|
|
||||||
## Folder Layout
|
## Klasör Yapısı
|
||||||
|
|
||||||
- `apps/server`: Express API + socket.io
|
- `apps/server`: Express API + socket.io
|
||||||
- `apps/web`: Vite React UI
|
- `apps/web`: Vite React UI
|
||||||
- `data`: JSON DB, logs, torrent archive
|
- `data`: JSON DB, loglar, arşivlenen torrent dosyaları
|
||||||
|
|
||||||
## Notes
|
|
||||||
|
|
||||||
- If magnet metadata generation fails, use Advanced upload to provide `.torrent` manually.
|
|
||||||
- The loop engine deletes downloaded data between loops.
|
|
||||||
|
|||||||
Reference in New Issue
Block a user