В современном мире онлайн-бизнеса отслеживание и анализ поведения пользователей на веб-сайтах имеет решающее значение для принятия решений в области маркетинга и управления веб-проектами. В этой статье мы рассмотрим процесс установки и настройки серверного Google Tag Manager (GTM) на VPS, позволяющего эффективно управлять тегами, используемыми для отслеживания активности на веб-сайте.
Создание поддомена
Для работы серверного Google Tag Manager необходимо два поддомена на домене основного сайта. Один – для самого серверного GTM, второй – для превью-сервера. Вы можете их добавить в панели управления, в разделе “Домены и поддомены”. Поддомены могут иметь любое название, например, sgtm.example.com
и preview-sgtm.example.com
.
Для обоих доменов необходимо указать в А-записи IP-адрес VPS, на которой будет развернут серверный GTM. Сделать это можно в панели управления, в разделе “DNS”.
Создание контейнера серверного GTM
Перед тем, как приступить к установке серверного GTM непосредственно на VPS, необходимо создать для него контейнер в Менеджере тегов Google и получить его ключ.
Для этого перейдите в Менеджер тегов Google, нажмите на 3 точки напротив вашего аккаунта и выберите пункт “Создать контейнер”.

В открывшемся окне введите название контейнера, выберите целевую платформу “Server” и нажмите кнопку “Создать”.

