SSD Nodes Learn Hosting plans →
الأدلة Matt Connorبقلم Matt Connor · آخر تحديث في 2026-08-27

استضافة Chaptarr للكتب الصوتية على VPS

تعرّف إلى بديل Readarr بعد إيقافه في 27 June 2025، وشغّل Chaptarr عبر Compose مع ضبط PUID وPGID وتجاوز مشكلة البيانات الوصفية.

ما هو Chaptarr، ولماذا يحتاج إليه مستخدمو Readarr

Chaptarr هو نسخة متفرعة من Readarr تدير الكتب الصوتية والكتب الإلكترونية من مثيل واحد. يراقب الإصدارات الجديدة، ويرسلها إلى عميل التنزيل لديك، ثم يعيد تسمية الملفات الناتجة وينظمها داخل مكتبتك. لا يشغّل أي محتوى، لذلك استخدمه مع مشغّل مثل Audiobookshelf.

أُوقف Readarr في 27 June 2025. يوضح إشعار فريق Servarr السبب: أصبحت البيانات الوصفية للمشروع غير قابلة للاستخدام، وتعثر جهد المجتمع للانتقال إلى Open Library. وأُرشف المستودع. أدى ذلك إلى ترك مجموعات الكتب والكتب الصوتية من دون مدير تتم صيانته، فتولى Chaptarr هذه المهمة. ويحافظ على البنية التي تعرفها من Sonarr وRadarr، مثل indexers وdownload clients وquality profiles وroot folders، ويضيف إمكانات لإدارة الكتب الصوتية: تنظيم يعتمد على الراوي، ودعم إصدارات متعددة للعنوان نفسه، ودعم M4B وMP3 ذي الفصول، وتحويل MP3 إلى M4B.

استخدم هذا الدليل وسم الصورة chaptarr/chaptarr:0.9.925، وكان أحدث إصدار في 9 August 2026. يصف Chaptarr نفسه بأنه برنامج تجريبي. اقرأ قسم الصيانة قرب نهاية الدليل قبل توجيهه إلى مكتبة لا يمكنك استبدالها.

ما تحتاج إليه قبل البدء

VPS يعمل عليه Docker وCompose plugin، مع مساحة قرص كافية للمكتبة. ملفات الكتب الصوتية كبيرة، وقد يحتفظ الاستيراد الذي لا يستطيع استخدام hardlinks بنسختين من الملف مؤقتاً. يوضّح قسم وحدات التخزين أدناه ذلك. إذا لم يكن Docker مثبتاً على الخادم بعد، فابدأ من تثبيت Docker وتشغيله على VPS ثم عُد إلى هنا.

يتوفر Chaptarr حالياً على شكل Docker image فقط. ويجري حالياً تطوير إصدار أصلي لنظام Windows، ولا توجد حزمة توزيع. يخزّن container قاعدة بياناته في /config باستخدام SQLite افتراضياً، ويمكنه استخدام خادم PostgreSQL خارجي عبر متغيرات البيئة Chaptarr__Postgres__* إذا كنت تشغّل خادماً من هذا النوع مسبقاً. يُعد SQLite الخيار المناسب لمستخدم واحد على خادم واحد.

خدمة Compose الخاصة بـ Chaptarr

تُضاف هذه الخدمة إلى stack موجود مسبقاً. وهي تثبّت tag مُصدراً، وتنشر واجهة الويب على loopback فقط، وتنضم إلى الشبكة التي يستخدمها عميل التنزيل لديك حالياً.

services:
  chaptarr:
    image: chaptarr/chaptarr:0.9.925
    container_name: chaptarr
    environment:
      - PUID=1000
      - PGID=1000
      - UMASK=002
      - TZ=Europe/Berlin
    volumes:
      - ./config:/config
      - /srv/media/audiobooks:/audiobooks
      - /srv/media/ebooks:/ebooks
      - /srv/media/downloads:/downloads
    ports:
      - 127.0.0.1:8789:8789
    restart: unless-stopped
    networks:
      - arr

networks:
  arr:
    external: true

