<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Docker-Compose on FahdLABs | مختّبر فهد</title><link>https://blog.fahdlabs.com/tags/docker-compose/</link><description>Recent content in Docker-Compose on FahdLABs | مختّبر فهد</description><generator>Hugo -- gohugo.io</generator><language>ar</language><lastBuildDate>Wed, 11 Feb 2026 10:00:00 +0300</lastBuildDate><atom:link href="https://blog.fahdlabs.com/tags/docker-compose/index.xml" rel="self" type="application/rss+xml"/><item><title>شرح AdGuard Home: مانع إعلانات لكل أجهزة البيت عبر DNS (Docker + Raspberry Pi)</title><link>https://blog.fahdlabs.com/p/adguard-home-network-wide-adblock/</link><pubDate>Wed, 11 Feb 2026 10:00:00 +0300</pubDate><guid>https://blog.fahdlabs.com/p/adguard-home-network-wide-adblock/</guid><description>&lt;img src="https://blog.fahdlabs.com/" alt="Featured image of post شرح AdGuard Home: مانع إعلانات لكل أجهزة البيت عبر DNS (Docker + Raspberry Pi)" /&gt;&lt;p&gt;هذا الدليل هو نسخة مكتوبة وموسعة من الفيديو:
&lt;div class="video-wrapper"&gt;
 &lt;iframe loading="lazy" 
 src="https://www.youtube.com/embed/gjoaayIwXIU" 
 allowfullscreen 
 title="YouTube Video"
 &gt;
 &lt;/iframe&gt;