После создания контейнера у вас откроется окно “Установка Google Менеджера тегов”. В нем выберите пункт “Добавить сервер тегов вручную” и скопируйте ключ из поля “Настройки контейнера”, он понадобится во время установки серверного GTM на VPS. Теперь можно переходить к установке Google Tag Manager на сервер.
Установка серверного GTM на VPS
Для установки Google Tag Manager на сервере мы подготовили готовые конфиги для сборки из четырех докер-контейнеров сервера тегов, одного докер-контейнера превью-сервера, одного контейнера nginx, который выступает в качестве прокси-сервера и распределяет поступающие запросы между контейнерами серверного GTM. В сборку также входит контейнер certbot, который отвечает за выпуск SSL-сертификатов на домены.
Также нами было замечено, что периодически контейнеры сервера тегов перезагружаются. Запуск нескольких контейнеров позволяет не терять данные в момент перезагрузки одного из контейнеров.
Ниже будет описано, как уменьшить или увеличить количество контейнеров под свои нужды.
Также учитывайте, что каждый контейнер сервера тегов требует для стабильной работы около 1 ядра CPU и 0.25 гигабайт RAM, поэтому следует подбирать конфигурацию VPS, исходя из количества контейнеров сервера тегов + 0.5 гигабайт RAM на работу ОС и другого ПО. Например, для работы предложенной сборки из 4 контейнеров тегов оптимальной будет конфигурация 4 ядра CPU, 3 гигабайта RAM и от 20 гигабайт дискового пространства.
Итак, перейдем к установке и настройке серверного GTM.
- Создайте папку, где будут располагаться конфигурационные файлы серверного Google Tag Manager. Сделать это можно с помощью команды:
mkdir -p ~/sgtm && cd ~/sgtm
- Скачайте и распакуйте файлы сборки. Сделать это можно следующей командой:
wget https://cp.beget.com/shared/trTNysWy-DGrbOzZT25WFU-wnaiPK83n/gtm.tar && tar -xvf gtm.tar
В результате в директории должно появиться 4 файла: docker-compose.yml
, gtm.env
, gtm-preview.env
и nginx.conf
.
- Откройте файл
gtm.env
любым удобным текстовым редактором, например, vim:
vim gtm.env
В первой строке после CONTAINER_CONFIG=
необходимо вписать ключ, который мы получили в Менеджере тегов Google на предыдущем шаге.
Во второй строке после PREVIEW_SERVER_URL=
необходимо указать домен превью-сервера, который вы создали на этапе создания поддоменов.
Пример итогового конфига:
CONTAINER_CONFIG=mF1dGg9MkZHZmNlTjg1NlZES3FHM09KODlMdwaWQ9R1RNLU4yRFAzVk5GJmVudj0xJ==
PREVIEW_SERVER_URL=https://sgtm-preview.example.com
Сохраните изменения и закройте файл.
- Теперь откройте файл
gtm-preview.env
любым удобным текстовым редактором, например, vim:
vim gtm-preview.env
В первой строке после CONTAINER_CONFIG=
необходимо вписать ключ, который мы получили в Менеджере тегов Google на предыдущем шаге.
Пример итогового конфига:
CONTAINER_CONFIG=mF1dGg9MkZHZmNlTjg1NlZES3FHM09KODlMdwaWQ9R1RNLU4yRFAzVk5GJmVudj0xJ==
RUN_AS_PREVIEW_SERVER=true
- Теперь откройте файл
nginx.conf
любым удобным текстовым редактором, например, vim:
vim nginx.conf
В строках 60, 68, 76, 79 и 80
замените домен sgtm.example.com
на домен, который вы создали для Менеджера тегов на первом шаге.
В стоках 101, 109, 117, 120 и 121
замените домен sgtm-preview.example.com
на домен, который вы создали для превью-сервера на первом шаге.
- Запустите контейнеры серверного Google Tag Manager командой:
docker-compose up -d
- Для работы Google Tag Manager по HTTPS нам потребуется выпустить SSL-сертификаты как для домена Менеджера тегов, так и для домена превью-сервера. Для этого выполните следующие команды по очереди.
docker exec -it sgtm-certbot-1 certbot certonly --webroot --webroot-path /var/www/certbot/ -d sgtm.example.com
docker exec -it sgtm-certbot-1 certbot certonly --webroot --webroot-path /var/www/certbot/ -d sgtm-preview.example.com
В командах замените домены на выбранные вами ранее.
- После успешного выпуска сертификатов необходимо включить работу серверного Google Tag Manager по HTTPS, раскомментировав строки 72-95 и 113-134 в файле
nginx.conf
. Для этого удалите символ#
в начале каждой строки.
- После чего перезапустите контейнер nginx.
docker restart sgtm-nginx-1
- Также нам потребуется добавить крон-задачу для автоматического перевыпуска SSL-сертификата. Добавить задачу можно командой
crontab -e
и выбрав удобный вам текстовый редактор.
crontab -e
no crontab for root - using an empty one
Select an editor. To change later, run 'select-editor'.
1. /bin/nano <---- easiest
2. /usr/bin/vim.basic
3. /usr/bin/vim.tiny
4. /bin/ed
Choose 1-4 [1]: 2
crontab: installing new crontab
В список задач добавим 2 - одну для перевыпуска сертификата SSL, одну для перезагрузки конфигурации nginx.
# RENEW CERTIFICATES
20 1 15 */1 * docker exec sgtm-certbot-1 certbot renew
# RELOAD NGINX TO APPLY CERTIFICATES
20 4 15 */1 * docker exec sgtm-nginx-1 nginx -s reload
После запуска контейнеров на VPS необходимо вернуться в Менеджер тегов Google и указать адрес, по которому доступен серверный GTM.
Выберите контейнер, который мы создали на втором этапе в Менеджере тегов Google, и перейдите на вкладку “Администрирование” в верхней части сайта.

На открывшейся странице перейдите в раздел “Настройки контейнера” в правом столбце.

В открывшемся окне нажмите кнопку “Добавить URL” и введите домен сервера тегов, который мы создали на первом этапе, например, https://sgtm.example.com
.

