> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-mintlify-8c05c8a2.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> تثبيت ClickHouse على Debian/Ubuntu Linux

# تثبيت ClickHouse باستخدام Docker

الدليل الموجود على [Docker Hub](https://hub.docker.com/r/clickhouse/clickhouse-server/)
مُعاد نشره أدناه لسهولة الرجوع إليه. وتعتمد صور Docker المتاحة على
حزم deb الرسمية لـ ClickHouse.

أمر Docker pull:

```bash theme={null}
docker pull clickhouse/clickhouse-server
```

<div id="versions">
  ## الإصدارات
</div>

* تشير العلامة `latest` إلى أحدث إصدار من أحدث فرع مستقر.
* تشير علامات الفروع مثل `22.2` إلى أحدث إصدار من الفرع المقابل.
* تشير علامات الإصدار الكاملة مثل `22.2.3` و`22.2.3.5` إلى الإصدار المقابل.
* تُبنى العلامة `head` من أحدث `commit` على الفرع الافتراضي.
* تحمل كل علامة لاحقة اختيارية هي `-alpine` للدلالة على أنها مبنية على `alpine`.

<div id="compatibility">
  ### التوافق
</div>

* تتطلب صورة amd64 دعم [تعليمات SSE3](https://en.wikipedia.org/wiki/SSE3).
  تكاد جميع معالجات x86 بعد عام 2005 تدعم SSE3.
* تتطلب صورة arm64 دعم [معمارية ARMv8.2-A](https://en.wikipedia.org/wiki/AArch64#ARMv8.2-A) و
  بالإضافة إلى ذلك سجل Load-Acquire RCpc. هذا السجل اختياري في الإصدار ARMv8.2-A وإلزامي في
  [ARMv8.3-A](https://en.wikipedia.org/wiki/AArch64#ARMv8.3-A). وهو مدعوم في Graviton >=2، ومثيلات Azure وGCP.
  ومن أمثلة الأجهزة غير المدعومة Raspberry Pi 4 ‏(ARMv8.0-A) وJetson AGX Xavier/Orin ‏(ARMv8.2-A).
* منذ ClickHouse 24.11 بدأت صور Ubuntu باستخدام `ubuntu:22.04` كصورة الأساس لها. وهي تتطلب إصدار Docker >= `20.10.10`
  يحتوي على [تصحيح](https://github.com/moby/moby/commit/977283509f75303bc6612665a04abf76ff1d2468). وكحل بديل، يمكنك
  استخدام `docker run --security-opt seccomp=unconfined` بدلًا من ذلك، إلا أن لذلك تبعات أمنية.

<div id="how-to-use-image">
  ## طريقة استخدام هذه الصورة
</div>

<div id="start-server-instance">
  ### تشغيل مثيل الخادم
</div>

```bash theme={null}
docker run -d --name some-clickhouse-server --ulimit nofile=262144:262144 clickhouse/clickhouse-server
```

افتراضيًا، لن يكون ClickHouse متاحًا إلا عبر شبكة Docker. راجع قسم الشبكات أدناه.

افتراضيًا، سيُشغَّل مثيل الخادم المذكور أعلاه باعتباره المستخدم `default` من دون كلمة مرور.

<div id="connect-to-it-from-native-client">
  ### الاتصال به باستخدام العميل الأصلي
</div>

```bash theme={null}
docker run -it --rm --network=container:some-clickhouse-server --entrypoint clickhouse-client clickhouse/clickhouse-server
# OR
docker exec -it some-clickhouse-server clickhouse-client
```

اطّلع على [عميل ClickHouse](/ar/concepts/features/interfaces/cli) لمزيد من المعلومات حول عميل ClickHouse.

<div id="connect-to-it-using-curl">
  ### استخدم curl للاتصال به
</div>

```bash theme={null}
echo "SELECT 'Hello, ClickHouse!'" | docker run -i --rm --network=container:some-clickhouse-server buildpack-deps:curl curl 'http://localhost:8123/?query=' -s --data-binary @-
```

اطّلع على [ClickHouse HTTP Interface](/ar/concepts/features/interfaces/http) لمزيد من المعلومات حول واجهة HTTP.

<div id="stopping-removing-container">
  ### إيقاف الحاوية / إزالتها
</div>

```bash theme={null}
docker stop some-clickhouse-server
docker rm some-clickhouse-server
```

<div id="networking">
  ### الشبكات
</div>

<Note>
  لا يملك المستخدم `default` المُعرَّف مسبقًا صلاحية الوصول إلى الشبكة ما لم يتم تعيين كلمة مرور،
  راجع "كيفية إنشاء قاعدة البيانات الافتراضية والمستخدم عند بدء التشغيل" و"إدارة المستخدم `default`" أدناه
</Note>

يمكنك إتاحة ClickHouse الذي يعمل في docker عبر [ربط منفذ معيّن](https://docs.docker.com/config/containers/container-networking/)
من داخل الحاوية بمنافذ المضيف:

```bash theme={null}
docker run -d -p 18123:8123 -p19000:9000 -e CLICKHOUSE_PASSWORD=changeme --name some-clickhouse-server --ulimit nofile=262144:262144 clickhouse/clickhouse-server
echo 'SELECT version()' | curl 'http://localhost:18123/?password=changeme' --data-binary @-
```

أو بالسماح للحاوية باستخدام [منافذ المضيف مباشرةً](https://docs.docker.com/network/host/) عبر `--network=host`
(وهو ما يتيح أيضًا أداءً أفضل للشبكة):

```bash theme={null}
docker run -d --network=host --name some-clickhouse-server --ulimit nofile=262144:262144 clickhouse/clickhouse-server
echo 'SELECT version()' | curl 'http://localhost:8123/' --data-binary @-
```

<Note>
  المستخدم default في المثال أعلاه متاح فقط للطلبات الواردة من localhost
</Note>

<div id="volumes">
  ### وحدات التخزين
</div>

عادةً ما قد تحتاج إلى ربط المجلدات التالية داخل الحاوية لضمان استمرارية البيانات:

* `/var/lib/clickhouse/` - المجلد الرئيسي الذي يخزّن فيه ClickHouse البيانات
* `/var/log/clickhouse-server/` - السجلات

```bash theme={null}
docker run -d \
    -v "$PWD/ch_data:/var/lib/clickhouse/" \
    -v "$PWD/ch_logs:/var/log/clickhouse-server/" \
    --name some-clickhouse-server --ulimit nofile=262144:262144 clickhouse/clickhouse-server
```

قد ترغب أيضًا في ربط:

* `/etc/clickhouse-server/config.d/*.xml` - ملفات تتضمن تعديلات على تهيئة الخادم
* `/etc/clickhouse-server/users.d/*.xml` - ملفات تتضمن تعديلات على إعدادات المستخدم
* `/docker-entrypoint-initdb.d/` - مجلد يحتوي على نصوص برمجية لتهيئة قاعدة البيانات (انظر أدناه).

<div id="linear-capabilities">
  ## ميزات Linux الأمنية
</div>

يوفّر ClickHouse بعض الوظائف المتقدمة التي تتطلب تفعيل عدة [ميزات أمان في Linux](https://man7.org/linux/man-pages/man7/capabilities.7.html)

وهي اختيارية، ويمكن تفعيلها باستخدام [وسيطات سطر أوامر Docker](https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities) التالية:

```bash theme={null}
docker run -d \
    --cap-add=SYS_NICE --cap-add=NET_ADMIN --cap-add=IPC_LOCK \
    --name some-clickhouse-server --ulimit nofile=262144:262144 clickhouse/clickhouse-server
```

لمزيد من المعلومات، راجع ["تهيئة إمكانيات CAP\_IPC\_LOCK وCAP\_SYS\_NICE في Docker"](/ar/resources/support-center/knowledge-base/troubleshooting/configure-cap-ipc-lock-and-cap-sys-nice-in-docker)

<div id="configuration">
  ## التهيئة
</div>

تفتح الحاوية المنفذ 8123 لـ[واجهة HTTP](/ar/concepts/features/interfaces/http) والمنفذ 9000 لـ[العميل الأصلي](/ar/concepts/features/interfaces/tcp).

تُمثَّل تهيئة ClickHouse في ملف "config.xml" ([الوثائق](/ar/concepts/features/configuration/server-config/configuration-files))

<div id="start-server-instance-with-custom-config">
  ### بدء مثيل الخادم باستخدام تهيئة مخصّصة
</div>

```bash theme={null}
docker run -d --name some-clickhouse-server --ulimit nofile=262144:262144 -v /path/to/your/config.xml:/etc/clickhouse-server/config.xml clickhouse/clickhouse-server
```

<div id="start-server-custom-user">
  ### تشغيل server باستخدام مستخدم مخصص
</div>

```bash theme={null}
# $PWD/data/clickhouse should exist and be owned by current user
docker run --rm --user "${UID}:${GID}" --name some-clickhouse-server --ulimit nofile=262144:262144 -v "$PWD/logs/clickhouse:/var/log/clickhouse-server" -v "$PWD/data/clickhouse:/var/lib/clickhouse" clickhouse/clickhouse-server
```

عند استخدام الصورة مع ربط الأدلة المحلية، يُرجَّح أن تحتاج إلى تحديد المستخدم للحفاظ على ملكية الملفات بشكل صحيح. استخدم المعامل `--user`، واربط `/var/lib/clickhouse` و`/var/log/clickhouse-server` داخل الحاوية. وإلا فستعرض الصورة رسالة خطأ ولن تبدأ.

<div id="start-server-from-root">
  ### بدء تشغيل الخادم من المستخدم الجذر
</div>

يكون تشغيل الخادم من المستخدم الجذر مفيدًا عندما يكون حيّز أسماء المستخدم مفعّلًا.
للقيام بذلك، شغّل:

```bash theme={null}
docker run --rm -e CLICKHOUSE_RUN_AS_ROOT=1 --name clickhouse-server-userns -v "$PWD/logs/clickhouse:/var/log/clickhouse-server" -v "$PWD/data/clickhouse:/var/lib/clickhouse" clickhouse/clickhouse-server
```

<div id="how-to-create-default-db-and-user">
  ### كيفية إنشاء قاعدة البيانات الافتراضية والمستخدم عند بدء التشغيل
</div>

قد تحتاج أحيانًا إلى إنشاء مستخدم (يُستخدم المستخدم المسمى `default` افتراضيًا) وقاعدة بيانات عند بدء الحاوية. يمكنك القيام بذلك باستخدام متغيرات البيئة `CLICKHOUSE_DB` و`CLICKHOUSE_USER` و`CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT` و`CLICKHOUSE_PASSWORD`:

```bash theme={null}
docker run --rm -e CLICKHOUSE_DB=my_database -e CLICKHOUSE_USER=username -e CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT=1 -e CLICKHOUSE_PASSWORD=password -p 9000:9000/tcp clickhouse/clickhouse-server
```

<div id="managing-default-user">
  #### إدارة المستخدم `default`
</div>

يكون وصول المستخدم `default` عبر الشبكة معطّلًا افتراضيًا إذا لم يتم تعيين أي من `CLICKHOUSE_USER` أو `CLICKHOUSE_PASSWORD` أو `CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT`.

يمكن إتاحة المستخدم `default` بشكل غير آمن عن طريق تعيين متغير البيئة `CLICKHOUSE_SKIP_USER_SETUP` إلى 1:

```bash theme={null}
docker run --rm -e CLICKHOUSE_SKIP_USER_SETUP=1 -p 9000:9000/tcp clickhouse/clickhouse-server
```

<div id="how-to-extend-image">
  ## كيفية توسيع هذه الصورة
</div>

لإجراء تهيئة إضافية في صورة مشتقة من هذه الصورة، أضف نصًا برمجيًا واحدًا أو أكثر من النوع `*.sql` أو `*.sql.gz` أو `*.sh` ضمن `/docker-entrypoint-initdb.d`. بعد أن يستدعي entrypoint الأمر `initdb`، سيُنفِّذ أي ملفات `*.sql`، ويُشغِّل أي نصوص برمجية `*.sh` قابلة للتنفيذ، ويُضمِّن أي نصوص برمجية `*.sh` غير قابلة للتنفيذ موجودة في ذلك الدليل لإجراء مزيد من التهيئة قبل بدء الخدمة.

<Note>
  تُنفَّذ النصوص البرمجية الموجودة ضمن `/docker-entrypoint-initdb.d` بترتيب **أبجدي** حسب اسم الملف. إذا كانت نصوصك البرمجية تعتمد على بعضها بعضًا (على سبيل المثال، نص برمجي يُنشئ views يجب أن يعمل بعد النص البرمجي الذي يُنشئ الجداول المشار إليها)، فتأكَّد من أن أسماء الملفات مرتبة بالترتيب الصحيح.
</Note>

يمكنك أيضًا توفير متغيرَي البيئة `CLICKHOUSE_USER` و`CLICKHOUSE_PASSWORD` لاستخدامهما مع clickhouse-client أثناء التهيئة.

على سبيل المثال، لإضافة مستخدم آخر وقاعدة بيانات أخرى، أضف ما يلي إلى `/docker-entrypoint-initdb.d/init-db.sh`:

```bash theme={null}
#!/bin/bash
set -e

clickhouse client -n <<-EOSQL
    CREATE DATABASE docker;
    CREATE TABLE docker.docker (x Int32) ENGINE = MergeTree
    ORDER BY ();
EOSQL
```