يعني السطر external: true أن «هذه الشبكة موجودة مسبقاً، فألحق الخدمة بها». استخدمه عندما يكون Prowlarr وعميل التورنت لديك قادمين من مشروع Compose مختلف، لأن ملف Compose ثانياً ينشئ شبكة معزولة خاصة به في الحالة الافتراضية، وعندها لن يتمكن Chaptarr من حل qbittorrent بالاسم. احصل على الاسم الفعلي من docker network ls. إذا كان stack لديك موجوداً في ملف واحد بالفعل، فأضف خدمة chaptarr: إلى ذلك الملف واحذف كتلة networks: بأكملها بدلاً من ذلك. يشرح stack كامل من arr تحت Docker Compose البنية الأوسع، كما تشرح طريقة حل أسماء شبكات Compose وأسماء الخدمات قواعد التسمية.

أنشئ مجلد الإعداد بنفسك، ثم شغّل الخدمة.

mkdir -p ./config
sudo chown 1000:1000 ./config
docker compose up -d
docker compose ps
docker compose logs -f chaptarr

يجب أن يعرض docker compose ps الحاوية بالحالة Up. أما الحاوية المدرجة بالحالة Restarting فقد فشلت في البدء ويُعاد تشغيلها، ويكون السبب في الغالب مجلد الإعداد. يتوقف تدفق السجل بمجرد أن يستمع التطبيق على المنفذ 8789.

PUID وPGID والمجلد الذي ينشئه Docker بملكية root

يستخدم Chaptarr القيمتين الافتراضيتين PUID=99 وPGID=100 عندما تتركهما دون تعيين. هذه هي قيم unRAID، وعلى VPS يعمل بنظام Ubuntu عادي تكونان مرتبطتين بالمستخدم nobody، لذلك تُحفظ الملفات بمالك لا يملك حساب تسجيل الدخول لديك صلاحية الكتابة إليه. اعرض أرقامك الخاصة باستخدام id -u وid -g، ثم ضعها في الملف.

يجب أن تستخدم كل حاوية تصل إلى الملفات نفسها الزوج نفسه من القيم. يكتب عميل التنزيل إلى /srv/media/downloads، ثم ينقل Chaptarr الملف إلى /srv/media/audiobooks، ويقرأه مشغّل الوسائط هناك. إذا كتب عميل التنزيل بصفة 1000:1000 وشُغِّل Chaptarr بصفة 99:100، تفشل عملية الاستيراد لأن Chaptarr لا يستطيع حذف ملف لا يملكه أو نقله. تجعل UMASK=002 الملفات الجديدة قابلة للكتابة من المجموعة، وهذا هو المطلوب عندما تشترك عدة حاويات في مجموعة وسائط واحدة. يوضّح كيفية ربط PUID وPGID بمستخدم الحاوية والملفات على المضيف التعيين الكامل.

يحذّر README من مشكلة محددة، ويجدر تكرارها. إذا لم يكن ./config موجوداً عند تشغيل docker compose up، ينشئه Docker تلقائياً بملكية root:root. تعمل الحاوية بعد ذلك باستخدام UID 1000، ولا تستطيع الكتابة إلى قاعدة بياناتها، فتخرج وتُعاد عملية تشغيلها إلى ما لا نهاية. تحقّق باستخدام ls -ln ./config، الذي يعرض المالكين بأرقامهم بدلاً من أسمائهم. يعني ظهور صفرين أن root يملك المجلد. أصلح ذلك باستخدام sudo chown -R 1000:1000 ./config، ثم شغّل الحاوية مرة أخرى.

يحمّل التخطيط أعلاه /audiobooks و/ebooks و/downloads كـbinds منفصلة، بما يطابق أمر التشغيل الخاص بالمشروع. يسهل فهمه، لكنه يترتب عليه أثر فعلي واحد: تتوقف hardlinks عن العمل.

الـhardlink هو اسم ثانٍ للبيانات نفسها على القرص. لا يستهلك مساحة إضافية، ويُنشأ فوراً، ولذلك تفضّله عائلة arr على نسخ الملفات. يعمل hardlink داخل filesystem واحد فقط. داخل الحاوية، هذه ثلاث نقاط mount منفصلة، لذلك ترفض النواة إنشاء الرابط حتى عندما تكون مسارات المضيف على القرص نفسه. اختبر ذلك بنفسك.

docker exec chaptarr sh -c 'touch /downloads/linktest && ln /downloads/linktest /audiobooks/linktest'

