ΠΠ³ΡΠ΅Π³Π°ΡΠΎΡ ΡΠΎΡΡΠ΅Π½Ρ-ΡΡΠ΅ΠΊΠ΅ΡΠΎΠ² Ρ API Π² ΡΠΎΡΠΌΠ°ΡΠ΅ Jackett. Π₯ΡΠ°Π½ΠΈΡ Π΄Π°Π½Π½ΡΠ΅ Π² ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΠΠ (fdb), ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ Ρ ΡΠ΄Π°Π»ΡΠ½Π½ΠΎΠΉ Π±Π°Π·ΠΎΠΉ ΠΈ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΡΠΉ ΠΏΠ°ΡΡΠΈΠ½Π³ ΡΡΠ΅ΠΊΠ΅ΡΠΎΠ² ΠΏΠΎ cron.
- .NET 9.0 (Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΠΈΠ· ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠΎΠ²)
- ΠΠ»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΡΠΊΡΠΈΠΏΡΠΎΠΌ: Linux (systemd, cron), ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ Debian/Ubuntu
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ (Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΠΎΡ Π»ΡΠ±ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π·Π°ΠΏΡΠΎΡΠΈΡΡΡ sudo):
curl -s https://raw.githubusercontent.com/jacred-fdb/jacred/main/jacred.sh | bashΠ‘ΠΊΡΠΈΠΏΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² /opt/jacred, ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈ systemd-ΡΠ΅ΡΠ²ΠΈΡ jacred, Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ cron Π΄Π»Ρ ΡΠΎΡ
ΡΠ°Π½Π΅Π½ΠΈΡ ΠΠ ΠΈ ΠΏΡΠΈ ΠΏΠ΅ΡΠ²ΠΎΠΌ Π·Π°ΠΏΡΡΠΊΠ΅ ΠΏΠΎ ΠΆΠ΅Π»Π°Π½ΠΈΡ ΡΠΊΠ°ΡΠΈΠ²Π°Π΅Ρ Π³ΠΎΡΠΎΠ²ΡΡ Π±Π°Π·Ρ.
ΠΠΏΡΠΈΠΈ:
| ΠΠΏΡΠΈΡ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
|---|---|
--no-download-db |
ΠΠ΅ ΡΠΊΠ°ΡΠΈΠ²Π°ΡΡ ΠΈ Π½Π΅ ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²ΡΠ²Π°ΡΡ Π±Π°Π·Ρ (ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅) |
--pre-release |
Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΈΠ»ΠΈ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ ΠΈΠ· ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ pre-release (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, 2.0.0-dev1) |
--update |
ΠΠ±Π½ΠΎΠ²ΠΈΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΡΠ΅Π»ΠΈΠ·Π° (ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ ΠΠ, Π·Π°ΠΌΠ΅Π½ΠΈΡΡ ΡΠ°ΠΉΠ»Ρ, ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΡΠΈΡΡ) |
--remove |
ΠΠΎΠ»Π½ΠΎΡΡΡΡ ΡΠ΄Π°Π»ΠΈΡΡ JacRed (ΡΠ΅ΡΠ²ΠΈΡ, cron, ΠΊΠ°ΡΠ°Π»ΠΎΠ³ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ) |
-h, --help |
ΠΠΎΠΊΠ°Π·Π°ΡΡ ΡΠΏΡΠ°Π²ΠΊΡ |
ΠΡΠΈΠΌΠ΅ΡΡ:
# ΠΠ±ΡΡΠ½Π°Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° (ΠΎΠ΄Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°)
curl -s https://raw.githubusercontent.com/jacred-fdb/jacred/main/jacred.sh | bash
# Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π±Π΅Π· Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π±Π°Π·Ρ (ΠΎΠ΄Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°)
curl -s https://raw.githubusercontent.com/jacred-fdb/jacred/main/jacred.sh | bash -s -- --no-download-db
# Π‘ΠΊΠ°ΡΠ°ΡΡ ΡΠΊΡΠΈΠΏΡ ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΡ Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ
curl -s https://raw.githubusercontent.com/jacred-fdb/jacred/main/jacred.sh -o jacred.sh
chmod +x jacred.sh
sudo ./jacred.sh --no-download-db
# Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° pre-release Π²Π΅ΡΡΠΈΠΈ
curl -s https://raw.githubusercontent.com/jacred-fdb/jacred/main/jacred.sh | bash -s -- --pre-release
# ΠΠ»ΠΈ ΡΠΊΠ°ΡΠ°ΡΡ ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΡ pre-release
curl -s https://raw.githubusercontent.com/jacred-fdb/jacred/main/jacred.sh -o jacred.sh
chmod +x jacred.sh
sudo ./jacred.sh --pre-release
# ΠΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΡΠΆΠ΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
sudo /opt/jacred/jacred.sh --update
# ΠΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π΄ΠΎ pre-release Π²Π΅ΡΡΠΈΠΈ
sudo /opt/jacred/jacred.sh --update --pre-release
# Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅
sudo /opt/jacred/jacred.sh --removeΠ£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ°/ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅/ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ (cron Π±ΡΠ΄Π΅Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΈΠ»ΠΈ ΡΠ΄Π°Π»ΡΠ½ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ):
sudo -u myservice ./jacred.sh
sudo -u myservice ./jacred.sh --update
sudo -u myservice ./jacred.sh --removeΠΠΎΡΠ»Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ:
- ΠΠ°ΡΡΡΠΎΠΉΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³:
/opt/jacred/init.yamlΠΈΠ»ΠΈ/opt/jacred/init.conf - ΠΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊ:
systemctl restart jacred - ΠΠΎΠ»Π½ΡΠΉ crontab Π΄Π»Ρ ΠΏΠ°ΡΡΠΈΠ½Π³Π°:
crontab /opt/jacred/Data/crontab
ΠΠ°ΠΆΠ½ΠΎ: ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π²ΠΊΠ»ΡΡΠ΅Π½Π° ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ Π±Π°Π·Ρ Ρ Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠ° (
syncapi). ΠΠ»Ρ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠ°ΡΡΠΈΠ½Π³Π° Π½Π°ΡΡΡΠΎΠΉΡΠ΅ cron ΠΏΠΎData/crontabΠΈ ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΎΡΠΊΠ»ΡΡΠΈΡΠ΅ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΠ΅syncapi.
ΠΡΠΈΠΎΡΠΈΡΠ΅Ρ ΡΠ°ΠΉΠ»ΠΎΠ²: init.yaml > init.conf. ΠΡΠ»ΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ΠΎΠ±Π°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ init.yaml. ΠΠΎΠ½ΡΠΈΠ³ ΠΏΠ΅ΡΠ΅ΡΠΈΡΡΠ²Π°Π΅ΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΊΠ°ΠΆΠ΄ΡΠ΅ 10 ΡΠ΅ΠΊΡΠ½Π΄.
ΠΡΠΈΠΌΠ΅ΡΡ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³Π°: Data/example.yaml, Data/example.conf. Π ΡΠ°Π±ΠΎΡΠ΅ΠΌ ΠΊΠΎΠ½ΡΠΈΠ³Π΅ ΡΠΊΠ°Π·ΡΠ²Π°ΠΉΡΠ΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½ΡΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ.
| ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ | ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ |
|---|---|---|
listenip |
IP Π΄Π»Ρ ΠΏΡΠΎΡΠ»ΡΡΠΈΠ²Π°Π½ΠΈΡ (any β Π²ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ) |
any |
listenport |
ΠΠΎΡΡ HTTP | 9117 |
apikey |
ΠΠ»ΡΡ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ API (ΠΏΡΡΡΠΎ β Π±Π΅Π· ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ) | β |
mergeduplicates |
ΠΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡΡ Π΄ΡΠ±Π»ΠΈΠΊΠ°ΡΡ Π² Π²ΡΠ΄Π°ΡΠ΅ | true |
mergenumduplicates |
ΠΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡΡ Π΄ΡΠ±Π»ΠΈΠΊΠ°ΡΡ ΠΏΠΎ Π½ΠΎΠΌΠ΅ΡΡ (ΡΠ΅ΡΠΈΠΈ ΠΈ Ρ.ΠΏ.) | true |
openstats |
ΠΡΠΊΡΡΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ /stats/* |
true |
opensync |
Π Π°Π·ΡΠ΅ΡΠΈΡΡ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ Π±Π°Π·Ρ ΡΠ΅ΡΠ΅Π· sync API | true |
opensync_v1 |
Π Π°Π·ΡΠ΅ΡΠΈΡΡ ΡΡΠ°ΡΡΠΉ ΡΠΎΡΠΌΠ°Ρ sync v1 | false |
web |
Π Π°Π·Π΄Π°Π²Π°ΡΡ ΡΡΠ°ΡΠΈΠΊΡ (Π²Π΅Π±-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ) | true |
maxreadfile |
ΠΠ°ΠΊΡ. ΡΠΈΡΠ»ΠΎ ΠΎΡΠΊΡΡΡΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² Π·Π° ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΠΈΡΠΊΠΎΠ²ΡΠΉ Π·Π°ΠΏΡΠΎΡ | 200 |
evercache |
ΠΠ΅Ρ ΠΎΡΠΊΡΡΡΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² (ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΏΡΠΈ Π²ΡΡΠΎΠΊΠΎΠΉ Π½Π°Π³ΡΡΠ·ΠΊΠ΅) | ΡΠΌ. example |
fdbPathLevels |
Π£ΡΠΎΠ²Π½ΠΈ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΡΡΠΈ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ² fdb | 2 |
| ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ | ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ |
|---|---|---|
syncapi |
URL ΡΠ΅ΡΠ²Π΅ΡΠ° Ρ ΠΎΡΠΊΡΡΡΡΠΌ opensync Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π±Π°Π·Ρ |
Π·Π°Π΄Π°ΡΡΡΡ Π² example |
synctrackers |
Π‘ΠΏΠΈΡΠΎΠΊ ΡΡΠ΅ΠΊΠ΅ΡΠΎΠ² Π΄Π»Ρ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ Ρ syncapi | ΡΠΌ. example |
disable_trackers |
Π’ΡΠ΅ΠΊΠ΅ΡΡ, Π½Π΅ ΡΡΠ°ΡΡΠ²ΡΡΡΠΈΠ΅ Π² ΡΠΈΠ½ΠΊΠ΅ (RIP ΠΈ Π΄Ρ.) | hdrezka, anifilm, anilibria |
timeSync |
ΠΠ½ΡΠ΅ΡΠ²Π°Π» ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ Ρ syncapi, ΠΌΠΈΠ½ | 60 |
timeSyncSpidr |
ΠΠ½ΡΠ΅ΡΠ²Π°Π» ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ Spidr, ΠΌΠΈΠ½ | 60 |
syncsport |
ΠΠΊΠ»ΡΡΠΈΡΡ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ ΠΏΠΎ ΡΠΏΠΎΡΡΡ | true |
syncspidr |
ΠΠΊΠ»ΡΡΠΈΡΡ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ Spidr | true |
| ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ | ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ |
|---|---|---|
log |
Π£ΡΡΠ°ΡΠ΅Π²ΡΠΈΠΉ: Π²ΠΊΠ»ΡΡΠΈΡΡ Π»ΠΎΠ³ΠΈ fdb ΠΈ ΠΏΠ°ΡΡΠ΅ΡΠΎΠ² | false |
logFdb |
ΠΠΈΡΠ°ΡΡ Π»ΠΎΠ³ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΉ/ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ Π² Data/log/fdb.*.log | false |
logFdbRetentionDays |
Π₯ΡΠ°Π½ΠΈΡΡ Π»ΠΎΠ³ΠΈ fdb Π½Π΅ Π±ΠΎΠ»Π΅Π΅ N Π΄Π½Π΅ΠΉ (0 β Π±Π΅Π· ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ) | 7 |
logFdbMaxSizeMb |
ΠΠ°ΠΊΡ. ΡΡΠΌΠΌΠ°ΡΠ½ΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ Π»ΠΎΠ³ΠΎΠ² fdb, ΠΠ (0 β Π±Π΅Π· ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ) | 0 |
logFdbMaxFiles |
ΠΠ°ΠΊΡ. ΡΠΈΡΠ»ΠΎ ΡΠ°ΠΉΠ»ΠΎΠ² Π»ΠΎΠ³ΠΎΠ² fdb (0 β Π±Π΅Π· ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ) | 0 |
logParsers |
ΠΠΊΠ»ΡΡΠΈΡΡ Π»ΠΎΠ³ΠΈ ΠΏΠ°ΡΡΠ΅ΡΠΎΠ² ΠΏΠΎ ΡΡΠ΅ΠΊΠ΅ΡΠ°ΠΌ (Data/log/{tracker}.log) | false |
| ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ | ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ |
|---|---|---|
timeStatsUpdate |
ΠΠ½ΡΠ΅ΡΠ²Π°Π» ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠΈ, ΠΌΠΈΠ½ | 90 |
tracks |
ΠΠΊΠ»ΡΡΠΈΡΡ ΡΠ±ΠΎΡ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΡ ΡΡΠ΅ΠΊΠΎΠ² (tsuri) | false |
tracksmod |
Π Π΅ΠΆΠΈΠΌ ΡΡΠ΅ΠΊΠΎΠ²: 0 β Π²ΡΠ΅, 1 β Π΄Π΅Π½Ρ/ΠΌΠ΅ΡΡΡ | 0 |
tracksdelay |
ΠΠ°Π΄Π΅ΡΠΆΠΊΠ° ΠΌΠ΅ΠΆΠ΄Ρ Π·Π°ΠΏΡΠΎΡΠ°ΠΌΠΈ ΠΊ tsuri, ΠΌΡ | 20000 |
tsuri |
URL ΡΠ΅ΡΠ²ΠΈΡΠ° Π°Π½Π°Π»ΠΈΠ·Π° ΡΡΠ΅ΠΊΠΎΠ² | ["http://127.0.0.1:8090"] |
ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΡΠ΅ΠΊΠ΅ΡΠ° ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°ΡΡ: host, alias (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ .onion), useproxy, reqMinute, parseDelay, log, ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ login (u, p) ΠΈΠ»ΠΈ cookie. ΠΠΎΠ»Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ β Π² Data/example.yaml / Data/example.conf.
proxyβ ΠΎΠ±ΡΠΈΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΡΠΎΠΊΡΠΈ (pattern, list, useAuth, username, password, BypassOnLocal).globalproxyβ ΠΌΠ°ΡΡΠΈΠ² ΠΏΡΠ°Π²ΠΈΠ» (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ Π΄ΠΎΠΌΠ΅Π½ΠΎΠ².onionΡΠ΅ΡΠ΅Π· Tor:pattern: "\\.onion",list: ["socks5://127.0.0.1:9050"]).
listenport: 9120
syncapi: https://jacred.example.com
NNMClub:
alias: http://nnmclub....onion
globalproxy:
- pattern: "\\.onion"
list:
- socks5://127.0.0.1:9050ΠΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ Π² JSON (init.conf):
{
"listenport": 9120,
"syncapi": "https://jacred.example.com",
"NNMClub": { "alias": "http://nnmclub....onion" },
"globalproxy": [
{ "pattern": "\\.onion", "list": ["socks5://127.0.0.1:9050"] }
]
}ΠΠΊΡΠΈΠ²Π½ΡΠ΅ (ΠΏΠ°ΡΡΠΈΠ½Π³ ΠΈ/ΠΈΠ»ΠΈ ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ):
Kinozal, NNMClub, Rutor, TorrentBy, Bitru (Π² Ρ.Ρ. Bitru API), Rutracker, Megapeer, Selezen, Toloka, Mazepa, Baibako, Lostfilm, Animelayer.
RIP (ΠΎΡΠΊΠ»ΡΡΠ΅Π½Ρ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΡΠΎΠ»ΡΠΊΠΎ ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ ΡΠΎ ΡΡΠ°ΡΡΡ
Π±Π°Π·):
Anifilm, AniLibria, HDRezka.
Π‘ΠΏΠΈΡΠΎΠΊ Π΄Π»Ρ synctrackers ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΠΎ ΡΡΠ΅ΠΊΠ΅ΡΠ°ΠΌ ΡΠΌ. Π² Data/example.yaml.
- ΠΠ°ΡΡΡΠΎΠΈΡΡ
init.yamlΠΈΠ»ΠΈinit.conf(ΠΏΡΠΈΠΌΠ΅ΡΡ Π²Data/example.yaml,Data/example.conf). - ΠΠΈΠ±ΠΎ ΡΠΊΠ°Π·Π°ΡΡ
syncapiΠ² ΠΊΠΎΠ½ΡΠΈΠ³Π΅ (ΡΠΎΠ³Π΄Π° Π±Π°Π·Π° ΠΏΠΎΠ΄ΡΡΠ³ΠΈΠ²Π°Π΅ΡΡΡ Ρ ΡΠ΅ΡΠ²Π΅ΡΠ°), Π»ΠΈΠ±ΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ cron ΠΏΠΎ ΡΠ°ΠΉΠ»ΡData/crontab(Π²ΡΠ·ΠΎΠ²Ρ/cron/{tracker}/parseΠΈ Π΄Ρ.). Π crontab ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΠΎΡΡ 9117 β ΠΏΡΠΈ ΡΠΌΠ΅Π½Π΅ ΠΏΠΎΡΡΠ° ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΠ΅ URL Π² crontab.
- ΠΠ°ΠΏΡΡΡΠΈΡΡ Tor Π½Π° ΠΏΠΎΡΡΡ 9050.
- Π ΠΊΠΎΠ½ΡΠΈΠ³Π΅ Π·Π°Π΄Π°ΡΡ Π΄Π»Ρ ΡΡΠ΅ΠΊΠ΅ΡΠ°
aliasΡ .onion-Π°Π΄ΡΠ΅ΡΠΎΠΌ ΠΈ Π²globalproxyΠΏΡΠ°Π²ΠΈΠ»ΠΎ Ρpattern: "\\.onion"ΠΈlist: ["socks5://127.0.0.1:9050"](ΠΊΠ°ΠΊ Π² ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π²ΡΡΠ΅).
GET /β Π²Π΅Π±-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ (Π΅ΡΠ»ΠΈweb: true).GET /healthβ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠ°Π±ΠΎΡΡ. ΠΡΠ²Π΅Ρ JSON:{"status":"OK"}.GET /versionβ Π²Π΅ΡΡΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΡΠ²Π΅Ρ JSON:{"version":"1.0.0"}.GET /lastupdatedbβ Π΄Π°ΡΠ°/Π²ΡΠ΅ΠΌΡ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΠ (UTC). ΠΡΠ²Π΅Ρ JSON:{"lastupdatedb":"dd.MM.yyyy HH:mm"}.GET /api/v1.0/confβ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° apikey (?apikey=...).GET /api/v2.0/indexers/{status}/resultsβ ΠΏΠΎΠΈΡΠΊ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ Jackett (query, title, category ΠΈ Ρ.Π΄.).GET /api/v1.0/torrentsβ ΠΏΠΎΠΈΡΠΊ ΡΠΎΡΡΠ΅Π½ΡΠΎΠ² (ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ API).GET /api/v1.0/qualitysβ ΡΠΏΠΈΡΠΎΠΊ ΠΊΠ°ΡΠ΅ΡΡΠ².GET /jsondb/saveβ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ ΠΠ Π½Π° Π΄ΠΈΡΠΊ (ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ syncapi ΡΠΊΡΠΈΠΏΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π½Π΅ Π²ΡΠ·ΡΠ²Π°Π΅Ρ save; ΠΏΡΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠΌ ΠΏΠ°ΡΡΠΈΠ½Π³Π΅ cron Π²ΡΠ·ΡΠ²Π°Π΅Ρ save ΠΏΠΎ ΡΠ°ΡΠΏΠΈΡΠ°Π½ΠΈΡ).GET /stats/*β ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ° (Π΅ΡΠ»ΠΈopenstats: true)./sync/*β ΡΠ½Π΄ΠΏΠΎΠΈΠ½ΡΡ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ (Π΅ΡΠ»ΠΈopensync: true)./cron/{tracker}/*β Π·Π°ΠΏΡΡΠΊ ΠΏΠ°ΡΡΠΈΠ½Π³Π° ΠΏΠΎ ΡΡΠ΅ΠΊΠ΅ΡΠ°ΠΌ (parse, ParseAllTask, UpdateTasksParse, parseMagnet ΠΈ Π΄Ρ. Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΡΠ΅ΠΊΠ΅ΡΠ°).
- .NET 9.0, ΡΠΌ.
JacRed.csproj.
Π‘Π±ΠΎΡΠΊΠ° ΠΏΠΎΠ΄ Linux (amd64/arm64), Windows (x64), macOS (arm64/amd64):
./build.shΠ Π΅Π·ΡΠ»ΡΡΠ°Ρ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ dist/<platform>/ (single-file, self-contained).
ΠΠ±ΡΠ°Π· ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΡΠ΅ΡΠ΅Π· Docker ΠΈΠ»ΠΈ Docker Compose. ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ (init.yaml ΠΈΠ»ΠΈ init.conf) ΠΈ Π΄Π°Π½Π½ΡΠ΅ (Π±Π°Π·Π° fdb, Π»ΠΎΠ³ΠΈ) Ρ
ΡΠ°Π½ΡΡΡΡ Π² ΡΠΎΠΌΠ°Ρ
; ΠΏΡΠΈ ΠΏΠ΅ΡΠ²ΠΎΠΌ Π·Π°ΠΏΡΡΠΊΠ΅ ΠΈΠ· ΠΎΠ±ΡΠ°Π·Π° ΠΊΠΎΠΏΠΈΡΡΡΡΡΡ ΡΠ°ΠΉΠ»Ρ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈΠ· Data/.
docker run -d \
--name jacred \
-p 9117:9117 \
-v jacred-config:/app/config \
-v jacred-data:/app/Data \
--restart unless-stopped \
ghcr.io/jacred-fdb/jacred:latestname: jacred
services:
jacred:
image: ghcr.io/jacred-fdb/jacred:latest
container_name: jacred
restart: unless-stopped
ports:
- "9117:9117"
volumes:
- jacred-config:/app/config
- jacred-data:/app/Data
environment:
- TZ=Europe/London
- UMASK=0027
healthcheck:
test: ["CMD", "curl", "-f", "-s", "--max-time", "10", "http://127.0.0.1:9117/health"]
interval: 30s
timeout: 15s
retries: 3
start_period: 45s
deploy:
resources:
limits:
memory: 2048M
volumes:
jacred-config:
jacred-data:ΠΠΎΠ»Π΅Π·Π½ΠΎ:
- ΠΠΎΠ½ΡΠΈΠ³: ΠΏΠΎΡΠ»Π΅ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π·Π°ΠΏΡΡΠΊΠ° Π½Π°ΡΡΡΠΎΠΉΡΠ΅
init.yamlΠΈΠ»ΠΈinit.confΠ² ΡΠΎΠΌΠ΅jacred-config(Π½Π° Ρ ΠΎΡΡΠ΅: ΠΊΠ°ΡΠ°Π»ΠΎΠ³ ΡΠΎΠΌΠ° Π²docker volume inspect jacred-configβMountpoint). - ΠΠΎΡΡΡ: Π²Π΅Π±-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΈ API Π΄ΠΎΡΡΡΠΏΠ½Ρ Π½Π° ΠΏΠΎΡΡΡ 9117 (ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΠ΅ ΠΌΠ°ΠΏΠΏΠΈΠ½Π³
portsΠΈlistenportΠ² ΠΊΠΎΠ½ΡΠΈΠ³Π΅). - ΠΠ°ΠΌΡΡΡ: ΠΏΡΠΈ Π±ΠΎΠ»ΡΡΠΎΠΉ Π±Π°Π·Π΅ ΠΈΠ»ΠΈ Π°ΠΊΡΠΈΠ²Π½ΠΎΠΌ ΠΏΠ°ΡΡΠΈΠ½Π³Π΅ ΡΠ²Π΅Π»ΠΈΡΡΡΠ΅ Π»ΠΈΠΌΠΈΡ
memoryΠ²deploy.resources.limits. - Π‘Π±ΠΎΡΠΊΠ° ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΎΠ±ΡΠ°Π·Π°: Π² ΠΊΠΎΡΠ½Π΅ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅
docker build -t jacred .ΠΈ Π² ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ Π²ΡΡΠ΅ Π·Π°ΠΌΠ΅Π½ΠΈΡΠ΅ ΠΎΠ±ΡΠ°Π· Π½Π°jacred:latest.
Π ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ router/ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡ Cloudflare Worker Π΄Π»Ρ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΠΈ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΏΠΎ Ρ
ΠΎΡΡΡ/ΠΏΡΡΠΈ Π½Π° ΡΠ°Π·Π½ΡΠ΅ Π±ΡΠΊΠ΅Π½Π΄Ρ (Π΄ΠΎΠΌΠ°ΡΠ½ΠΈΠΉ ΡΠ΅ΡΠ²Π΅Ρ, Tailscale, ΡΡΠ½Π½Π΅Π»ΠΈ, Pages, Vercel) Ρ ΠΊΠ΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°ΠΌΠΈ. ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° β Π² router/README.md.
ΠΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄: github.com/jacred-fdb/jacred.
