[{"data":1,"prerenderedAt":184},["ShallowReactive",2],{"seo-verification":3,"blog-استضافة-coder-على-vps-بيئات-تطوير-سحابية-ar":6},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-استضافة-coder-على-vps-بيئات-تطوير-سحابية-ar",{"id":9,"slug":10,"slugs":11,"title":15,"excerpt":16,"readTime":17,"views":18,"isPinned":19,"noindex":19,"publishedAt":20,"updatedAt":21,"category":22,"categories":27,"featuredImage":29,"bgImage":30,"posterImage":31,"relatedSolution":32,"intro":35,"sections":36,"ctaTitle":120,"ctaBody":121,"ctaButton":122,"ctaUrl":123,"relatedPosts":124},571,"استضافة-coder-على-vps-بيئات-تطوير-سحابية",{"fr":12,"en":13,"ar":10,"es":14},"self-host-coder-vps","self-host-coder-vps-cloud-development-environments","autoalojar-coder-vps-entornos-de-desarrollo","Coder على VPS: بيئات تطوير سحابية مستضافة ذاتيًا","ثبّت Coder على خادم افتراضي: مساحات عمل Docker للفريق كله، وVS Code في المتصفح، ووصول SSH وقوالب Terraform، دون Codespaces.",7,0,false,"2026-11-08T00:00:00+00:00","2026-11-08T16:32:54+00:00",{"id":17,"name":23,"slug":24,"color":25,"icon":26},"الاستضافة الذاتية","self-hosting","bg-indigo-500\u002F10 text-indigo-400","cloud",[28],{"id":17,"name":23,"slug":24,"color":25,"icon":26},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fself-host-coder-vps-poster.svg",{"categorySlug":33,"appSlug":34},"التطوير","coder","يستغرق تثبيت PHP وNode.js والإصدار الصحيح من PostgreSQL وعشرات الإضافات على حاسوب كل مطوّر جديد وقتًا طويلًا، وتنتهي الإعدادات دائمًا بالاختلاف من جهاز إلى آخر. تحل بيئات التطوير السحابية مثل GitHub Codespaces أو Gitpod هذه المشكلة، لكنها تحتسب الكلفة بالساعة وتحتفظ بشيفرتك لديها. Coder منصة مفتوحة المصدر (رخصة AGPL-3.0) تؤدي العمل نفسه على خادمك: يحصل كل مطوّر بنقرة واحدة على مساحة عمل مطابقة، يصفها قالب Terraform. يثبّته هذا الدليل على خادم افتراضي باستخدام Docker Compose، ويضعه خلف nginx عبر HTTPS، وينشئ أول مساحة عمل Docker، ويشرح الاتصال بها من VS Code أو JetBrains أو SSH.",[37,41,51,82,85,98,102,105,108,111,114,117],{"type":38,"title":39,"body":40},"h2","ماذا يفعل Coder","يفصل Coder بين أمرين يُخلط بينهما كثيرًا: المحرر والبيئة. يبقى المحرر هو الذي تفضّله — VS Code في المتصفح أو على حاسوبك، أو بيئة JetBrains، أو طرفية بسيطة. أما البيئة فتعيش على الخادم: حاوية تضم الشيفرة واللغات وقواعد بيانات الاختبار وأدوات المشروع.\n\nتوصف هذه البيئة في **قالب** مكتوب بلغة Terraform. ينشره المدير مرة واحدة، ثم ينشئ كل مطوّر **مساحة عمله** من هذا القالب، ويشغّلها حين يعمل ويوقفها حين ينتهي. يتصل وكيل مثبّت في مساحة العمل بخادم Coder وينقل الطرفية والمنافذ وجلسات المحرر.",{"type":42,"title":43,"items":44},"ul","ما يقدّمه Coder",[45,46,47,48,49,50],"**مساحات عمل متطابقة** — يعمل الجميع على البيئة نفسها، الموصوفة في قالب بإصدارات.","**قالب Docker متوفر** — حاوية لكل مساحة عمل على الخادم، مع وحدة تخزين `\u002Fhome` دائمة.","**كل المحررات** — code-server في المتصفح، وVS Code Remote-SSH، وJetBrains Gateway، و`coder ssh`.","**تحويل المنافذ** — يفتح `coder port-forward` التطبيق قيد التطوير على حاسوبك.","**إيقاف تلقائي** — تتوقف المساحات الخاملة حسب جدولة القالب.","**حسابات ودخول موحّد** — حسابات محلية أو GitHub أو OpenID Connect.",{"type":52,"title":53,"headers":54,"rows":58},"comparison","Coder مقارنة بالخيارات الأخرى",[5,55,56,57],"Coder على VPS","code-server وحده","GitHub Codespaces",[59,64,69,74,78],[60,61,62,63],"المستخدمون","فريق بحسابات وأدوار","شخص واحد","حسابات GitHub",[65,66,67,68],"البيئة","قالب Terraform بإصدارات","الخادم نفسه","ملف devcontainer",[70,71,72,73],"المحررات","المتصفح وVS Code وJetBrains وSSH","المتصفح","المتصفح وVS Code وJetBrains",[75,76,76,77],"مكان الشيفرة","على خادمك","لدى GitHub",[79,80,80,81],"الكلفة","سعر الخادم","بساعة الحوسبة والتخزين",{"type":38,"title":83,"body":84},"المتطلبات","خادم Ubuntu 24.04 بذاكرة 2 غيغابايت وقرص 20 غيغابايت لمطوّر أو اثنين — وخطّط لـ 4 إلى 8 غيغابايت لفريق صغير —، مع Docker وإضافة Compose، ونطاق فرعي يشير إلى الخادم، مثل `coder.example.com`. لا غنى عن HTTPS: يتصل وكلاء مساحات العمل بالخادم على هذا العنوان، وتمر جلسات المحرر عبر WebSocket.",{"type":86,"title":87,"steps":88},"steps","ثبّت Coder باستخدام Docker Compose",[89,92,95],{"title":90,"body":91},"جهّز المجلد والأسرار","يحمل الملف `.env` كلمة مرور قاعدة البيانات، ومعرّف مجموعة Docker على المضيف — ما يسمح للخادم باستخدام مقبس Docker دون العمل بصلاحيات root — والنطاق.\n```bash\nmkdir -p \u002Fopt\u002Fcoder && cd \u002Fopt\u002Fcoder\n{\n  echo \"DB_PASSWORD=$(openssl rand -hex 16)\"\n  echo \"DOCKER_GID=$(stat -c %g \u002Fvar\u002Frun\u002Fdocker.sock)\"\n  echo \"DOMAIN=coder.example.com\"\n} > .env\nchmod 600 .env\n```",{"title":93,"body":94},"اكتب الملف docker-compose.yml","خدمتان: خادم Coder الذي يتضمن Terraform، وPostgreSQL. لا يُنشر المنفذ إلا على الواجهة المحلية، وسيتولى nginx أمر HTTPS.\n```yaml\nservices:\n  coder:\n    image: ghcr.io\u002Fcoder\u002Fcoder:v2.39.0\n    restart: unless-stopped\n    group_add:\n      - \"${DOCKER_GID}\"\n    depends_on:\n      database:\n        condition: service_healthy\n    ports:\n      - \"127.0.0.1:7080:7080\"\n    environment:\n      CODER_HTTP_ADDRESS: \"0.0.0.0:7080\"\n      CODER_ACCESS_URL: \"https:\u002F\u002F${DOMAIN}\"\n      CODER_PG_CONNECTION_URL: \"postgresql:\u002F\u002Fcoder:${DB_PASSWORD}@database:5432\u002Fcoder?sslmode=disable\"\n      CODER_TELEMETRY_ENABLE: \"false\"\n    volumes:\n      - \u002Fvar\u002Frun\u002Fdocker.sock:\u002Fvar\u002Frun\u002Fdocker.sock\n  database:\n    image: postgres:17.11-alpine\n    restart: unless-stopped\n    environment:\n      POSTGRES_USER: coder\n      POSTGRES_PASSWORD: ${DB_PASSWORD}\n      POSTGRES_DB: coder\n    volumes:\n      - coder-db:\u002Fvar\u002Flib\u002Fpostgresql\u002Fdata\n    healthcheck:\n      test: [\"CMD-SHELL\", \"pg_isready -U coder -d coder\"]\n      interval: 5s\n      retries: 12\nvolumes:\n  coder-db: {}\n```",{"title":96,"body":97},"شغّل وتحقق","ينشئ التشغيل الأول مخطط قاعدة البيانات في ثوانٍ.\n```bash\ndocker compose up -d\ndocker compose logs -f coder   # attendre « View the Web UI »\ncurl -fsS http:\u002F\u002F127.0.0.1:7080\u002Fhealthz\n```",{"type":99,"title":100,"body":101},"tip","مقبس Docker يمنح مفاتيح الخادم","ينشئ Coder مساحات العمل عبر مقبس Docker، ويستطيع كل من يعدّل قالبًا تشغيل أي حاوية على الخادم — أي التصرف بصلاحيات root على المضيف. احصر دوري المالك ومدير القوالب في أشخاص موثوقين، ولا تنشر المنفذ 7080 على العنوان العام أبدًا.",{"type":38,"title":103,"body":104},"ضع Coder خلف nginx عبر HTTPS","احصل على شهادة بالأمر `certbot certonly --nginx -d coder.example.com`، ثم عرّف الموقع. الترويستان `Upgrade` و`Connection` ضروريتان: بدونهما تفشل الطرفية في المتصفح واتصالات الوكلاء.\n```nginx\nserver {\n    listen 443 ssl;\n    http2 on;\n    server_name coder.example.com;\n    ssl_certificate     \u002Fetc\u002Fletsencrypt\u002Flive\u002Fcoder.example.com\u002Ffullchain.pem;\n    ssl_certificate_key \u002Fetc\u002Fletsencrypt\u002Flive\u002Fcoder.example.com\u002Fprivkey.pem;\n\n    location \u002F {\n        proxy_pass http:\u002F\u002F127.0.0.1:7080;\n        proxy_http_version 1.1;\n        proxy_set_header Upgrade $http_upgrade;\n        proxy_set_header Connection \"upgrade\";\n        proxy_set_header Host $host;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Forwarded-Proto $scheme;\n        proxy_read_timeout 1h;\n    }\n}\n```\n\nأعد تحميل nginx بالأمر `nginx -t && systemctl reload nginx`، ثم افتح `https:\u002F\u002Fcoder.example.com`. **أنشئ الحساب الأول فورًا**: يصبح أول زائر لشاشة الترحيب مالك التثبيت.",{"type":38,"title":106,"body":107},"أنشئ أول قالب وأول مساحة عمل","في **Templates**، انقر على **Create Template** واختر قالب البداية **Docker Containers**. يحمّل Coder مزوّدي Terraform اللازمين وينشر القالب. أنشئ بعد ذلك مساحة عمل منه: تبدأ حاوية على الخادم ويتصل وكيلها، وتعرض الصفحة الحالة **Running** مع زر لفتح code-server.\n\nالقالب ملف `main.tf` بسيط. لتكييفه مع مشروعك، غيّر الصورة الأساسية وأضف الأدوات إلى سكربت بدء الوكيل، ثم انشر إصدارًا جديدًا: تقترحه المساحات الموجودة عند إعادة تشغيلها التالية.",{"type":38,"title":109,"body":110},"اتصل من VS Code أو JetBrains أو SSH","يكفي المتصفح للبداية، لكن معظم المطوّرين يفضّلون محررهم المعتاد. ثبّت أداة سطر الأوامر على حاسوبك واربطها بالخادم:\n```bash\ncurl -L https:\u002F\u002Fcoder.com\u002Finstall.sh | sh\ncoder login https:\u002F\u002Fcoder.example.com\ncoder list\ncoder ssh mon-espace\ncoder port-forward mon-espace --tcp 3000:3000\ncoder config-ssh   # ajoute les hôtes coder.\u003Cespace> à ~\u002F.ssh\u002Fconfig\n```\n\nبعد `coder config-ssh`، يرى VS Code Remote-SSH وJetBrains Gateway كل مساحة عمل كمضيف SSH عادي. يمر الاتصال عبر عنوان HTTPS للخادم، فلا يُفتح أي منفذ SSH إضافي على الخادم.",{"type":38,"title":112,"body":113},"الإيقاف التلقائي وموارد الخادم","في حالة الخمول، يستهلك خادم Coder وقاعدة بياناته نحو 550 ميغابايت من الذاكرة، وتستهلك مساحة عمل خاملة مبنية على صورة قالب Docker نحو 200 ميغابايت — وأكثر بكثير أثناء البناء أو تشغيل الاختبارات. في إعدادات القالب، ضمن **Schedule**، حدّد مهلة للإيقاف التلقائي: لن تستهلك مساحة منسية مساءً شيئًا طوال الليل. تُحفظ وحدة التخزين `\u002Fhome` عند الإيقاف، ولا يُعاد إنشاء سوى الحاوية عند إعادة التشغيل.",{"type":38,"title":115,"body":116},"النسخ الاحتياطي والتحديث","الحسابات والقوالب والإعدادات محفوظة في PostgreSQL، وعمل المطوّرين في وحدات التخزين `\u002Fhome` لمساحات العمل.\n```bash\ncd \u002Fopt\u002Fcoder\ndocker compose exec -T database pg_dump -U coder coder | gzip > coder-$(date +%F).sql.gz\ndocker volume ls --filter name=coder-   # volumes \u002Fhome des espaces de travail\n```\n\nللتحديث، غيّر وسم الصورة في `docker-compose.yml` وفق [صفحة الإصدارات](https:\u002F\u002Fgithub.com\u002Fcoder\u002Fcoder\u002Freleases)، ثم شغّل `docker compose pull && docker compose up -d`: يرحّل الخادم قاعدة بياناته عند البدء. خذ نسخة احتياطية قبل كل ترقية رئيسية.",{"type":38,"title":118,"body":119},"التثبيت بنقرة واحدة على ServOrbit","على خادم ServOrbit، يُثبَّت Coder من المتجر. ينشر السكربت الخادم وقاعدة بيانات PostgreSQL، ويولّد كلمة مرور المدير وينشئ حساب المالك قبل أي كشف للخدمة — فلا تكون شاشة تسجيل المدير الأول متاحة من الإنترنت أبدًا. كما يضبط الوكيل العكسي nginx عبر HTTPS مع WebSocket، على نطاق فرعي من نطاقك أو على النطاق الفرعي المجاني للخادم. سجّل الدخول بالعنوان `admin@servorbit.local` وكلمة المرور المعروضة في مساحة العميل، ثم غيّرها من إعدادات الحساب.","بيئات التطوير على خادمك الافتراضي","يكفي خادم ServOrbit بنظام Ubuntu 24.04 وذاكرة 2 غيغابايت لتشغيل Coder، وخطّط لـ 4 غيغابايت أو أكثر لفريق. تثبيت بنقرة واحدة من المتجر، وHTTPS على نطاقك أو على النطاق الفرعي المجاني للخادم، مع إنشاء حساب المالك وكلمة المرور لك.","ثبّت Coder","\u002Fapplications\u002Fالتطوير\u002Fcoder",[125,147,166],{"id":126,"slug":127,"slugs":128,"title":132,"excerpt":133,"readTime":134,"views":17,"isPinned":19,"noindex":19,"publishedAt":135,"updatedAt":136,"category":137,"categories":142,"featuredImage":29,"bgImage":30,"posterImage":144,"relatedSolution":145},301,"تثبيت-code-server-vps",{"fr":129,"en":130,"ar":127,"es":131},"installer-code-server-vps","install-code-server-vps","instalar-code-server-vps","Code Server على VPS: VS Code في متصفحك","Code Server (MIT، 79 ألف نجمة): شغّل VS Code في متصفحك على VPS — مساحة عمل دائمة، محمية بكلمة مرور.",3,"2026-08-24T00:00:00+00:00","2026-11-04T16:30:27+00:00",{"id":138,"name":33,"slug":139,"color":140,"icon":141},4,"developpement","bg-warning\u002F10 text-warning","dev",[143],{"id":138,"name":33,"slug":139,"color":140,"icon":141},"\u002Fblog\u002Fcovers\u002Finstaller-code-server-vps-poster.svg",{"categorySlug":33,"appSlug":146},"code-server",{"id":148,"slug":149,"slugs":150,"title":154,"excerpt":155,"readTime":156,"views":157,"isPinned":19,"noindex":19,"publishedAt":158,"updatedAt":159,"category":160,"categories":161,"featuredImage":29,"bgImage":30,"posterImage":163,"relatedSolution":164},74,"استضافة-gitea-على-خادم-vps-الخاص-بك",{"fr":151,"en":152,"ar":149,"es":153},"heberger-gitea","host-gitea-on-your-own-vps","alojar-gitea-en-un-vps","استضافة Gitea على خادم VPS الخاص بك في 2026","انشُر ‏Gitea 1.25‏ على خادم VPS مع Docker وSSL. دليل شامل: CI\u002FCD مع ‏Gitea Actions‏، مقارنة ‏Gitea‏ مقابل ‏Forgejo v16‏، إدارة يومية، استكشاف أخطاء SSH وHTTPS.",13,1,"2026-04-07T00:00:00+00:00","2026-11-08T16:32:50+00:00",{"id":17,"name":23,"slug":24,"color":25,"icon":26},[162],{"id":17,"name":23,"slug":24,"color":25,"icon":26},"\u002Fblog\u002Fcovers\u002Fheberger-gitea-poster.svg",{"categorySlug":33,"appSlug":165},"gitea",{"id":167,"slug":168,"slugs":169,"title":173,"excerpt":174,"readTime":175,"views":157,"isPinned":19,"noindex":19,"publishedAt":176,"updatedAt":177,"category":178,"categories":179,"featuredImage":29,"bgImage":30,"posterImage":181,"relatedSolution":182},139,"حزمة-تطوير-docker-على-خادم-vps-بيئة-جاهزة-للبرمجة",{"fr":170,"en":171,"ar":168,"es":172},"stack-dev-docker-vps","docker-dev-stack-on-a-vps-an-environment-ready-for-coding","stack-dev-docker-en-vps","حزمة تطوير Docker على خادم VPS: بيئة جاهزة للبرمجة","أنشئ حزمة تطوير Docker كاملة على خادم VPS: Nginx وPHP-FPM وPostgreSQL وRedis وMailpit وAdminer — docker-compose.yml مفصّل، SSH tunneling، استكشاف الأخطاء.",10,"2026-02-06T00:00:00+00:00","2026-10-20T23:18:07+00:00",{"id":138,"name":33,"slug":139,"color":140,"icon":141},[180],{"id":138,"name":33,"slug":139,"color":140,"icon":141},"\u002Fblog\u002Fcovers\u002Fstack-dev-docker-vps-poster.svg",{"categorySlug":141,"appSlug":183},"docker-dev-stack",1794155875311]