Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

الخلاصاتاتصالالخصوصية© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
ogi — إطار عمل مفتوح المصدر لتحليل الروابط واستخبارات المصادر المفتوحة (OSINT) | Kitploit
أدوات/GitHubGitHub/khashashin/ogi
الاستخبارات مفتوحة المصدر (OSINT)الاستطلاعجمع المعلوماتأمن الويبالهندسة الاجتماعيةاستخبارات التهديداتجمع البريد الإلكترونيالتعلم والتعليمزاحف الويبتحليل DNS
GitHubkhashashin/ogi

ogi

2803733منذ 14 أيامتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

إطار عمل مفتوح المصدر لتحليل الروابط واستخبارات المصادر المفتوحة (OSINT)

عرض المستودعالموقع الإلكتروني
<div align="center">

<img src="https://assets.kitploit.com/production/public/readmes/12241/4d60ae367bb5f1d9b7d1d95df2b16186f01454c9610e40703f636923a0a70ced.png" alt="تميمة OGI" width="200" />

# OpenGraph Intel (OGI)

**إطار عمل مفتوح المصدر لتحليل الروابط المرئية وجمع المعلومات الاستخباراتية من المصادر المفتوحة (OSINT).**
**مجاني، قابل للاستضافة الذاتية، ومدعوم من المجتمع.**