Нажмите кнопку “Сохранить”.
Настройка тегов и подключение клиентов аналитики
Дальнейшая работа с тегами и аналитикой производится на стороне Менеджера тегов Google.
Перейдите в контейнер, который мы создали на 2 этапе. На открывшейся странице в левом меню доступны разделы “Теги”, “Триггеры”, “Преобразования” и “Папки”. В них вы можете создавать и настраивать теги, добавлять фильтрацию и триггеры, а также систематизировать теги с помощью папок.
В разделе “Клиенты” вы можете добавить различные системы аналитики, такие как Google Аналитика, Яндекс Метрика и другие, они будут получать данные по вашему сайту из серверного GTM.
Подключение серверного GTM к сайту
Отслеживание действий на сайте посредством GTM на стороне сервера производится с помощью скрипта, который передает данные в серверный Google Tag Manager.
Вам необходимо добавить скрипт Google Tag (gtag.js) на страницы вашего сайта.
Код скрипта:
<!-- Google tag (gtag.js) -->
<script async src="https://tagging.example.com/gtag/js?id=TAG_ID"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'TAG_ID', {
server_container_url: 'https://tagging.example.com',
});
</script>
В третьей строке вам необходимо заменить TAG_ID
на идентификатор потока данных вашего сайта в Google Аналитике.
В девятой строке вам необходимо заменить https://tagging.example.com
на ваш домен сервера тегов, например, https://sgtm.example.com
.
Так как для разных CMS добавление скрипта на сайт будет выполняться по-разному, нет универсальной инструкции, как это сделать. Добавление скрипта может выполняться как напрямую в коде сайта, так и с помощью плагинов к вашей CMS.
После добавления скрипта на сайт данные о посещениях будут передаваться в серверный GTM, из которого информация будет передаваться в Google Аналитику или другие настроенные клиенты, в которых вы сможете увидеть отчеты.
Изменение количества контейнеров сервера тегов
Чтобы изменить количество контейнеров сервера тегов, необходимо внести изменения в два файла: docker-compose.yml
и nginx.conf
.
Откройте файл docker-compose.yml
с помощью любого удобного текстового редактора, например vim:
vim docker-compose.yml
За количество контейнеров отвечает параметр replicas
на 39 строке. Измените его значение в большую или меньшую сторону, сохраните изменения и закройте текстовый редактор.
Теперь откройте файл nginx.conf
с помощью любого удобного текстового редактора, например vim:
vim nginx.conf
За список контейнеров, в которые проксируются запросы, отвечают строки 29–36:
upstream gtm-default {
zone gtm-default 64k;
server sgtm-gtm-1:8080;
server sgtm-gtm-2:8080;
server sgtm-gtm-3:8080;
server sgtm-gtm-4:8080;
keepalive 8;
}
В них перечислен список контейнеров, которые именуются gtm-gtm-номер
.
Если вы увеличили количество контейнеров, то добавьте в конец списка перед строкой keepalive 8;
новые контейнеры. Например, мы увеличили количество контейнеров до 6, тогда конфиг будет следующим:
upstream gtm-default {
zone gtm-default 64k;
server sgtm-gtm-1:8080;
server sgtm-gtm-2:8080;
server sgtm-gtm-3:8080;
server sgtm-gtm-4:8080;
server sgtm-gtm-5:8080;
server sgtm-gtm-6:8080;
keepalive 8;
}
Если вы уменьшили количество контейнеров, то удалите лишние контейнеры из списка перед строкой keepalve 8;
. Например, мы уменьшили количество контейнеров до 2, тогда конфиг будет следующим:
upstream gtm-default {
zone gtm-default 64k;
server sgtm-gtm-1:8080;
server sgtm-gtm-2:8080;
keepalive 8;
}
После внесения изменений сохраните их и закройте текстовый редактор.
Для применения внесенных изменений в конфигурационные файлы необходимо перезапустить все контейнеры, это можно сделать с помощью следующей команды:
docker-compose down && docker-compose up -d
Заключение
В этой статье мы рассмотрели настройку Google Tag Manager на VPS, разобрали, как использовать серверный GTM для управления тегами. Теперь данные для аналитики вашего сайта будут храниться на вашем собственном сервере, а их сбор не будет блокироваться браузерами и большинством блокировщиков рекламы. При этом отчеты доступны в привычных интерфейсах Google Аналитики или Яндекс Метрики.
Заказать сервер для развертывания GTM на VPS, а также выбрать подходящую вам конфигурацию можно у нас – по этой ссылке.
Если возникнут вопросы, напишите нам, пожалуйста, тикет из панели управления аккаунта (раздел “Помощь и поддержка”), а если вы захотите обсудить возможности GTM или наши продукты с коллегами по цеху и сотрудниками Бегета – ждем вас в нашем сообществе в Telegram.