ITSkillsCenter
الأمن السيبراني

نشر OpenMRS على Hetzner: درس كامل 2026

3 دقائق للقراءة

📍 المقالة الرئيسية للمجموعة: الصحة الرقمية CEDEAO 2026.

2-3 ساعات لتحويل VPS فارغ إلى نظام EMR OpenMRS عملي مع Reference Application 3.x، أول طبيب وممرضة وأول مريض. هذا الإجراء موثق عند مستشفيات في السنغال وكوت ديفوار والمغرب وتونس. التكلفة الإجمالية: 15-28 يورو/شهرياً للبنية التحتية الكاملة، مقابل 50,000+ USD/سنة للحلول التجارية.

المتطلبات

VPS Hetzner CCX13 minimum (4 vCPU، 8 جيجابايت RAM، 80 جيجابايت SSD). OpenMRS 3.x يحتاج Java + Tomcat + MySQL = 4-6 جيجابايت RAM في الإنتاج. اسم نطاق: emr.votre-hopital.com. شهادة TLS عبر Caddy. المستوى المتوقع: متقدم. الوقت المقدر: 2 إلى 3 ساعات.

الخطوة 1 — تحضير الـ VPS

OpenMRS Reference Application 3.x مبني على Java 17 + Tomcat 9 + MySQL 8 + Frontend React (microfrontends). تثبيت كل التبعيات:

apt update && apt upgrade -y
apt install -y openjdk-17-jdk-headless mysql-server-8.0 docker.io docker-compose-plugin nginx ufw
systemctl enable --now docker mysql nginx

الخطوة 2 — تكوين MySQL

قاعدة بيانات مخصصة لـ OpenMRS مع تشفير TDE اختياري للبيانات الحساسة:

mysql -u root -p
CREATE DATABASE openmrs CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'openmrs'@'localhost' IDENTIFIED BY 'mot-de-passe-très-fort';
GRANT ALL PRIVILEGES ON openmrs.* TO 'openmrs'@'localhost';
FLUSH PRIVILEGES;
EXIT;

# تكوين MySQL لأداء OpenMRS
nano /etc/mysql/mysql.conf.d/openmrs.cnf
[mysqld]
innodb_buffer_pool_size = 2G
innodb_log_file_size = 256M
innodb_flush_log_at_trx_commit = 2
max_connections = 200
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
systemctl restart mysql

الخطوة 3 — تنزيل OpenMRS Reference Application 3.x

OpenMRS 3.x = Backend Java (WAR) + Frontend SPA (microfrontends). الطريقة الأسرع: docker-compose.yml الرسمي.

cd /opt
git clone https://github.com/openmrs/openmrs-distro-referenceapplication openmrs
cd openmrs/docker
nano docker-compose.yml

تكوين متغيرات البيئة:

DB_HOST=host.docker.internal
DB_DATABASE=openmrs
DB_USERNAME=openmrs
DB_PASSWORD=mot-de-passe-fort
DB_CREATE_TABLES=true
DB_AUTO_UPDATE=true
MODULE_WEB_ADMIN=true
OMRS_DEV_DEBUG_PORT=8000
JVM_MAX_MEM=4096

الخطوة 4 — إطلاق Tomcat + OpenMRS

docker compose up -d
docker compose logs -f openmrs-backend
# انتظر «Server startup in xxxx ms» (2-5 دقائق أول مرة)

OpenMRS Backend يستمع على المنفذ 8080. Frontend SPA على 80 (nginx مدمج).

الخطوة 5 — معالج تكوين OpenMRS

افتح http://votre-vps:8080/openmrs. المعالج يطلب:

  • الحالة: «Production» (لـ Hetzner production VPS).
  • قاعدة البيانات: «Use existing database» (التي أنشأتها).
  • OpenMRS user/password admin.
  • Locale: French + Arabic.
  • تثبيت Reference Application modules.

التكوين يأخذ 5-10 دقائق (تثبيت 50+ modules + import concept dictionary CIEL).

الخطوة 6 — Caddy للـ HTTPS

Caddyfile للـ frontend SPA على المنفذ 80 والـ backend API على 8080:

