راهنمای جامع استقرار و پیکربندی Server-Side Tagging در گوگل تگ منیجر
در این مقاله میخوانید
پیادهسازی سمت سرور (Server-Side Tagging) انتقال بار پردازش و ردیابی دادهها از مرورگر کاربر به یک سرور ابری است. در این مقاله سه روش اصلی برای پیادهسازی سرورساید تگینگ بر روی گوگل تگ منیجر را شرح میدهیم که سومین روش آن، یعنی استقرار کانتینر GTM در PaaS پارسپک بهترین راهکار برای انجام این فرایند است. پس برای آشنایی با این مفاهیم و نحوه انجام آنها این مقاله از بخش آموزش سرور در بلاگ پارسپک را بخوانید.
انتخاب و راهاندازی زیرساخت سرور GTM
برای پیادهسازی سرورساید تگینگ، پیش از انجام هرگونه تنظیمات در پنل تگ منیجر، نیازمند یک محیط ابری هستید تا بار پردازشی را از مرورگر کاربر تحویل گرفته و مدیریت کند. در این بخش، سه مسیر متفاوت برای استقرار این زیرساخت را با تمام جزئیات، هزینههای پنهان و محدودیتهای عملیاتی بررسی میکنیم.
شما میتوانید بر اساس بودجه، نیاز سازمان و توانمندی تیم فنی خود، یکی از این سه روش را انتخاب و اجرا کنید. پس از روشن شدن سرور و اتصال دامنه در روش انتخابی خود، برای تکمیل فرایند مستقیما به «بخش دوم» (پیکربندی نهایی در پنل GTM) مراجعه کنید.
روش اول: استقرار روی گوگل کلود
یکی از راههای راهاندازی محیط Server-Side Tagging، استفاده از زیرساختهای ابری گوگل است. گوگل برای این منظور دو سرویس مجزا ارائه میدهد:
- سرویس Cloud Run: سرویسی مبتنی بر کانتینرهای داکر با مقیاسپذیری بالا.
- سرویس App Engine: سرویسی با محیط قدیمی.
نکته:
گوگل در مستندات رسمیاش صراحتا توصیه میکند که از روش استقرار روی گوگل کلود با سرویس App Engine، استفاده نکنید و به جای آن محیط Cloud Run را انتخاب نمایید.
سریعترین راه برای ساخت سرور در این روش، استفاده از دکمه استقرار خودکار است. پس از ساخت کانتینر در پنل GTM، با انتخاب گزینه Automatically provision tagging server و اتصال حساب پرداخت ارزی، گوگل یک سرور تستی روی Cloud Run میسازد. نتیجه این کار، اختصاص یک آدرس پیشفرض به شکل https://[PROJECT_ID]-uc.a.run.app است. توجه داشته باشید که این فرایند خودکار را فقط یک بار میتوانید اجرا کنید.
روش دوم: استقرار دستی با داکر
علاوه بر محیطهای مدیریتشده گوگل، امکان استقرار سرور GTM به صورت کاملا دستی و از طریق Docker نیز وجود دارد. در این حالت، شما کنترل کاملی روی زیرساخت دارید، اما به دلیل ماهیت خام داکر، با فرایند استقرار و چرخه نگهداری پیچیدهتری روبرو خواهید شد. سرور GTM یک سرور Node.js است که داخل یک ایمیج داکر (Docker Image) اجرا میشود. استقرار دستی به دو جزء اساسی نیاز دارد:
- کلاستر سمت سرور (SST Cluster): نقطه ورود اصلی تمامی درخواستها و مدیریت ریکوئستها.
- سرور پیشنمایش (Preview Server): صرفا برای مشاهده پیشنمایش کانتینر.

