شرح تثبيت وإعداد خادم التورنت (Transmission)

نرى كيفية تثبيت وإعداد برنامج نقل عميل BitTorrent على توزيعات BSD و Linux المختلفة. لجعله يقوم بتنزيل ملفات التورنت المضافة تلقائيًا. وفصل الملفات التي يتم تنزيلها حاليًا عن الملفات المكتملة. وكذلك كيفية إدارتها عن بُعد.


التثبيت

transmission-daemon عادةًَ لا يتم شحنها مع كل توزيعات لينكس. ومع ذلك ، من الجيد دائمًا التحقق مما إذا كان مثبتًا على نظامك أم لا. يرجى الإطلاع على: كيفية التحقق عما إن كانت الحزمة مثبته من عدمه.

لتثبيتها على:

Debian and its based distrosFedoraredhat / CentOS / Scientific LinuxSUSE / openSUSEMageiaArchLinux and its based distrosGentooVoid LinuxAlpine LinuxFreeBSDMacOS X

على فيدورا – Fedora:

$ dnf install transmission-daemon

على سوزي – SUSE / أوبن سوزي – openSUSE:

$ zypper in transmission-daemon

على ماجيا – Mageia:

$ urpmi transmission-daemon

على جنتو – Gentoo:

$ emerge net-p2p/transmission

على فويد لينكس – Void Linux:

$ xbps-install -S transmission

على الباين – Alpine:

$ apk add transmission-daemon

على فري بي أس دي – FreeBSD:

ًلتثبيت الحزمة التنفيذيه

$ pkg install transmission-daemon

اذا تريد عمل كومبايل لها بنفسك:

استعمال portmaster:

$ portmaster -v net-p2p/transmission-daemon

او الطريقة التقليدية:

$ cd /usr/ports/net-p2p/transmission-daemon
$ make install clean
$ rehash

على ماك أو أس أكس – MacOS X:

اذا تستعمل MacPorts:

$ port install transmission

اذا تستعمل Brew:

$ brew install transmission

بدلاً من ذلك ، يمكنك تنزيل إصدار واجهة المستخدم من الصفحة الرسمية للTransmission.يرجى ملاحظة في هذه الحالة أن ما يعادل settings.json تحت Unix هو: ~/Library/Preferences/org.m0k.transmission.plist.


التكوين المسبق:

إيقاف الخدمة:

أولاً ، كن الجذر ، او استخدم sudo عند الحاجة. ثم ، اوقف خدمة transmission-daemon. هذا شئ مهم جدًا ، لأن جميع الإعدادات والتكوينات المعدلة لن يتم تطبيقها إذا كانت الخدمة لا تزال قيد التشغيل. إلى جانب استعادة الإعدادات القديمة تلقائيًا بمجرد إعادة تشغيل الخدمة أو مع إعادة تشغيل نظامك. إليك كيفية إيقافه:

SystemDSysV initUpstartrunitOpenRC
$ systemctl stop transmission-daemon
$ service transmission-daemon stop
$ initctl stop transmission-daemon

او:

$ stop transmission-daemon
$ sv d transmission-daemon
$ rc-service transmission-daemon stop

او:

$ service transmission-daemon stop

(اطلع على درسنا لكيفية: إدارة الخدمة في systemd و SysVinit و Upstart و runit و OpenRC)

إنشاء المجلدات المطلوبة:

بمجرد إيقاف الخدمة ، دعنا ننظم مجلدات التورنت الخاصة بنا ، أولاً لننشئ الأدلة المطلوبة:

$ mkdir --verbose -p /srv/torrent/{source,pending,completed/{Apps,Audio,Videos,OSes,Games,Misc}}

سوف ينتج لنا هذا الأمر شجرة المجلدات التالية:

/srv/
    |_ torrent/
               |_ completed/
               |          |_ Apps/
               |          |_ Audio/
               |          |_ Games/
               |          |_ Misc/
               |          |_ OSes/
               |          |_ Videos/
               |_ pending/
               |_ source/