&lt;/div&gt;
&lt;/p&gt;
&lt;p&gt;إذا تبغى تحجب الإعلانات والتتبع من كل أجهزة البيت (جوال، كمبيوتر، تلفزيون)، الحل العملي هو DNS مركزي داخل الشبكة.&lt;/p&gt;
&lt;h2 id="فكرة-adguard-home-باختصار"&gt;فكرة AdGuard Home باختصار
&lt;/h2&gt;&lt;p&gt;بدل ما كل جهاز يستخدم DNS عام مباشرة، نخلي طلبات DNS تمر عبر AdGuard Home داخل الشبكة المنزلية. وقتها:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;دومينات الإعلانات تُحجب قبل التحميل.&lt;/li&gt;
&lt;li&gt;يقل التتبع.&lt;/li&gt;
&lt;li&gt;تقدر تحجب مواقع محددة على مستوى البيت كامل.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;بمعنى أبسط: بدل ما كل جهاز يحاول يحجب الإعلانات بنفسه، تخلي الشبكة كلها تمر من فلتر واحد.&lt;/p&gt;
&lt;h2 id="المتطلبات"&gt;المتطلبات
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;جهاز يشغل Docker (Raspberry Pi أو جهاز قديم).&lt;/li&gt;
&lt;li&gt;عنوان IP ثابت لهذا الجهاز.&lt;/li&gt;
&lt;li&gt;وصول لإعدادات الراوتر.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="الطريقة-1-مثل-الفيديو-التشغيل-عبر-dockge"&gt;الطريقة 1 (مثل الفيديو): التشغيل عبر Dockge
&lt;/h2&gt;&lt;p&gt;إذا عندك Dockge، أنشئ Stack جديد لـ AdGuard Home وشغّله.&lt;/p&gt;
&lt;p&gt;متى تختار هذه الطريقة؟ إذا أنت أصلًا تدير خدماتك من Dockge وتبغى كل شيء في مكان واحد.&lt;/p&gt;
&lt;h2 id="الطريقة-2-docker-compose-مباشر-بدون-dockge"&gt;الطريقة 2: Docker Compose مباشر (بدون Dockge)
&lt;/h2&gt;&lt;h3 id="1-إنشاء-المجلدات"&gt;1) إنشاء المجلدات
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mkdir -p ~/adguard/&lt;span class="o"&gt;{&lt;/span&gt;work,conf&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; ~/adguard
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="2-إنشاء-ملف-docker-composeyml"&gt;2) إنشاء ملف &lt;code&gt;docker-compose.yml&lt;/code&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;nano docker-compose.yml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="3-ألصق-الإعداد-التالي"&gt;3) ألصق الإعداد التالي
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;services&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;adguardhome&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;image&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;adguard/adguardhome:latest&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;container_name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;adguardhome&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;restart&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;unless-stopped&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;environment&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;TZ=Asia/Riyadh&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;volumes&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;./work:/opt/adguardhome/work&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;./conf:/opt/adguardhome/conf&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;ports&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="s2"&gt;&amp;#34;3000:3000&amp;#34;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# صفحة الإعداد أول مرة&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="s2"&gt;&amp;#34;80:80&amp;#34;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# لوحة التحكم بعد الإعداد&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="s2"&gt;&amp;#34;53:53/tcp&amp;#34;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# DNS TCP&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="s2"&gt;&amp;#34;53:53/udp&amp;#34;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# DNS UDP&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="4-تشغيل-الخدمة"&gt;4) تشغيل الخدمة
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker compose up -d
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="5-التأكد-من-التشغيل"&gt;5) التأكد من التشغيل
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker ps
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker logs -f adguardhome
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="1-الإعداد-الأول-wizard"&gt;1) الإعداد الأول (Wizard)
&lt;/h2&gt;&lt;p&gt;افتح:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;http://RASPBERRY_PI_IP:3000
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;ثم:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;اختر اللغة.&lt;/li&gt;
&lt;li&gt;أنشئ حساب الإدارة.&lt;/li&gt;
&lt;li&gt;أكمل خطوات الإعداد الافتراضية.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;بعد الانتهاء، لوحة التحكم تكون غالبًا على:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;http://RASPBERRY_PI_IP
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;img alt="صفحة الإعداد الأول لـ AdGuard Home على المنفذ 3000" class="gallery-image" data-flex-basis="139px" data-flex-grow="57" height="1370" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.fahdlabs.com/p/adguard-home-network-wide-adblock/step-01-first-setup-on-port-3000.png" width="794"&gt;&lt;/p&gt;
&lt;h2 id="2-إعدادات-dns-المهم-فعليا"&gt;2) إعدادات DNS (المهم فعليًا)
&lt;/h2&gt;&lt;p&gt;من لوحة التحكم:
&lt;code&gt;الإعدادات&lt;/code&gt; → &lt;code&gt;إعدادات DNS&lt;/code&gt;&lt;/p&gt;
&lt;h3 id="a-خوادم-dns-العليا-upstream-dns"&gt;a) خوادم DNS العليا (Upstream DNS)
&lt;/h3&gt;&lt;p&gt;القيم التي استخدمتها:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;tls://dns.quad9.net&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tls://unfiltered.joindns4.eu&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ليش هذا مهم؟&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;هذه هي الخوادم التي يسألها AdGuard لما ما يلقى جواب محلي.&lt;/li&gt;
&lt;li&gt;استخدام &lt;code&gt;tls://&lt;/code&gt; يعني DNS مشفّر (DoT)، فيحسن الخصوصية.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;بعدها:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;فعّل &lt;code&gt;Parallel requests&lt;/code&gt; عشان أسرع استجابة.&lt;/li&gt;
&lt;li&gt;أضف خوادم DNS احتياطية:&lt;/li&gt;
&lt;li&gt;&lt;code&gt;9.9.9.10&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;86.54.11.100&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;اضغط &lt;code&gt;اختبار&lt;/code&gt; ثم &lt;code&gt;تطبيق&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img alt="إعداد Upstream DNS وتفعيل الطلبات المتوازية في AdGuard" class="gallery-image" data-flex-basis="332px" data-flex-grow="138" height="703" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.fahdlabs.com/p/adguard-home-network-wide-adblock/step-02-p1-dns-settings-upstream-filters.png" srcset="https://blog.fahdlabs.com/p/adguard-home-network-wide-adblock/step-02-p1-dns-settings-upstream-filters_hu_7b7ba706348b442a.png 800w, https://blog.fahdlabs.com/p/adguard-home-network-wide-adblock/step-02-p1-dns-settings-upstream-filters.png 973w" width="973"&gt;&lt;/p&gt;
&lt;h3 id="b-إعداد-خادم-dns"&gt;b) إعداد خادم DNS
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;معدل الطلبات (Rate limit)&lt;/code&gt;: &lt;code&gt;100&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;تفعيل &lt;code&gt;Enable DNSSEC&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ليش؟&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Rate limit&lt;/code&gt; يساعد ضد الإغراق أو الطلبات الغير طبيعية من جهاز خربان بالشبكة.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;DNSSEC&lt;/code&gt; يتحقق من صحة ردود DNS (أمان أعلى).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img alt="إعداد Rate limit وتفعيل DNSSEC" class="gallery-image" data-flex-basis="590px" data-flex-grow="246" height="400" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.fahdlabs.com/p/adguard-home-network-wide-adblock/step-02-p2-dns-settings-upstream-filters.png" srcset="https://blog.fahdlabs.com/p/adguard-home-network-wide-adblock/step-02-p2-dns-settings-upstream-filters_hu_1ea0ed31e8523a43.png 800w, https://blog.fahdlabs.com/p/adguard-home-network-wide-adblock/step-02-p2-dns-settings-upstream-filters.png 984w" width="984"&gt;&lt;/p&gt;
&lt;h3 id="c-الكاش-dns-cache"&gt;c) الكاش (DNS Cache)
&lt;/h3&gt;&lt;p&gt;القيم المستخدمة:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Cache size = 10000000&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Override minimum TTL = 3600&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Override maximum TTL = 86400&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;تفعيل &lt;code&gt;Optimistic caching&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;معنى هذه الخيارات باختصار:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Cache size&lt;/code&gt;: حجم الذاكرة المخصصة لتخزين ردود DNS، وكل ما كان مناسب يقل وقت الاستجابة.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Minimum TTL&lt;/code&gt;: أقل مدة يحتفظ فيها AdGuard بالرد داخل الكاش.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Maximum TTL&lt;/code&gt;: أعلى مدة مسموح بها للاحتفاظ بالرد داخل الكاش.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Optimistic caching&lt;/code&gt;: يرجع نتيجة سريعة من الكاش ويحدّثها بالخلفية.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img alt="ضبط DNS cache وTTL في AdGuard Home" class="gallery-image" data-flex-basis="460px" data-flex-grow="191" height="605" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.fahdlabs.com/p/adguard-home-network-wide-adblock/step-02-p3-dns-settings-upstream-filters.png" srcset="https://blog.fahdlabs.com/p/adguard-home-network-wide-adblock/step-02-p3-dns-settings-upstream-filters_hu_a554e8e4bc7af1f8.png 800w, https://blog.fahdlabs.com/p/adguard-home-network-wide-adblock/step-02-p3-dns-settings-upstream-filters.png 1161w" width="1161"&gt;&lt;/p&gt;
&lt;h2 id="3-إعدادات-الفلاتر-blocklists"&gt;3) إعدادات الفلاتر (Blocklists)
&lt;/h2&gt;&lt;p&gt;من لوحة التحكم:
&lt;code&gt;الفلاتر&lt;/code&gt; → &lt;code&gt;قوائم حظر DNS&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;الخطوات:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;أزل تحديد القائمة الافتراضية إذا كنت تريد الاعتماد على قوائمك.&lt;/li&gt;
&lt;li&gt;اضغط &lt;code&gt;إضافة قائمة حظر&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;اختر من القوائم الجاهزة.&lt;/li&gt;
&lt;li&gt;أضف القائمة التي استخدمتها: &lt;code&gt;HaGeZi's Pro Blocklist&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;اضغط &lt;code&gt;تحقق من وجود تحديثات&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;ملاحظة عملية:
قائمتين جيدتين عادةً تكفي. كثرة القوائم قد تسبب حجب زائد أو بطء.&lt;/p&gt;
&lt;p&gt;&lt;img alt="إضافة قائمة حظر DNS من واجهة الفلاتر" class="gallery-image" data-flex-basis="459px" data-flex-grow="191" height="622" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.fahdlabs.com/p/adguard-home-network-wide-adblock/step-03-dns-blocklist-filters.png" srcset="https://blog.fahdlabs.com/p/adguard-home-network-wide-adblock/step-03-dns-blocklist-filters_hu_ab258f90956503c3.png 800w, https://blog.fahdlabs.com/p/adguard-home-network-wide-adblock/step-03-dns-blocklist-filters.png 1192w" width="1192"&gt;&lt;/p&gt;
&lt;h2 id="4-الإعدادات-العامة-logs--statistics"&gt;4) الإعدادات العامة (Logs + Statistics)
&lt;/h2&gt;&lt;p&gt;من لوحة التحكم:
&lt;code&gt;الإعدادات&lt;/code&gt; → &lt;code&gt;الإعدادات العامة&lt;/code&gt;&lt;/p&gt;
&lt;h3 id="a-تكوين-السجلات-logs-retention"&gt;a) تكوين السجلات (Logs retention)
&lt;/h3&gt;&lt;p&gt;اختر عدد الأيام التي تريد حفظ السجلات فيها (أنا اخترت 30 يوم).&lt;/p&gt;
&lt;p&gt;وش تحفظ هذه؟&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;سجل الاستعلامات: أي جهاز سأل عن أي دومين ومتى.&lt;/li&gt;
&lt;li&gt;يفيدك في تتبع المشاكل ومعرفة أكثر الدومينات المحجوبة.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;كل ما زادت الأيام، يزيد استهلاك التخزين.&lt;/p&gt;
&lt;h3 id="b-تكوين-الإحصائيات-statistics-retention"&gt;b) تكوين الإحصائيات (Statistics retention)
&lt;/h3&gt;&lt;p&gt;أنا اخترت 7 أيام بدل الافتراضي 24 ساعة.&lt;/p&gt;
&lt;p&gt;وش تحفظ هذه؟&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;بيانات الرسوم البيانية في لوحة الإحصائيات.&lt;/li&gt;
&lt;li&gt;عدد الطلبات، عدد المحجوب، وأكثر الدومينات نشاطًا خلال المدة المحددة.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;إذا تبغى رؤية أسبوعية واضحة، 7 أيام خيار ممتاز.&lt;/p&gt;
&lt;h2 id="أهم-خطوة-ربط-dns-في-الراوتر"&gt;أهم خطوة: ربط DNS في الراوتر
&lt;/h2&gt;&lt;p&gt;ادخل إعدادات الراوتر وضع DNS الرئيسي (وأحيانًا الثانوي) على IP جهاز AdGuard:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;DNS1 = 192.168.100.55&lt;/code&gt; (مثال)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;DNS2 = 192.168.100.55&lt;/code&gt; (إذا الراوتر يجبرك)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img alt="ربط DNS الراوتر بعنوان جهاز AdGuard Home" class="gallery-image" data-flex-basis="195px" data-flex-grow="81" height="1023" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.fahdlabs.com/p/adguard-home-network-wide-adblock/step-04-router-dns-primary-secondary.png" srcset="https://blog.fahdlabs.com/p/adguard-home-network-wide-adblock/step-04-router-dns-primary-secondary_hu_42d4489a4ce64502.png 800w, https://blog.fahdlabs.com/p/adguard-home-network-wide-adblock/step-04-router-dns-primary-secondary.png 835w" width="835"&gt;&lt;/p&gt;
&lt;p&gt;بعد الحفظ، انتظر دقيقة أو دقيقتين ثم اختبر.&lt;/p&gt;
&lt;h2 id="اختبار-قبلبعد"&gt;اختبار قبل/بعد
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;افتح موقع كان يظهر إعلانات قبل.
&lt;img alt="لقطة قبل تفعيل AdGuard وتظهر فيها الإعلانات" class="gallery-image" data-flex-basis="452px" data-flex-grow="188" height="782" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.fahdlabs.com/p/adguard-home-network-wide-adblock/step-05-before-ads-comparison.png" srcset="https://blog.fahdlabs.com/p/adguard-home-network-wide-adblock/step-05-before-ads-comparison_hu_5732841dee481618.png 800w, https://blog.fahdlabs.com/p/adguard-home-network-wide-adblock/step-05-before-ads-comparison.png 1475w" width="1475"&gt;&lt;/li&gt;
&lt;li&gt;حدّث الصفحة بعد تفعيل DNS في الراوتر.&lt;/li&gt;
&lt;li&gt;ارجع لوحة AdGuard وتأكد من زيادة الطلبات المحجوبة.&lt;/li&gt;
&lt;li&gt;افتح نفس الموقع الي كان يظهر إعلانات.
&lt;img alt="لقطة بعد تفعيل AdGuard واختفاء الإعلانات" class="gallery-image" data-flex-basis="573px" data-flex-grow="239" height="616" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.fahdlabs.com/p/adguard-home-network-wide-adblock/step-05-after-ads-comparison.png" srcset="https://blog.fahdlabs.com/p/adguard-home-network-wide-adblock/step-05-after-ads-comparison_hu_aa840ff10476c1fd.png 800w, https://blog.fahdlabs.com/p/adguard-home-network-wide-adblock/step-05-after-ads-comparison.png 1473w" width="1473"&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="حجب-مواقع-معينة-للبيت-كامل"&gt;حجب مواقع معينة للبيت كامل
&lt;/h2&gt;&lt;p&gt;من الفلاتر:
a) الخوادم المحجوبة
مواقع جاهزة تقدر تحجبها بضغطة زر
اغلب المواقع المعروفة موجودة هنا
b) قواعد التصفية المخصصة
أضف قواعد مخصصة دومين بدومين.&lt;/p&gt;
&lt;p&gt;مثال قاعدة حجب:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;||example.com^
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="صفحة-الاحصائيات-بعد-اول-استخدام"&gt;صفحة الاحصائيات بعد اول استخدام
&lt;/h2&gt;&lt;p&gt;&lt;img alt="لوحة إحصائيات AdGuard بعد أول استخدام" class="gallery-image" data-flex-basis="217px" data-flex-grow="90" height="769" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.fahdlabs.com/p/adguard-home-network-wide-adblock/step-07-adguard-dashboard-stats.png" width="696"&gt;&lt;/p&gt;
&lt;h2 id="أخطاء-شائعة-وحلولها"&gt;أخطاء شائعة وحلولها
&lt;/h2&gt;&lt;h3 id="1-ما-صار-أي-حجب-بعد-التثبيت"&gt;1. ما صار أي حجب بعد التثبيت
&lt;/h3&gt;&lt;p&gt;غالبًا الأجهزة ما زالت تستخدم DNS قديم.
الحل:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;تأكد DNS الراوتر يشير إلى AdGuard.&lt;/li&gt;
&lt;li&gt;افصل/أعد اتصال الشبكة على الأجهزة.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="2-تعارض-على-بورت-53"&gt;2. تعارض على بورت 53
&lt;/h3&gt;&lt;p&gt;يوجد خدمة ثانية تستخدم DNS على نفس السيرفر.
الحل: أوقف الخدمة المتعارضة أو غيّر التصميم.&lt;/p&gt;
&lt;h3 id="3-لوحة-التحكم-لا-تفتح"&gt;3. لوحة التحكم لا تفتح
&lt;/h3&gt;&lt;p&gt;تحقق من:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;docker ps&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;المنفذ الصحيح (3000 للإعداد الأول، ثم 80 غالبًا للوحة).&lt;/li&gt;
&lt;li&gt;جدار الحماية المحلي.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="faq"&gt;FAQ
&lt;/h2&gt;&lt;h3 id="هل-لازم-raspberry-pi-5"&gt;هل لازم Raspberry Pi 5؟
&lt;/h3&gt;&lt;p&gt;لا، أي جهاز يشغل Adguard Home يكفي.&lt;/p&gt;
&lt;h3 id="هل-هذا-يحجب-كل-الإعلانات-100"&gt;هل هذا يحجب كل الإعلانات 100%؟
&lt;/h3&gt;&lt;p&gt;لا، لكنه يقلل نسبة كبيرة جدًا من إعلانات DNS-based tracking والطلبات الإعلانية.&lt;/p&gt;
&lt;p&gt;مهم: بعض التطبيقات تعرض إعلانات من نفس دومين الخدمة الرئيسية، ووقتها DNS blocking وحده قد لا يكفي.&lt;/p&gt;
&lt;h3 id="هل-أقدر-أخليه-يعمل-على-جهاز-واحد-فقط"&gt;هل أقدر أخليه يعمل على جهاز واحد فقط؟
&lt;/h3&gt;&lt;p&gt;نعم، ضع DNS يدوي لذلك الجهاز بدل تغييره على الراوتر.&lt;/p&gt;
&lt;h2 id="المصادر-الرسمية-للتحديثات"&gt;المصادر الرسمية (للتحديثات)
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;AdGuard Home GitHub: &lt;a class="link" href="https://github.com/AdguardTeam/AdGuardHome" target="_blank" rel="noopener"
 &gt;https://github.com/AdguardTeam/AdGuardHome&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;AdGuard Home Docker Image: &lt;a class="link" href="https://hub.docker.com/r/adguard/adguardhome" target="_blank" rel="noopener"
 &gt;https://hub.docker.com/r/adguard/adguardhome&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Docker Compose Documentation: &lt;a class="link" href="https://docs.docker.com/compose/" target="_blank" rel="noopener"
 &gt;https://docs.docker.com/compose/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="الخلاصة"&gt;الخلاصة
