راهاندازی 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 (admin/umami) را بلافاصله بعد از اولین ورود تغییر دهید.
- بهصورت دورهای از volume دیتابیس با
docker execوpg_dumpبکآپ بگیرید. - برای آپدیت، تگ ایمیج در
docker-compose.ymlرا به نسخه جدید تغییر دهید و دستورdocker compose pull && docker compose up -dرا اجرا کنید. - دسترسی SSH سرور را با کلید عمومی محدود کنید و پورت ۳۰۰۰ را در فایروال (آموزش تنظیم فایروال با UFW) فقط برای Nginx محلی باز بگذارید، نه برای اینترنت. برای نکات تکمیلی امنیت سرور، افزایش امنیت سرور لینوکس را هم مطالعه کنید.
جمعبندی
راهاندازی Umami روی سرور با Docker Compose کمتر از نیم ساعت زمان میبرد و در نهایت یک آنالیتیکس سبک، بدون کوکی و کاملاً تحت کنترل خودتان در اختیارتان میگذارد. تنها نکته این است که خودِ سرور باید پایدار، بهروز و با پهنای باند کافی باشد؛ برای اجرای مطمئن Umami و دیتابیس آن کنار هم، یک سرور مجازی آریانت با منابع اختصاصی و شبکه پایدار گزینه مناسبی است تا داشبورد آنالیتیکس شما همیشه در دسترس بماند.