يفشل الأمر بخطأ ينتهي بـ Invalid cross-device link. هذا يعني أن النواة ترفض إنشاء رابط عبر نقاط mount، وهو السبب المحدد الذي يجعل Chaptarr ينتقل إلى نسخ الملف. النسخة صحيحة، لكنها أبطأ، ويظل الكتاب الصوتي موجوداً مرتين إلى أن تحذف torrent، وهو ما لن تفعله ما دمت تواصل seed لها. احذف /srv/media/downloads/linktest بعد ذلك.

للحفاظ على hardlinks، حمّل دليلاً أباً واحداً بدلاً من ذلك:

    volumes:
      - ./config:/config
      - /srv/media:/data

بعد ذلك، اضبط المجلدين الجذرين داخل Chaptarr على /data/audiobooks و/data/ebooks، وامنح عميل التنزيل mount نفسه /srv/media:/data حتى ترى الحاويتان مساراً متطابقاً واحداً. تأكد أولاً من أن جانب المضيف موجود على filesystem واحد: يجب أن يطبع df -h /srv/media/downloads /srv/media/audiobooks القيمة نفسها في عمود Filesystem لكلا المسارين. تعني القيم المختلفة وجود أقراص مختلفة، ولا يمكن لأي تخطيط mount إنشاء hardlinks عبرها. يتناول bind mounts مقارنةً بـ named volumes للوسائط المفاضلة بين هذا الخيار والتخزين المسمّى.

الوصول إلى واجهة الويب من دون تعريضها للإنترنت

يستخدم سطر المنفذ 127.0.0.1 لسبب محدد. لا تحمي ufw deny 8789 منفذ Docker المنشور، لأن Docker يكتب قواعد NAT (ترجمة عناوين الشبكة) الخاصة به في سلسلة يصل إليها kernel قبل سلسلة قواعد ufw. لذلك تُعاد توجيه حركة الشبكة قبل أن يفحص النظام قاعدتك. يتسبب هذا السلوك في إرباك المستخدمين باستمرار، وهو موضّح في سبب تجاهل منفذ Docker المنشور لقواعد ufw. يؤدي الربط بعنوان loopback إلى تجاوز هذه المشكلة بالكامل.

يمكنك الوصول إلى الواجهة عبر نفق SSH من جهازك:

ssh -N -L 8789:127.0.0.1:8789 you@your-server

اترك النفق قيد التشغيل وافتح http://127.0.0.1:8789 في متصفحك. أعد إعداد المصادقة عند التشغيل الأول. لا تفكر في وضع reverse proxy مع TLS (أمان طبقة النقل) أمامها إلا بعد ذلك. عندما تستخدم نفقاً إلى ثلاث أو أربع من هذه الأدوات، ولكل أداة كلمة مرور منفصلة، يكون الحل الأنظف هو وضع الـproxy خلف خادم تسجيل دخول موحّد مستضاف ذاتياً مثل Authentik، بحيث تغطي عملية تسجيل دخول واحدة كل التطبيقات، ويؤدي إلغاء واحد إلى إغلاق الوصول إليها جميعاً.

ربط أدوات الفهرسة وعميل التنزيل

يدعم Chaptarr البروتوكولات القياسية لأدوات الفهرسة وعملاء التنزيل في منظومة arr، لذلك يدفع Prowlarr أدوات الفهرسة إليه بالطريقة نفسها التي يستخدمها مع Sonarr، كما تتصل به عملاء التورنت وUsenet المعتادة دون إعدادات خاصة.

هناك إعداد واحد يربك معظم المستخدمين. عندما يطلب Chaptarr اسم مضيف عميل التنزيل، لا تكتب localhost أو 127.0.0.1. داخل الحاوية، يشير ذلك العنوان إلى الحاوية نفسها، لذلك يحاول Chaptarr الاتصال بمنفذه 8080 ويبلغ عن تعذر الاتصال. استخدم اسم الحاوية، qbittorrent، مع المنفذ 8080. تأكد من أن الحاويتين متصلتان بشبكة واحدة باستخدام docker network inspect arr، الذي يعرض أسماء جميع الحاويات المتصلة.

إذا كان عميل التنزيل يعمل عبر حاوية VPN باستخدام network_mode: "service:gluetun"، فلن يكون له اسم خاص به على الشبكة، لأنه يشارك Gluetun مساحة أسماء الشبكة. وجّهه إلى gluetun على المنفذ الذي يعرّضه Gluetun. يرد هذا الترتيب والتوجيه المرتبط به في توجيه عميل تنزيل عبر Gluetun.

