Matomo یک برنامه وب آنالیتیکس متنباز و خود میزبانی شده است که با PHP نوشته شده است.
در این آموزش، شما Matomo و یک پایگاه داده MariaDB را با استفاده از Docker Compose نصب خواهید کرد، سپس Nginx را برای عمل به عنوان reverse proxy برای برنامه Matomo راهاندازی میکنید. در نهایت، با استفاده از Certbot مدارک SSL از مرکز صدور گواهینامه Let’s Encrypt را دریافت و پیکربندی خواهید کرد تا ارتباطات امن HTTPS فعال شود.
برای تکمیل این آموزش، ابتدا باید موارد زیر را داشته باشید:
یک سرور جدید در منطقهٔ دلخواه خود راهاندازی کنید و سپس به عنوان کاربر root وارد شوید و ادامه آموزش را انجام دهید. با توجه به استفاده از کاربر root، میتوانید بخش sudo دستورها را حذف کنید ولی لازم نیست.
برای فعال کردن SSL، شما به یک نام دامنه نیاز دارید که به IP عمومی سرور شما اشاره کند. این دامنه میتواند به شکل example.com یا matomo.example.com باشد.
پس از تامین همهٔ پیشنیازها، به مرحله اول بروید که در آن نرمافزار Matomo را دانلود و راهاندازی خواهید کرد.
اولین گام ایجاد فایل پیکربندی Docker Compose است که کانتینرهای مربوط به برنامه Matomo و پایگاه داده MariaDB را راهاندازی میکند.
در این آموزش، کانفیگ داخل پوشهای به نام matomo در دایرکتوری خانگی شما قرار داده میشود. البته میتوانید مسیر دیگری مثل /opt/matomo یا هر مسیر دلخواه دیگر انتخاب کنید.
ابتدا مطمئن شوید در دایرکتوری خانگی خود هستید:
cd ~سپس پوشه matomo را بسازید و وارد آن شوید:
mkdir matomo
cd matomo
حالا یک فایل YAML خالی با نام docker-compose.yml بسازید:
nano docker-compose.ymlاین فایل کانفیگی است که docker-compose آن را برای بالا آوردن کانتینرها میخواند. محتوای زیر را داخل فایل paste کنید:
version: '3.7'
services:
db:
image: mariadb:latest
volumes:
- db_data:/var/lib/mysql
environment:
MARIADB_ROOT_PASSWORD: ${MARIADB_ROOT_PASSWORD}
MARIADB_DATABASE: matomo
MARIADB_USER: ${MARIADB_USER}
MARIADB_PASSWORD: ${MARIADB_PASSWORD}
app:
image: matomo:latest
ports:
- "127.0.0.1:8080:80"
volumes:
- matomo_data:/var/www/html
depends_on:
- db
volumes:
db_data:
matomo_data:
این فایل دو سرویس تعریف میکند، یکی سرویس db که کانتینر MariaDB است، و دیگری سرویس app که برنامه Matomo را اجرا میکند. هر دو سرویس از یک volume نامگذاری شده برای ذخیره داده استفاده میکنند و سرویس app پورت 8080 روی لوپبک (127.0.0.1) را باز میکند که از طریق localhost به آن متصل میشویم.
فایل را ذخیره و از ویرایشگر خارج شوید (در nano کلیدهای CTRL+O سپس ENTER برای ذخیره و CTRL+X برای خروج).
کانتینر MariaDB به مقداری تنظیمات از طریق متغیرهای محیطی نیاز دارد تا به درستی کار کند. این متغیرها در docker-compose.yml لیست شدهاند اما همهٔ آنها مقدار ندارند تا رمزهای عبور درون فایل نماند، چون قرار نیست این رمزها در کنترل نسخه ذخیره شود.
بجای آن، اطلاعات مورد نیاز را در فایل .env در همان پوشه مینویسیم که دستور docker-compose هنگام اجرا به صورت خودکار میخواند.
یک فایل .env جدید با nano باز کنید:
nano .envباید یک نام کاربری و رمز عبور قوی برای MariaDB و همچنین رمز عبور root آن انتخاب کنید:
MARIADB_ROOT_PASSWORD=your_root_password
MARIADB_USER=your_user
MARIADB_PASSWORD=your_password
برای تولید رمز عبور قوی میتوانید از دستور زیر استفاده کنید:
openssl rand -base64 30پس از پر کردن موارد، فایل را ذخیره و خارج شوید.
حال آمادهاید که دو کانتینر را با docker-compose اجرا کنید:
docker-compose up -dدستور up به docker-compose میگوید کانتینرها (همراه volumes و شبکهها) مطابق docker-compose.yml راهاندازی شوند و -d باعث میشود این کار در پسزمینه اجرا شود.
پس از اجرا، Matomo باید فعال باشد. با دستور زیر بررسی کنید که وبسرور روی localhost:8080 فعال است:
curl -I http://localhost:8080اگر پاسخ 200 OK دریافت کردید، سرور Matomo در حال اجراست اما فقط روی localhost در دسترس است. هدر X-Matomo-Request-Id نشان میدهد این پاسخ از سرور Matomo است.
حالا Nginx را راهاندازی میکنیم تا ترافیک عمومی را به کانتینر Matomo فوروارد کند.
وبسرور Nginx نقش معکوس پروکسی را دارد و میتواند کش، فشردهسازی و سرو کردن فایلهای ایستا را به شکل بهینهتری انجام دهد. نصب Nginx غیر کانتینری همچنین روند اضافه کردن گواهینامه SSL Let’s Encrypt را سادهتر میکند.
ابتدا لیست بستهها را بهروز کنید و Nginx نصب کنید:
apt update
apt install nginxدسترسی عمومی به پورتهای 80 و 443 (HTTP و HTTPS) را با استفاده از پروفایل UFW به نام “Nginx Full” باز کنید:
ufw allow 'Nginx Full'یک فایل پیکربندی جدید Nginx داخل مسیر /etc/nginx/sites-available ایجاد کنید. ما نام آن را matomo.conf میگذاریم:
nano /etc/nginx/sites-available/matomo.confمتن زیر را داخل فایل paste کنید و عبارت your_domain_here را با دامنهٔ خود که به سرور اشاره میکند جایگزین کنید (مثلاً matomo.example.com):
server {
listen 80;
server_name your_domain_here;
access_log /var/log/nginx/matomo_access.log;
error_log /var/log/nginx/matomo_error.log;
location / {
proxy_pass http://localhost:8080;
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;
}
}
این کانفیگ فعلاً فقط HTTP است و منتظر Certbot برای فعال کردن SSL میمانیم. دیگر تنظیمات شامل مسیر لاگها و ارسال Header های پراکسی به Matomo است.
فایل را ذخیره و بسته و سپس کانفیگ را با ایجاد لینک simbollink فعال کنید:
ln -s /etc/nginx/sites-available/matomo.conf /etc/nginx/sites-enabled/برای اطمینان از صحت کانفیگ Nginx دستور زیر را اجرا کنید:
nginx -tدر نهایت سرویس Nginx را برای بارگذاری تنظیمات جدید ریلود کنید:
systemctl reload nginxحالا سایت Matomo شما باید از طریق HTTP قابل مشاهده باشد. به آدرس http://your_domain_here مراجعه کنید (ممکن است مجبور شوید هشدار امنیتی را رد کنید).
حالا برای امن کردن اتصال، گام بعدی استفاده از Certbot برای دریافت و پیکربندی گواهینامه SSL از Let’s Encrypt است. قبل از شروع نصب از طریق وب Matomo این کار را انجام دهید.
با دو دستور زیر Certbot و پلاگین Nginx آن را نصب کنید:
apt install certbot python3-certbot-nginxسپس Certbot را در حالت --nginx اجرا کرده و دامنهای که در Nginx وارد کردید را مشخص کنید:
certbot --nginx -d your_domain_hereدر این مرحله از شما خواسته میشود با شرایط Let’s Encrypt موافقت کرده و یک ایمیل وارد کنید.
سپس پرسیده میشود که آیا میخواهید تمام ترافیک HTTP به HTTPS هدایت شود یا نه. توصیه میشود اقدام کنید.
در ادامه Let’s Encrypt درخواست شما را تأیید و گواهینامه را دانلود میکند و Certbot به شکل خودکار سرویس Nginx را برای بارگذاری گواهینامهها ریلود میکند.
صفحه سایت خود را دوباره بارگذاری کنید و مطمئن شوید با HTTPS باز میشود و در صورت انتخاب، به صورت خودکار به HTTPS ریدایرکت میشود.
اکنون اتصال سایت شما امن است و میتوانید فرایند نصب وب مبتنی بر Matomo را ادامه دهید.
در مرورگر شما باید صفحه Welcome Matomo را، اما این بار از طریق HTTPS، مشاهده کنید. در اینجا میتوانید با اطمینان نامکاربری و رمزعبورها را وارد کنید.
دکمه Next را فشار دهید تا به مرحله بررسی سیستم بروید، که نشاندهنده وضعیت سیستم شماست و همه موارد باید یک تیک سبز نشان دهند. به پایین صفحه اسکرول کرده و Next را بزنید.
حالا در صفحه Database Setup هستید. اینجا باید اطلاعات اتصال به پایگاه داده MariaDB را وارد کنید. آنها شامل مقادیر MARIADB_USER و MARIADB_PASSWORD هستند که در فایل .env قرار دارند و میتوانید از آنجا کپی کنید.
چهار فیلد اول را پر کنید و برای دو فیلد دیگر مقدار پیشفرض کافی است. سپس Next را بزنید.
اگر پایگاه داده به درستی تنظیم شده باشد، پیام تأیید خواهید دید. Next بزنید. سپس باید یک کاربر مدیر بسازید و اطلاعات سایت اولیه خود برای دریافت دادهها را وارد کنید.
در نهایت به صفحه Congratulations میرسید. تقریباً تمام شده. به انتهای صفحه رفته و دکمه Continue to Matomo را بزنید تا به صفحه اصلی Matomo بروید.
ممکن است یک هشدار بزرگ زرد رنگ در بالای صفحه ببینید. برای رفع آن باید یک تغییر کوچک در فایل پیکربندی Matomo انجام دهید.
در خط فرمان فایل پیکربندی Matomo را با یک ویرایشگر باز کنید:
nano /path/to/matomo/config/config.ini.phpدر بخش [General]، سه خط زیر را به انتهای این بخش اضافه کنید:
; Allow Matomo to know it’s behind a reverse proxy on port 8080 and HTTPS
proxy_port = 8080
force_ssl = 1
trusted_hosts[] = "your_domain_here"
این تنظیمات به Matomo اطلاع میدهد که استفاده از پورت 8080 امن است و اتصال همیشه HTTPS در نظر گرفته شود.
فایل را ذخیره کرده و ببندید. سپس صفحه مرورگر را دوباره بارگذاری نمایید. هشدار برطرف شده و صفحه ورود به سیستم نشان داده میشود.
با حساب کاربری مدیر که ساختهاید وارد شوید تا به داشبورد Matomo منتقل شوید.
احتمالاً چون هنوز کد رهگیری را روی سایت خود نصب نکردهاید، داشبورد پیام “هیچ دادهای ثبت نشده است” را نشان میدهد. راهنماییها را دنبال کنید تا کد جاوااسکریپت را روی سایت خود قرار دهید و آنالیتیکس شروع به ثبت داده کند.
در این آموزش، برنامه Matomo و پایگاه داده MariaDB را با Docker Compose راهاندازی، سپس reverse proxy Nginx را پیکربندی و در نهایت با گواهینامههای رایگان Let’s Encrypt ایمن کردید.
اکنون آمادهاید سایت خود را راهاندازی کرده و اسکریپت رهگیری آنالیتیکس Matomo را اضافه نمایید. برای اطلاعات بیشتر به مستندات رسمی Matomo مراجعه کنید: https://matomo.org/docs/
از همراهی شما با جامعه پارمین کلود سپاسگزاریم.



نظرات کاربران