پیشنیاز: ابزار خط فرمان Docker باید روی سیستم شما نصب باشد.
مشاهده تنظیمات ایمیج داکر
هر دو سرور SST و پیشنمایش از یک ایمیج داکر یکسان اما با فلگهای (Flags) متفاوت استفاده میکنند. این ایمیج در آدرس زیر قرار دارد:
gcr.io/cloud-tagging-10302018/gtm-cloud-image:stable
برای مشاهده تمامی تنظیمات در دسترس، دستور زیر را اجرا کنید:
docker run gcr.io/cloud-tagging-10302018/gtm-cloud-image:stable server_bin.js --help
افزودن کلیدهای دسترسی Google Cloud
برای استفاده از APIهای BigQuery یا Firestore خارج از محیط گوگل کلود، به Service Account Credential نیاز دارید.
۱. حساب خدماتی با نقش BigQuery Data Editor (برای بیگکوئری) یا Cloud Datastore User (برای فایراستور) ایجاد کنید.
۲. کلید JSON را با نام local_service_account_key.json دانلود کنید.
۳. این فایل را در والیوم داکر مونت (Mount) کنید و متغیر محیطی GOOGLE_APPLICATION_CREDENTIALS را به مسیر آن اختصاص دهید.
۴. شناسه پروژه را در متغیر GOOGLE_CLOUD_PROJECT تنظیم کنید. (اختیاری)
نمونه دستور اجرا با کلیدها:
docker run -v local_service_account_key.json:/app/service_account_key.json \ -p 8080:8080 \ -e GOOGLE_APPLICATION_CREDENTIALS='/app/service_account_key.json' \ -e GOOGLE_CLOUD_PROJECT='' \ -e CONTAINER_CONFIG='' \ gcr.io/cloud-tagging-10302018/gtm-cloud-image:stable
نکته فنی:
روش مونت کردن در سیستمهایی مثل Kubernetes یا Docker Swarm متفاوت است. اکیدا توصیه میشود بهترین روشهای امنیتی را برای نگهداری از کلیدها (Secrets) رعایت کنید.
۱. استقرار دستی سرور پیشنمایش (Preview Server)
برای اجرای سرور پیشنمایش جهت مشاهده کانتینر سرور، متغیرهای محیطی زیر الزامی است:
CONTAINER_CONFIG: رشته پیکربندی کانتینر. (مسیر در تگ منیجر: تب کانتینر سرور > Container ID > کلیک روی Manually provision tagging server).
RUN_AS_PREVIEW_SERVER: باید روی true تنظیم شود.
دستور استقرار محلی:
docker run -p 8080:8080 -e CONTAINER_CONFIG='' -e RUN_AS_PREVIEW_SERVER=true gcr.io/cloud-tagging-10302018/gtm-cloud-image:stable
تست سلامت: ارسال درخواست به http://localhost:8080/healthy باید کد پاسخ 200 برگرداند. برای تغییر پورت از متغیر PORT استفاده کنید.
الزامات زیرساخت:
دقیقا یک سرور پیشنمایش دیپلوی کنید. به هیچ وجه مقیاسپذیری خودکار (Autoscaling) برای آن تنظیم نکنید.
پس از راهاندازی، یک آدرس HTTPS به آن اختصاص دهید (برای راهاندازی کلاستر در مرحله بعد الزامی است).
تایماوت لودبالانسر یا CDN حتما باید بیشتر از ۲۰ ثانیه باشد، در غیر این صورت حالت پیشنمایش از کار میافتد.
۲. استقرار دستی کلاستر سمت سرور (SST Cluster)
این کلاستر ترافیک اصلی را مدیریت کرده و به عنوان واسطه، درخواستهای پیشنمایش را به سرور مجزا هدایت میکند.
متغیرهای الزامی:
- CONTAINER_CONFIG: رشته پیکربندی کانتینر.
- PREVIEW_SERVER_URL: آدرس HTTPS سرور پیشنمایش که در مرحله قبل تنظیم کردید.
دستور استقرار محلی:
docker run -p 8080:8080 -e CONTAINER_CONFIG='' -e PREVIEW_SERVER_URL='' gcr.io/cloud-tagging-10302018/gtm-cloud-image:stable
تست سلامت: مشابه سرور پیشنمایش، درخواست به مسیر /healthy روی پورت تعیینشده باید پاسخ 200 برگرداند.
محدودیتهای سختافزاری و عملیاتی در روش استقرار دستی (داکر)
- الزام به پیادهسازی کلاستر: راهاندازی یک سرور واحد، ریسک از دست رفتن دادهها را به شدت بالا میبرد. شما مجبورید سرورها را به صورت کلاستر دیپلوی کنید، که این یعنی تمام نمونهها باید به صورت دستی با پیکربندیهای کاملا یکسان (CONTAINER_CONFIG و PREVIEW_SERVER_URL) همگامسازی شوند.
- همدامنهبودن اجباری (Same Origin): برای جلوگیری از مسدود شدن تگها توسط مرورگرها، سرور GTM حتما باید روی همان دامنه سایت اصلی یا یک سابدامین اختصاصی (مانند example.com/analytics) میزبانی شود.
- پیچیدگی در جداسازی مسیرها: اگر سرور پیشنمایش و کلاستر اصلی را روی یک دامنه بالا میآورید، مجبورید مسیرهای (Path) کاملا متفاوتی برای آنها تعریف و مدیریت کنید تا ترافیک دیباگ و ترافیک واقعی با هم تداخل پیدا نکنند.
- محدودیت در تخصیص منابع پردازشی: برخلاف منطق رایج در سرورها، هر سرور در این کلاستر حداکثر مجاز به استفاده از ۱ هسته پردازشی (vCPU) است. تخصیص هسته اضافی نهتنها کاملا بیاستفاده میماند، بلکه عملکرد مقیاسپذیری خودکار (Autoscaling) را به طور کامل مختل میکند.
- نیاز به مانیتورینگ و ریاستارتهای دورهای: کانتینر داکر به صورت خودکار آپدیت نمیشود. تیم فنی شما موظف است با استفاده از دستور داخلی HEALTHCHECK یک فرایند مانیتورینگ بسازد و سرورها را به صورت دورهای ریاستارت کند تا کدهای منبع دچار ناسازگاری نشوند.
۳. اعتبارسنجی تنظیمات
- اتصال آدرس: در پنل تگ منیجر به مسیر Admin > Container Settings بروید، آدرس سرور GTM را در فیلد Server container URL وارد کرده و ذخیره کنید.
- تست عملکرد: دکمه Preview را در تگ منیجر بزنید. سپس در یک تب جدید مرورگر، یکی از مسیرهای آدرس کانتینر سرور را باز کنید. اگر صفحه پیشنمایش ریکوئست شما را لاگ کرد، فرایند استقرار به درستی انجام شده است.
- پیکربندی چند دامنهای: اگر سرور را به چندین سابدامین متصل کردهاید، آدرسهای اضافی را در Container Settings وارد کنید. دقت کنید که ساختار مسیر (رشته بعد از دامنه) باید در تمام آنها کاملا یکسان باشد. در این حالت هنگام زدن دکمه Preview، منویی برای انتخاب دامنه هدف جهت دیباگ نمایش داده میشود.
۴. بهروزرسانی نسخه سرور GTM
ایمیج داکر برای رفع باگهای امنیتی و افزودن ویژگیهای جدید، به صورت دورهای آپدیت میشود. اکیدا پیشنهاد میشود حداقل برای انتشار نسخههای اصلی (مثلا ارتقا از 1.x به 2.x) فرایند آپدیت را انجام دهید:
۱. ایمیج بهروز را از gcr.io/cloud-tagging-10302018/gtm-cloud-image:stable دریافت کنید.
۲. سرورها را با تنظیمات استقرار قبلی مجددا دیپلوی کنید.
۳. سرور پیشنمایش و سپس تمامی سرورهای داخل کلاستر را آپدیت کنید.
۴. سرورهای قدیمی را کاملا خاموش (Shut down) کنید.
تایید موفقیت آپدیت: در کانتینر سرور روی دکمه Preview کلیک کنید و در یک تب مجزا درخواستی بفرستید. در بخش Summary به تب Console بروید؛ نباید هیچ پیامی مبنی بر درخواست آپدیت سرور وجود داشته باشد.
روش سوم: راهاندازی سریع سرور GTM در PaaS پارسپک
در سه روش بررسیشده، با محدودیتهای عملیاتی و مالی زیرساختهای خارجی آشنا شدیم: از هزینههای پایه ۹۰ و ۱۲۰ دلاری و قفل شدن موقعیت مکانی (Region Lock) در محیطهای گوگل، تا سربار سنگین وظایف دواپس، محدودیت تخصیص منابع و همگامسازی دستی کلاسترها در معماری داکر.
استقرار کانتینر روی PaaS پارسپک، یک راهکار مدیریتشده برای عبور از این موانع است. در این ساختار، پیچیدگیهای استقرار دستی (مانند اجرای کدهای ترمینال و مانیتورینگ سلامت) و چالشهای زیرساختی پرداخت ارزی به طور کامل حذف میشوند. پلتفرم ابری پارسپک فرایندهای کلاسترینگ، مقیاسپذیری و دریافت آپدیتهای امنیتی را به صورت خودکار مدیریت میکند تا تیم شما بتواند به جای نگهداری از زیرساخت، مستقیما روی پردازش دادهها متمرکز شود.
برای آشنایی با مراحل استقرار Google Tag Manager در مستندات پارسپک روی لینک زیر کلیک کنید:
مرحله ۱: ساخت کانتینر و استقرار اولیه در پارسپک
برای راهاندازی این سرور، ابتدا باید هسته کانتینر را در گوگل تگ منیجر تعریف کرده و سپس آن را PaaS پارسپک مستقر کنید:
۱. در پنل وب Google Tag Manager، یک کانتینر جدید ایجاد کرده و پلتفرم هدف (Target platform) را روی Server تنظیم کنید.

