يقدم لك فريق LinuxServer.io إصدار حاوية آخر يتميز بما يلي:
تجدنا في:
SWAG - تقوم بوابة تطبيقات الويب الآمنة (المعروفة سابقًا باسم Letsencrypt، ولا علاقة لها بـ Let's Encrypt™) بإعداد خادم ويب Nginx والوكيل العكسي مع دعم php وعميل certbot مدمج يقوم بأتمتة عمليات إنشاء شهادات خادم SSL المجانية وعمليات التجديد (Let's Encrypt و ZeroSSL). كما أنه يحتوي على Fail2ban لمنع التطفل.
نحن نستخدم بيان عامل الإرساء للتوعية بالأنظمة الأساسية المتعددة. يتوفر المزيد من المعلومات من عامل الإرساء هنا وإعلاننا هنا.
ما عليك سوى سحب lscr.io/linuxserver/swag:latest
لاسترداد الصورة الصحيحة لقوسك، ولكن يمكنك أيضًا سحب صور قوس محددة عبر العلامات.
البنى التي تدعمها هذه الصورة هي:
بنيان | متاح | علامة |
---|---|---|
x86-64 | ✅ | AMD64-<علامة الإصدار> |
ذراع64 | ✅ | Arm64v8-<علامة الإصدار> |
com.armhf |
URL
هو yoursubdomain.duckdns.org
ويمكن أن تكون SUBDOMAINS
www,ftp,cloud
مع التحقق من http، أو wildcard
مع التحقق من صحة DNS. يمكنك استخدام صورة duckdns الخاصة بنا لتحديث عنوان IP الخاص بك على duckdns.org.http
، يجب إعادة توجيه المنفذ 80 الموجود على جانب الإنترنت لجهاز التوجيه إلى المنفذ 80 لهذه الحاويةdns
، تأكد من إدخال بيانات الاعتماد الخاصة بك في ملف ini المقابل (أو json لبعض المكونات الإضافية) ضمن /config/dns-conf
yoursubdomain.duckdns.org
، اترك متغير SUBDOMAINS
فارغًا)*.yoursubdomain.duckdns.org
، اضبط متغير SUBDOMAINS
على wildcard
)--cap-add=NET_ADMIN
مطلوب لـ Fail2ban لتعديل iptableshttps://yourdomain.url
للوصول إلى الصفحة الرئيسية الافتراضية (يتم تعطيل الوصول إلى http عبر المنفذ 80 افتراضيًا، ويمكنك تمكينه عن طريق تحرير تكوين الموقع الافتراضي في /config/nginx/site-confs/default.conf
)./config/log/letsencrypt
لمعرفة سبب فشل عمليات التجديد. يوصى بإدخال بريدك الإلكتروني في معلمات عامل الإرساء حتى تتلقى إشعارات انتهاء الصلاحية من Let's Encrypt في تلك الظروف.يتضمن SWAG العديد من مكونات Certbot الإضافية الجاهزة، ولكن لا يمكن تضمين جميع المكونات الإضافية. إذا كنت بحاجة إلى مكون إضافي غير مضمن، فإن أسرع طريقة لتوفير المكون الإضافي هي استخدام Universal Package Install Docker Mod.
قم بتعيين متغيرات البيئة التالية على الحاوية الخاصة بك:
DOCKER_MODS=linuxserver/mods:universal-package-install
INSTALL_PIP_PACKAGES=certbot-dns-<plugin>
قم بتعيين بيانات الاعتماد المطلوبة (الموجودة عادةً في وثائق البرنامج الإضافي) في /config/dns-conf/<plugin>.ini
. يوصى بمحاولة الحصول على شهادة STAGING=true
أولاً للتأكد من أن المكون الإضافي يعمل كما هو متوقع.
dhparams.pem
.docker exec -it swag htpasswd -c /config/nginx/.htpasswd <username>
.htpasswd
. بالنسبة للمستخدم الأول، استخدم الأمر أعلاه، وبالنسبة للآخرين، استخدم الأمر أعلاه بدون علامة -c
، لأنه سيفرض حذف .htpasswd
الموجود وإنشاء واحد جديد/config/nginx/site-confs/default.conf
. لا تتردد في تعديل هذا الملف، ويمكنك إضافة ملفات conf أخرى إلى هذا الدليل. ومع ذلك، إذا قمت بحذف الملف default
، فسيتم إنشاء ملف افتراضي جديد عند بدء الحاوية.README.md
ضمن /config/nginx/proxy_confs
للحصول على إرشادات حول كيفية تمكينها. توجد الإعدادات المسبقة ويتم استيرادها من هذا الريبو.add_header X-Robots-Tag "noindex, nofollow, nosnippet, noarchive";
سيطلب هذا من Google وآخرين عدم فهرسة موقعك وإدراجه. كن حذرًا مع هذا، حيث سيتم في النهاية حذفك من القائمة إذا تركت هذا السطر في الموقع الذي ترغب في ظهوره على محركات البحث-v /path-to-swag-config:/swag-ssl
) وفي الحاويات الأخرى، استخدم موقع الشهادة /swag-ssl/keys/letsencrypt/
etc
الموجود ضمن /config
في حاويات أخرى (على سبيل المثال -v /path-to-swag-config/etc:/swag-ssl
) وفي الحاويات الأخرى، استخدم موقع الشهادة /swag-ssl/letsencrypt/live/<your.domain.url>/
(هذا أكثر أمانًا لأن الطريقة الأولى تشارك مجلد تكوين SWAG بأكمله مع حاويات أخرى، بما في ذلك ملفات www، بينما الطريقة الثانية تشارك فقط شهادات SSL)cert.pem
و chain.pem
و fullchain.pem
و privkey.pem
، والتي يتم إنشاؤها بواسطة Certbot واستخدامها بواسطة nginx والعديد من التطبيقات الأخرىprivkey.pfx
، وهو تنسيق تدعمه Microsoft ويستخدم بشكل شائع بواسطة تطبيقات dotnet مثل Emby Server (بدون كلمة مرور)priv-fullchain-bundle.pem
، وهي شهادة pem تجمع المفتاح الخاص والسلسلة الكاملة، وتستخدمها تطبيقات مثل ZNC/config/fail2ban/jail.local
.conf
، قم بإنشاء ملفات .local
بنفس الاسم وقم بتحريرها لأنه يتم استبدال ملفات .conf عند تحديث الإجراءات وعوامل التصفية. ستقوم ملفات .local
بإلحاق كل ما هو موجود في ملفات .conf
(على سبيل المثال. nginx-http-auth.conf
--> nginx-http-auth.local
)docker exec -it swag fail2ban-client status
docker exec -it swag fail2ban-client status <jail name>
docker exec -it swag fail2ban-client set <jail name> unbanip <IP>
linuxserver/letsencrypt
القديمةيرجى اتباع التعليمات الواردة في منشور المدونة هذا.
لمساعدتك في البدء في إنشاء حاوية من هذه الصورة، يمكنك إما استخدام docker-compose أو docker cli.
---
services :
swag :
image : lscr.io/linuxserver/swag:latest
container_name : swag
cap_add :
- NET_ADMIN
environment :
- PUID=1000
- PGID=1000
- TZ=Etc/UTC
- URL=yourdomain.url
- VALIDATION=http
- SUBDOMAINS=www, # optional
- CERTPROVIDER= # optional
- DNSPLUGIN=cloudflare # optional
- PROPAGATION= # optional
- EMAIL= # optional
- ONLY_SUBDOMAINS=false # optional
- EXTRA_DOMAINS= # optional
- STAGING=false # optional
volumes :
- /path/to/swag/config:/config
ports :
- 443:443
- 80:80 # optional
restart : unless-stopped
docker run -d
--name=swag
--cap-add=NET_ADMIN
-e PUID=1000
-e PGID=1000
-e TZ=Etc/UTC
-e URL=yourdomain.url
-e VALIDATION=http
-e SUBDOMAINS=www, ` # optional `
-e CERTPROVIDER= ` # optional `
-e DNSPLUGIN=cloudflare ` # optional `
-e PROPAGATION= ` # optional `
-e EMAIL= ` # optional `
-e ONLY_SUBDOMAINS=false ` # optional `
-e EXTRA_DOMAINS= ` # optional `
-e STAGING=false ` # optional `
-p 443:443
-p 80:80 ` # optional `
-v /path/to/swag/config:/config
--restart unless-stopped
lscr.io/linuxserver/swag:latest
يتم تكوين الحاويات باستخدام المعلمات التي تم تمريرها في وقت التشغيل (مثل تلك المذكورة أعلاه). يتم فصل هذه المعلمات بنقطتين وتشير إلى <external>:<internal>
على التوالي. على سبيل المثال، -p 8080:80
سيكشف المنفذ 80
من داخل الحاوية ليتم الوصول إليه من عنوان IP الخاص بالمضيف على المنفذ 8080
خارج الحاوية.
المعلمة | وظيفة |
---|---|
-p 443 | منفذ هتبس |
-p 80 | منفذ Http (مطلوب للتحقق من صحة http وإعادة توجيه http -> https) |
-e PUID=1000 | بالنسبة لمعرف المستخدم - انظر أدناه للحصول على شرح |
-e PGID=1000 | بالنسبة لمعرف المجموعة - انظر أدناه للحصول على شرح |
-e TZ=Etc/UTC | حدد منطقة زمنية لاستخدامها، راجع هذه القائمة. |
-e URL=yourdomain.url | عنوان URL العلوي الذي يمكنك التحكم فيه ( customdomain.com إذا كنت تملكه، أو customsubdomain.ddnsprovider.com إذا كان نظام أسماء النطاقات ديناميكيًا). |
-e VALIDATION=http | طريقة التحقق من صحة Certbot المستخدمة، الخيارات هي http أو dns (تتطلب طريقة dns أيضًا مجموعة متغيرات DNSPLUGIN ). |
-e SUBDOMAINS=www, | النطاقات الفرعية التي ترغب في أن تغطيها الشهادة (مفصولة بفواصل، بدون مسافات) على سبيل المثال. www,ftp,cloud . بالنسبة لشهادة حرف البدل، قم بتعيين هذا بالضبط على wildcard (شهادة حرف البدل متاحة عبر التحقق من صحة dns فقط) |
-e CERTPROVIDER= | حدد بشكل اختياري موفر الشهادة. اضبط على zerossl لشهادات ZeroSSL (يتطلب حساب ZeroSSL موجودًا وعنوان البريد الإلكتروني الذي تم إدخاله في EMAIL env var). بخلاف ذلك، يتم تعيينه افتراضيًا على Let's Encrypt. |
-e DNSPLUGIN=cloudflare | مطلوب إذا تم ضبط VALIDATION على dns . الخيارات هي acmedns و aliyun و azure و bunny و cloudflare و cpanel و desec و digitalocean و directadmin و dnsimple و dnsmadeeasy و dnspod و do و domeneshop و dreamhost و duckdns و dynu و freedns و gandi و gehirn و glesys و godaddy و google و he و hetzner و infomaniak و inwx و ionos و linode و loopia و luadns و namecheap و netcup و njalla و nsone و ovh و porkbun و rfc2136 و route53 و sakuracloud و standalone و transip و vultr . تحتاج أيضًا إلى إدخال بيانات الاعتماد في ملف ini المقابل (أو json لبعض المكونات الإضافية) ضمن /config/dns-conf . |
-e PROPAGATION= | يمكنك اختياريًا تجاوز (بالثواني) وقت النشر الافتراضي لمكونات نظام أسماء النطاقات الإضافية. |
-e EMAIL= | عنوان بريد إلكتروني اختياري يُستخدم لإشعارات انتهاء صلاحية الشهادة (مطلوب لـ ZeroSSL). |
-e ONLY_SUBDOMAINS=false | إذا كنت ترغب في الحصول على شهادات لنطاقات فرعية معينة فقط، وليس المجال الرئيسي (قد تتم استضافة النطاق الرئيسي على جهاز آخر ولا يمكن التحقق من صحته)، فاضبط هذا على true |
-e EXTRA_DOMAINS= | أسماء النطاقات الإضافية المؤهلة بالكامل (مفصولة بفواصل، بدون مسافات) أي. extradomain.com,subdomain.anotherdomain.org,*.anotherdomain.org |
-e STAGING=false | اضبط على true لاسترداد الشهادات في الوضع المرحلي. ستكون حدود المعدلات أعلى بكثير، لكن الشهادة الناتجة لن تجتاز اختبار أمان المتصفح. فقط لاستخدامها لأغراض الاختبار. |
-v /config | ملفات التكوين المستمرة |
تستخدم هذه الصورة cap_add
أو sysctl
لتعمل بشكل صحيح. لم يتم تنفيذ هذا بشكل صحيح في بعض إصدارات Portainer، وبالتالي قد لا تعمل هذه الصورة إذا تم نشرها من خلال Portainer.
يمكنك تعيين أي متغير بيئة من ملف باستخدام ملحق خاص FILE__
.
كمثال:
-e FILE__MYVAR=/run/secrets/mysecretvariable
سيتم تعيين متغير البيئة MYVAR
بناءً على محتويات الملف /run/secrets/mysecretvariable
.
بالنسبة لجميع صورنا، نوفر القدرة على تجاوز إعدادات umask الافتراضية للخدمات التي بدأت داخل الحاويات باستخدام الإعداد الاختياري -e UMASK=022
. ضع في اعتبارك أن umask ليس chmod، فهو يطرح من الأذونات بناءً على قيمته التي لا يضيفها. يرجى القراءة هنا قبل طلب الدعم.
عند استخدام وحدات التخزين (علامات -v
)، يمكن أن تنشأ مشكلات الأذونات بين نظام التشغيل المضيف والحاوية، ونحن نتجنب هذه المشكلة من خلال السماح لك بتحديد PUID
للمستخدم و PGID
للمجموعة.
تأكد من أن أي أدلة تخزينية على المضيف مملوكة لنفس المستخدم الذي تحدده وستختفي أي مشكلات في الأذونات مثل السحر.
في هذه الحالة PUID=1000
و PGID=1000
، للعثور على معرفك، استخدم id your_user
على النحو التالي:
id your_user
مثال الإخراج:
uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)
نقوم بنشر العديد من تعديلات Docker Mods لتمكين وظائف إضافية داخل الحاويات. يمكن الوصول إلى قائمة التعديلات المتاحة لهذه الصورة (إن وجدت)، بالإضافة إلى التعديلات العامة التي يمكن تطبيقها على أي صورة من صورنا عبر الشارات الديناميكية أعلاه.
الوصول إلى Shell أثناء تشغيل الحاوية:
docker exec -it swag /bin/bash
لمراقبة سجلات الحاوية في الوقت الفعلي:
docker logs -f swag
رقم إصدار الحاوية:
docker inspect -f ' {{ index .Config.Labels "build_version" }} ' swag
رقم نسخة الصورة:
docker inspect -f ' {{ index .Config.Labels "build_version" }} ' lscr.io/linuxserver/swag:latest
معظم صورنا ثابتة، ومُحدثة، وتتطلب تحديث الصورة وإعادة إنشاء الحاوية لتحديث التطبيق بالداخل. مع بعض الاستثناءات (المذكورة في ملف readme.md ذي الصلة)، لا نوصي أو ندعم تحديث التطبيقات داخل الحاوية. يرجى الرجوع إلى قسم إعداد التطبيق أعلاه لمعرفة ما إذا كان يوصى به للصورة.
فيما يلي تعليمات تحديث الحاويات:
تحديث الصور:
جميع الصور:
docker-compose pull
صورة واحدة:
docker-compose pull swag
تحديث الحاويات:
جميع الحاويات:
docker-compose up -d
حاوية واحدة:
docker-compose up -d swag
يمكنك أيضًا إزالة الصور المتدلية القديمة:
docker image prune
تحديث الصورة:
docker pull lscr.io/linuxserver/swag:latest
أوقف تشغيل الحاوية:
docker stop swag
حذف الحاوية:
docker rm swag
أعد إنشاء حاوية جديدة بنفس معلمات تشغيل عامل الإرساء كما هو موضح أعلاه (إذا تم تعيينها بشكل صحيح لمجلد مضيف، فسيتم الحفاظ على المجلد /config
والإعدادات الخاصة بك)
يمكنك أيضًا إزالة الصور المتدلية القديمة:
docker image prune
نصيحة
نوصي باستخدام Diun لإشعارات التحديث. لا يوصى أو يتم دعم الأدوات الأخرى التي تقوم بتحديث الحاويات تلقائيًا دون مراقبة.
إذا كنت تريد إجراء تعديلات محلية على هذه الصور لأغراض التطوير أو فقط لتخصيص المنطق:
git clone https://github.com/linuxserver/docker-swag.git
cd docker-swag
docker build
--no-cache
--pull
-t lscr.io/linuxserver/swag:latest .
يمكن بناء متغيرات ARM على أجهزة x86_64 والعكس باستخدام lscr.io/linuxserver/qemu-static
docker run --rm --privileged lscr.io/linuxserver/qemu-static --reset
بمجرد التسجيل، يمكنك تحديد ملف dockerfile لاستخدامه مع -f Dockerfile.aarch64
.
priv-fullchain-bundle.pem
الذي تم إنشاؤه.certbot-dns-dynudns
.stream.conf
داخل الحاوية للسماح للمستخدمين بتضمين الكتلة الخاصة بهم في nginx.conf
.google-domains
.STAGING=true
، والفشل في الإلغاء.ssl.conf
.SUBDOMAINS
كاختيارية.resolver.conf
والتصحيح لـ CVE-2021-32637
.dhparams.pem
لكل RFC7919. تمت إضافة worker_processes.conf
، الذي يحدد عدد عمال nginx، و resolver.conf
، الذي يحدد محلل نظام أسماء النطاقات. يتم إنشاء كلا الملفين conf تلقائيًا عند البداية الأولى فقط ويمكن للمستخدم تعديلهما لاحقًا.CERTPROVIDER
env var الاختياري. قم بتحديث المكونات الإضافية aliyun وdomeneshop وinwx وtransip dns بأسماء المكونات الإضافية الجديدة. قم بإخفاء donoteditthisfile.conf
لأن المستخدمين كانوا يقومون بتحريره على الرغم من اسمه. قمع الخطأ غير الضار عند عدم تمكين أي إعدادات للوكيل.