Featured image of post تثبيت خادم Radicale بستخدام Docker لمزامنة جهات الاتصال والتقويم

تثبيت خادم Radicale بستخدام Docker لمزامنة جهات الاتصال والتقويم

كنت استخدم Etesync لمزامنة جهات الاتصال, لكن للاسف تطبيقهم على iOS لم يعد يعمل.

لحسن الحظ وجدت Radicale, خادم مفتوح المصدر يستخدم بروتوكول Caldav/cardav المعروف لمزامنة جهات الاتصال و التقويم و حتى قوائم المهام وحتى ايضا الملاحظات. طبعا مقال من FarisZR لازم نستخدم فيه دوكر.

مشروع Radicale ليس لديه صورة دوكر رسمية, لكن tomesquest وفر علينا الوقت وانشئ صورة دوكر جاهزة.

docker-compose.yml

  • استخدمت شبكة خارجية باسم Web لربط الخدمة بCaddy, بامكانك كشف المنفذ 5232 مباشرة اذا احتجت.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
networks:
  web:
    external: true

services:
  radicale:
    image: tomsquest/docker-radicale:latest
    container_name: radicale
    # ports:
    #   - 127.0.0.1:5232:5232
    init: true
    read_only: true
    security_opt:
      - no-new-privileges:true
    cap_drop:
      - ALL
    cap_add:
      - SETUID
      - SETGID
      - CHOWN
      - KILL
    deploy:
      resources:
        limits:
          memory: 256M
          pids: 50
    healthcheck:
      test: curl -f http://127.0.0.1:5232 || exit 1
      interval: 30s
      retries: 3
    restart: unless-stopped
    volumes:
      - ./data:/data
      - ./config:/config
    networks:
      - web

config

هناك ملف Config مضمن بشكل افتراضي, لكن سنحتاج لتعديله لنضيف خيارات تسجيل الدخول وكلمات المرور.

أستخدم قالب ملف config من Github, لتنشئ الملف محليا دخل مجلد config, قم بتعديله كما يناسبك, لكن تاكد من عدم تعديل اماكن الملفات.

Auth

تاكد ان قسم Auth في مِلَفّ config يحتوي على هذه الإعدادات:

1
2
3
4
[auth]
type = htpasswd
htpasswd_filename = /config/users
htpasswd_encryption = bcrypt

عمل hash لكلمة السر مع bcrypt

في اعدادات auth استخدمنا bcrypt كصيغة الhash لكلمة المرور. لعمل هاش لكلمة المرور الخاص بك استخدم هذا الامر

1
echo -n "your password" | mkpasswd --method=bcrypt

ثم انشئ ملف users داخل مجلد config المربوط بالبرمجية. محتواه يجب ان يكون مثل هكذا:

1
john:$2a$10$l1Se4qIaRlfOnaC1pGt32uNe/Dr61r4JrZQCNnY.kTx2KgJ70GPSm

والان بامكانك تشغيل الخادم!

1
docker compose up -d

Caddy reverse proxy

1
2
3
4
sync.example.com {
	reverse_proxy radicale:5232
	encode zstd gzip
}

استيراد البيانات

من تجربتي استيراد البيانات عبر واجهه الويب لم يعمل, قمت باستيراد جهات الاتصال على هاتفي ثم زامنتها وهكذا حللت المشكلة.

FarisZR
مبني بستخدام Hugo
قالب Stack مصمم من Jimmy