۲. در پنجره نصب، گزینه Manually provision tagging server را انتخاب کرده و رشته متنی تولید شده (Container Config) را کپی کنید.

۳. وارد داشبورد پارسپک شوید و در فرایند ساخت اپلیکیشن Google Tag Manager، رشته کپیشده را دقیقا در فیلد sst_container_config قرار دهید و بعد از تنظیمات منابع، روی دکمه «ایجاد اپلیکیشن» کلیک کرده و سرویس خود را مستقر کنید.

مرحله ۲: ثبت دامنه پردازشی (sst) در کانتینر سرور
پلتفرم ابری پارسپک به محض استقرار اپلیکیشن، دو سابدامین اختصاصی در اختیار شما میگذارد. دامنهای که با پیشوند sst آغاز میشود، آدرس اصلی دریافتکننده ترافیک است.
دقیقا اینجاست که ارزش زیرساخت مدیریتشده نمایان میشود؛ برخلاف روش کلود ران که شما را مجبور میکرد برای دور زدن ادبلاکرها وارد یک چرخه فرسایشی از تایید مالکیت دامنه، تنظیمات پیچیده DNS در پنلهای خارجی و کانفیگ دستی لود بالانسر شوید، پارسپک این دامنه ایزوله و آماده را به صورت خودکار تنظیم کرده و در اختیار شما میگذارد.
۱. در داشبورد پارسپک، از بخش دامنههای اپلیکیشن، آدرس شروعشونده با sst را کپی کنید.