تكلفة انتقال Readarr: ما الذي ينكسر فعلياً

لا يتوافق Chaptarr مع مصادر بيانات Readarr الوصفية. فهو يحل أسماء العناوين والمؤلفين والإصدارات عبر مسار معالجة خاص به لدى عدة موفّرين، لذلك لا تعني المعرّفات التي خزّنها Readarr شيئاً هنا. لا توجد إمكانية لاستيراد قاعدة البيانات، ولا مسار ترقية مباشر.

بالنسبة إلى مكتبة موجودة، هذا يعني أن الملفات آمنة، لكن الإعدادات لن تنتقل. لا تلمس هذه العملية أي شيء موجود على القرص. أضف مجلداً جذرياً، وشغّل استيراد المكتبة، وسيطابق Chaptarr الملفات التي يجدها مع بياناته الوصفية الخاصة. ما ستعيد بناءه يدوياً هو: ملفات تعريف الجودة، وتنسيق التسمية، وإعدادات indexer وclient، وكل تطابق يختاره Chaptarr بشكل خاطئ. ستحتاج المكتبة الكبيرة إلى مراجعة وتصحيحات يدوية، لذلك خصص لها أمسية لا عشر دقائق.

نفّذ ذلك بالترتيب التالي. أوقف حاوية Readarr، لكن احتفظ بوحدة تخزين الإعدادات، حتى تتمكن من قراءة إعداداتك القديمة أثناء إعادة إدخالها. وجّه Chaptarr أولاً إلى مجلد صغير، وتحقق من التطابقات قبل استيراد كل شيء. لا تزل الحاوية القديمة إلا بعد أن تتأكد من أن كل شيء يعمل كما تريد.

هناك تفصيل يتعلق بالخصوصية من المفيد معرفته قبل فحص مكتبة كاملة: تُرسل عمليات البحث عن البيانات الوصفية إلى api2.chaptarr.com. يذكر README أن هذه الطلبات قد تتضمن معرّفات الموفّرين، ونص البحث، ونوع الوسائط، والوسوم، وأسماء الملفات، وأنها تستبعد المسارات الكاملة وهوية المستخدم وبيانات الاعتماد. تغادر أسماء الملفات خادمك. هذا أمر طبيعي بالنسبة إلى خدمة بيانات وصفية، لكن ينبغي أن تتخذ قرارك بشأنه عن قصد.

سلِّم الكتب الصوتية إلى مشغّل

ينظّم Chaptarr الملفات. أمّا تشغيلها فهو مهمة برنامج آخر. ويُعد Audiobookshelf الشريك المعتاد لأنه يتتبع موضع الاستماع عبر الأجهزة، ويوفّر تطبيقات للهواتف. صورته الرسمية هي ghcr.io/advplyr/audiobookshelf:latest، وينشر مثال Compose الموثّق المنفذ 13378 على المضيف إلى المنفذ 80 داخل الحاوية.

  audiobookshelf:
    image: ghcr.io/advplyr/audiobookshelf:latest
    container_name: audiobookshelf
    ports:
      - 127.0.0.1:13378:80
    volumes:
      - ./abs/config:/config
      - ./abs/metadata:/metadata
      - /srv/media/audiobooks:/audiobooks
    environment:
      - TZ=Europe/Berlin
    restart: unless-stopped

اربط مسار المضيف نفسه الذي يكتب Chaptarr الملفات فيه، ثم أضف /audiobooks كمكتبة من داخل واجهة الويب. سيظهر الاستيراد الجديد بعد الفحص التالي.

إذا كنت تشغّل Jellyfin بالفعل، يمكنك إضافة المجلد كمكتبة فيه، وسيشغّل الملفات. لكن سلوك استئناف التشغيل يكون أضعف مع ملف كتاب صوتي واحد طويل مقارنةً بخادم مخصص للكتب الصوتية. يشرح تشغيل Jellyfin كخادم وسائط على VPS إعداد هذا الجانب. أمّا جزء الكتب الإلكترونية، فسلّم /srv/media/ebooks إلى تطبيق قراءة. تنتهي مهمة Chaptarr عندما يُسمّى الملف ويُنظّم في مكانه.

مخاطر الصيانة: الترخيص، وبيئة التشغيل، ووسم سريع التغيّر