لاحظ أنه كان مجرد مثال ، يمكنك اختيار الهيكل الذي تريده. ومع ذلك ، الحد الأدنى من المجلدات المطلوبة في هذا البرنامج التعليمي هو: srv/torrent/completed ، /srv/torrent/pending و /srv/torrent/source.

النسخ الاحتياطي للتكوينات الحالية:

الآن ، حان الوقت لبدء تعديل ملف settings.json الذي يحتوي على تكوينات الإرسال. ويمكن العثور عليها في /etc/transmission-daemon/settings.json. ولكن دعنا أولاً ندعمها ، فقط في حالة خبط الأمور:

$ cp /etc/transmission-daemon/settings.json{,.bkp}

الترتيب:

تحرير settings.json:

حسنًا ، نحن جاهزون لبدء اللعب بها. لذا ، دعنا نفتحه:

$ vim /etc/transmission-daemon/settings.json

يمكنك استخدام محرر النصوص (text editor) المفضل لديك بدلاً من vim.

الملفات والمسارات:

  • pending: الذي يجب تخزين جميع التنزيلات الحالية فيها.
  • completed: الذي يجب تخزين جميع التنزيلات المكتملة فيها.
  • source: يجب أن يشاهد الإرسال هذا المجلد بحثًا عن أي torrents (torrents) جديد حتى يضيفه تلقائيًا.

فقط تأكد من أن كل من المتغيرات التالية في settings.json لها نفس القيم على النحو التالي:

لاحظ أن المتغيرات تقع بين علامتي الاقتباس المزدوجتين " في الجانب الأيسر ، قبل النقطتين مباشرةً : . بينما توجد القيم بعدها ، في الجانب الأيمن بين علامتي الاقتباس " . (على سبيل المثال : download-dir هو متغير ، بينما /srv/torrent/completed هو قيمته).

{
    ...
    "download-dir": "/srv/torrent/completed",
    "incomplete-dir": "/srv/torrent/pending",
    "incomplete-dir-enabled": true,
    "preallocation": 1,
    "rename-partial-files": true,
    "start-added-torrents": true,
    "trash-original-torrent-files": true,
    "umask": 18,
    "watch-dir": "/srv/torrent/source",
    "watch-dir-enabled": true
}

ملاحظات:

  • preallocation: الرقم (0 = إيقاف ، 1 = سريع ، 2 = كامل (أبطأ ولكنه يقلل من تجزئة القرص) ، افتراضي = 1)
  • rename-partial-files: متحول منطقي (افتراضي = صحيح) تم تنزيل ملفات Postfix جزئيًا باستخدام “.part”.
  • trash-original-torrent-files: متحول منطقي (افتراضي = خطأ) حذف torrents المضافة من مجلد المراقبة.
  • umask: الرقم (افتراضي = 18) لتعيين mask إنشاء وضع ملف الإرسال. راجع صفحة umask (2) و umask في ويكيبيديا للمزيد من المعلومات. المستخدمون الذين يريدون أن تكون الtorrents المحفوظة لهم قابلة للكتابة للعالم ، قد يرغبون في تعيين هذه القيمة ب0. ضع في اعتبارك أن لغة الترميز json لا تقبل إلا الأرقام في الأساس 10 ، لذا فإن umask (2) تدوين ثماني “22” مكتوب بلغة settings.json مثل 18.
  • السطر الأخير الذي يحتوي على متغير وقيمة في ملف settings.json الخاص بك ، قبل أن ينتهي } مباشرة ، يجب ألا ينتهي بـ , وإلا ، فسيسبب مشاكل في التكوينات الخاصة بك.

عرض النطاق الترددي (Bandwith) – التحكم في السرعات:

فيما يلي هي سىرعة التنزيل/التحميل الافتراضية:

{
    ...
    "speed-limit-down-enabled": true,
    "speed-limit-down": 600,
    "speed-limit-up-enabled": true,
    "speed-limit-up": 300,
    "upload-slots-per-torrent": 14,
    ...
}