۲. به پنل GTM برگردید و کانتینر Server را باز کنید. از منوی بالا روی Admin کلیک کرده و وارد Container Settings شوید.

۳. روی دکمه Add URL کلیک کنید و آدرس sst را با پیشوند https:// (بدون اسلش در انتها) وارد کرده و تنظیمات را ذخیره کنید.

پیکربندی نهایی در پنل GTM (مشترک برای تمامی روشها)
اکنون که سرور شما در یکی از زیرساختهای بالا (کلود ران، اپ انجین، داکر یا پارسپک) مستقر شده و آدرس آن تایید شده است، باید جریان دادهها را در پنل تگ منیجر تنظیم کنید.
گام اول: پیکربندی کلاینت Web Container در سرور (جلوگیری از مسدود شدن تگها)
برای اینکه فایلهای اصلی GTM مستقیما از روی سرور اختصاصی خودتان بارگذاری شوند و از سد مسدودکنندههای تبلیغاتی (Ad-Blockers) عبور کنند، باید کلاینت وب کانتینر را تنظیم کنید.
۱. در کانتینر Server، از منوی سمت چپ روی Clients کلیک کنید.
۲. کلاینت Web Container را در Google Tag Manager باز کنید.

۳. در بخش Allowed Container IDs روی دکمه Add Container ID کلیک کنید و شناسه کانتینر کلاینتساید خود (آیدی شروعشونده با GTM- که روی سایت نصب است) را وارد کنید.
۴. در پایین صفحه، حتما تیک گزینه Enable region-specific settings را بردارید و تغییرات را ذخیره کنید.