[![License: AGPL v3](https://img.shields.io/badge/License-AGPL_v3-blue.svg)](https://www.gnu.org/licenses/agpl-3.0)
[![CI](https://github.com/khashashin/ogi/actions/workflows/ci.yml/badge.svg)](https://github.com/khashashin/ogi/actions/workflows/ci.yml)
[![Docker](https://github.com/khashashin/ogi/actions/workflows/docker-publish.yml/badge.svg)](https://github.com/khashashin/ogi/actions/workflows/docker-publish.yml)
[![Python 3.14+](https://img.shields.io/badge/python-3.14+-3776AB.svg?logo=python&logoColor=white)](https://www.python.org)
[![TypeScript](https://img.shields.io/badge/TypeScript-5.9-3178C6.svg?logo=typescript&logoColor=white)](https://www.typescriptlang.org)
[![React](https://img.shields.io/badge/React-19-61DAFB.svg?logo=react&logoColor=black)](https://react.dev)
[![FastAPI](https://img.shields.io/badge/FastAPI-0.134-009688.svg?logo=fastapi&logoColor=white)](https://fastapi.tiangolo.com)
![Version](https://img.shields.io/github/v/release/khashashin/ogi?display_name=tag&color=green)

[المميزات](#features) &bull; [لقطات الشاشة](#screenshots) &bull; [البدء السريع](#quick-start) &bull; [Docker](#docker) &bull; [محور التحويلات](#transform-hub) &bull; [الهندسة](#architecture) &bull; [المساهمة](#contributing)

</div>

---

> **ملاحظة:** هذا المشروع في تطور نشط. يتمتع بقدرات أساسية قوية وتغطية اختبارية، ونواصل تحسين التوثيق والتعزيز وعمق الميزات مع كل إصدار. المساهمات وتقارير الأخطاء والملاحظات مرحب بها جدًا.

## المميزات

- **الاستقصاء المرئي بالرسوم البيانية** — سحب وإفلات الكيانات، استكشاف الروابط بشكل تفاعلي
- **أكثر من 20 تحويلاً مدمجًا** — DNS، WHOIS، شهادات SSL، تحديد الموقع الجغرافي، إثراء الويب/البريد الإلكتروني/الهاش/الوسائط الاجتماعية، والمزيد
- **محور التحويلات** — تصفح وتثبيت التحويلات المجتمعية من [السجل](https://github.com/opengraphintel/ogi-transforms)
- **المحقق الذكي (AI Investigator)** — تحقيقات وكيلية تعتمد على الأوامر النصية، تخطط لعمليات التحويل، تبث التقدم مباشرة، وتلخص النتائج مع إمكانية التدقيق
- **استيراد / تصدير** — استيراد بصيغ JSON، CSV، GraphML، و MTGX
- **تحليل الرسوم البيانية** — المركزية، اكتشاف المجتمعات، أقصر المسارات
- **التعاون الفوري** — المشاريع، المشاركة، والمزامنة المباشرة عبر Supabase Realtime
- **وظائف التحويل غير المتزامنة** — قائمة انتظار Redis/RQ مع تحديثات التقدم عبر WebSocket
- **نظام الإضافات** — اكتشاف الإضافات القائم على الدلائل مع ملفات تعريف بصيغة YAML
- **أداة سطر الأوامر** — بحث وتثبيت وإدارة التحويلات من الطرفية
- **يعمل في أي مكان** — وضع SQLite المحلي (بدون إعدادات) أو PostgreSQL + Supabase للإعدادات الجماعية/السحابية
- **جاهز لـ Docker** — نشر بأمر واحد باستخدام `docker compose up`

## لقطات الشاشة

<div align="center">

|              الاستقصاء المرئي              |              إثراء الكيان              |
| :-------------------------------------------: | :-----------------------------------------: |
| ![الاستقصاء المرئي](https://assets.kitploit.com/production/public/readmes/12241/736f7dcefbbf9d6fe364a9485e3cdfbbe58abb28f544befa703c96f21c4af25f.png) | ![إثراء الكيان](https://assets.kitploit.com/production/public/readmes/12241/2f82a9ff6205006bf1cc00870f2456f4070c5b56237e62bfc23854ac328147f8.png) |

|              محور التحويلات              |             التصدير / الاستيراد             |
| :-------------------------------------: | :-------------------------------------: |
| ![محور التحويلات](https://assets.kitploit.com/production/public/readmes/12241/1aad4060afe92b4b922a37bc2223994e072d9c91154223ed74bfbd1fb6c5332d.png) | ![التصدير والاستيراد](https://assets.kitploit.com/production/public/readmes/12241/91c2d3ec087b52685a352bc6acd465784f56d45b4d8bdae1af5e1ed6a4af3523.png) |

</div>

## البدء السريع

### المتطلبات الأساسية

| الأداة                          | الإصدار |
| -------------------------------- | ------- |
| [Python](https://www.python.org) | 3.14+   |
| [uv](https://docs.astral.sh/uv/) | latest  |
| [Node.js](https://nodejs.org)    | 20+     |
| [pnpm](https://pnpm.io)          | latest  |

### الواجهة الخلفية```bash
cd backend
uv sync
uv run uvicorn ogi.main:app --reload
```
ستكون واجهة API متاحة على `http://localhost:8000`.

لتنفيذ التحويل محليًا، يجب أن يكون Redis وعامل التحويل (transform worker) قيد التشغيل أيضًا. Redis وحده لا يكفي.

ابدأ Redis:```bash
docker run -d --name ogi-redis -p 6379:6379 redis:7-alpine
```
ابدأ تشغيل عامل التحويل في محطة طرفية ثانية:```bash
cd backend
uv run python -m ogi.worker.run_worker
```
إذا رأيت `Job queue not available` أو `Redis not available`، تأكد من أن:

- يشير `OGI_REDIS_URL` إلى `redis://localhost:6379/0` للتشغيل المحلي على المضيف
- تم إعادة تشغيل الخلفية بعد أن أصبح Redis قيد التشغيل
- عملية العامل المنفصلة قيد التشغيل
- لا تستخدم اسم المضيف الخاص بـ Docker فقط `redis` خارج Docker Compose

إذا قمت بتشغيل الخلفية باستخدام PostgreSQL (`OGI_USE_SQLITE=false`)، فسيقوم بدء التشغيل بتطبيق ترحيلات Alembic تلقائيًا قبل خدمة الطلبات. تقوم عمليات نشر Docker بذلك أيضًا في نقطة دخول حاوية الخلفية.

يتم معالجة عمليات تشغيل AI Investigator بواسطة عامل منفصل آخر:```bash
cd backend
uv run python -m ogi.agent.run_worker
```
### الواجهة الأمامية```bash
cd frontend
pnpm install
pnpm dev
```
افتح http://localhost:5173. هذا كل شيء.

### AI Investigator

AI Investigator هو سير عمل اختياري مدعوم من مزود يمكنه تخطيط تسلسلات التحويل، وطلب الموافقات، وتلخيص تقدم التحقيق داخل مساحة العمل.

- افتح علامة التبويب `AI Investigator` داخل مشروع
- قم بتكوين مزود ونموذج في مربع حوار إعدادات المحقق
- قم بتخزين مفاتيح API الخاصة بالمزود في `API Keys`
- قم بتشغيل عملية `agent-worker` المنفصلة بجانب الخادم الخلفي

التنفيذ الحالي يدعم تكوين مزود لكل مستخدم وعامل مخصص ينفذ خطوات التحقيق بشكل مستقل عن خادم API الرئيسي.

### واجهة سطر الأوامر

طريقتان مدعومتان لتشغيل واجهة سطر الأوامر:

**موصى به** (لا يتطلب تنشيط):```bash
cd backend
uv sync
uv run ogi --help
```
**virtualenv المُفعَّل** (الأمر العادي `ogi`):```bash
cd backend
uv venv
# PowerShell:
.\.venv\Scripts\Activate.ps1
uv pip install -e .
ogi --help
```
## Docker

### التطوير```bash
cp .env.example .env
docker compose up
```
### الإنتاج

استخدم صور GHCR المعدة مسبقًا.

مهم: [docker-compose.prod.yml](https://github.com/khashashin/ogi/blob/main/docker-compose.prod.yml) يتطلب قاعدة بيانات PostgreSQL خارجية. لا يتضمن خدمة `db`.

إذا كنت ترغب في استخدام مجموعة Docker المحلية الكل في واحد مع Postgres وRedis المدمجين، استخدم:```bash
docker compose up -d
```
استخدم ملف compose للإنتاج فقط عندما يكون لديك بالفعل مثيل PostgreSQL يمكن الوصول إليه وقد قمت بتعيين `OGI_DATABASE_URL` وفقًا لذلك:```bash
docker compose -f docker-compose.prod.yml pull
docker compose -f docker-compose.prod.yml up -d
```
اضبط `OGI_IMAGE_TAG` في `.env` لتثبيت علامة صورة إصدار معينة (مثل `v0.2.6`). الافتراضي هو `latest`.

### Hetzner Cloud

[![Get Hetzner Cloud credits](https://img.shields.io/badge/Get_Hetzner_Cloud_credits-D50C2D?style=for-the-badge&logo=hetzner&logoColor=white)](https://hetzner.cloud/?ref=LspEGc99USBa)
[![Deploy Docker CE on Hetzner](https://img.shields.io/badge/Deploy_Docker_CE_on_Hetzner-D50C2D?style=for-the-badge&logo=hetzner&logoColor=white)](https://console.hetzner.com/deploy/docker-ce)

يمكن للمستخدمين الجدد في Hetzner استخدام الرابط الأول للتسجيل مع رصيد Hetzner Cloud. إنه رابط إحالة، لذا قد يحصل مشرف OGI أيضًا على رصيد Hetzner Cloud إذا كان الإحالة مؤهلاً. بعد إنشاء خادم، استخدم أوامر نشر Docker أعلاه لتشغيل OGI.

### حدود التحويل القابلة للتكوين

يأتي OGI بقيم قصوى معقولة لكل تحويل مثل `max_results`, `max_links`, `max_urls`, و `max_content_chars`، ولكن هذه الحدود أصبحت الآن قابلة للتجاوز بشكل مركزي بحيث يمكن للنشرات السحابية فرضها دون ترميز الحدود المحلية بشكل ثابت.

استخدم `OGI_TRANSFORM_SETTING_MAX_OVERRIDES` في `.env`:```env
OGI_TRANSFORM_SETTING_MAX_OVERRIDES=max_results=50,max_urls=25,max_links=40,max_content_chars=20000
```
لإزالة قيود محددة في نشر محلي أولاً:```env
OGI_TRANSFORM_SETTING_MAX_OVERRIDES=max_results=none,max_urls=none,max_links=none,max_content_chars=none
```
التجاوز (override) يتم تحديده بواسطة اسم إعداد التحويل (transform setting) ويطبق على التحويلات المدمجة وإضافات المجتمع التي تستخدم قاعدة/بيئة تشغيل OGI المشتركة.

### مثيل الاستضافة السحابية وخطة الداعم (Supporter)

تم بناء الإصدار المستضاف سحابيًا على [ogi.khas.app](https://ogi.khas.app) في البداية ليتمكن المستخدمون من تجربة OGI بسرعة قبل اتخاذ قرار استضافته ذاتيًا. ومنذ ذلك الحين أصبح الطريقة الأكثر شيوعًا لاستخدام المشروع، مع أكثر من 350 مستخدمًا نشطًا في السحابة.

أدى هذا الاستخدام أيضًا إلى زيادة تكاليف البنية التحتية لهذا المشروع الجانبي. لذلك، يتضمن المستودع اشتراك الداعم (Supporter) المخصص للسحابة ونظام فترة تباطؤ (cooldown) لتشغيل المحولات (transformer runs). على مثيل السحابة العامة، قد يكون المستخدمون المجانيون محدودين بمهلة زمنية بين تشغيل المحولات، بينما يمكن للمستخدمين الداعمين الاشتراك بمبلغ رمزي قدره 3 دولارات أمريكية شهريًا للمساعدة في تغطية تكاليف Supabase وVPS.

يمكن إلغاء اشتراكات الداعم من خلال عناصر تحكم الفوترة في الملف الشخصي أو بوابة فوترة Stripe. يؤدي الإلغاء إلى إيقاف الفوترة المستقبلية، ولكن لا يتم استرداد فترات الاشتراك المدفوعة أو احتسابها بشكل نسبي.

هذا الكود الخاص بالفوترة محمي بشكل متعمد بواسطة الإعدادات: يكون له تأثير فقط عندما يكون `OGI_DEPLOYMENT_MODE=cloud` و `OGI_CLOUD_BILLING_ENABLED=true`. يجب على النشرات الذاتية (self-hosted deployments) ترك الفوترة معطلة ويجب ألا ترى أي سلوك فوترة أو حظر دفع (paywall).

### القياس عن بعد (Telemetry)

يتضمن OGI قياسًا عن بعد (telemetry) على مستوى التثبيت يهدف إلى مساعدتنا في فهم الاستخدام في العالم الحقيقي، خاصة عبر النشرات الذاتية.

- `OGI_TELEMETRY_ENABLED=true` لتفعيل جمع القياس عن بعد
- `OGI_TELEMETRY_LEVEL=full` هو مستوى الجمع الافتراضي
- قم بتعيين `OGI_TELEMETRY_ENABLED=false` لتعطيل القياس عن بعد بالكامل
- قم بتعيين `OGI_TELEMETRY_LEVEL=basic` لتقليل ما يتم إرساله

يرسل `basic` ما يلي:

- إصدار OGI
- إشارة (ping) يومية عن التثبيت النشط

يرسل `full` بالإضافة إلى ذلك:

- تاريخ إنشاء المثيل
- إجماليات عدد المشاريع والكيانات والحواف (edges) وتشغيلات المحولات وتشغيلات المحقق (investigator runs) والمستخدمين النشطين للفترة
- المحولات المثبتة مع إصداراتها

صمم القياس عن بعد لتجنب إرسال محتويات الرسم البياني، قيم الكيانات، مفاتيح API، الموجهات (prompts)، أو بيانات التحقيق الأخرى. يتم أيضًا نشر تفاصيل السياسة الحالية في [سياسة الخصوصية](https://ogi.khas.app/privacy#telemetry).

<details>
<summary><strong>خدمات Compose للتطوير</strong></summary>

| الخدمة          | الوصف                          | المنفذ |
| --------------- | ------------------------------ | ------ |
| `backend`       | خادم تطبيق FastAPI            | 8000   |
| `worker`        | عامل مهام RQ غير متزامن      | -      |
| `agent-worker` | عامل المحقق AI                | -      |
| `frontend`      | تطبيق React يخدم عبر nginx    | 80     |
| `db`            | PostgreSQL 16                  | 5432   |
| `redis`         | Redis 7 (قائمة انتظار المهام) | 6379   |

</details>

<details>
<summary><strong>خدمات Compose للإنتاج</strong></summary>

| الخدمة          | الوصف                          | المنفذ |
| --------------- | ------------------------------ | ------ |
| `backend`       | خادم تطبيق FastAPI            | 8000   |
| `worker`        | عامل مهام RQ غير متزامن      | -      |
| `agent-worker` | عامل المحقق AI                | -      |
| `frontend`      | تطبيق React يخدم عبر nginx    | 80     |
| `redis`         | Redis 7 (قائمة انتظار المهام) | 6379   |

يتوقع ملف `docker-compose.prod.yml` وجود قاعدة بيانات PostgreSQL خارجية عبر `OGI_DATABASE_URL`.

</details>

---

<details>
<summary><strong>تبعيات الإضافات عند بدء التشغيل (Boot-time plugin dependencies)</strong></summary>

إذا كنت تستخدم صورًا مبنية مسبقًا وتحتاج إضافة ما إلى مكتبات Python إضافية، يقوم OGI بتثبيت تبعيات الإضافات عند بدء الحاوية من:

1. ملف `plugins/requirements.txt` (مفضل)، أو
2. متطلبات مولدة تلقائيًا مشتقة من `plugins/ogi-lock.json` عندما يكون `requirements.txt` مفقودًا.

**متغيرات البيئة:**

| المتغير                              | القيمة الافتراضية                  | الوصف                                         |
| ------------------------------------ | ---------------------------------- | --------------------------------------------- |
| `OGI_BOOT_REQUIREMENTS_ENABLE`       | `true`                             | تفعيل/تعطيل التثبيت عند بدء التشغيل          |
| `OGI_BOOT_REQUIREMENTS_FILE`         | `/app/plugins/requirements.txt`    | مسار ملف المتطلبات                            |
| `OGI_BOOT_LOCK_FILE`                 | `/app/plugins/ogi-lock.json`       | مسار ملف القفل                                |
| `OGI_BOOT_REQUIREMENTS_STRICT`       | `false`                            | فشل بدء التشغيل إذا كانت المتطلبات مفقودة    |
| `OGI_BOOT_REQUIREMENTS_CACHE_DIR`    | `/tmp/ogi-boot`                    | دليل مؤقت/ذاكرة تخزين مؤقت للمتطلبات المولدة |

</details>

---

## مركز المحولات (Transform Hub)

يحتوي OpenGraph Intel على سوق مدمج للمحولات. تصفح، قم بتثبيت وإدارة المحولات من [السجل المجتمعي](https://github.com/opengraphintel/ogi-transforms).

> **ملاحظة أمنية:** يجب التعامل مع الإضافات التي تتطلب مفاتيح API ككود مميز (privileged code). إذا كانت الإضافة قادرة على الوصول إلى أسرارك وتقديم طلبات شبكة صادرة، فيمكنها إساءة استخدام تلك الأسرار أو تسريبها. راجع مستوى الثقة، الأذونات، والخدمات المطلوبة قبل تثبيت أو تشغيل إضافات من طرف ثالث.```bash
# Search for transforms
uv run ogi transform search dns

# Install a transform
uv run ogi transform install shodan-host-lookup
```
### فئات التحويل المدمجة

| الفئة    | الأمثلة                                      |
| -------- | -------------------------------------------- |
| DNS      | A, AAAA, MX, NS, CNAME records              |
| IP & ASN | GeoIP, reverse IP, ASN info                  |
| SSL/TLS  | Certificate transparency, SSL labs           |
| Email    | Mailserver validation, breach checks         |
| Web      | WHOIS, domain info, web extraction           |
| Social   | Username enumeration, social profiles        |
| Hash     | MD5, SHA1, SHA256 lookups                    |
| Location | Geocoding, weather, nearby ASN data          |

### أنواع الكيانات المدعومة

`Person` &bull; `Username` &bull; `Domain` &bull; `IPAddress` &bull; `EmailAddress` &bull; `PhoneNumber` &bull; `Organization` &bull; `URL` &bull; `SocialMedia` &bull; `Hash` &bull; `Document` &bull; `Location` &bull; `ASNumber` &bull; `Network` &bull; `MXRecord` &bull; `NSRecord` &bull; `Nameserver` &bull; `SSLCertificate` &bull; `Subdomain` &bull; `HTTPHeader`

### بناء التحويلات الخاصة بك

هل تريد بناء تحويلاتك الخاصة؟ طالع [دليل المساهمة](https://github.com/opengraphintel/ogi-transforms/blob/main/CONTRIBUTING.md).

إذا كان تحويلك يحتاج إلى بيانات اعتماد من خدمة خارجية، فقم بتعريفها في `api_keys_required`. لا تخزّن الأسرار في إعدادات التحويل. يقوم OGI بإدارتها تحت `API Keys`، وتعتبر الإضافات التي تستخدم الأسرار كودًا مميزًا.

إذا كان تحويلك يعرض إعدادات محدودة مثل `max_results` أو `max_content_chars`، ففضل استخدام أسماء إعدادات مستقرة بدلاً من الأسماء المخصصة الفردية حيثما أمكن. يمكن لـ OGI تجاوز القيم القصوى مركزياً باستخدام `OGI_TRANSFORM_SETTING_MAX_OVERRIDES`، مما يساعد عمليات النشر السحابية على فرض القيود بينما يمكن للمستخدمين المحليين إزالتها.

كل إضافة هي مجلد يحتوي على ملف بيان `plugin.yaml`:```yaml
name: my-transform
version: "1.0.0"
display_name: My Transform
description: What it does
author: Your Name
license: MIT
category: dns
input_types: [Domain]
output_types: [IPAddress]
permissions:
  network: true
  filesystem: false
  subprocess: false
```
## البنية

### مجموعة التقنيات

| الطبقة             | التقنية                                                                    |
| ----------------- | --------------------------------------------------------------------------- |
| الواجهة الخلفية    | Python 3.14+, FastAPI, SQLModel, asyncpg / aiosqlite                        |
| الواجهة الأمامية   | React 19, TypeScript 5.9, Sigma.js (graphology), Zustand, Tailwind CSS 4    |
| قاعدة البيانات     | PostgreSQL 16 (أساسي) / SQLite (احتياطي محلي)                               |
| المصادقة والوقت الفعلي | Supabase Auth + JWT + Realtime (اختياري في الوضع المحلي)               |
| قائمة المهام       | Redis 7 + RQ (تحويلات غير متزامنة)                                           |
| بيئة التشغيل الذكاء الاصطناعي | عامل التحقيق بالذكاء الاصطناعي المعتمد على المزوِّد مع تنسيق تحويل مدقق |
| مديرو الحزم        | uv (الواجهة الخلفية), pnpm (الواجهة الأمامية)                                  |
| النشر              | Docker, nginx, GHCR                                                         |

### هيكل المشروع```
ogi/
├── backend/
│   └── ogi/
│       ├── api/            # REST API routes
│       ├── cli/            # CLI tool (Typer)
│       ├── db/             # Database layer (asyncpg + aiosqlite)
│       ├── engine/         # Graph engine & transform engine
│       ├── models/         # SQLModel definitions
│       ├── store/          # Data stores
│       ├── transforms/     # Built-in transforms
│       │   ├── dns/        # DNS resolution transforms
│       │   ├── cert/       # SSL certificate transforms
│       │   ├── email/      # Email enrichment
│       │   ├── hash/       # Hash lookups
│       │   ├── ip/         # IP/ASN/geolocation
│       │   ├── org/        # Organization info
│       │   ├── social/     # Social media
│       │   └── web/        # Web scraping/extraction
│       ├── worker/         # Async job queue (RQ)
│       ├── config.py       # Pydantic settings
│       └── main.py         # FastAPI entry point
├── frontend/
│   └── src/
│       ├── api/            # API client
│       ├── components/     # React components
│       ├── hooks/          # Custom hooks (realtime sync, etc.)
│       ├── stores/         # Zustand state management
│       ├── types/          # TypeScript types
│       └── App.tsx         # Main application
├── plugins/                # Community plugins directory
├── docs/                   # Documentation & images
├── docker-compose.yml      # Development deployment
├── docker-compose.prod.yml # Production deployment
└── .env.example            # Environment template
```
### الإعدادات

يستخدم OGI [pydantic-settings](https://docs.pydantic.dev/latest/concepts/pydantic_settings/) مع دعم ملف `.env`. متغيرات وقت التشغيل/النهاية الخلفية مسبوقة بـ `OGI_`.

تقبل إعدادات القائمة إما:

- مصفوفات JSON، على سبيل المثال `["plugins","../plugins"]`
- سلاسل مفصولة بفواصل، على سبيل المثال `plugins,../plugins`

<details>
<summary><strong>متغيرات البيئة الرئيسية</strong></summary>

| المتغير                                        | الوصف                                                                                                      | الافتراضي                                             |
| ----------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | --------------------------------------------------- |
| `OGI_APP_NAME`                                  | اسم التطبيق                                                                                                 | `OGI`                                               |
| `OGI_HOST`                                      | مضيف ربط النهاية الخلفية                                                                                                | `0.0.0.0`                                           |
| `OGI_PORT`                                      | منفذ النهاية الخلفية                                                                                                     | `8000`                                              |
| `OGI_CORS_ORIGINS`                              | أصول الواجهة الأمامية المسموح بها                                                                                         | `http://localhost:5173,http://localhost:3000`       |
| `OGI_USE_SQLITE`                                | استخدام SQLite بدلاً من PostgreSQL                                                                                 | `true`                                              |
| `OGI_DB_PATH`                                   | مسار ملف قاعدة بيانات SQLite                                                                                        | `ogi.db`                                            |
| `OGI_DATABASE_URL`                              | سلسلة اتصال PostgreSQL                                                                                     | `postgresql://postgres:postgres@localhost:5432/ogi` |
| `OGI_REDIS_URL`                                 | سلسلة اتصال Redis لوظائف RQ                                                                              | `redis://localhost:6379/0`                          |
| `OGI_RQ_QUEUE_NAME`                             | اسم قائمة الانتظار لوظائف التحويل                                                                                    | `transforms`                                        |
| `OGI_TRANSFORM_TIMEOUT`                         | مهلة وظيفة التحويل بالثواني                                                                             | `300`                                               |
| `OGI_AGENT_WORKER_POLL_INTERVAL_SEC`            | فترة الاستقصاء لعامل المحقق الذكي                                                                     | `2.0`                                               |
| `OGI_AGENT_CLAIM_TIMEOUT_SEC`                   | مهلة المطالبة القديمة لاستعادة خطوة المحقق الذكي                                                            | `120`                                               |
| `OGI_AUTO_RUN_MIGRATIONS`                       | تشغيل Alembic تلقائياً عند بدء تشغيل التطبيق المحلي غير SQLite                                                                 | `true`                                              |
| `OGI_RUN_DB_MIGRATIONS`                         | تشغيل ترحيلات قاعدة البيانات في نقطة دخول الحاوية                                                                        | `false`                                             |
| `OGI_DB_MIGRATION_RETRIES`                      | عدد محاولات إعادة ترحيل نقطة الدخول                                                                                | `30`                                                |
| `OGI_DB_MIGRATION_DELAY_SECONDS`                | التأخير بين محاولات إعادة ترحيل نقطة الدخول                                                                      | `2`                                                 |
| `OGI_PLUGIN_DIRS`                               | أدلة البحث عن الإضافات                                                                                        | `plugins,../plugins`                                |
| `OGI_DEPLOYMENT_MODE`                           | وضع النشر (`self-hosted` أو `cloud`)                                                                       | `self-hosted`                                       |
| `OGI_CLOUD_BILLING_ENABLED`                     | تمكين الفوترة للمؤيدين في السحابة فقط وفرض فترة التهدئة للتحويل                                           | `false`                                             |
| `OGI_FREE_TRANSFORM_COOLDOWN_SECONDS`           | فترة التهدئة بين تشغيل المحولات للمستخدمين المجانيين في السحابة                                                                | `1800`                                              |
| `OGI_PAID_TRANSFORM_COOLDOWN_SECONDS`           | فترة التهدئة بين تشغيل المحولات للمستخدمين المدفوعين في السحابة                                                                | `0`                                                 |
| `OGI_STRIPE_SECRET_KEY`                         | مفتاح Stripe السري من جانب الخادم لجلسات الدفع والبوابة                                                   | غير معين                                               |
| `OGI_STRIPE_WEBHOOK_SECRET`                     | سر توقيع webhook من Stripe                                                                                    | غير معين                                               |
| `OGI_STRIPE_SUPPORTER_PRICE_ID`                 | معرف السعر المتكرر من Stripe لخطة المؤيد                                                                 | غير معين                                               |
| `OGI_STRIPE_SUPPORTER_AMOUNT_CENTS`             | المبلغ المعروض لخطة المؤيد                                                                            | `300`                                               |
| `OGI_STRIPE_SUPPORTER_CURRENCY`                 | العملة المعروضة لخطة المؤيد                                                                          | `usd`                                               |
| `OGI_BILLING_SUCCESS_URL`                       | إعادة توجيه نجاح الدفع من Stripe اختيارياً                                                                        | مشتق من الطلب                                |
| `OGI_BILLING_CANCEL_URL`                        | إعادة توجيه إلغاء الدفع من Stripe اختيارياً                                                                         | مشتق من الطلب                                |
| `OGI_BILLING_PORTAL_RETURN_URL`                 | عنوان URL لإرجاع بوابة الفوترة من Stripe اختيارياً                                                                        | مشتق من الطلب                                |
```

---

[Read more](https://github.com/khashashin/ogi)
تنزيل الأداة