&lt;/h2&gt;&lt;p&gt;AdGuard Home يعطيك حماية وراحة أفضل لكل أجهزة البيت من نقطة مركزية واحدة. مع IP ثابت + DNS صحيح على الراوتر، النتيجة تكون واضحة جدًا من أول يوم.&lt;/p&gt;</description></item><item><title>شرح Dockge بالعربي: إدارة Docker Compose بسهولة على Raspberry Pi</title><link>https://blog.fahdlabs.com/p/dockge-docker-compose-manager/</link><pubDate>Sat, 07 Feb 2026 10:00:00 +0300</pubDate><guid>https://blog.fahdlabs.com/p/dockge-docker-compose-manager/</guid><description>&lt;img src="https://blog.fahdlabs.com/" alt="Featured image of post شرح Dockge بالعربي: إدارة Docker Compose بسهولة على Raspberry Pi" /&gt;&lt;p&gt;هذا الدليل هو نسخة مكتوبة وموسعة من الفيديو:
&lt;div class="video-wrapper"&gt;
 &lt;iframe loading="lazy" 
 src="https://www.youtube.com/embed/ZXCYEMIl71c" 
 allowfullscreen 
 title="YouTube Video"
 &gt;
 &lt;/iframe&gt;
&lt;/div&gt;
&lt;/p&gt;
&lt;p&gt;إذا تستخدم Docker Compose وتبغى إدارة أسهل من التيرمنال، Dockge يعطيك لوحة بسيطة وسريعة بدون تعقيد.&lt;/p&gt;
&lt;h2 id="ما-هو-dockge"&gt;ما هو Dockge؟
&lt;/h2&gt;&lt;p&gt;Dockge أداة مفتوحة المصدر لإدارة مشاريع &lt;code&gt;docker-compose&lt;/code&gt; من واجهة ويب.&lt;/p&gt;
&lt;p&gt;تقدر من خلالها:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;إنشاء Stack جديد.&lt;/li&gt;
&lt;li&gt;تشغيل/إيقاف/تحديث الخدمات.&lt;/li&gt;
&lt;li&gt;تعديل &lt;code&gt;compose.yaml&lt;/code&gt; مباشرة.&lt;/li&gt;
&lt;li&gt;قراءة Logs من نفس الواجهة.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;متى يكون Dockge مناسب لك؟&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;عندك سيرفر واحد أو بيئة منزلية صغيرة.&lt;/li&gt;
&lt;li&gt;تستخدم &lt;code&gt;docker-compose&lt;/code&gt; بشكل يومي.&lt;/li&gt;
&lt;li&gt;تبغى واجهة بسيطة بدون تعقيد أدوات أكبر.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="قبل-التثبيت"&gt;قبل التثبيت
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Docker + Docker Compose يجب أن يكونا جاهزين.&lt;/li&gt;
&lt;li&gt;يفضل أن يكون الراسبيري باي له IP ثابت.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;إذا لم تجهّزها بعد:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://blog.fahdlabs.com/post/raspberry-pi-5-setup-ssh-docker/" &gt;إعداد Raspberry Pi + Docker&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://blog.fahdlabs.com/post/raspberry-pi-static-ip-networkmanager/" &gt;تثبيت IP ثابت&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="1-إنشاء-مجلد-العمل"&gt;1) إنشاء مجلد العمل
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mkdir -p ~/dockge
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; ~/dockge
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="2-إنشاء-ملف-composeyaml-لـ-dockge"&gt;2) إنشاء ملف compose.yaml لـ Dockge
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;nano compose.yaml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;ضع هذا المحتوى:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;services&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;dockge&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;image&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;louislam/dockge:latest&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;container_name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;dockge&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;restart&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;unless-stopped&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;ports&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="s2"&gt;&amp;#34;5001:5001&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;volumes&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;/var/run/docker.sock:/var/run/docker.sock&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;./data:/app/data&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;/full/path/to/folder/stacks:/full/path/to/folder/stacks&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;environment&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;DOCKGE_STACKS_DIR=/full/path/to/folder/stacks&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;ثم احفظ الملف من خلال الضغط على&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ctrl+x&lt;/li&gt;
&lt;li&gt;y&lt;/li&gt;
&lt;li&gt;enter&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ملاحظة مهمة:&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;لازم المسار الي فيه ال ستاكس يكون مسار كامل مسار الداتا عادي يكون نسبي&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;نسبي مثل: ./data&lt;/li&gt;
&lt;li&gt;كامل مثل: /home/fahdlabs/dockge/stacks&lt;/li&gt;
&lt;li&gt;ومسار الستاكس لازم اليمين يكون نفس اليسار&lt;/li&gt;
&lt;li&gt;مسار &lt;code&gt;DOCKGE_STACKS_DIR&lt;/code&gt; لازم يطابق المسار المربوط في &lt;code&gt;volumes&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img alt="ملف compose.yaml الخاص بـ Dockge قبل التشغيل" class="gallery-image" data-flex-basis="397px" data-flex-grow="165" height="586" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.fahdlabs.com/p/dockge-docker-compose-manager/step-01-dockge-compose-yaml.png" srcset="https://blog.fahdlabs.com/p/dockge-docker-compose-manager/step-01-dockge-compose-yaml_hu_abb16e3122391931.png 800w, https://blog.fahdlabs.com/p/dockge-docker-compose-manager/step-01-dockge-compose-yaml.png 971w" width="971"&gt;&lt;/p&gt;
&lt;h2 id="3-تجهيز-المجلدات-المطلوبة"&gt;3) تجهيز المجلدات المطلوبة
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mkdir -p data stacks
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="4-تشغيل-dockge"&gt;4) تشغيل Dockge
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker compose up -d
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;تحقق:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker ps
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;img alt="تشغيل Dockge عبر docker compose up -d" class="gallery-image" data-flex-basis="1335px" data-flex-grow="556" height="174" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.fahdlabs.com/p/dockge-docker-compose-manager/step-02-docker-compose-up-d.png" srcset="https://blog.fahdlabs.com/p/dockge-docker-compose-manager/step-02-docker-compose-up-d_hu_cee9c7fca96c87c6.png 800w, https://blog.fahdlabs.com/p/dockge-docker-compose-manager/step-02-docker-compose-up-d.png 968w" width="968"&gt;&lt;/p&gt;
&lt;h2 id="5-فتح-الواجهة-وإنشاء-حساب-admin"&gt;5) فتح الواجهة وإنشاء حساب Admin
&lt;/h2&gt;&lt;p&gt;من المتصفح:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;http://RASPBERRY_PI_IP:5001
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;أول دخول سيطلب إنشاء حساب مدير.&lt;/p&gt;
&lt;p&gt;&lt;img alt="إنشاء حساب المدير عند أول دخول إلى Dockge" class="gallery-image" data-flex-basis="492px" data-flex-grow="205" height="314" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.fahdlabs.com/p/dockge-docker-compose-manager/step-03-dockge-admin-account.png" width="645"&gt;&lt;/p&gt;
&lt;h2 id="6-إنشاء-أول-stack-تجريبي-whoami"&gt;6) إنشاء أول Stack تجريبي (whoami)
&lt;/h2&gt;&lt;p&gt;من داخل Dockge:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;اضغط &lt;code&gt;+ Compose&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;سمّ الـ Stack: &lt;code&gt;whoami&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;ألصق ملف Compose التالي:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;services&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;whoami&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;image&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;traefik/whoami&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;container_name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;whoami&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;restart&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;unless-stopped&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;ports&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="s2"&gt;&amp;#34;8080:80&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ol start="4"&gt;
&lt;li&gt;احفظ.&lt;/li&gt;
&lt;li&gt;اضغط &lt;code&gt;Start&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;اختبر الخدمة:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;http://RASPBERRY_PI_IP:8080
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;ليش &lt;code&gt;whoami&lt;/code&gt;؟ لأنها خدمة اختبار خفيفة جدًا وتأكد بسرعة أن مسار Dockge كامل شغال من البداية للنهاية.&lt;/p&gt;
&lt;p&gt;&lt;img alt="إنشاء وتشغيل Stack whoami من واجهة Dockge" class="gallery-image" data-flex-basis="408px" data-flex-grow="170" height="401" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.fahdlabs.com/p/dockge-docker-compose-manager/step-04-create-whoami-stack.png" width="683"&gt;&lt;/p&gt;
&lt;h2 id="7-أهم-المميزات-العملية-في-dockge"&gt;7) أهم المميزات العملية في Dockge
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Logs&lt;/code&gt;: لمتابعة مشاكل التشغيل بسرعة.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Edit&lt;/code&gt;: تعديل Compose بدون الرجوع للتيرمنال.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Stop/Start/Restart&lt;/code&gt;: إدارة سريعة لكل Stack.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Update&lt;/code&gt;: سحب أحدث صورة وإعادة التشغيل.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="هيكلة-منظمة-مقترحة-لمشاريعك"&gt;هيكلة منظمة مقترحة لمشاريعك
&lt;/h2&gt;&lt;p&gt;داخل &lt;code&gt;~/dockge/stacks/&lt;/code&gt; اجعل كل خدمة في مجلد مستقل:&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;دوكجي يسويها لك بهذا الشكل من نفسه&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;stacks/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; adguard/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; compose.yaml
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; immich/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; compose.yaml
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; uptime-kuma/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; compose.yaml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;هذا يسهل النسخ الاحتياطي والمتابعة.&lt;/p&gt;
&lt;h2 id="أخطاء-شائعة-وحلولها"&gt;أخطاء شائعة وحلولها
&lt;/h2&gt;&lt;h3 id="1-docker-permission-denied"&gt;1. &lt;code&gt;docker: permission denied&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;أضف المستخدم لمجموعة docker:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo usermod -aG docker &lt;span class="nv"&gt;$USER&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;ثم أعد تسجيل الدخول.&lt;/p&gt;
&lt;h3 id="2-no-such-file-or-directory-composeyaml"&gt;2. &lt;code&gt;no such file or directory: compose.yaml&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;شغّلت الأمر من مجلد غير صحيح.
الحل: ادخل &lt;code&gt;~/dockge&lt;/code&gt; ثم أعد التنفيذ.&lt;/p&gt;
&lt;h3 id="3-stack-لا-يظهر-في-dockge"&gt;3. Stack لا يظهر في Dockge
&lt;/h3&gt;&lt;p&gt;تأكد أن:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;قيمة &lt;code&gt;DOCKGE_STACKS_DIR&lt;/code&gt; نفس المسار الكامل الذي اخترته للـ stacks.&lt;/li&gt;
&lt;li&gt;مثال صحيح:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;volumes&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;/home/USERNAME/dockge/stacks:/home/USERNAME/dockge/stacks&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;environment&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;DOCKGE_STACKS_DIR=/home/USERNAME/dockge/stacks&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="faq"&gt;FAQ
&lt;/h2&gt;&lt;h3 id="هل-dockge-بديل-كامل-لـ-portainer"&gt;هل Dockge بديل كامل لـ Portainer؟
&lt;/h3&gt;&lt;p&gt;ليس نفس الفلسفة. Dockge أخف ومركز على Docker Compose بشكل مباشر وبسيط.&lt;/p&gt;
&lt;p&gt;قاعدة سريعة:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;إذا تريد إدارة Compose بسرعة وبشكل واضح: Dockge ممتاز.&lt;/li&gt;
&lt;li&gt;إذا تريد إدارة أوسع (Swarm/Features كثيرة): فكر لاحقًا بأدوات أكبر.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="هل-ينفع-على-سيرفر-واحد-منزلي"&gt;هل ينفع على سيرفر واحد منزلي؟
&lt;/h3&gt;&lt;p&gt;نعم، وهذه أفضل حالة استخدام له.&lt;/p&gt;
&lt;h3 id="هل-يدعم-العربية"&gt;هل يدعم العربية؟
&lt;/h3&gt;&lt;p&gt;نعم، يوجد دعم واجهة عربي ويمكن تغييره من الإعدادات.&lt;/p&gt;
&lt;h2 id="المصادر-الرسمية-للتحديثات"&gt;المصادر الرسمية (للتحديثات)
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Dockge Official Website: &lt;a class="link" href="https://dockge.kuma.pet/" target="_blank" rel="noopener"
 &gt;https://dockge.kuma.pet/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Dockge GitHub: &lt;a class="link" href="https://github.com/louislam/dockge" target="_blank" rel="noopener"
 &gt;https://github.com/louislam/dockge&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Docker Compose Documentation: &lt;a class="link" href="https://docs.docker.com/compose/" target="_blank" rel="noopener"
 &gt;https://docs.docker.com/compose/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="الخلاصة"&gt;الخلاصة
&lt;/h2&gt;&lt;p&gt;Dockge يعطيك طريقة سريعة ومرتبة لإدارة &lt;code&gt;docker-compose&lt;/code&gt; في الهوم لاب. وهو تجهيز ممتاز قبل تشغيل خدمات مثل AdGuard Home.&lt;/p&gt;</description></item></channel></rss>