استضافة Ronde ذاتيًا
يعمل Ronde على أي جهاز مزوّد بـ Docker: التطبيق، وقاعدة بيانات PostgreSQL، وحاوية تعمل مرة واحدة لتطبّق عمليات ترحيل قاعدة البيانات في كل إصدار. كل ما في إصدار Community مجاني، بلا حد للاجتماعات أو الأشخاص. ويفعّل مفتاح الترخيص ميزات Team أو Enterprise.
البدء
احصل على ملفات أحد الإصدارات:
mkdir ronde && cd ronde curl -fsSLO https://raw.githubusercontent.com/joinronde/ronde/main/docker/compose.yml curl -fsSL https://raw.githubusercontent.com/joinronde/ronde/main/docker/.env.example -o .envاملأ ملف
.env: العنوان الذي سيفتحه الناس (RONDE_URL) وثلاثة أسرار.for v in POSTGRES_PASSWORD AUTH_SECRET SECRET_KEY; do sed -i "s|^$v=.*|$v=$(openssl rand -base64 32 | tr -d '/+=')|" .env; doneشغّل:
docker compose up -dافتح
RONDE_URLوأنشئ الحساب الأول: يصبح مسؤول النسخة.
HTTPS
وجّه نطاقًا إلى الجهاز، واضبط RONDE_DOMAIN=ronde.example.com وRONDE_URL=https://ronde.example.com في ملف
.env، ثم شغّل باستخدام الملف التعريفي https. يحصل Caddy على الشهادة ويجدّدها.
docker compose --profile https up -d
إن كان لديك وكيل عكسي خاص بك، فوجّه الطلبات بدلًا من ذلك إلى المنفذ RONDE_PORT (3000 افتراضيًا) وحافظ على
ترويسات X-Forwarded-*. يجب ألا تُخزَّن أحداث Server-Sent Events مؤقتًا (proxy_buffering off مع nginx).
البريد الإلكتروني
تحتاج روابط تسجيل الدخول والدعوات والتذكيرات إلى خادم SMTP: SMTP_URL=smtp://user:password@smtp.example.com:587
وMAIL_FROM. للتجربة، يشغّل الملف التعريفي mail أداة Mailpit التي تلتقط كل الرسائل:
echo "SMTP_URL=smtp://mail:1025" >> .env
docker compose --profile mail up -d # emails at http://localhost:8025
ليتمكن كل شخص من ملء بطاقته بالرد على التذكير، امنح Ronde صندوق بريد ليقرأه: INBOUND_IMAP_URL=imaps://user:password@imap.example.com:993/INBOX، وINBOUND_ADDRESS إن لم يكن اسم الدخول هو عنوان البريد. تُرسَل الردود إليه؛ وفي كل دقيقة يقرأ Ronde الردود على التذكيرات، ويضيف أسطرها إلى البطاقة، ويؤكد ذلك بالبريد، وينقلها إلى مجلد Ronde. تبقى بقية رسائل الصندوق على حالها، فيمكن أن يكون عنوان التواصل المعتاد لديك.
تحتاج الإشعارات الفورية (اقتراب دورك، تذكيرات البطاقة، الجرس) إلى زوج مفاتيح للنسخة: npx web-push generate-vapid-keys، ثم WEB_PUSH_PUBLIC_KEY وWEB_PUSH_PRIVATE_KEY. احتفظ بهما: الأجهزة التي فعّلت الإشعارات تعتمد عليهما. يجب أن يعمل Ronde عبر HTTPS؛ وعلى iPhone يُضاف أولًا إلى الشاشة الرئيسية.
تسجيل الدخول
تعمل الحسابات المحلية والروابط السحرية فورًا. يحدد SIGNUP_POLICY من يمكنه إنشاء حساب: invite-only
(افتراضيًا)، أو open، أو domains مع SIGNUP_ALLOWED_DOMAINS. يُضبط مزوّد OpenID Connect واحد (Keycloak،
Authentik، Entra ID، Okta…) بمتغيرات OIDC_*؛ وGoogle وGitHub وMicrosoft بمتغيراتها <PROVIDER>_CLIENT_ID
و<PROVIDER>_CLIENT_SECRET. عنوان إعادة التوجيه: <RONDE_URL>/api/auth/callback/<provider>.
تفريغ نصي دون إرسال الصوت إلى الخارج
يستخدم التفريغ النصي (Team) خدمة لتحويل الكلام إلى نص متوافقة مع واجهة OpenAI. لإبقاء الصوت على خوادمك، شغّل
الملف التعريفي whisper ووجّه Ronde إليه:
cat >> .env <<'ENV'
TRANSCRIPTION_URL=http://whisper:8000/v1
TRANSCRIPTION_MODEL=Systran/faster-whisper-small
ENV
docker compose --profile whisper up -d
Slack
مع ترخيص Team أو Enterprise، يمكن لمساحات العمل إضافة Ronde إلى Slack: تذكيرات البطاقة برسائل مباشرة،
وبطاقات تُملأ من نموذج Slack، وإشعارات في قناة، والأمر /ronde. تحتاج النسخة إلى تطبيق Slack خاص بها
يُنشأ مرة واحدة. يجب أن يصل Slack إلى RONDE_URL عبر HTTPS.
نزّل بيان التطبيق واستبدل فيه كل
https://ronde.example.comبعنوانRONDE_URLلديك:curl -fsSLO https://raw.githubusercontent.com/joinronde/ronde/main/docker/slack-manifest.ymlفي api.slack.com/apps: Create New App › From a manifest، اختر مساحة Slack لديك والصق الملف.
انسخ مفاتيح Basic Information › App Credentials إلى
.env(SLACK_CLIENT_IDوSLACK_CLIENT_SECRETوSLACK_SIGNING_SECRET)، ثم شغّلdocker compose up -d.في Ronde، يفتح مالك كل مساحة عمل أو مسؤولها الإعدادات › Slack › إضافة إلى Slack.
لإضافة التطبيق إلى عدة مساحات Slack، فعّل Manage Distribution في إعدادات التطبيق.
Microsoft Teams
مع ترخيص Team أو Enterprise، يمكن لمساحات العمل إضافة Ronde إلى Microsoft Teams: تذكيرات البطاقة برسالة
شخصية، وبطاقات تُملأ من بطاقة تفاعلية، وإشعارات في قناة، والأمر ronde. يحتاج الخادم إلى تطبيق Teams خاص به،
أي Azure Bot يُسجَّل مرة واحدة في مؤسستك على Microsoft. يجب أن تصل Microsoft إلى RONDE_URL عبر HTTPS.
- في بوابة Azure: Create a resource › Azure Bot، مع معرّف (
ronde)، والخطة المجانية F0، وType of App: Single Tenant، وCreate new Microsoft App ID. - في البوت، Settings › Configuration: اضبط Messaging endpoint على
https://ronde.example.com/api/teams/messages(عنوانRONDE_URLلديك)، واحفظ، وانسخ Microsoft App ID وApp Tenant ID. - يفتح Manage Password في الصفحة نفسها تسجيل التطبيق: Certificates & secrets › New client secret، ثم انسخ Value الخاصة به (تظهر مرة واحدة).
- في البوت، Settings › Channels: أضف Microsoft Teams واقبل شروطه.
- ضع القيم الثلاث في
.env(TEAMS_APP_IDوTEAMS_TENANT_IDوTEAMS_APP_PASSWORD)، ثم شغّلdocker compose up -d. - في Ronde، يفتح مالك مساحة العمل أو مسؤولها الإعدادات › Microsoft Teams وينزّل التطبيق. يحمّله مسؤول Teams (مركز إدارة Teams › تطبيقات Teams › إدارة التطبيقات › تحميل تطبيق جديد) ويضيفه إلى فريق: ينشر Ronde بطاقة في قناته، والربط بـ Ronde يختار مساحة العمل.
تنتهي صلاحية سر العميل بعد 6 إلى 24 شهرًا: أنشئ السر التالي قبل ذلك واستبدل TEAMS_APP_PASSWORD. يخدم البوت
أحادي المستأجر أشخاص مؤسستك على Microsoft؛ ولتقديم التطبيق لمؤسسات أخرى، يُنشر في Teams Store.
الترقية
docker compose pull && docker compose up -d
تطبّق الحاوية migrate عمليات ترحيل الإصدار الجديد قبل بدء التطبيق. ثبّت إصدارًا بـ RONDE_VERSION=1.0.0-beta.3 في
ملف .env لتختار متى تُرقّي.
النسخ الاحتياطية
كل شيء موجود في وحدة تخزين PostgreSQL:
docker compose exec db pg_dump -U ronde ronde | gzip > ronde-$(date +%F).sql.gz
الصور
| الصورة | ما هي |
|---|---|
ghcr.io/joinronde/ronde |
التطبيق، بكل الإصدارات (الميزات المدفوعة معطّلة بلا ترخيص) |
ghcr.io/joinronde/ronde-ce |
التطبيق دون شيفرة الإصدارات المدفوعة (AGPL فقط) |
ghcr.io/joinronde/ronde-migrate |
عمليات ترحيل قاعدة البيانات للإصدار نفسه |
يقبل كل متغير سري أيضًا الصيغة <NAME>_FILE (أسرار Docker). التعليم: تحصل المدارس والجامعات على الخطط المدفوعة
مجانًا، اطلبها من https://joinronde.com/ar/education.