نحوه نصب Elasticsearch در اوبونتو ۲۴.۰۴ #
نصب و ایمنسازی Elasticsearch روی اوبونتو ۲۴.۰۴ با پروکسی معکوس Nginx، SSL از طریق Let’s Encrypt و محدودیتهای دسترسی محلی.
Elasticsearch یک موتور جستجوی توزیع شده و متنباز است که بر روی Apache Lucene ساخته شده است. این موتور حجم زیادی از دادههای ساختاریافته، بدون ساختار و برداری را با سرعت و مقیاسپذیری بالا ذخیره و بازیابی میکند. این موتور معمولاً به عنوان بخشی از Elastic Stack در کنار Logstash و Kibana برای ثبت وقایع، تجزیه و تحلیل و جستجوی متن کامل استفاده میشود.
در این مقاله، شما Elasticsearch را روی اوبونتو ۲۴.۰۴ نصب خواهید کرد، آن را برای دسترسی محلی امن پیکربندی خواهید کرد، عملکرد آن را آزمایش خواهید کرد و آن را با گواهیهای SSL Let’s Encrypt و Nginx به عنوان یک پروکسی معکوس ایمن خواهید کرد.
پیشنیازها #
قبل از شروع، شما نیاز دارید:
- به عنوان یک کاربر غیر root با دسترسی sudo به یک سرور اوبونتو ۲۴.۰۴ دسترسی داشته باشید .
- یک رکورد DNS که به آدرس IP سرور شما پوینت داده شده باشد ، مانند
www.example.com.
نصب وابستگی ها #
برای آمادهسازی جهت ایمنسازی Elasticsearch با SSL، Certbot و Nginx را نصب کنید.
- لیست بستههای سیستم خود را بهروزرسانی کنید.کنسول
$ sudo apt update - Certbot، Nginx و افزونه Nginx را نصب کنید.کنسول
$ sudo apt install -y certbot nginx python3-certbot-nginx
نصب الاستیکسرچ #
Elasticsearch در مخازن بسته پیشفرض اوبونتو موجود نیست. مخزن رسمی Elastic APT را اضافه کنید و آن را به صورت زیر نصب کنید:
- کلید امضای Elasticsearch GPG را وارد کنید.کنسول
$ curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch | \ sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg
- لیست منبع APT الاستیکسرچ را اضافه کنید.کنسول
$ echo "deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" | \ sudo tee /etc/apt/sources.list.d/elastic-8.x.list
- لیست بستههای خود را دوباره بهروزرسانی کنید تا مخزن جدید را شامل شود.کنسول
$ sudo apt update - الاستیکسرچ را نصب کنید.کنسول
$ sudo apt install -y elasticsearch
پیکربندی الاستیک سرچ #
localhostبرای جلوگیری از دسترسی خارجی، Elasticsearch را به حالت فقط شنود (listening only) محدود کنید .
- فایل پیکربندی Elasticsearch را باز کنید.کنسول
$ sudo nano /etc/elasticsearch/elasticsearch.yml - خط زیر را پیدا کنید (معمولاً نزدیک به پایین) و آن را جایگزین یا اضافه کنید تا دسترسی به موارد زیر محدود شود
localhost:یاملnetwork.host: ۱۲۷.۰.۰.۱
تنظیم
network.hostروی۱۲۷.۰.۰.۱تضمین میکند که Elasticsearch در معرض شبکههای خارجی قرار نمیگیرد.فایل را ذخیره کنید و خارج شوید.
مدیریت سرویس Elasticsearch #
سرویس Elasticsearch را مجدداً راهاندازی و فعال کنید تا تغییرات اعمال شود و مطمئن شوید که هنگام بوت شدن سیستم شروع به کار میکند.
- برای ثبت تغییرات سرویس، systemd را مجدداً بارگذاری کنید.کنسول
$ sudo systemctl daemon-reload - سرویس Elasticsearch را مجدداً راه اندازی کنید.کنسول
$ sudo systemctl restart elasticsearch - فعال کردن شروع خودکار Elasticsearch پس از راهاندازی مجدد سیستمکنسول
$ sudo systemctl enable elasticsearch
- تأیید کنید که سرویس فعال و در حال اجرا است.کنسول
$ sudo systemctl status elasticsearch
تست الاستیک سرچ #
با فعال کردن پورتهای فایروال مورد نیاز، تنظیم مجدد رمز عبور پیشفرض کاربر و پرسوجو از API، تأیید کنید که Elasticsearch کار میکند.
- پورتهای HTTP و HTTPS را مجاز کنید.کنسول
$ sudo ufw allow ۸۰/tcp $ sudo ufw allow ۴۴۳/tcp
- فایروال را فعال کنید.کنسول
$ sudo ufw enable
- تأیید کنید که قوانین فعال هستند.کنسول
$ sudo ufw statusخروجی:
Status: active To Action From -- ------ ---- ۲۲/tcp ALLOW Anywhere ۸۰/tcp ALLOW Anywhere ۴۴۳/tcp ALLOW Anywhere ۲۲/tcp (v6) ALLOW Anywhere (v6) ۸۰/tcp (v6) ALLOW Anywhere (v6) ۴۴۳/tcp (v6) ALLOW Anywhere (v6) - رمز عبور کاربر را بازنشانی کنید
elastic.کنسول$ sudo /usr/share/elasticsearch/bin/elasticsearch-reset-password -u elasticدستور بالا یک رمز عبور جدید برای
elasticکاربر ایجاد و نمایش میدهد که در مرحله بعدی از آن استفاده خواهید کرد. - API الاستیکسرچ را با رمز عبور تولید شده آزمایش کنید.کنسول
$ curl -u elastic:<password> -k https://127.0.0.1:9200<password>برای تأیید اعتبار درخواست، مقدار تولید شده در مرحله قبل را جایگزین کنید . این-kگزینه از اعتبارسنجی گواهی SSL صرف نظر میکند.توجه داشته باشیدElasticsearch از نسخه ۸.۰ به بعد به صورت پیشفرض احراز هویت را فعال میکند.
elasticبرای دسترسی به API، تنظیم مجدد رمز عبور کاربر الزامی است.پاسخ باید شبیه به این باشد:
{ "name": "negarnovin", "cluster_name": "elasticsearch", "cluster_uuid": "495uUfkmREWsiiHmXwoY5Q", "version": { "number": "8.18.2", "build_flavor": "default", "build_type": "deb", "build_hash": "c6b8d8d951c631db715485edc1a74190cdce4189", "build_date": "2025-05-23T10:07:06.210694702Z", "build_snapshot": false, "lucene_version": "9.12.1", "minimum_wire_compatibility_version": "7.17.0", "minimum_index_compatibility_version": "7.0.0" }, "tagline": "You Know, for Search" }این تأیید میکند که Elasticsearch از طریق یک API امن کار میکند و قابل دسترسی است.
الاستیک سرچ امن #
برای فعال کردن دسترسی امن از راه دور، از گواهیهای SSL رمزگذاریشدهی Let’s Encrypt به همراه پروکسی معکوس Nginx استفاده کنید.
- یک پیکربندی پروکسی معکوس جدید برای Nginx ایجاد کنید.کنسول
$ sudo nano /etc/nginx/sites-available/elasticsearch - پیکربندی زیر را اضافه کنید و
www.example.comبه طور مناسب جایگزین کنید.iniserver { listen 80; server_name www.example.com; location / { proxy_pass https://localhost:9200; proxy_ssl_verify off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }
- پروکسی معکوس جدید Elasticsearch را فعال کنید.کنسول
$ sudo ln -s /etc/nginx/sites-available/elasticsearch /etc/nginx/sites-enabled/ - Nginx را مجدداً راه اندازی کنید.کنسول
$ sudo systemctl restart nginx - با استفاده از Certbot درخواست گواهی TLS دهید.console
$ sudo certbot --nginx -d www.example.comپس از تکمیل درخواست، Certbot گواهیها را در آدرس زیر ذخیره میکند:
/etc/letsencrypt/live/www.example.com/fullchain.pem/etc/letsencrypt/live/www.example.com/privkey.pem
- سایت پیشفرض Nginx را حذف کنید.کنسول
$ sudo rm /etc/nginx/sites-enabled/default - مرورگر خود را باز کنید و بازدید کنید
https://www.example.com.شما باید یک اعلان ورود به سیستم را ببینید:
- برای دسترسی به صفحه اصلی، با استفاده از نام کاربری و رمز عبور وارد شوید
elastic.
این تأیید میکند که Elasticsearch به طور ایمن از طریق HTTPS قابل دسترسی است.
نتیجهگیری #
در این مقاله، شما Elasticsearch را روی اوبونتو ۲۴.۰۴ نصب کردید، دسترسی آن را به localhost محدود کردید، elasticرمز عبور کاربر را بازنشانی کردید، عملکرد API آن را تأیید کردید و با استفاده از گواهیهای SSL Let’s Encrypt با یک پروکسی معکوس Nginx، دسترسی از راه دور را ایمن کردید. این تنظیمات، یک محیط Elasticsearch امن و آماده برای اجرا را فراهم میکند.
برای موارد استفاده پیشرفته و مدیریت کلاستر، به مستندات رسمی Elasticsearch مراجعه کنید .