emr.votre-hopital.com {
  reverse_proxy / localhost:80      # SPA frontend
  reverse_proxy /openmrs/* localhost:8080  # Backend API
  
  # mTLS optional للتبادلات FHIR بين منشآت
  # tls /etc/ssl/cert.pem /etc/ssl/key.pem {
  #   client_auth {
  #     mode require_and_verify
  #     trusted_ca_cert_file /etc/ssl/ca.pem
  #   }
  # }
}
systemctl reload caddy

الخطوة 7 — تكوين أول طبيب وممرضة

Login بـ admin user. Administration → Manage Users → Add User. أنشئ:

  • Dr. Amadou Diop (طبيب) — Role: Doctor.
  • Fatou Sarr (ممرضة) — Role: Nurse.
  • Khadija Fall (Reception) — Role: Receptionist.

كل دور له صلاحيات RBAC محددة مسبقاً (Doctor: write clinical notes، Nurse: vitals، Reception: register patients).

الخطوة 8 — تكوين أول Location (mariage hôpital)

Administration → Manage Locations → Add. مثال:

  • Hôpital Principal Dakar.
  • Service de Cardiologie.
  • Service de Pédiatrie.
  • Pharmacie Centrale.

كل Location لديه inventory مستقل ومتى أمكن، فاتورة منفصلة.

الخطوة 9 — أول مريض

OpenMRS Reference Application UI → Register Patient. أدخل:

  • الاسم الكامل: Aïssatou Diallo.
  • تاريخ الميلاد: 1985-03-15.
  • الجنس: Female.
  • العنوان: Dakar, Plateau.
  • الهاتف: +221701234567.
  • NIN (الرقم الوطني للهوية).

OpenMRS يولد Patient ID فريد (مثال: 100023M-2026-001). هذا الـ ID يحدد المريض على الصعيد الوطني.

الخطوة 10 — Encounter (consultation) أول

افتح ملف Aïssatou. اضغط «Start Visit». اختر نوع الزيارة (Outpatient). اضغط «Add Encounter». أدخل:

  • Vitals: BP 130/85، HR 78، Temperature 37.1.
  • Chief complaint: «Maux de tête depuis 3 jours».
  • Diagnosis: ICD-10 R51 (Headache).
  • Medication: Paracétamol 500mg، 1 comprimé 3x/jour، 5 jours.

الوصفة تُولَّد PDF تلقائياً قابل للطباعة أو الإرسال إلى الصيدلية عبر FHIR.

الأخطاء الشائعة

الخطأ السبب الحل
OOM Java JVM_MAX_MEM غير كافٍ زيادة إلى 4096+ MB
MySQL connection refused host.docker.internal لا يعمل Linux استخدم network=host أو IP المضيف
Setup wizard infinite loop session timeout زيادة Tomcat sessionTimeout
SPA frontend 404 nginx config مفقود راجع docker-compose nginx service
Modules لا تُثبَّت internet outbound محظور UFW allow outbound 443
Concept dictionary فارغ CIEL لم يُستورد Administration → Concepts → Import CIEL

التكيف مع السياق

أربع توضيحات. الكهرباء غير المستقرة. Hetzner Falkenstein يضمن 99.9% uptime. لكن مستشفى محلي مع OpenMRS On-Premise = UPS إلزامي + Generator. اللغة العربية في الواجهة. OpenMRS 3.x يدعم RTL. Administration → Locales → Add Arabic. ترجمة الواجهة 80% مكتملة. أسماء وأمراض محلية. CIEL يحتوي على concepts إفريقية (الملاريا، dengue، Sickle cell). أضف concepts خاصة بمستشفاك إذا لزم. التكامل الوطني. العديد من البلدان (السنغال، كوت ديفوار) لديها HIE (Health Information Exchange) وطنية. تكوين OpenMRS لإرسال البيانات المجمعة (DHIS2) يومياً.

دروس الإخوة

الأسئلة المتكررة

سعة Hetzner CCX13؟ 50-100 سرير + 200 consultation/يوم. ما بعد ذلك CCX23.

التحديثات OpenMRS؟ docker compose pull + up -d. اختبر على staging قبل.

Multi-site؟ OpenMRS multi-location موجود. للـ multi-organization (مستشفيات مختلفة)، استخدم OpenHIM وسط.

Mobile app للأطباء؟ OpenMRS Mobile (Android) رسمي. PWA Reference Application 3.x يعمل على هاتف أيضاً.

التكامل DHIS2؟ module DHIS2 رسمي لإرسال aggregated data للصحة العامة.

للاستزادة

Besoin d'un site web ?

Confiez-nous la Création de Votre Site Web

Site vitrine, e-commerce ou application web — nous transformons votre vision en réalité digitale. Accompagnement personnalisé de A à Z.

À partir de 250.000 FCFA
Parlons de Votre Projet
Publicité