Remove `enable-default-apps.ts` script, add `disable-deprecated-apps.ts`, update seeding logic in `seed.ts` to set `isActive` to false for documents, and modify `DOCKER.md` and `scripts/package.json` accordingly. Replit-Commit-Author: Agent Replit-Commit-Session-Id: 77cfe984-2c65-4152-bb7a-0df28274fe66 Replit-Commit-Checkpoint-Type: full_checkpoint Replit-Commit-Event-Id: ac51f801-911b-4be5-b27c-e3212d5c0c73 Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/c3c252e4-c83d-40ca-9fff-99a3ea60701e/77cfe984-2c65-4152-bb7a-0df28274fe66/1WKAcHk Replit-Helium-Checkpoint-Created: true
6.3 KiB
تشغيل Tx OS عبر Docker
دليل سريع لتشغيل المشروع بالكامل على جهازك (ماك / لينكس) بأمر واحد، بدون الحاجة لتثبيت Node أو Postgres يدوياً.
المتطلبات
- Docker Desktop (الإصدار 4.x أو أحدث) — حمّله من https://www.docker.com/products/docker-desktop/.
- يدعم Apple Silicon (M1/M2/M3/M4) و Intel.
- تأكد إنه شغّال بعد التثبيت (تشوف أيقونة الحوت بأعلى الشاشة).
- Git — موجود غالباً، تأكد بـ
git --version.
لا تحتاج تثبيت Node أو pnpm أو Postgres على الماك — كله يشتغل داخل الحاويات.
التشغيل لأول مرة
git clone https://desktop-11cj93j.tail866923.ts.net/rafraa/TX.git
cd TX
./start.sh
السكربت يعمل تلقائياً:
- ينشئ ملف
.envمن.env.docker.exampleويولّدSESSION_SECRETوPOSTGRES_PASSWORDعشوائيين. - يبني صور Docker (أول مرة يأخذ 5–10 دقائق — Node, Chromium, dependencies).
- يشغّل Postgres ثم يدفع جداول قاعدة البيانات (drizzle-kit push) ثم يزرع البيانات الأولية (seed).
- يشغّل API server والواجهة خلف Nginx.
بعدها افتح: http://localhost:3000
بيانات الدخول الأولى
أول مرة يشغّل فيها start.sh يطبع لك كلمتي مرور عشوائيتين في الترمنال (وكمان يحفظهن في .env):
Admin login: admin / <كلمة سر عشوائية>
User login: ahmed / <كلمة سر عشوائية>
انسخهن فوراً. لو فقدت كلمة سر admin تحتاج تدخل قاعدة البيانات يدوياً لإعادة تعيينها. تقدر تغيّرها لاحقاً من لوحة الإدارة داخل التطبيق.
الأوامر اليومية
| الأمر | الوظيفة |
|---|---|
./start.sh |
تشغيل (build إذا لزم) |
./start.sh logs |
متابعة سجلّات الحاويات |
./start.sh stop |
إيقاف بدون حذف (البيانات تبقى) |
./start.sh down |
حذف الحاويات (البيانات تبقى في الـ volumes) |
./start.sh rebuild |
إعادة بناء الصور من الصفر |
./start.sh reset |
خطر: حذف قاعدة البيانات والملفات المرفوعة |
البنية
http://localhost:3000 → nginx (web container)
├── / → ملفات React الثابتة
└── /api/* → http://api:8080 (Node Express + Socket.IO)
└── postgres:5432
└── /app/storage (volume للملفات)
ثلاث حاويات + قاعدة بيانات:
- postgres — Postgres 16، البيانات في volume اسمه
tx-os_postgres_data. - migrate — يشتغل مرة وحدة عند كل تشغيل، يدفع schema ويزرع البيانات.
- api — Node 24 + Chromium (لتوليد PDF) + التخزين المحلي.
- web — Nginx يقدّم الواجهة ويعمل reverse proxy للـ API.
تخصيص
عدّل .env بعد ما يُنشأ. أهم القيم:
APP_PORT=3000— منفذ المتصفح (غيّره مثلاً إلى 8080 لو 3000 محجوز).SESSION_SECRET— سر توقيع الجلسات (مولّد تلقائياً، لا تشاركه).POSTGRES_PASSWORD— كلمة مرور قاعدة البيانات.STORAGE_DRIVER=local— التخزين على القرص داخل الحاوية (افتراضي ومناسب لمعظم الحالات).SMTP_*— إعدادات البريد لإشعارات اجتماعات الإدارة (اختياري).
بعد تعديل .env نفّذ ./start.sh stop ثم ./start.sh لإعادة التحميل.
استكشاف الأخطاء
- المنفذ 3000 محجوز: عدّل
APP_PORTفي.env. - الواجهة ما تفتح: راجع
./start.sh logs، خصوصاً سجلapiوmigrate. - بحاجة للوصول لقاعدة البيانات:
docker compose exec postgres psql -U tx tx. - مساحة القرص:
docker system pruneيحذف الصور غير المستخدمة (لا يلمس الـ volumes).
التحديث من Gitea
git pull
./start.sh rebuild
تنبيه التحديثات (System Updates)
صفحة Admin → System Updates تعرض الإصدار الحالي وتقدر تفحص لو في إصدار أحدث على Gitea. للتفعيل:
-
تأكد أن ملف
latest.jsonموجود في جذر الريبو على Gitea بنفس بنيةversion.json:{ "version": "0.2.0", "build": "20260601.abc1234" } -
أضف في
.env(أوdocker-compose.ymlتحتservices.api.environment):LATEST_VERSION_URL=https://desktop-11cj93j.tail866923.ts.net/rafraa/TX/raw/branch/main/latest.json -
أعد التشغيل:
./start.sh stop && ./start.sh.
عند كل إصدار جديد: حدّث latest.json في الريبو وادفع. عملاء Tx OS سيرون شارة "Update available" عند ضغطهم على Check Now.
رقم البناء (
build) يُولَّد تلقائياً من git قبل كلpnpm run build(انظرscripts/update-version.mjs)، فلا تحتاج تعديله يدوياً فيversion.json.
تعطيل تطبيقات التقويم والإشعارات والمستندات
افتراضياً تصل الثلاثة مُعطَّلة في البيئات الجديدة (السيد فقط يُدخل صفوفاً جديدة، ولا يعدّل الموجودة). لتعطيلها على بيئة موجودة فيها هذه التطبيقات مفعّلة (مرة واحدة):
docker compose exec api pnpm --filter @workspace/scripts run disable-deprecated-apps
السكربت idempotent (آمن لإعادة التشغيل) ويضبط is_active=false لـ calendar و notifications و documents فقط. يمكن إعادة تفعيل أي منها لاحقاً من إعدادات التطبيقات داخل لوحة التحكم.