Chaptarr مرخّص بموجب GPL-3.0، وحقوق الطبع والنشر محفوظة لمساهمي Chaptarr، مع تضمين أجزاء من فريق Servarr. لذلك تظل الشيفرة مفتوحة، ويمكن لأي شخص إنشاء fork لها مجدداً إذا توقف هذا المشرف عن صيانتها. يعتمد المشروع على .NET 10، وهو إصدار الدعم طويل الأمد الحالي من بيئة التشغيل اعتباراً من August 2026. وهذا يعني أن الأساس مدعوم لسنوات بدلاً من أشهر. وتهم الحقيقتان إذا كنت تقيّم ما إذا كان هذا المشروع سيظل موجوداً في العام المقبل.

تتغير أرقام الإصدارات بسرعة. تُنشر الإصدارات كإصدارات pre-release، وقد صدر 0.9.925 في اليوم نفسه الذي أُعد فيه هذا الشرح. ثبّت وسمًا محدداً. استخدام latest يعني أن docker compose pull غير التفاعلي قد ينقلك عدة إصدارات خلال أسبوع، كما أن fork حديثاً بهذا العمر قد يغيّر API بين الإصدارات، مما يكسر أي script أو dashboard كتبته للعمل معه. تثبيت الإصدار عادة تستحق تطبيقها على كل مشروع حديث تستضيفه بنفسك. ولهذا السبب ينشر شرح تشغيل openGym كمتتبع تمارين مستضاف ذاتياً من git tag ثابت للسبب نفسه تماماً.

أنشئ نسخة احتياطية قبل كل ترقية، ثم نفّذ الترقية عمداً.

docker compose stop chaptarr
sudo tar czf chaptarr-config-backup.tgz ./config
docker compose start chaptarr
docker compose pull chaptarr
docker compose up -d chaptarr

يفيد المشروع بعدم تسجيل أي حوادث لفقدان البيانات خلال نحو ستة أشهر ومع أكثر من أحد عشر ألف مستخدم، لكنه لا يزال يوصي بالاحتفاظ بالنسخ الاحتياطية وعدم توجيهه إلى مكتبة لا يمكنك تحمل فقدانها. تعامل مع كلا الجانبين بجدية. انسخ أرشيف الإعدادات إلى خارج الخادم، لأن النسخة الاحتياطية الموجودة على القرص نفسه الذي تحمي بياناته ليست نسخة احتياطية فعلية. يكفي ملف tarball واحد فقط لأن Chaptarr يحتفظ بحالته في ملف SQLite واحد ضمن /config؛ أما أي بيانات موجودة على خادم قاعدة بيانات منفصل، فيجب تفريغ قاعدة البيانات أيضاً. وهذا هو الشكل الذي تتخذه خطوة النسخ الاحتياطي عند الاستضافة الذاتية لـChatwoot على VPS إلى جانب بيانات Postgres والملفات المرفوعة.

أنماط الأعطال، مع النصوص التي ستظهر لك

تُعاد إعادة تشغيل الحاوية في حلقة. يعرض docker compose ps الرسالة Restarting. شغّل ls -ln ./config. يعني ظهور صفرين في أعمدة المالك أن Docker أنشأ الدليل بصفة root، ولا يستطيع مستخدم الحاوية الكتابة في قاعدة بياناتها. شغّل sudo chown -R 1000:1000 ./config.

لا تكتمل عمليات الاستيراد، وتبقى الملفات في مجلد التنزيلات. يستطيع Chaptarr قراءة الملف الذي جرى تنزيله، لكنه لا يستطيع الكتابة في المكتبة. قارن ls -ln /srv/media/audiobooks مع PUID وPGID لديك. يمنع الدليل الذي يملكه UID مختلف، أو يملكه group من دون صلاحية الكتابة للمجموعة، نقل الملف. يمنع UMASK=002 الحالة الثانية للملفات الجديدة.

تتضاعف المساحة المستخدمة بعد كل عملية استيراد. لم يُنشأ hardlink، لذلك نُسخ الملف. شغّل اختبار ln من قسم volumes. يؤكد الخطأ الذي ينتهي بـInvalid cross-device link ذلك، ويكون الحل باستخدام mount أب واحد.

لن يتصل عميل التنزيل. أدخلت localhost بوصفه المضيف. داخل الحاوية، يشير ذلك إلى Chaptarr نفسه. استخدم اسم الحاوية، وتحقق من أن docker network inspect arr يعرض الحاويتين.

