добавлен goatcounter для веб-аналитики
- один инстанс на два сайта, gc-main и gc-photo: нужный выбирается по Host - домены ведутся в goatcounter_sites (group_vars), оттуда же рендерятся имена в Caddyfile - сайты и первый пользователь заводятся идемпотентно, креды из vault
This commit is contained in:
@@ -242,6 +242,23 @@ dozzle.vakhrushev.me {
|
||||
}
|
||||
|
||||
# GoatCounter — веб-аналитика посещений. Один инстанс обслуживает несколько
|
||||
# сайтов и выбирает нужный сам, по заголовку Host, поэтому здесь один блок на
|
||||
# все имена, а не блок на сайт. Имена рендерятся из goatcounter_sites
|
||||
# (group_vars/all/main.yml) — того же списка, по которому плейбук goatcounter
|
||||
# заводит сами сайты, чтобы конфиг прокси и база не разъезжались.
|
||||
#
|
||||
# Без forward_auth: эндпоинты /count и /count.js обязаны быть публичными, их
|
||||
# дёргает трекер с сайта. Дашборд закрыт собственным логином goatcounter.
|
||||
{{ goatcounter_sites | join(', ') }} {
|
||||
tls anwinged@ya.ru
|
||||
import access_log
|
||||
|
||||
reverse_proxy {
|
||||
to goatcounter_app:8080
|
||||
}
|
||||
}
|
||||
|
||||
goaccess.vakhrushev.me {
|
||||
tls anwinged@ya.ru
|
||||
import access_log
|
||||
|
||||
|
||||
@@ -85,6 +85,11 @@
|
||||
description: Веб-аналитика логов Caddy
|
||||
icon: goaccess.png
|
||||
siteMonitor: http://goaccess_app:8080
|
||||
- GoatCounter:
|
||||
href: https://gc-main.vakhrushev.me
|
||||
description: Аналитика посещений сайтов
|
||||
icon: mdi-chart-line
|
||||
siteMonitor: http://goatcounter_app:8080
|
||||
- Bifrost:
|
||||
href: https://bifrost.vakhrushev.me
|
||||
description: LLM-шлюз (DeepSeek)
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
# GoatCounter — веб-аналитика (github.com/arp242/goatcounter).
|
||||
# See versions: https://hub.docker.com/r/arp242/goatcounter/tags
|
||||
#
|
||||
# Образ ходит от собственного пользователя goatcounter (uid 1000 из alpine),
|
||||
# поэтому подменяем его на системного владельца смонтированного каталога.
|
||||
# Бинарник собран с osusergo/netgo и записи в /etc/passwd не требует.
|
||||
#
|
||||
# CMD образа — `serve -automigrate`, его не переопределяем: миграции должны
|
||||
# накатываться сами при обновлении версии. Остальные флаги идут через
|
||||
# GOATCOUNTER_<FLAG> (дефис в имени флага -> подчёркивание). Неизвестная
|
||||
# переменная с этим префиксом валит старт, так что новые добавлять только
|
||||
# сверяясь с `goatcounter help serve`.
|
||||
#
|
||||
# Рабочая директория в образе — /home/goatcounter, БД по умолчанию лежит в
|
||||
# ./goatcounter-data/db.sqlite3, то есть внутри смонтированного data.
|
||||
|
||||
services:
|
||||
|
||||
goatcounter_app:
|
||||
image: arp242/goatcounter:2.7.0
|
||||
container_name: goatcounter_app
|
||||
restart: unless-stopped
|
||||
user: "{{ app_owner_uid }}:{{ app_owner_gid }}"
|
||||
networks:
|
||||
- "web_proxy_network"
|
||||
volumes:
|
||||
- "{{ data_dir }}:/home/goatcounter/goatcounter-data"
|
||||
environment:
|
||||
# TLS терминирует Caddy. `http` — не поднимать собственный TLS и не
|
||||
# ходить за ACME-сертификатом; https goatcounter определяет по
|
||||
# X-Forwarded-Proto, IP клиента — по X-Forwarded-For (их шлёт Caddy).
|
||||
- GOATCOUNTER_TLS=http
|
||||
- GOATCOUNTER_LISTEN=:8080
|
||||
|
||||
# Почта (Yandex Cloud Postbox, те же секреты, что у outline/wakapi):
|
||||
# сброс пароля и еженедельные отчёты. STARTTLS — схема smtp://, а не
|
||||
# smtps://. Экранированные логин/пароль приходят из плейбука.
|
||||
- GOATCOUNTER_SMTP=smtp://{{ postbox_user_enc }}:{{ postbox_pass_enc }}@{{ postbox_host }}:{{ postbox_port }}
|
||||
# Без явного -email-from goatcounter зовёт user.Current() и падает,
|
||||
# потому что подменённого uid нет в /etc/passwd образа.
|
||||
- GOATCOUNTER_EMAIL_FROM=goatcounter@vakhrushev.me
|
||||
|
||||
networks:
|
||||
web_proxy_network:
|
||||
external: true
|
||||
Reference in New Issue
Block a user