لاحظ انه:

  1. إذا كنت لا ترغب في حد سرعات التنزيل و/أو التحميل ، فما عليك سوى تغيير القيمة أعلاه من true إلى false.
  2. الأرقام في speed-limit-down و speed-limit-up هي أرقام KB/s.

السرعة البديلة (وضع السلحفاة)

إذا كنت تريد تعيين السرعة البديلة وتمكينها (يُعرف أيضًا باسم وضع السلاحف):

{
    ...
    "alt-speed-enabled": true,
    "alt-speed-down": 100,
    "alt-speed-up": 50,
    ...
}

جدولة الأشياء:

بدلاً من ذلك ، يمكنك جدولة ذلك. على سبيل المثال ، دعنا نجدولها لتنشيط السرعة البديلة (وضع السلحفاة) كل يوم من الساعة 2 مساءً حتى الساعة 2 صباحًا:

{
    ...
    "alt-speed-time-enabled": true,
    "alt-speed-time-begin": 840,
    "alt-speed-time-end": 120,
    "alt-speed-time-day": 127,
    "idle-seeding-limit-enabled": false,
    "idle-seeding-limit": 30,
    "ratio-limit-enabled": false,
    "ratio-limit": 2,
    ...
}

انتظر! ولكن كيف؟
حسنًا ، تأخذ قيم alt-speed-time-time و alt-speed-time-end بالدقائق المحسوبة من منتصف الليل (00:00 وهو 12:00 AM). لذا ، في مثالنا المذكور أعلاه ، أردنا أن يتم تنشيطه في تمام الساعة . دعنا أولاً نحول الساعة 2:00 م إلى وضع 24 ساعة: 12 + 2 = 14. ثم ، دعنا نحولها إلى دقائق ، حيث أن كل ساعة لديها 60 دقيقة: 14 × 60 = 840.
وقم بإلغاء تنشيطه عند 2 ص ، وهو 2 × 60 = 120
القاعدة هنا هي:

تحويل الوقت في AM ، أو في وضع 24 ساعة:
(ساعة × 60) + دقيقة

تحويل الوقت في PM:
(ساعة × 60) + دقيقة + 720

أما بالنسبة إلى alt-speed-time-day ، فهو في الواقع رقم عشري يتم تحويله من ثنائي.(Binary) انتظر! لا تخطيه ، إنه سهل جداً!. وهناك طريقتان للحصول على هذا الرقم العشري.

الطريقة 1: ثنائي إلى عشري

لذا ، نظرًا لأن الأسبوع يحتوي على 7 أيام ، سيكون لدينا 7 أصفار: 0000000. وكل صفر يمثل حالة يوم (0 = إيقاف ، 1 = تشغيل). من الأحد إلى السبت (من اليمين إلى اليسار).
على سبيل المثال ، إذا أردنا تنشيطه في عطلات نهاية الأسبوع فقط ، فيجب استبدال اصفار السبت والأحد بواحد.

 +----------------------------------------------------------------------+
 | Saturday | Friday | Thursday | Wednesday | Tuesday | Monday | Sunday |
 +----------------------------------------------------------------------+
 |    1     |   0    |    0     |     0     |    0    |   0    |   1    |
 +----------------------------------------------------------------------+

الآن لدينا كود ثنائي هو 1000001 ، يمكننا تحويله إلى رقم عشري ، باستخدام BASH:

$ echo $((2#1000001))

الا وهو: 65

الطريقة 2: طريقة بديلة:

إذا كنت لا تزال تجدها معقدة. إليك طريقة بديلة أسهل:
تخيّل يوم الأحد بقيمة 1 ، ولكل يوم تالٍ ضعف قيمة اليوم السابق. وبالتالي:

   Sunday = 1

   Monday = 2 x (Sunday's value)
          = 2 x 1
          = 2

  Tuesday = 2 x (Monday's value)
          = 2 x 2
          = 4

Wednesday = 2 x (Tuesday's value)
          = 2 x 4
          = 8

 Thursday = 2 x (Wednesday's value)
          = 2 x 8
          = 16

   Friday = 2 x (Thursday's value)
          = 2 x 16
          = 32

 Saturday = 2 x (Friday's value)
          = 2 x 32
          = 64

عظيم! الآن ، دعونا نكتبها ، هل نقوم بما يلي:

 +----------------------------------------------------------------------+
 | Saturday | Friday | Thursday | Wednesday | Tuesday | Monday | Sunday |
 +----------------------------------------------------------------------+
 |    64    |   32   |    16    |     8     |    4    |   2    |   1    |
 +----------------------------------------------------------------------+

الآن ، قم بتلخيص قيم كل يوم تريد تنشيط وضع السلاحف عليه.
مثال 1: كل يوم:
1 + 2 + 4 + 8 + 16 + 32 + 64 = 127
مثال 2: عطلات نهاية الأسبوع (السبت والأحد):
1 + 64 = 65

ملاحظات:

  • إذا كنت ترغب في تعيين حد نسبة البذر ، فحدد الحد الأقصى لعدد الحصة في ratio-limit الذي يجب إيقاف البذر بمجرد الوصول إليه ، ثم قم بتغيير قيمة ratio-limit-enabled إلى true.

الإدارة عن بعد (RPC):

يتاح لك ال transmission إدارته محليًا أو عن بُعد عبر واجهة مستخدم الويب. انها بسيطة جداً كل ما عليك ان تفعله ان تشغل المتصفح (browser) والتوجه إلى http://hostname:9091 أو http://IPAddress:9091. هذه في الواقع ميزة لطيفة ومهمة للغاية عند تثبيتها على جهاز افتراضي أو خادم مخصص. حتى إذا قمت بتثبيته على سطح المكتب اليومي. في بعض الأحيان قد تحتاج إلى الوصول إليها وإدارتها من الأجهزة الذكية أو جهاز كمبيوتر آخر.
لذلك ، لتمكينه ، يجب عليك تعيين true كقيمة إلى rpc-enabled ، ثم تعديل متغيرات الإعداد التالية حسب الحاجة:

{
    ...
    "rpc-authentication-required": true,
    "rpc-bind-address": "0.0.0.0",
    "rpc-enabled": true,
    "rpc-password": "this-password-will-get-encrypted",
    "rpc-port": 9091,
    "rpc-url": "/transmission/",
    "rpc-username": "transmission",
    "rpc-whitelist": "127.0.0.1,192.168.0.*",
    "rpc-whitelist-enabled": true,
    ...
}
  • rpc-authentication-required:منطقي (افتراضي = خطأ). إذا كنت تريد مصادقة المستخدمين قبل السماح لهم بإدارة البث ، فقم بتعيين هذا المتغير على “true” ، ثم حدد اسم المستخدم المستخدم في rpc-username وكلمة المرور في rpc-password.
  • rpc-bind-address: String (افتراضي = “0.0.0.0”) مكان الاستماع لاتصالات RPC.
  • rpc-enabled: منطقي (افتراضي = true). إذا كنت ترغب في تعطيل Web-UI ، فما عليك سوى تعيين هذا المتغير على false ، وإلا فاتركه true.
  • rpc-password: String. مهما كانت كلمة المرور التي تحددها هنا ، سيتم تشفيرها بمجرد بدء تشغيل خدمة Transmission-daemon.
  • rpc-port: الرقم (افتراضي = 9091).
  • rpc-url: String (افتراضي = /transmission/).
  • rpc-username: String. حدد اسم المستخدم (username) المطلوب الذي تريد استخدامه.
  • rpc-whitelist: string (تحدد قائمة بعناوين IP مفصولة بفواصل والتي يُسمح لها بالوصول إلى واجهة مستخدم واليب لل Transmission من. يمكن تحديد أحرف البدل في العنوان باستخدام “*”. مثال: “127.0.0.1،192.168.1. *” ، افتراضي: “127.0.0.1”).
  • rpc-whitelist-enabled: منطقي (افتراضي = true).

الطابور:

بدلاً من تنزيل جميع ملفات التورنت (Torrent) في وقت واحد ، يمكنك تنظيم عمليات التنزيل والتحميل عن طريق السماح بتنزيل ملفات N بينما تبقى الملفات الأخرى في قائمة انتظار تنتظر دورها. على النحو التالي:

{
    ...
    "download-queue-enabled": true,
    "download-queue-size": 5,
    "queue-stalled-enabled": true,
    "queue-stalled-minutes": 30,
    "seed-queue-enabled": false,
    "seed-queue-size": 10,
    ...
}
  • download-queue-enabled: منطقي (افتراضي = true) عندما يكون صحيحًا ، سينزل الــ Transmission فقط download-queue-size non-stalled الtorrents في آن واحد.
  • download-queue-size: الرقم (افتراضي = 5) انظر download-queue-enabled.
  • queue-stalled-enabled: منطقي (افتراضي = true) عندما يكون ذلك True ، يتم التعامل مع الTorrents التي لم تشارك البيانات الخاصة ب queue-stalled-minutes تعتبر على أنها “متوقفة” ولا يتم احتسابها ضمن حدود queue-download-size و seed-queue-size .
  • queue-stalled-minutes: الرقم (افتراضي = 30) انظر queue-stalled-enabled.
  • seed-queue-enabled: منطقي (افتراضي = خطأ) عند صواب. Transmission سوف يبذور فقط الــ seed-queue-size الtorrents غير المتوقفة دفعة واحدة.
  • seed-queue-size: الرقم (افتراضي = 10) انظر seed-queue-enabled.

الأقران:

الــ Transmission يتيح لك أيضًا التحكم في إعدادات النظراء وتكوينها كما تريد. مثل كما ترى ادناه:

{
    ...
    "bind-address-ipv4": "0.0.0.0",
    "bind-address-ipv6": "::",
    "peer-congestion-algorithm": "",
    "peer-id-ttl-hours": 6,
    "peer-limit-global": 240,
    "peer-limit-per-torrent": 60,
    "peer-socket-tos": "default",
    ...
}
  • bind-address-ipv4: String (افتراضي = “0.0.0.0”) مكان الاستماع لاتصالات الأقران.
  • bind-address-ipv6: String (افتراضي = “::”) مكان الاستماع لاتصالات الأقران.
  • peer-congestion-algorithm: String. تم توثيق ذلك في خوارزمية التحكم في الازدحام في بروتوكول التحكم في الإرسال (TCP).
  • peer-id-ttl-hours: الرقم (افتراضي = 6) قم بإعادة تدوير معرف النظير المستخدم في الtorrents العامة بعد N من الاستخدام.
  • peer-limit-global: الرقم (افتراضي = 240)
  • peer-limit-per-torrent: الرقم (افتراضي = 240)
  • peer-socket-tos: String (افتراضي = “default”) قم بتعيين معلمة نوع الخدمة (TOS) لحزم TCP الصادرة. القيم المحتملة هي “افتراضي” و “lowcost” و “الإنتاجية” و “lowdelay” و “الموثوقية”. يوصى باستخدام القيمة “lowcost” إذا كنت تستخدم جهاز توجيه ذكي ، ويجب ألا تضر بأي حال.

منافذ الأقران:

يمكنك أيضًا التحكم في منافذ الأقران ، باستخدام المتغيرات التالية:

{
    ...
    "peer-port": 51413,
    "peer-port-random-high": 65535,
    "peer-port-random-low": 49152,
    "peer-port-random-on-start": true,
    "port-forwarding-enabled": true,
    ...
}
  • peer-port: الرقم (افتراضي = 51413).
  • peer-port-random-high: الرقم (افتراضي = 65535).
  • peer-port-random-low: الرقم (افتراضي = 1024).
  • peer-port-random-on-start: منطقي (افتراضي = False).
  • port-forwarding-enabled: منطقي (افتراضي = True) مكن التوصيل والتشغيل العالمي او NAT-PMP.

قائمة الحظر:

A Blocklist is third-party list of peer addresses to block. This can be used to block peers whose addresses are believed to belong to spyware or malware manufacturers.

{
    ...
    "blocklist-enabled": false,
    "blocklist-url": "http://www.example.com/blocklist",
    ...
}
  • blocklist-url: ما عليك سوى تحديد عنوان الــ URL ، الذي يحتوي على قائمة عناوين URL التي ترغب في حظرها.
  • blocklist-enabled:إذا كنت تريد تنشيطه ، فما عليك سوى ضبطه على true.

متفرقات:

إليك بعض الإعدادات الإضافية التي يمكنك تعديلها واللعب بها:

{
    ...
    "cache-size-mb": 4,
    "dht-enabled": true,
    "encryption": 1,
    "lazy-bitfield-enabled": true,
    "lpd-enabled": false,
    "message-level": 1,
    "pex-enabled": true,
    "prefetch-enabled": 1,
    "scrape-paused-torrents-enabled": true,
    "script-torrent-done-enabled": false,
    "script-torrent-done-filename": "",
    "utp-enabled": true,
    ...
}
  • cache-size-mb: الحجم (افتراضي = 4) ، بالميغابايت ، لتخصيص ذاكرة التخزين المؤقت لذاكرة الإرسال. يتم استخدام ذاكرة التخزين المؤقت للمساعدة في دفعة القرص IO معًا ، لذلك يمكن استخدام زيادة حجم ذاكرة التخزين المؤقت لتقليل عدد عمليات قراءة القرص وكتابته. القيمة الافتراضية هي 2 إذا تم تكوينها باستخدام –enable-lightweight.
  • dht-enabled: منطقي (افتراضي = True) تمكين جدول التجزئة الموزع (DHT).
  • encryption: الرقم (0 = يفضل الاتصالات غير المشفرة ، 1 = يفضل الاتصالات المشفرة ، 2 = يتطلب اتصالات مشفرة ؛ افتراضي = 1) تفضيل التشفير. قد يساعد التشفير في الالتفاف حول بعض تصفية ISP ، ولكن على حساب استخدام CPU أعلى قليلاً.
  • lazy-bitfield-enabled: Boolean (افتراضي = true) قد يساعد في الالتفاف حول بعض تصفية ISP. مواصفات Vuze.
  • lpd-enabled: منطقي (افتراضي = False) تمكين اكتشاف النظير المحلي (LPD).
  • message-level: الرقم (0 = لا شئ ، 1 = خطأ ، 2 = معلومات ، 3 = تصحيح ، افتراضي = 2) تعيين الإسهاب لرسائل الtransmission.
  • pex-enabled: منطقي (افتراضي = True) تمكين [http://en.wikipedia.org/wiki/Peer_exchange Peer Exchange (PEX)].
  • prefetch-enabled: منطقي (افتراضي = true). عند التمكين ، سيشير الإرسال إلى نظام التشغيل الذي يحدد البيانات التي من المقرر أن يقرأها من القرص لتلبية الطلبات من الزملاء. على Linux ، يتم ذلك بتمرير POSIX_FADV_WILLNEED إلى posix_fadvise (). في OS X ، يتم ذلك بتمرير F_RDADVISE إلى fcntl (). هذا الافتراضي إلى خطأ إذا تم تكوينه مع -enable-lightweight.
  • scrape-paused-torrents-enabled: منطقي (افتراضي = true)
  • script-torrent-done-enabled: منطقي (افتراضي = False) قم بتشغيل برنامج نصي عند اكتمال التورنت.
  • script-torrent-done-filename: String (افتراضي = “”) مسار البرنامج النصي.
  • utp-enabled: منطقي (افتراضي = True) تمكين بروتوكول النقل الصغير (µTP).

هذا كل شئ استمتعوا 🙂

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

هذا الموقع يستخدم Akismet للحدّ من التعليقات المزعجة والغير مرغوبة. تعرّف على كيفية معالجة بيانات تعليقك.