گام دوم: هدایت ترافیک کانتینر Web به سرور ابری
اکنون باید به مرورگر کاربران دستور دهیم که دادههای رهگیری را به جای سرورهای گوگل، به سرور اختصاصی شما (مانند کلاستر ابری پارسپک یا زیرساخت انتخابی دیگر) ارسال کنند. این کار از طریق کانتینر کلاینتساید انجام میشود.
حالت A: اگر از قبل تگ پایه دارید
اگر روی وبسایت خود کانتینر Web فعال دارید، نیازی به ساخت تگ جدید نیست. تگ پایه (Google Tag) سایت خود را باز کرده و مستقیما به مرحله ۴ بروید.
حالت B: ایجاد تگ پایه جدید
۱. وارد فضای کاری کانتینر Web شوید. از منوی سمت چپ به بخش Tags رفته و روی New کلیک کنید.

۲. روی کادر Tag Configuration کلیک کرده و از منوی بازشده ابزار Google Tag را انتخاب کنید.

۳. در فیلد Tag ID، شناسه Measurement ID اکانت گوگل آنالیتیکس خود را وارد کنید.
تنظیم پارامتر هدایت ترافیک (مشترک برای هر دو حالت)
۴. بخش Configuration settings را باز کرده و روی دکمه Add parameter کلیک کنید.
۵. در ستون سمت چپ، پارامتر server_container_url را از لیست انتخاب کنید.
۶. در ستون Value، دقیقا آدرس سرور اختصاصی خود را وارد کنید (برای مثال، همان دامنه sst پارسپک که در مراحل قبل متصل کردید، یا آدرس خروجی سرور گوگل کلود).

۷. روی کادر Triggering کلیک کنید و تریگر Initialization – All Pages را برای این تگ انتخاب کرده و تگ را ذخیره کنید.

با این تنظیمات ساده، تمام دادههای جمعآوریشده توسط این کانتینر مستقیما به سرور ابری شما سرازیر میشود.
گام سوم: پیکربندی تگ و تریگر GA4 در کانتینر سرور
اکنون دادهها به سرور میرسند. برای پردازش نهایی و ارسال دیتا به گوگل آنالیتیکس، به یک تگ و یک تریگر شرطی نیاز است.
حالت A: دارای تگ سمت سرور از پیشساخته شده
اگر پیشتر تگ GA4 را در کانتینر سرور خود ساختهاید، آن را باز کنید و برای تنظیم شرایط اجرا مستقیما به مرحله ۳ بروید.
حالت B: ایجاد تگ جدید
۱. وارد کانتینر Server شوید و از منوی Tags روی New کلیک کنید. روی کادر Tag Configuration کلیک کرده و Google Analytics: GA4 را انتخاب کنید.

۲. در فیلد Measurement ID، شناسه آنالیتیکس خود را وارد کنید.

تعریف تریگر پردازشی (مشترک در هر دو حالت)
۳. برای تعیین شرط اجرا، روی کادر Triggering کلیک کنید.

۴. با کلیک روی آیکون + در بالا سمت راست، یک تریگر جدید ایجاد کنید.

۵. روی Trigger Configuration کلیک کرده و نوع تریگر را Custom انتخاب کنید.

۶. در بخش شرایط اجرا، تیک گزینه Some Events را بزنید.
۷. روی لیست کشویی متغیرها کلیک کرده و گزینه Choose Built-In Variable را انتخاب کنید. از پنل بازشده، متغیر Client Name را به فضای کاری اضافه کنید.

۸. شرط را به این شکل کامل کنید: متغیر را روی Client Name قرار دهید، عملگر را equals انتخاب کنید و در کادر مقدار، دقیقا عبارت GA4 را تایپ کنید.

۹. تریگر و سپس تگ سرورساید خود را ذخیره کنید.
فرایند استقرار و اتصال به پایان رسید. با استفاده از گزینه Preview در هر دو کانتینر، میتوانید جریان ورود ترافیک به سرور ابری را دیباگ و بررسی کنید.
جمعبندی
پیادهسازی Server-Side Tagging تنها راهکار قطعی برای عبور از سد مسدودکنندههای تبلیغاتی و حفظ دقیق دادههای مارکتینگ است. در این مقاله پس از بررسی چالشهای فنی و هزینههای سنگین دلاری در استقرار روی گوگل کلود و داکر، مسیر جایگزین و بدون دردسر آن را یاد گرفتیم. برای رهایی از دغدغههای زیرساختی و تمرکز کامل روی تحلیل دادهها، میتوانید سرور GTM خود را روی پلتفرم ابری (PaaS) پارسپک راهاندازی کنید تا تمام فرایندهای مدیریت سرور به صورت خودکار انجام شود.