بلاگ/راه‌اندازی Umami روی سرور مجازی و اختصاصی: جایگزین خصوصی و بدون کوکی گوگل آنالیتیکس با Docker
به‌روز شده

راه‌اندازی Umami روی سرور مجازی و اختصاصی: جایگزین خصوصی و بدون کوکی گوگل آنالیتیکس با Docker

1405/07/060 بازدید
راه‌اندازی Umami روی سرور مجازی و اختصاصی: جایگزین خصوصی و بدون کوکی گوگل آنالیتیکس با Docker

راه‌اندازی Umami روی سرور مجازی و اختصاصی: جایگزین خصوصی و بدون کوکی گوگل آنالیتیکس با Docker

اگر به دنبال یک ابزار آنالیتیکس وب هستید که داده‌های کاربران را روی سرور خودتان نگه دارد، نیازی به بنر رضایت کوکی نداشته باشد و رابط کاربری ساده‌ای داشته باشد، Umami یکی از بهترین گزینه‌هاست. در این مقاله مراحل کامل راه‌اندازی Umami روی سرور با Docker Compose، تنظیم ریورس پروکسی Nginx و دریافت SSL رایگان را قدم به قدم بررسی می‌کنیم. اگر به راه‌اندازی سرویس‌های خودمیزبان دیگر روی همین سرور هم علاقه دارید، راه‌اندازی n8n با Docker را هم ببینید.

Umami چیست و چرا جایگزین گوگل آنالیتیکس؟

Umami یک ابزار آنالیتیکس متن‌باز است که با Node.js و PostgreSQL یا MySQL نوشته شده و روی سرور خودتان اجرا می‌شود. برخلاف گوگل آنالیتیکس، داده‌های بازدیدکنندگان سایت شما از مرز سرورتان خارج نمی‌شود.

اسکریپت ردیابی Umami از کوکی استفاده نمی‌کند، به همین دلیل در بیشتر کشورها نیازی به نمایش بنر رضایت کوکی برای این بخش از سایت نیست. حجم اسکریپت هم زیر ۲ کیلوبایت است، در حالی که اسکریپت گوگل آنالیتیکس چند برابر سنگین‌تر است و روی سرعت بارگذاری صفحه اثر می‌گذارد.

مقایسه Umami با گوگل آنالیتیکس

پیش از شروع نصب، بهتر است تفاوت‌های اصلی را کنار هم ببینید.

ویژگیUmami (روی سرور خودتان)گوگل آنالیتیکس
محل نگهداری دادهسرور شماسرورهای گوگل
نیاز به بنر کوکیمعمولاً خیربله
حجم اسکریپت ردیابیحدود ۲ کیلوبایتچند برابر سنگین‌تر
هزینهفقط هزینه سروررایگان با محدودیت داده
کنترل و دسترسی به داده خامکاملمحدود به گزارش‌های گوگل

نکته: اگر به گزارش‌های تبلیغاتی پیشرفته و اتصال مستقیم به Google Ads نیاز دارید، گوگل آنالیتیکس همچنان کاربرد دارد؛ Umami بیشتر برای آنالیتیکس ساده و حریم‌خصوصی‌محور مناسب است.

پیش‌نیازها

برای راه‌اندازی Umami روی سرور به موارد زیر نیاز دارید:

  • یک سرور مجازی یا اختصاصی با حداقل ۱ گیگابایت رم و سیستم‌عامل لینوکس (اوبونتو یا دبیان)
  • نصب بودن Docker و Docker Compose
  • یک دامنه یا ساب‌دامنه که به IP سرور اشاره کند، مثلاً analytics.example.com
  • دسترسی SSH با کاربر دارای دسترسی sudo

اگر Docker روی سرور نصب نیست، با دستورات زیر نصبش کنید:

curl -fsSL https://get.docker.com | sh
sudo systemctl enable --now docker

نصب Umami با Docker Compose روی سرور

ساخت فایل docker-compose.yml

یک پوشه برای پروژه بسازید و فایل docker-compose.yml را در آن ایجاد کنید:

mkdir -p ~/umami && cd ~/umami
nano docker-compose.yml

محتوای فایل:

services:
  umami:
    image: docker.umami.is/umami-software/umami:postgresql-latest
    ports:
      - "3000:3000"
    environment:
      DATABASE_URL: postgresql://umami:${DB_PASSWORD}@db:5432/umami
      DATABASE_TYPE: postgresql
      APP_SECRET: ${APP_SECRET}
    depends_on:
      db:
        condition: service_healthy
    restart: always

  db:
    image: postgres:15-alpine
    environment:
      POSTGRES_DB: umami
      POSTGRES_USER: umami
      POSTGRES_PASSWORD: ${DB_PASSWORD}
    volumes:
      - umami-db-data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U umami"]
      interval: 5s
      timeout: 5s
      retries: 5
    restart: always

