در شرکتهای هلدینگی، بانکها، و سازمانهای پروژهمحور با هزاران پرسنل حضوری و دورکار، ثبت دقیق زمانهای صرفشده بر روی پروژهها، نرمافزارهای تخصصی و امور اداری جهت ارزیابی بهرهوری و برآورد هزینههای واقعی ضروری است. نرمافزار ManicTime Server یکی از استانداردترین و معتبرترین پلتفرمهای پایش خودکار فعالیتها و تحلیل بهرهوری نیروی کار در سطح بینالمللی است.
این سامانه بدون نیاز به ثبت دستی زمان توسط پرسنل، تمامی نرمافزارهای فعال، صفحات وب مشاهدهشده، زمانهای بیکاری (Away Time) و اسناد باز شده را در قالب تایملاینهای گرافیکی دقیق ثبت میکند. چالش اصلی در سازمانهای بزرگ با بیش از ۵۰۰۰ کلاینت، نصب خودکار و بدون دخالت کاربر (Silent Deployment)، حفظ محرمانگی دادهها، جلوگیری از رشد افسارگسیخته پایگاه داده و تثبیت لایسنس در دیتاسنترهای بسته و بدون اینترنت است. در این مقاله جامع، تمامی گامهای فنی پیادهسازی بررسی میشود.
۱. توپولوژی معماری و جریان تبادل داده در ManicTime Server #
معماری پلتفرم شامل سه بخش کلیدی است:
۱. ManicTime Client (ایستگاههای کاری کلاینتها): سرویس سبک ویندوزی که با مصرف کمتر از ۱٪ پردازنده و ۲۰ مگابایت رم، فعالیتهای سیستم را هر ۱ ثانیه پایش کرده و به صورت محلی در فایل دیتابیس SQLite ذخیره میکند.
۲. ManicTime Server (سرور متمرکز تجمیع دادهها): وبسرویس مدرن و پرتال مدیریتی مبتنی بر ASP.NET Core که دادههای رمزنگاریشده را از کلاینتها دریافت و گزارشهای تحلیلی را برای مدیران تولید میکند.
۳. PostgreSQL Database Engine: بانک اطلاعاتی با قابلیت پارتیشنبندی زمانی جهت ذخیره میلیاردها رویداد تایملاین.
┌─────────────────────────────────────────┐
│ Active Directory Group Policy │
│ (GPO Deployment) │
└───────────────────┬─────────────────────┘
│ Silent MSI Install with Pre-Config
▼
┌───────────────────────┐ ┌───────────────────────┐ ┌───────────────────────┐
│ Workstation 001 │ │ Workstation 002 │ │ Workstation N │
│ ManicTime Client │ │ ManicTime Client │ │ ManicTime Client │
│ (Local Cache: SQLite)│ │ (Local Cache: SQLite)│ │ (Local Cache: SQLite)│
└───────────┬───────────┘ └───────────┬───────────┘ └───────────┬───────────┘
│ │ │
└─────────────────────────┼─────────────────────────┘
│ HTTPS JSON Sync (Port: 8080 / 443)
▼
┌─────────────────────────────────────────┐
│ ManicTime Server Instance │
│ (Role-Based Access / AD Auth) │
│ 192.168.95.10 │
└───────────────────┬─────────────────────┘
│ TCP (Port: 5432)
▼
┌─────────────────────────────────────────┐
│ PostgreSQL 16 Enterprise │
│ (Monthly Partitioned Tables) │
│ 192.168.95.20 │
└─────────────────────────────────────────┘
۲. استقرار خودکار و خاموش کلاینتها با Group Policy Object (GPO) #
برای نصب خودکار کلاینت ManicTime روی صدها یا هزاران رایانه بدون نیاز به مراجعه حضوری و بدون اطلاع یا مداخله کاربر، از اسکریپت نصب به همراه پارامترهای فایل کانفیگ از پیش تنظیمشده استفاده میشود:
مرحله اول: ساخت فایل تنظیمات ManicTimeClient.config
فایل تنظیمات اتصال خودکار به سرور را ایجاد نمایید:
<?xml version="1.0" encoding="utf-8"?>
<Settings>
<!-- آدرس سرور مرکزی و اتصال خودکار -->
<ServerUrl>https://manictime.corp.local:8080</ServerUrl>
<!-- ارسال داده ها هر ۱۵ دقیقه -->
<SendIntervalSeconds>900</SendIntervalSeconds>
<!-- پنهان سازی آیکون از سینی ویندوز در صورت نیاز به مانیتورینگ نامحسوس -->
<HideTrayIcon>false</HideTrayIcon>
<AllowUserToExit>false</AllowUserToExit>
<Autostart>true</Autostart>
</Settings>
مرحله دوم: اسکریپت استقرار PowerShell برای GPO Startup Script
# اسکریپت نصب خاموش در زمان بالا آمدن ویندوز
$InstallerPath = "\\corp.local\NETLOGON\ManicTime\ManicTime-v2024.msi"
$ConfigPath = "\\corp.local\NETLOGON\ManicTime\ManicTimeClient.config"
$TargetDir = "$env:ProgramFiles\ManicTime"
if (-not (Test-Path "$TargetDir\ManicTimeClient.exe")) {
Write-Host "Installing ManicTime Client silently..."
Start-Process msiexec.exe -ArgumentList "/i `"$InstallerPath`" /qn /norestart" -Wait
# کپی فایل کانفیگ به پوشه دادههای عمومی برنامه
$CommonDataDir = "$env:ProgramData\Finkit\ManicTimeClient"
New-Item -ItemType Directory -Force -Path $CommonDataDir | Out-Null
Copy-Item -Path $ConfigPath -Destination "$CommonDataDir\ManicTimeClient.config" -Force
# راهاندازی سرویس کلاینت
Start-Process "$TargetDir\ManicTimeClient.exe"
}
۳. همگامسازی با اکتیو دایرکتوری و تفکیک حریم خصوصی دادهها #
در سازمانهای بزرگ، سطوح دسترسی مدیران به گزارشهای زیرمجموعه باید منطبق بر چارت سازمانی باشد:
-
Active Directory Roles Mapping: با اتصال سرور به اکتیو دایرکتوری در مسیر Settings -> Authentication، کاربران عضو گروه
GL-Managersصرفاً تایملاینهای اعضای دپارتمان خود را مشاهده میکنند. -
Privacy & Data Masking: برای حفظ حریم خصوصی کارکنان و الزامات قانونی، قابلیت Password & URL Masking فعال میشود تا رمزهای عبور، اطلاعات خصوصی کارتهای بانکی یا جزئیات گفتگوهای شخصی از عناوین پنجرهها فیلتر گردد.
۴. استراتژی هماهنگی و نگهداری پایگاه داده PostgreSQL #
سرور ManicTime برای ۵۰۰۰ کاربر در هر سال حدود ۱ میلیارد رکورد تولید میکند. برای بهینهسازی دیتابیس:
-- تنظیمات بهینهسازی دوره نگهداری لاگها در PostgreSQL
-- انتقال دادههای قدیمیتر از ۱۸ ماه به تیبلاسپیس آرشیو
CREATE TABLESPACE archive_storage LOCATION '/mnt/fast_san/manictime_archive';
-- هرس دادههای تایملاین ثانیهای و تبدیل به خلاصه ساعتی برای کاهش ۸۰٪ حجم دیسک
SELECT cron.schedule('0 2 * * *', $$
DELETE FROM "Activities"
WHERE "Timestamp" < NOW() - INTERVAL '1 year'
AND "IsConsolidated" = true;
$$);
۵. لایسنسینگ نامحدود سازمانی ManicTime Server توسط Licentra #
نسخه رسمی ManicTime دارای مدل لایسنسینگ مبتنی بر تعداد کلاینت سالانه است که پس از پایان اشتراک، ارتباط کلاینتها با سرور متوقف میگردد.
مزایای بسته فعالسازی پایدار Licentra:
-
تعداد کلاینت نامحدود (Uncapped Client Licenses): امکان ثبت و تجمیع دادههای هزاران کاربر بدون نیاز به تمدید سالانه.
-
لایسنس دائمی ۱۰۰٪ آفلاین: بدون نیاز به تماس سرور با اینترنت، پایدار در شبکههای امنیتی بدون هیچگونه ارتباط خارجی.
-
فعالسازی تمامی افزونهها و گزارشهای تیمی: دسترسی نامحدود به گزارشهای اکسل، افزونه تایمشیت Jira و APIهای یکپارچهسازی با نرمافزارهای حضور و غیاب داخلی.
# بررسی وضعیت سلامت سرویس ManicTime Server
Get-Service -Name "*ManicTime*" | Select-Object Name, Status, StartType
Test-NetConnection -ComputerName "127.0.0.1" -Port 8080
با این چیدمان، سازمان به یک دید عمیق، شفاف و دادهمحور نسبت به عملکرد پروژهها دست مییابد که به بهینهسازی فرآیندها و افزایش بهرهوری کمک شایانی مینماید.

