تثبيت Docker Compose Compose
عمليات تثبيت SKOOR المستندة إلى Docker هي لأغراض الاختبار فقط وبالتالي فهي غير مدعومة رسمياً
المتطلبات الأساسية
نظام تشغيل لينكس
Docker / Docker-Compose
من دعم SKOOR (support@skoor.com):
مفتاح مستخدم لسجل SKOOR Docker Docker
مفتاح ترخيص SKOOR
إصدارات من مكونات SKOOR المختلفة
إعداد التثبيت
قم بتسجيل الدخول إلى سجل SKOOR Docker (يجب أن يحتوي الملف key.json على مفتاح مستخدم صالح لسجل Docker الذي توفره SKOOR)
cat key.json | docker login -u _json_key --password-stdin https://europe-docker.pkg.dev
إنشاء شبكة Docker
docker network create skoor-network
اضبط إصدار SKOOR على القيمة التي يوفرها دعم SKOOR (على سبيل المثال "7.3.0")
export SKOOR_VERSION=<version>
قاعدة البيانات
في حالة عدم توفر خادم PostgreSQL، يمكن نشر حاوية SKOOR PostgreSQL. في هذا الدليل، يُفترض أن هناك حاجة إلى حاوية قاعدة بيانات. لذلك سيتم تهيئتها في ملف docker-compose.yaml. إذا كان هناك خادم قاعدة بيانات ولم تكن هناك حاجة إلى حاوية، فيجب إزالة خدمة eranger-postgresql من ملف docker-compose.yaml. اتصل بدعم SKOOR للحصول على تفاصيل حول تكوين خادم قاعدة البيانات.
نظام الملفات الثابت
أولاً، اختر مسار نظام ملفات لتخزين ملفات قاعدة البيانات. يفترض الدليل التالي /var/lib/pgsql-docker كمسار. يرجى تغييره وفقًا لتفضيلاتك:
export PG_PATH=/var/lib/pgsql-docker
على مضيف docker، قم بإنشاء مستخدم postgres بمعرف المستخدم والمجموعة 26:
sudo useradd -d $PG_PATH -g 26 -u 26 -M postgres
قم بإعداد الدليل لملفات قاعدة البيانات إذا لزم الأمر وقم بتعيين الأذونات:
sudo mkdir -p $PG_PATH && sudo chown 26:26 $PG_PATH && sudo chmod 700 $PG_PATH
إنشاء قاعدة البيانات
قم بتهيئة قاعدة البيانات وإنشاء قاعدة بيانات العملاء
docker run --user=root -v ${PG_PATH}:/var/lib/pgsql -e CUSTOMER=ng \ europe-docker.pkg.dev/sdaas-298209/eu.gcr.io/eranger-postgresql:$SKOOR_VERSION /opt/eranger/bin/db-config.sh
التحذير "المسار "/var/opt/run/eranger" غير موجود! يمكن تجاهله!"
يمكن تجاهل الخطأ "ERROR: حدث خطأ في قاعدة البيانات: (مؤشر الترابط: 139786843920512) PGRES_FATAL_ERROR - FEHLER: العلاقة "إنذارات" غير موجودة"
حاويات SKOOR
أنظمة الملفات الثابتة
إضافة مستخدم eranger إلى نظام مضيف Docker لأذونات نظام الملفات الدائمة:
sudo useradd -u 909 -U -M eranger
قم بإعداد مسار لأنظمة الملفات الدائمة (قم بالتغيير إلى مسار ذي معنى على النظام الهدف):
export PERSISTENT_FS=/home/skoor
محرك SKOOR
يحتاج محرك SKOOR Engine إلى بنية دليل على مضيف Docker لتخزين الملفات الدائمة التي تتم مشاركتها بين الحاويات المختلفة. قم بإنشاء المسار المفترض في ملف docker-compose لاحقًا في هذا الدليل (لا تتردد في اختيار مسار آخر):
sudo mkdir -p $PERSISTENT_FS/engine && sudo chmod 755 $PERSISTENT_FS/engine
SKOOR Webservice:
تحتاج خدمة SKOOR Webservice إلى بنية دليل أيضًا لتخزين الملفات والتكوينات الثابتة. يُفترض المسار التالي في ملف docker-compose لاحقًا في هذا الدليل:
sudo mkdir -p $PERSISTENT_FS/webservice/ && sudo chmod 755 $PERSISTENT_FS/webservice
تهيئة تكوين SKOOR
قم بتعيين المتغير INSTANCE_NAME إلى اسم بسيط يمثل مثيل SKOOR، مثل اسم شركة قصير.
استخدم أحرفًا أو أرقامًا فقط لمتغير INSTANCE_NAME، ولا تستخدم شرطات أو أحرف خاصة أخرى
export INSTANCE_NAME=<customer>
قم بتشغيل البرنامج النصي للتكوين:
docker run --network=skoor-network \ -e NAME=ng \ -e SKOORENGINE_DOMAIN=docker.localhost \ -e DB_IP=eranger-postgresql-$INSTANCE_NAME \ -e DB_POOL_ADDR=eranger-pgbouncer-$INSTANCE_NAME \ -e SINGLE_TENANT=true \ -e CUSTOMER_DB=true \ -v $PERSISTENT_FS/engine:/mnt/customer \ -v $PERSISTENT_FS/webservice:/mnt/webservice \ europe-docker.pkg.dev/sdaas-298209/eu.gcr.io/sdaas-config:$SKOOR_VERSION /tmp/sdaas-config.sh nodb
إنشاء ملفات Docker Compose
قم بإنشاء دليل Docker Compose:
mkdir -p ~/docker-compose/skoor && cd ~/docker-compose/skoor
قم بإنشاء الملف .env داخل دليل skoor:
echo -e "PERSISTENT_FS=$PERSISTENT_FS\n\ POSTGRESQL_PATH=$PG_PATH\n\ INSTANCE_NAME=$INSTANCE_NAME\n\ SKOOR_VERSION=$SKOOR_VERSION\n\ AUTH_VERSION=$SKOOR_VERSION\n\ ETL_VERSION=$SKOOR_VERSION\n\ DASHBOARD_VERSION=$SKOOR_VERSION\n\ DATABASE_VERSION=$SKOOR_VERSION\n\ DATABASE_IMAGE=eranger-postgresql" > .env
للاستخدام مع مجمّع البيانات الخارجية StableNet®، قم بتعيين DATABASE_IMAGE إلى eranger-postgresql-stablenet و DATABASE_VERSION وفقًا لذلك
يتم تكوين جميع الإصدارات في هذا الملف بالتساوي مع الإصدار الثانوي الحالي. ومع ذلك، قد تتغير إصدارات مكونات SKOOR المختلفة. يرجى طلب دعم SKOOR للحصول على أحدث الإصدارات
قم بإنشاء ملف license.txt يحتوي على ترخيص SKOOR صالح. مثال:
license_name = test license_devices = 99 license_sikulix = 5 license_feature_set = 3.1 license_key = 97bbd371d35143d7e6292a311e299d7b0a683d11adf8ad30ba09ebbdeb071866ed345fb67...
أضف معلومات الترخيص إلى ملف Docker Compose .env:
cat license.txt | sed -e 's/license_[a-z]\+/\U&/g' | tr -d ' ' | sed -e '/^LICENSE_FEATURE_set.*$/ d' >> .env
قم بإنشاء ملف docker-compose.yaml بالمحتوى التالي:
services: eranger-server: image: europe-docker.pkg.dev/sdaas-298209/eu.gcr.io/eranger-server:${SKOOR_VERSION} container_name: eranger-server-${INSTANCE_NAME} volumes: - "${PERSISTENT_FS}/engine/eranger:/var/opt/run/eranger" - "${PERSISTENT_FS}/engine/tmp:/srv/eranger/html/tmp" - "${PERSISTENT_FS}/engine/templates:/srv/eranger/html/templates" - "${PERSISTENT_FS}/engine/snmp_walk:/srv/eranger/html/snmp_walk" - "${PERSISTENT_FS}/engine/reports:/srv/eranger/html/reports" - "${PERSISTENT_FS}/engine/parsefile:/srv/eranger/html/parsefile" - "${PERSISTENT_FS}/engine/fetchfile:/srv/eranger/html/fetchfile" - "${PERSISTENT_FS}/engine/execute:/srv/eranger/html/execute" - "${PERSISTENT_FS}/engine/eem_mht_logs:/srv/eranger/html/eem_mht_logs" - "${PERSISTENT_FS}/engine/sikulix:/srv/eranger/html/sikulix" - "${PERSISTENT_FS}/engine/selenium:/srv/eranger/html/selenium" environment: - SKOOR_SERVER_db_address=eranger-pgbouncer-${INSTANCE_NAME} - SKOOR_SERVER_db_database=ng - SKOOR_SERVER_license_name=${LICENSE_NAME} - SKOOR_SERVER_license_devices=${LICENSE_DEVICES} - SKOOR_SERVER_license_jobs=${LICENSE_JOBS} - SKOOR_SERVER_license_sikulix=${LICENSE_SIKULIX} - SKOOR_SERVER_license_feature_set=3.1 - SKOOR_SERVER_license_key=${LICENSE_KEY} - SKOOR_SERVER_license_expire=${LICENSE_EXPIRE} expose: - "50001" depends_on: - eranger-postgresql eranger-report: image: europe-docker.pkg.dev/sdaas-298209/eu.gcr.io/eranger-report:${SKOOR_VERSION} container_name: eranger-report-${INSTANCE_NAME} volumes: - "${PERSISTENT_FS}/engine/tmp:/srv/eranger/html/tmp" - "${PERSISTENT_FS}/engine/templates:/srv/eranger/html/templates" - "${PERSISTENT_FS}/engine/transfer:/srv/eranger/html/transfer" - "${PERSISTENT_FS}/engine/eranger:/var/opt/run/eranger" - "${PERSISTENT_FS}/engine/reports:/srv/eranger/html/reports" environment: - SKOOR_REPORT_bl_address=eranger-server-${INSTANCE_NAME} - SKOOR_REPORT_bl_port=50001 - SKOOR_REPORT_username=skoor-report - SKOOR_REPORT_password=skoor-report depends_on: - eranger-postgresql eranger-collector: image: europe-docker.pkg.dev/sdaas-298209/eu.gcr.io/eranger-collector:${SKOOR_VERSION} container_name: eranger-collector-${INSTANCE_NAME} volumes: - "${PERSISTENT_FS}/engine/eranger:/var/opt/run/eranger" - "${PERSISTENT_FS}/engine/upload:/opt/eranger/collector/upload" environment: - SKOOR_COLLECTOR_server1_address=eranger-server-${INSTANCE_NAME} - SKOOR_COLLECTOR_server1_port=50001 - SKOOR_COLLECTOR_server1_id=1 - SKOOR_COLLECTOR_server1_user=collector-local - SKOOR_COLLECTOR_server1_passwd=collector-local depends_on: - eranger-postgresql eranger-ui: image: europe-docker.pkg.dev/sdaas-298209/eu.gcr.io/eranger-ui:${SKOOR_VERSION} container_name: eranger-ui-${INSTANCE_NAME} ports: - "443:443" volumes: - "${PERSISTENT_FS}/engine/eranger:/var/opt/run/eranger" - "${PERSISTENT_FS}/engine/tmp:/srv/eranger/html/tmp" - "${PERSISTENT_FS}/engine/templates:/srv/eranger/html/templates" - "${PERSISTENT_FS}/engine/snmp_walk:/srv/eranger/html/snmp_walk" - "${PERSISTENT_FS}/engine/reports:/srv/eranger/html/reports" - "${PERSISTENT_FS}/engine/parsefile:/srv/eranger/html/parsefile" - "${PERSISTENT_FS}/engine/fetchfile:/srv/eranger/html/fetchfile" - "${PERSISTENT_FS}/engine/execute:/srv/eranger/html/execute" - "${PERSISTENT_FS}/engine/eem_mht_logs:/srv/eranger/html/eem_mht_logs" - "${PERSISTENT_FS}/engine/sikulix:/srv/eranger/html/sikulix" - "${PERSISTENT_FS}/engine/selenium:/srv/eranger/html/selenium" - "${PERSISTENT_FS}/engine/transfer:/srv/eranger/html/transfer" - "${PERSISTENT_FS}/engine/upload:/opt/eranger/collector/upload" environment: - SKOOR_UI_bl_address=eranger-server-${INSTANCE_NAME} - SKOOR_UI_bl_port=50001 - SKOOR_UI_version=${SKOOR_VERSION} - SKOOR_AUTHHOST=eranger-auth-${INSTANCE_NAME} - SKOOR_WSADDR=http://eranger-webservice-${INSTANCE_NAME}:8090 - SKOOR_SDAAS_WSHOST=eranger-etl-${INSTANCE_NAME} - SKOOR_VIEWER_ADDR=http://localhost depends_on: - eranger-postgresql eranger-pgbouncer: image: europe-docker.pkg.dev/sdaas-298209/eu.gcr.io/eranger-pgbouncer:${SKOOR_VERSION} container_name: eranger-pgbouncer-${INSTANCE_NAME} ports: - "5432" environment: - SKOOR_DB_SERVER=eranger-postgresql-${INSTANCE_NAME} - SKOOR_DB_NAME=ng - SDAAS_CUSTOMER_DB_LIST=data depends_on: - eranger-postgresql eranger-auth: image: europe-docker.pkg.dev/sdaas-298209/eu.gcr.io/eranger-auth:${AUTH_VERSION} container_name: eranger-auth-${INSTANCE_NAME} ports: - "8094" volumes: - "${PERSISTENT_FS}/engine/eranger:/var/opt/run/eranger" environment: - SKOOR_AUTH_listen_address=0.0.0.0 - SKOOR_AUTH_engine_address=eranger-server-${INSTANCE_NAME} depends_on: - eranger-postgresql eranger-etl: image: europe-docker.pkg.dev/sdaas-298209/eu.gcr.io/eranger-etl:${ETL_VERSION} container_name: eranger-etl-${INSTANCE_NAME} ports: - "8093" volumes: - "${PERSISTENT_FS}/engine/eranger:/var/opt/run/eranger" environment: - SKOOR_ETL_webserviceUrl=http://eranger-webservice-${INSTANCE_NAME}:8090 - SKOOR_ETL_address=0.0.0.0 - SKOOR_ETL_collectorUser=skoor-etl-collector depends_on: - eranger-postgresql eranger-webservice: image: europe-docker.pkg.dev/sdaas-298209/eu.gcr.io/eranger-webservice-dashboards:${DASHBOARD_VERSION} container_name: eranger-webservice-${INSTANCE_NAME} ports: - "8090" volumes: - "${PERSISTENT_FS}/webservice/datasources:/opt/eranger/eranger-webservice/dataSources" - "${PERSISTENT_FS}/webservice/dataqueries:/opt/eranger/eranger-webservice/dataQueries" - "${PERSISTENT_FS}/webservice/files:/opt/eranger/eranger-webservice/files" - "${PERSISTENT_FS}/webservice/gis:/opt/eranger/eranger-webservice/gis" - "${PERSISTENT_FS}/webservice/reports:/opt/eranger/eranger-webservice/reports" - "${PERSISTENT_FS}/webservice/styles:/opt/eranger/eranger-webservice/styles" - "${PERSISTENT_FS}/webservice/translations:/opt/eranger/eranger-webservice/translations" - "${PERSISTENT_FS}/webservice/tmp:/opt/eranger/eranger-webservice/tmp" - "${PERSISTENT_FS}/webservice/webservice-cfg:/etc/opt/eranger" environment: - SKOOR_WEBSERVICE_eranger_address=eranger-server-${INSTANCE_NAME} - SKOOR_WEBSERVICE_db_host=eranger-pgbouncer-${INSTANCE_NAME} - SKOOR_WEBSERVICE_db_database=ng - SKOOR_DASHBOARD_etlService=true - SKOOR_WEBSERVICE_auth_service_url=http://eranger-auth-${INSTANCE_NAME}:8094 depends_on: - eranger-postgresql sdaas-update: image: europe-docker.pkg.dev/sdaas-298209/eu.gcr.io/sdaas-update:${SKOOR_VERSION} container_name: eranger-update-${INSTANCE_NAME} volumes: - "$PERSISTENT_FS/engine:/mnt/customer" - "$PERSISTENT_FS/webservice:/mnt/webservice" environment: - NAME=${INSTANCE_NAME} - DB_IP=eranger-postgresql-${INSTANCE_NAME} - SINGLE_TENANT=true - SKOOR_DB_NAME=ng - SKOOR_VERSION=${SKOOR_VERSION} depends_on: - eranger-postgresql eranger-postgresql: image: europe-docker.pkg.dev/sdaas-298209/eu.gcr.io/${DATABASE_IMAGE}:${DATABASE_VERSION} container_name: eranger-postgresql-${INSTANCE_NAME} volumes: - "$POSTGRESQL_PATH:/var/lib/pgsql" networks: default: name: skoor-network external: true
تشغيل حاويات SKOOR
docker compose up -d
تحقق من السجلات:
docker compose logs
تحقق من حالة الحاوية:
docker compose ps
الوصول إلى SKOOR
افتح https:// <<عنوان المضيف> في متصفح وقم بتسجيل الدخول باسم المستخدم admin وكلمة مرور admin.