volumes:
  umami-db-data:

تنظیم متغیرهای محیطی

یک فایل .env کنار docker-compose.yml بسازید تا رمز دیتابیس و کلید امنیتی برنامه در کد قرار نگیرد:

echo "DB_PASSWORD=$(openssl rand -hex 16)" > .env
echo "APP_SECRET=$(openssl rand -hex 32)" >> .env

اجرای کانتینرها

docker compose up -d

با دستور docker compose ps مطمئن شوید هر دو سرویس در وضعیت running هستند. (اگر بعداً به یک رابط گرافیکی برای مدیریت این کانتینرها هم نیاز داشتید، راه‌اندازی Portainer روی سرور را ببینید.) حالا Umami روی پورت داخلی ۳۰۰۰ سرور در حال اجراست، اما هنوز از بیرون با HTTPS در دسترس نیست.

تنظیم ریورس پروکسی Nginx و SSL رایگان

برای این‌که Umami روی دامنه خودتان و با HTTPS در دسترس باشد، از Nginx به‌عنوان ریورس پروکسی استفاده می‌کنیم.

ابتدا Nginx و Certbot را نصب کنید:

sudo apt update
sudo apt install -y nginx certbot python3-certbot-nginx

سپس یک فایل کانفیگ برای دامنه بسازید:

server {
    listen 80;
    server_name analytics.example.com;

    location / {
        proxy_pass http://127.0.0.1:3000;
        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;
    }
}

فایل را فعال و Nginx را ری‌استارت کنید:

sudo ln -s /etc/nginx/sites-available/umami /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx

در پایان، با Certbot گواهی SSL رایگان بگیرید (روش کار Certbot و Let's Encrypt را در این راهنما کامل‌تر توضیح داده‌ایم):

sudo certbot --nginx -d analytics.example.com

Certbot به‌صورت خودکار کانفیگ Nginx را برای HTTPS به‌روزرسانی و تمدید خودکار گواهی را هم تنظیم می‌کند. حالا Umami روی آدرس https://analytics.example.com در دسترس است.

افزودن اسکریپت ردیابی به سایت

پس از ورود به پنل Umami با کاربر پیش‌فرض، از بخش Websites یک وب‌سایت جدید اضافه کنید. Umami یک اسکریپت کوتاه تولید می‌کند که باید آن را قبل از تگ بسته </head> در سایت خود قرار دهید:

<script async src="https://analytics.example.com/script.js" data-website-id="شناسه-سایت-شما"></script>

بعد از قرار دادن اسکریپت، بازدیدهای صفحه در داشبورد Umami به‌صورت لحظه‌ای نمایش داده می‌شود.

نمای داشبورد Umami با آمار بازدید لحظه‌ای پس از افزودن اسکریپت ردیابی

نکات امنیتی و نگهداری

  • رمز عبور کاربر پیش‌فرض Umami (admin/umami) را بلافاصله بعد از اولین ورود تغییر دهید.
  • به‌صورت دوره‌ای از volume دیتابیس با docker exec و pg_dump بک‌آپ بگیرید.
  • برای آپدیت، تگ ایمیج در docker-compose.yml را به نسخه جدید تغییر دهید و دستور docker compose pull && docker compose up -d را اجرا کنید.
  • دسترسی SSH سرور را با کلید عمومی محدود کنید و پورت ۳۰۰۰ را در فایروال (آموزش تنظیم فایروال با UFW) فقط برای Nginx محلی باز بگذارید، نه برای اینترنت. برای نکات تکمیلی امنیت سرور، افزایش امنیت سرور لینوکس را هم مطالعه کنید.

جمع‌بندی

راه‌اندازی Umami روی سرور با Docker Compose کمتر از نیم ساعت زمان می‌برد و در نهایت یک آنالیتیکس سبک، بدون کوکی و کاملاً تحت کنترل خودتان در اختیارتان می‌گذارد. تنها نکته این است که خودِ سرور باید پایدار، به‌روز و با پهنای باند کافی باشد؛ برای اجرای مطمئن Umami و دیتابیس آن کنار هم، یک سرور مجازی آریانت با منابع اختصاصی و شبکه پایدار گزینه مناسبی است تا داشبورد آنالیتیکس شما همیشه در دسترس بماند.