يرفض Compose بدء الخدمة. تعني Bind for 127.0.0.1:8789 failed: port is already allocated أن شيئاً آخر يستخدم المنفذ. ابحث عنه باستخدام sudo ss -lntp | grep 8789.

لا يعرض المتصفح أي شيء على الإطلاق. عندما يكون المنفذ مرتبطاً بـ127.0.0.1، لا يوجد ما يمكن للحاسوب المحمول الاتصال به عبر الإنترنت. هذا هو السلوك المقصود. افتح نفق SSH أولاً.

FAQ

هل يمكنني ترحيل مكتبتي في Readarr إلى Chaptarr؟

ليس عن طريق الاستيراد. لا يتوافق Chaptarr مع مصادر البيانات الوصفية في Readarr، ويستخدم مساراً خاصاً به لتوفير البيانات، لذلك لا تحمل المعرّفات المخزنة في Readarr أي معنى، ولا توجد عملية لتحويل قاعدة البيانات. لا تتأثر ملفاتك على القرص. أضف المسارات نفسها كمجلدات جذر، وشغّل استيراد المكتبة، ودع Chaptarr يطابق الملفات بنفسه. تُعد ملفات تعريف الجودة، وتنسيق التسمية، وإعدادات indexer، وأي مطابقات خاطئة أعمالاً يدوية، لذلك ابدأ بمجلد صغير واحد قبل استيراد كل شيء.

لماذا لا يستطيع Chaptarr الكتابة إلى مجلد الكتب الصوتية لدي؟

لا يملك مستخدم الحاوية الملفات. يستخدم Chaptarr القيمتين PUID=99 وPGID=100 عند عدم تعيين هذين المتغيرين، وهما قيمتا unRAID وغير صحيحتين على Ubuntu VPS عادي. عيّنهما إلى القيمتين id -u وid -g الخاصتين بك، واستخدم الزوج نفسه في عميل التنزيل، وعيّن UMASK=002 حتى تبقى الملفات الجديدة قابلة للكتابة من المجموعة. تحقق من الملكية باستخدام ls -ln على مجلد المكتبة، لأنه يطبع الأرقام بدلاً من الأسماء، ما يتيح لك مقارنتها.

لماذا تضاعف استخدام القرص بعد الاستيراد؟

نسخ Chaptarr الملف لأنه لم يتمكن من إنشاء hard link له. يؤدي تركيب /downloads و/audiobooks كـbind mounts منفصلة إلى جعلهما نقطتي تركيب منفصلتين داخل الحاوية، ويرفض kernel إنشاء hard link بين نقطتي تركيب باستخدام Invalid cross-device link. ركّب مجلداً أباً واحداً مثل /srv/media:/data، واستخدم /data/downloads و/data/audiobooks داخل التطبيق. يجب أيضاً أن يكون المساران على نظام ملفات واحد في المضيف، ويؤكد ذلك df -h.

هل يشغّل Chaptarr الكتب الصوتية لدي؟

لا. يعثر عليها وينزّلها ويعيد تسميتها وينظّمها في الملفات، أما التشغيل فتتولاه برامج منفصلة. يُعد Audiobookshelf الاقتران الشائع لأنه يحفظ موضعك بين الأجهزة، باستخدام الصورة الرسمية ghcr.io/advplyr/audiobookshelf:latest مع تركيب مسار الكتب الصوتية نفسه من المضيف. وسيشغّل Jellyfin الملفات أيضاً إذا أضفت المجلد كمكتبة، لكن سلوك استئناف التشغيل يكون أضعف مع الكتب الصوتية الطويلة ذات الملف الواحد.

هل من الآمن تشغيل Chaptarr على مكتبة تهمني؟

إنه برنامج تجريبي من fork حديث، ويذكر المشروع ذلك صراحة، مع الإبلاغ عن عدم وقوع حوادث فقدان للبيانات خلال نحو ستة أشهر ومع أكثر من أحد عشر ألف مستخدم. تشمل الجوانب المطمئنة ترخيص GPL-3.0، الذي يبقي الشيفرة قابلة لإنشاء fork منها، والأساس .NET 10، وهو runtime بدعم طويل الأمد اعتباراً من أغسطس 2026. ثبّت tag دقيقاً للصورة مثل 0.9.925 بدلاً من latest، وخذ نسخة احتياطية من /config قبل كل ترقية، واحتفظ بذلك الأرشيف خارج الخادم.