Oyulmuş bir Nordic taş kürsünün başında duran NordBastion kutup ayısı maskotu, üzerinde çubuk grafikler, yükselen bir çizgi grafiği ve bir kehribar vurgulu halka grafik gösteren büyük, havada duran camgöbeği holografik bir gösterge paneli, ve aurora ışıklı kemerli bir pencereden gösterge panelinin içinden geçip rünik bir kasa kapısına giden, parlayan camgöbeği noktalardan oluşan kesintisiz tek bir akış, arkasında bir sunucu kabini ile
Nasıl yapılır · Analitik·18 dk okuma · 40 dk uygulamalı

Okuyucularınızı izlemek için bir script kurdunuz.
Sizi geri izler ve başka bir yere rapor verir.

Analitik, çoğu insanın elinde tuttuğu son üçüncü taraf etikettir ve her şeyi gören tek etikettir: sahibi olmadığınız ve denetleyemediğiniz bir sistemde her sayfa, her okuyucu, her saat. Onu kendinize ait bir sayaçla değiştirmenin altı adımı — Umami, Plausible Community Edition, Matomo veya sunucu günlüğünden başka hiçbir şey — kimlik belgesi olmadan kiralanan bir Nordic sunucuda çalışır. Varsayılan olarak çerezsiz, tartışılacak bir banner yok, okuyucu kitlenizin üçüncü bir ülkeye devri yok. Aylık $3.90'dan itibaren. Debian 12 üzerinde test edildi.

Altı adım
  1. 01

    Seçim

    Dört araç, tek dürüst tablo

  2. 02

    Sağla

    Bir alt alan adı, üç port

  3. 03

    Devreye al

    Compose, Caddy, ilk oturum açma

  4. 04

    Ölçümleme

    Bir etiket, ve birinci taraf yol

  5. 05

    Uyum

    İki yasa, bir değil

  6. 06

    Koru

    Saklama süresi, yedeklemeler, unutulan günlük

Başlamadan önce · Etiket nedir

Bu bir sayaç değil. Bu bir raporlama hattı.

Ziyaretçileri saymak gerçekten yararlıdır ve bunu istemekte uğursuz hiçbir şey yoktur. Yeniden yazımın işe yarayıp yaramadığını, insanların gerçekte hangi makaleyi bitirdiğini, hangi yönlendirenin sadece hemen çıkma yerine okuyucu gönderdiğini ve dün geceki dağıtımın bir tarayıcıda ödeme sayfasını sessizce bozup bozmadığını bilmeniz gerekir. Bu soruların her biri bir sayfa görüntülemeleri tablosuyla yanıtlanır ve her biri ölçüm yapmak için haklı bir nedendir.

Doğrudan bakmaya değer olan şey, bu yanıtları almak için neredeyse herkesin kabul ettiği düzenlemedir. Standart analitik etiketi, bir reklam şirketi tarafından yazılmış, sitenizin her sayfasına yerleştirdiğiniz ve okuyucunuzun tarayıcısında çalışmasını istediğiniz bir kod parçasıdır. Sayfa adresini, yönlendireni, ekranı, dili, cihazı okur; cihaz üzerinde bir tanımlayıcı ayarlar veya okur; bunların tümünü, denetleyemediğiniz bir sisteme, kurallarını siz seçmediğiniz bir ülkede, gönderir; ve ortaya çıkan dosyayı, geliri insanların ne yaptığını bilmekten gelen bir şirkete teslim eder. Site sahibi bir gösterge paneli alır. Gösterge paneli, bu işlemin daha küçük yarısıdır.

Fatura dört taksitte gelir ve bunlardan yalnızca biri açıktır. Onay banner'ı vardır — neredeyse tamamen bu tek etiket yüzünden var olan, kapıda ölçülebilir bir ziyaretçi payına mal olan ve sonra yönetmesi için ikinci bir tedarikçiye ödeme yaptığınız. Aktarım sorusu vardır, çünkü okuyucularınızın verisi üçüncü bir ülkeye gider ve er ya da geç birinin bunun neden hukuki olduğunu yazması gerekir. Verinin kendisi vardır, ki bu sizin okur kitlenizdir, size sunulan raporlar dışında sorgulayamayacağınız bir veritabanında. Ve bağımlılık vardır: ürün, başka birinin takvimine göre kullanımdan kaldırılır, yeniden adlandırılır veya yeniden yapılandırılır, ve bu son gerçekleştiğinde eski ölçümler de onunla birlikte gitti.

Kendi kendine barındırma, dördünü de aynı anda ortadan kaldırır ve bu büyük bir iş değildir. Yazılım olgun, ücretsiz ve sıradandır; sunucu ayda birkaç dolardır; iş bir akşamlıktır. Karşılığında elde ettiğiniz şey, sahip olduğunuz bir tablodur; seçtiğiniz bir yargı bölgesindeki donanımda, açıklanacak hiçbir üçüncü taraf olmadan ve — çoğu yapılandırma için — tartışılacak bir banner olmadan. Sitenizi kaç kişinin okuduğunu bilmenin dört yolu ve her birinin maliyeti:

Özellik Büyük ücretsiz analitik etiketi Gizlilik öncelikli bir analitik SaaS Aynı yazılım, sizin VPS'iniz
Okur kitlesi tablosunu kim elinde tutuyorBir reklam şirketiBir tedarikçi, sözleşme kapsamındaSiz, disk üzerinde
Onay banner'ı gerekliEvet, pratikte her zamanGenellikle hayırGenellikle hayır — bkz. adım 05
Veri EEA'dan çıkarEvet, tasarım olarakTedarikçiye bağlıYalnızca dışında bir sunucu seçerseniz
Açıklanacak üçüncü taraflarEn az bir, artı onun alt işleyenleriBir işleyenHiçbiri
Filtre listeleri tarafından engellenirBüyük ölçüdeGenellikle, hostname üzerindenNadiren, birinci taraf olduğunda
Ham veri size açıkHayır — yalnızca raporlarBir API üzerinden, ödeme yaptığınız süreceBu sizin veritabanınız
100k görüntülemede aylık maliyetParasal açıdan hiçbir şeyOnlarca dolar, trafikle birlikte yükselen$3.90–$7.90, sabit
Ne zaman seçilirReklam platformu entegrasyonuna ihtiyacınız var ve gerisini kabul ediyorsunuzHiçbir şey çalıştırmadan etiği istiyorsunuzOkur kitlesi sizindir, tablo da öyle

Üçüncü sütun gerçek bir yanıttır, bir saman adam değil: barındırılan, gizlilik öncelikli bir tedarikçi, sunucu çalıştırmaması gereken insanlar için aynı sorunların çoğunu ortadan kaldırır ve birine ödeme yapmak, reklam etiketini tutmaktan daha iyi bir sonuçtur. Bu kılavuz, zaten bir sunucu kiraladığınız veya kiralamayı düşündüğünüz durum içindir.

Adım 01 · Seçim

Dört araç. Faturayı veritabanı belirler.

Bu dördü, aynı şeyin dört çeşidi değildir. Verilerini nerede sakladıkları konusunda farklılık gösterirler ve bu tek seçim, bellek ayak izini, disk büyümesini, yükseltme riskini ve raporların derinliğini belirler. Önce depolama sütununu, sonra özellik sütununu okuyun; kararın gerçekte verildiği sıra budur.

Araç Yığın ve depolama Makul katman Ne için seçilir
UmamiNode uygulaması + PostgreSQL veya MySQL. İki container.Sentinel · $3.90Varsayılan yanıt. Hafif, okunaklı, çerezsiz, çoklu site, MIT lisanslı.
Plausible Community EditionElixir uygulaması + PostgreSQL + ClickHouse. Dört container.Garrison · $7.90Hedefler, huniler ve herkese açık gösterge panelleri; yüksek hacimde hızlı sorgular.
MatomoPHP uygulaması + MariaDB, ayrıca zamanlanmış bir arşivleme işi.Garrison · $7.90Mevcut araçla özellik eşitliği — segmentler, kohortlar, e-ticaret, günlük içe aktarma.
GoAccessWeb sunucusu erişim günlüğünü okuyan tek bir binary. Veritabanı yok.Zaten çalıştırdığınız her neyseHiç JavaScript yok — statik siteler, dokümantasyon, API'ler.

Umami, aksi için bir nedeniniz olmadıkça başvurulacak seçenektir. Tek bir ilişkisel veritabanı üzerinde çalışan bir Node uygulamasıdır, bir gigabaytlık bellekle yetinir, şeması kendinizin sorgulayabileceği bir avuç tablodan oluşur ve raporları çoğu insanın bir gösterge panelini açtığında görmek istediği şeyleri kapsar: sayfalar, yönlendirenler, ülkeler, cihazlar, istediğinizde de özel olaylar. Varsayılan olarak çerezsizdir ve bunu yapılandırmanızı istemez.

Plausible Community Edition, barındırılan ürünün kendi kendine barındırılabilir sürümüdür ve buradaki ek parça ClickHouse'dur — on milyonlarca satır üzerindeki toplu sorguları anında hissettiren ve izin verdiğiniz kadar bellek kullanacak bir sütun deposu. Bu, aylık birkaç milyon görüntülemenin üzerinde makul, altında ise tuhaf bir takastır. Dağıtmadan önce projenin lisans koşullarını okuyun: Community Edition, kendi analitiğinizi çalıştırmak içindir, bir hizmet olarak yeniden satmak için değil.

Matomo, dördü arasında mevcut aracın yerini gerçek anlamda özellik özellik alan tek seçenektir ve bu ifadenin dürüstlüğü iki yönlü işler: segmentler, huniler, kohortlar, e-ticaret ilişkilendirmesi, eklentiler aracılığıyla ısı haritaları ve kendi sunucu günlüklerinizi içe aktarma yeteneği elde edersiniz; ayrıca ham tabloları hızla büyüyen ve raporları kendinizin zamanlaması gereken bir arşivleme işiyle önceden hesaplanan büyük bir PHP uygulaması da elde edersiniz. Yine de iki şey ona bir göz atmayı hak ettirir: hiç çerez ayarlamayacak şekilde yapılandırılabilmesi ve kitle ölçümü yapılandırmalarının, düzenleyici kurumların onaydan muaf araçlar için yayımladığı listelerde yer almış olması — bir blog yazısına değil güncel listeye bakın, ama kâğıt üzerinde gerçek bir avantajdır.

GoAccess, kimsenin önermediği ama birçok kişinin tercih etmesi gereken seçenektir. Web sunucunuzun zaten yazdığı erişim günlüğünü okur ve bunu bir terminal raporu veya bağımsız tek bir HTML sayfası olarak sunar. Tarayıcıda hiçbir şey çalışmaz, cihazda hiçbir şey saklanmaz ve isteğin kendisinin ötesinde bir veri toplama olmadığı için yanıtlanması gereken bir onay sorusu da yoktur. Vazgeçtiğiniz şey, sayfanın içinde gerçekleşen her şey ve istekler yerine kişileri sayabilme umududur. Bir dokümantasyon sitesi veya statik bir blog için bu genellikle makul bir takastır — ve diğerlerinden birinin yerini almak yerine onunla iyi eşleşir.

Tek satırda karar

Plausible veya Matomo'dan ihtiyacınız olan özelliği adlandıramıyorsanız, ihtiyacınız olan Umami'dir. Yirmi dakikada dağıtın, bir ay çalıştırın ve kendinizi yanıtlayamadığınızı fark ettiğiniz şeyin, geçip geçmemeniz gerektiğini size söylemesine izin verin. Daha sonra geçiş yapmak size sadece geçmişi kaybettirir, başka hiçbir şeyi kaybettirmez — ve kaybedeceğiniz geçmiş, sadece bir aylıktır.

Adım 02 · Tedarik

Bir sunucu, bir isim. Önce ismi sabitleyin.

VPS'i sipariş edin ve bastion'ı, okuyucularınızın nerede olduğuna ve verinin nerede durmasını istediğinize göre seçin — Stockholm, Helsinki, Oslo veya Reykjavík'in hepsi EEA içindedir, ki asıl mesele de budur. Ardından, başka herhangi bir şey sunucuya dokunmadan önce ilk saat güçlendirmesini uygulayın: yalnızca anahtarla SSH, taşınmış bir port, varsayılan olarak reddeden bir güvenlik duvarı, denetimsiz güncellemeler. Bu, bu serideki her kılavuz için aynı kırk dakikadır ve birinin bir yıllık okur kitlesini barındıracak bir makinede isteğe bağlı değildir.

Ardından hostname'i kesinleştirin, çünkü bu, ölçtüğünüz her sitenin her sayfasındaki izleme snippet'ine gömülüdür ve bunu daha sonra değiştirmek, eski isim hâlâ istek alırken hepsini düzenlemek anlamına gelir. İki biçim işe yarar. Ölçtüğünüz sitenin özel bir alt alan adı — analitik sunucusundaki reverse proxy onun için yanıt verir ve işe yarayan en basit şeydir. Ya da kendine ait bir alan adı üzerinde tarafsız bir isim, eğer bir instance birkaç ilgisiz siteye hizmet verecekse ve her sitenin kaynağının diğerlerini ele vermesini istemiyorsanız. Kaydı oluşturun ve devam etmeden önce çözümlenmesine izin verin: proxy, ilk başlangıçta bir sertifika yetkilisinden sertifika ister ve yetkili, ismi dışarıdan kontrol eder.

dig +short stats.example.com          # must return the VPS address before you deploy
ufw default deny incoming
ufw allow 47222/tcp                  # administrative SSH, moved off 22
ufw allow 80/tcp                     # ACME challenge and the redirect to 443
ufw allow 443/tcp                    # the dashboard and the collection endpoint
ufw enable && ufw status numbered

Üç port, başka hiçbir şey değil. Veritabanı yayımlanmamalıdır: iç Docker ağında yaşar, uygulama container'ı tarafından erişilebilir ve internetteki hiç kimse tarafından erişilemez. Kendi kendine barındırılan bir analitik sunucusunun bir tarama sonucunda ortaya çıkmasının en yaygın tek yolu budur — bir öğreticiden gelen bir Compose dosyasında, yerel geliştirme için orada bulunan bir port eşlemesi olduğu için herkese açık adrese bağlanmış bir PostgreSQL veya MySQL portu.

Boyutlandırma konusunda, fazla almaya çalışma dürtüsüne karşı durun. Bir Sentinel — 2 vCPU, 4 GB, 120 GB NVMe, ayda $3.90 — Umami'yi Postgres ile birlikte, bolca boşluk kalacak şekilde çalıştırır ve aylık altı haneli görüntülemeye sahip bir site için yıllarca olay verisini tutabilir. Plausible'ı seçtiyseniz bir Garrison'a — 4 vCPU, 8 GB, 240 GB — yükseltin, çünkü ClickHouse orada daha mutlu olur; ya da Matomo için yükseltin, çünkü arşivleme işi çekirdekleri ister. Bant genişliği her katmanda sınırsızdır ve analitik trafiği buna karşı yuvarlama hatası kadar küçüktür: her istek birkaç yüz bayttır.

Adım 03 · Dağıtım

İki container ve bir proxy. Ardından kapıyı kapatın.

Aşağıdaki referans dağıtımı Umami'dir, çünkü çoğu okuyucunun çalıştırması gereken araç budur ve çünkü yapısı genellenebilir: bir uygulama container'ı, yalnızca onun erişebildiği bir veritabanı container'ı ve sertifikayı tutan bir reverse proxy. Plausible ve Matomo, container sayısında ve değişken adlarında farklılık gösterir, yapıda değil — onların resmi Compose dosyalarını alın ve aynı üç kuralı uygulayın.

Göz ardı edilirse size ne kadar maliyete yol açacaklarına göre sıralanmış üç kural. Her image'ı kesin bir etikete sabitleyin, değişken bir etikete değil: ilgisiz bir yeniden başlatma sırasında sessizce yeni bir major sürümü çeken bir analitik yığını, planlamadığınız bir şema göçüdür. Uygulama sırrını gerçek bir rastgelelik kaynağından üretin ve onu saklayın — oturum materyalini şifreler ve onu daha sonra değiştirmek, en iyi ihtimalle herkesin oturumunu kapatır. Hiçbir veritabanı portu yayımlamayın: iki container bir ağı paylaşır ve ihtiyaç duydukları erişim denetiminin tamamı budur.

mkdir -p /srv/analytics && cd /srv/analytics
openssl rand -base64 32 > .app_secret      # keep this file; back it up with the database
openssl rand -base64 24 > .db_password
chmod 600 .app_secret .db_password

Compose dosyası. İki servis, bir özel ağ, veritabanı için adlandırılmış bir volume ve tek bir yayımlanmış port bile yok — dış dünyayla konuşan tek şey proxy'dir:

services:
  umami:
    image: ghcr.io/umami-software/umami:postgresql-v2.x.y   # an exact tag, never :latest
    environment:
      DATABASE_URL: postgresql://umami:CHANGE_ME@db:5432/umami
      APP_SECRET:   CHANGE_ME                                # the openssl output above
    depends_on: [db]
    restart: unless-stopped
  db:
    image: postgres:16-alpine
    environment:
      POSTGRES_DB:       umami
      POSTGRES_USER:     umami
      POSTGRES_PASSWORD: CHANGE_ME
    volumes:
      - umami-db:/var/lib/postgresql/data
    restart: unless-stopped
volumes:
  umami-db:

Caddy, burada doğru bir TLS kurulumu için en kısa yoldur: iki satır yapılandırma, bir cron işi gerektirmeden alınan ve yenilenen bir sertifika ve araştırmanıza gerek olmayan modern varsayılanlar. Sunucuda zaten nginx çalıştırıyorsanız, nginx'i kullanmaya devam edin — gereken şey önde bir proxy olmasıdır, bu belirli proxy olması değil. Her iki durumda da, analitik uygulaması asla doğrudan 443'ü dinleyen şey olmamalıdır.

# Caddyfile — Caddy runs as a third service in the same Compose project, so
# "umami" resolves on the internal network. It is the only service that
# publishes ports (80 and 443).
stats.example.com {
    encode zstd gzip
    reverse_proxy umami:3000
}

Sistemi ayağa kaldırın, ardından gerçekten zaman kritik olan tek şeyi yapın. docker compose up -d komutunu çalıştırın, migration'ların tamamlanmasını bekleyin ve gösterge panelini açın. Bu araçların her biri, belgelenmiş bir varsayılan yönetici hesabıyla veya açık bir ilk kayıt ekranıyla gelir; sertifika verildiği anda hostname herkesçe bilinir hâle gelmiştir, çünkü sertifika şeffaflığı günlükleri herkese açıktır ve sürekli olarak taranır. Varsayılan şifreyi değiştirin ve kaydı, ilk başarılı yüklemenin ardından dakikalar içinde kapatın, yarın değil.

docker compose up -d
docker compose logs -f umami          # wait for the schema migration to finish
docker compose ps                     # both services healthy, no published ports listed
ss -tlnp | grep -E ':(5432|3306)'     # must print nothing at all
Instance'ın kime ait olacağına karar veren beş dakika

Umami, şifresi dünyadaki her kurulumda aynı olan, belgelenmiş bir yönetici hesabıyla gelir. Plausible'da, ortamda kayıt devre dışı bırakılmadığı sürece ilk ziyaretçi sahip olur. Matomo, ilk ziyaretçiyi superuser'ı oluşturan bir kurulum sihirbazından geçirir. Üç durumda da, "sertifika var" ile "giriş yaptınız" arasındaki pencere, başka birinin sizin yerinize giriş yapabileceği bir penceredir — ve hostname'i tahmin etmelerine gerek yoktur, çünkü onlar için zaten yayımlanmıştır. Önce giriş yapın, kimlik bilgisini değiştirin, ardından kayıt anahtarını kapalıya ayarlayın ve bunun uygulandığını doğrulamak için sayfayı yeniden yükleyin.

Adım 04 · Ölçümleme

Bir etiket. Ardından hangi alan adında yaşayacağına karar verin.

Siteyi gösterge panelinde kaydedin, size verdiği tanımlayıcıyı kopyalayın ve şablona ertelenmiş bir script etiketi koyun — head içinde veya body'nin sonunda, çok önemli değil, ama her durumda ertelenmiş olsun ki sayfayı asla geciktirmesin. Bütün entegrasyon budur. Ne bir etiket yöneticisi, ne bir container, ne bir veri katmanı ne de bir onay modu bağlantısı vardır ve bu yokluk, tam olarak buraya gelme sebebinizdir.

<script defer src="https://stats.example.com/script.js"
        data-website-id="00000000-0000-0000-0000-000000000000"></script>

Sitenin bir sayfasını yükleyin, ardından gösterge paneline bakın: isteğin birkaç saniye içinde orada olması gerekir. Değilse, tarayıcı konsolu ve ağ sekmesi bunu bir dakikadan kısa sürede yanıtlar — iki başarısızlık modu vardır: kabul edilip yok sayılan bir istek üreten yanlış yazılmış bir tanımlayıcı, ve hiç gitmeyen bir istek, ki bu da bir eklentinin onu yediği anlamına gelir. Sayıları okumaya başlamadan önce kendi trafiğinizi hariç tutun, yoksa kendi yeniden yüklemeleriniz bir hafta boyunca en çok yönlendireniniz olacaktır.

Şimdi üzerinde düşünmeye değer olan karar burada. Yukarıdaki kod parçası, sitenin kendisine ait olmayan bir hostname'e istek gönderir ve ziyaretçilerinizin bir kısmı bu tür istekleri desene göre engelleyen yazılımlar çalıştırır. Listeler; iyi bilinen dosya adlarını — tedarikçinin kendi script adıyla biten her şeyi — ve hangi sunucuya işaret ettiklerine bakılmaksızın iyi bilinen barındırılan alan adlarını yakalar. Çözümün iki yarısı vardır: bu araçların her birinin desteklediği şekilde script dosyasını ve toplama uç noktasını bir izleyici adı olmayan bir adla yeniden adlandırmak, ve mevcut proxy'nizin ilettiği bir yol üzerinden bunları sitenin kendi kaynağından sunmak. Bu durumda engellenecek hiçbir üçüncü taraf isteği kalmaz.

# On the site's own web server — the two paths the tracker needs, first-party:
example.com {
    handle /p/s.js      { reverse_proxy https://stats.example.com { header_up Host stats.example.com } }
    handle /p/collect   { reverse_proxy https://stats.example.com { header_up Host stats.example.com } }
    # ... the rest of the site
}

İki ayrıntı, bunun yarım değil tam çalışmasını sağlar. Proxy, ziyaretçi adresini, analitik uygulamasının güvenmek üzere yapılandırıldığı bir header'da iletmelidir, yoksa her istek kendi web sunucunuza atfedilir ve ülke raporu tek bir çubuktan ibaret olur. Ve izleyiciye verisini nereye göndereceği söylenmelidir, ki bu üç aracın hepsinde script etiketi üzerindeki bir data attribute'udur — dosyayı yeniden adlandırıp uç noktayı yeniden yönlendirmemek, yüklenen ama hiçbir yere rapor vermeyen bir script'le sonuçlanır.

Bu, aynı zamanda ölçümün dürüst son noktasıdır. JavaScript'i devre dışı bırakmış veya sıkı bir listeyle birlikte birinci taraf kozmetik bir kurala sahip bir ziyaretçi sayılmayacaktır ve onları kovalamak için hiçbir mühendislik çabası harcanmamalıdır — ağ seviyesinde bir filtre, açıkça belirtilmiş bir tercihtir ve buna karşı kibar yanıt, onları fazladan hiçbir şey toplamadan sayan sunucu günlüğüdür. Olaylar ve tek sayfa uygulamaları, ölçümlemenin diğer yarısıdır: her araç, özel olaylar için küçük bir fonksiyon sunar ve her biri rota değişikliğinde açık bir çağrı gerektirir, çünkü bir navigasyon olmadan görünümü değiştiren bir framework, script'in fark edebileceği bir sayfa yüklemesi üretmez.

Adım 05 · Uyum

İki yasa, bir değil. İnternetin büyük kısmı bunları birbirine karıştırıyor.

İnsanların analitiğin bir banner gerektirip gerektirmediği konusunda anlaşamamasının nedeni, iki farklı kural hakkında sanki bir tekmiş gibi tartışmalarıdır. Onları ayırın ve yanıt ele alınabilir hâle gelir. ePrivacy Direktifi'nin 5(3) Maddesi — her Üye Devlet'in ulusal hukukuna aktarılmış olan ve çerez banner'ının asıl kaynağı olan madde — bir aboneye ait terminal ekipmanında bilgi saklamanın veya orada zaten saklanmış olan bilgiye erişim sağlamanın, açıkça talep ettikleri bir hizmeti sunmak için kesinlikle gerekli olmadıkça, onaylarını gerektirdiğini söyler. Neyi söylemediğine dikkat edin: çerez demez ve kişisel veri demez. localStorage'ı da kapsar, cihaz parmak izi çıkarmayı da kapsar ve kimseyi tanımlamayan bir değere bile uygulanır.

GDPR, ikinci kuraldır ve farklı bir soruyu düzenler: kişisel verileri elinize geçirdikten sonra onlarla ne yapabileceğiniz. Cihazda herhangi bir şey saklayıp saklamadığınızdan bağımsız olarak analitiğinize uygulanır, çünkü bir web isteği bir IP adresi iletir ve Avrupa Birliği Adalet Divanı, Breyer (C-582/14) kararında bir IP adresinin bir web sitesi işletmecisinin elinde kişisel veri sayılabileceğine hükmetmiştir. Böylece iki kural üst üste biner: 5(3) maddesi cihaza yazdınız mı diye sorar, GDPR ise gelenle ne yaptınız diye sorar.

Çerezsiz bir analitik sunucusu, her ikisini de dar kapsamda yanıtlamak üzere tasarlanmıştır. Cihazda hiçbir şey saklamaz — çerez yok, localStorage kaydı yok, hiçbir tür tanımlayıcı yok — bu da 5(3) maddesini devre dışı bırakır, çünkü ne depolama ne de depolamaya erişim vardır. Zorunlu olarak aldığı IP adresini alır, bunu user agent ile, siteyle ve her gün döndürülen gizli bir salt ile birleştirir, sonucu hash'ler, hash'i saklar ve adresi atar. Bu hash, aracın bir gün içinde iki ziyaretçiyi birbirinden ayırt etmesini sağlar ve salt döndürüldüğü anda işe yaramaz hale gelir; tam da bu nedenle aynı kişi ertesi gün yeni bir ziyaretçi olarak sayılır. Bu işleme gerçektir ve işlemenin alabileceği en küçük boyuta yakındır.

Geriye kalan, bu dar kapsamlı işlem için bir hukuki temeldir ve pratikte işletmeciler, Madde 6(1)(f) kapsamındaki meşru menfaatlere dayanır; bu da olguların basit olması nedeniyle kısa olan bir dengeleme değerlendirmesiyle belgelenir: profilleme yok, paylaşım yok, siteler arası takip yok, her gün ölen bir takma ad, tanımlı bir saklama süresi. Birçok denetim kurumu daha da ileri giderek, kesinlikle sınırlı kitle ölçümünün onaydan tamamen muaf olduğu kriterleri yayımlamıştır — kriterler ülkeye göre farklılık gösterir, güncellenirler ve sizin için önemli olan kendi ülkenizinkidir. Bu hukuki tavsiye değildir. Bu, hangi hukuki araçların uygulandığının haritasıdır, böylece alacağınız tavsiye, sorunun genel şekli hakkında değil, sizin durumunuz hakkında olabilir.

Soru Reklam teknolojisi analitik etiketi Çerezsiz, EEA içinde kendi kendine barındırılan
Ziyaretçinin cihazına yazıyor mu?Evet — bu nedenle Madde 5(3) onayı uygulanırHayır — 5(3) tetiklenmez
Kalıcı bir tanımlayıcı tutuluyor mu?Aylardan yıllara, siteler arasındaGünlük olarak süresi dolan salt'lı bir hash
Belgelenecek üçüncü ülke aktarımı mı?Evet, sürdürülmesi gereken bir aktarım mekanizmasıylaYok — sunucu EEA içinde
Adlandırılacak ve sözleşme yapılacak işleyenlerTedarikçi ve onun alt işleyenleriBarındırma sağlayıcınız, donanım için, başka hiç kimse değil
İlgili kişi erişim talebini kim yanıtlayabilirSiz, hangi dışa aktarma yöntemi varsa onunlaSiz, SQL ile — ve çoğu zaman geri döndürülecek hiçbir şey yok

Dosyaya ait bir satır daha var, çünkü bunu yapmanın sessiz gerekçesi tam olarak budur. Avrupalı ziyaretçilerin verilerini bir ABD analitik hizmetine göndermenin hukukiliği on yıldır dava konusudur: Adalet Divanı, 2020'de Schrems II (C-311/18) kararıyla önceki aktarım çerçevesini iptal etti, birçok ulusal denetim kurumu 2022'de bu gerekçeyle standart analitik etiketine karşı karar verdi — Avusturya Ocak'ta, Fransa Şubat'ta, İtalya Haziran'da, ardından başkaları — ve yeni bir yeterlilik kararı olan AB-ABD Veri Gizliliği Çerçevesi, Temmuz 2023'te bir aktarım yolunu yeniden tesis etti ve kendisi de şu anda itiraz konusudur. Bunun nasıl sonuçlanacağı hakkında bir görüşünüzün olması gerekmez. Helsinki'deki bir sunucu, bu soruyu dosyanızdan kalıcı olarak kaldırır ve bu, meselenin şu anki durumu hakkında haklı olmaktan daha değerlidir.

Adım 06 · Saklama

Saklama süresi, yedeklemeler, güncellemeler. Ve unuttuğunuz günlük.

Saklama süresini ilk gün belirleyin, henüz bağlandığınız bir yıllık veri yerine soyut bir sayı olduğu sırada. Bu araçların her biri, ham olayları bir takvime göre silebilir ve toplulaştırılmış özetleri saklayabilir; on iki aylık ayrıntı, neredeyse her amaç için cömerttir ve bu, "bunu ne kadar süre saklıyorsunuz" sorusunun dürüst yanıtının "süresiz" değil bir sayı olmasını sağlar. Bu, aynı zamanda disk sorununu başlamadan önce çözer, ki bu en çok, ham tabloları büyüyen taraf olan Matomo için önemlidir.

Veritabanını bu makine olmayan bir yere yedekleyin ve dışarı çıkarken şifreleyin — yedekleme kılavuzu konuyu ayrıntılı olarak ele alır; kısa hâli şudur: gecelik bir dump'ın, tercihen ikinci bir yargı bölgesindeki ikinci bir sunucuda bulunan, sadece ekleme yapılabilen bir depoya aktarılmasıdır. Uygulama sırrını da onunla birlikte yedekleyin: geri yükleyebildiğiniz bir veritabanı ile geri yükleyemediğiniz bir sır, kimsenin giriş yapamayacağı bir gösterge paneli demektir. Ardından, ihtiyacınız olmadan önce, bilerek bir kez bunu bir deneme VPS'ine geri yükleyin.

docker compose exec -T db pg_dump -U umami umami | zstd -q -o /srv/backup/umami-$(date -u +%F).sql.zst
restic -r sftp:backup@bastion-2:/srv/repo backup /srv/backup /srv/analytics/.app_secret
restic -r sftp:backup@bastion-2:/srv/repo forget --keep-daily 7 --keep-weekly 8 --prune

Güncellemeler, sıradan bir container yükseltmesinden biraz daha fazla dikkat gerektirir, çünkü bu uygulamalar bir şemaya sahiptir. Üzerinden atladığınız major sürümler için sürüm notlarını okuyun, yedeği sonra değil önce alın, ardından sabitlenmiş etiketi değiştirin ve günlükleri izlerken yığını ayağa kaldırın — yarı yolda başarısız olan bir göç, dün geceki dump'tan kurtarılabilir ama onsuz çok tatsızdır. En yeni sürümün çıktığı hafta onun üzerinde olmak için hiçbir neden yoktur ve olmamak için iyi bir neden vardır.

Tüm çabayı boşa çıkaran günlük

Az önce, kasıtlı olarak hiçbir zaman bir IP adresi saklamayan bir yığın dağıttınız. İki metre ötede, reverse proxy'niz her bir ziyaretçinin tam IP adresini düz metin olarak bir erişim günlüğüne yazıyor ve bunu varsayılan döndürme süresinin belirttiği kadar — hem analitik sunucusunda hem de gerçek sitenizin önündeki web sunucusunda — saklıyor. Bu günlük, analitik veritabanından daha büyük ve daha hassas bir veri kümesidir, hesabını vermeniz gereken bir işleme faaliyetidir ve bunu neredeyse hiç kimse hatırlamaz. Ne için olduğuna karar verin: yalnızca hata ayıklama içinse, günlükteki IP adresinin son octet'ini kırpın veya maskeleyin ve agresif biçimde döndürün; günlük tabanlı ölçüm için istiyorsanız, bunu politikada belirtin ve ona gerçek bir saklama süresi verin. Yapmamanız gereken şey, onu varsayılanda bırakıp sitenizi IP adresi toplamıyormuş gibi tanımlamaktır.

Son olarak, dürüst olunması gereken sınırlar var, çünkü kendi kendine barındırılan bir sayaç, kaldırdığınız şeyin kesinlikle daha iyi bir sürümü değildir. Cihazlar arası ve günler arası kimliği kaybedersiniz, bu yüzden geri gelen ziyaretçi artık eskisinden daha dar bir anlama gelir. Trafik satın alıyorsanız önemli olan, satın almıyorsanız önemsiz olan reklam platformu entegrasyonunu kaybedersiniz — search console verisi ayrı bir üründür ve bundan etkilenmez. Bir güncelleme ve bir yedekleme yükünü üstlenirsiniz, ki bu akşamlarla ölçülen gerçek, tekrar eden bir maliyettir. Ve sunucunun kendisi korunmaya değer bir şey hâline gelir: okur kitlenizi barındırır, herkese açık internet üzerindedir ve onu sıradan tutan iki şey, güçlendirme kontrol listesi ile gösterge paneline özel erişim yoludur.

Saha notları · Altı tuzak

Bunun ters gidebileceği altı yol. İkisi sessizdir.

Tuzak 01 · Ölümcül

Herkesin bildiği varsayılan şifre

Bu araçlardan biri, dünyadaki her kurulumda aynı yönetici kimlik bilgisini gönderir; diğerleri ise sahipliği ilk kaydolana teslim eder. TLS çalıştığı anda hostname, sertifika şeffaflığı günlüklerinde yayımlanır. Giriş yapın, değiştirin, kaydı kapatın — ilk beş dakika içinde, yarın değil.

Tuzak 02 · Ölümcül

Öğreticiden kalan veritabanı portu

Bir dizüstü bilgisayar için yazılan Compose dosyaları, yazarın bir GUI'den bağlanabilmesi için 5432 veya 3306 portlarını yayımlar. Birini herkese açık bir sunucuya kopyalayın; okur kitlesi tablosunu ele geçirmek artık sadece bir şifre tahmini kadar uzaktadır. Uygulama container'ı veritabanına iç ağ üzerinden erişir; proxy dışında yayımlanması gereken hiçbir şey yoktur.

Tuzak 03 · Hukuki

Kendi kendine barındırmanın muafiyet anlamına geldiğini varsaymak

Yazılımı kendi sunucunuza taşımak, aktarım sorusunu ve işleyen sorusunu yanıtlar. Ancak cihaza yazan bir özelliği açarsanız Madde 5(3)'ü yanıtlamaz ve gizlilik politikanızı sizin için yazmaz. Muafiyet, barındırmanın değil, yapılandırmanın bir özelliğidir.

Tuzak 04 · Sessiz

Her ziyaretçi aynı ülkeden geliyor

İstemci adresini iletmeyen bir reverse proxy, her isteğin proxy'nin kendisinden geliyormuş gibi görünmesine yol açar. Gösterge paneli dolar, toplamlar doğru görünür, ancak coğrafya ve benzersizlik sütunları sessizce kurmacadan ibarettir. Ülke dağılımını ilk günde kontrol edin, üç aylık incelemede değil.

Tuzak 05 · Sessiz

Hâlâ tuttuğunuz erişim günlüğü

Bu yığın, hiçbir zaman bir IP adresi saklamadığı için seçildi. Önündeki proxy, varsayılan olarak bunların her birini düz metin olarak saklar ve gerçek sitenizin önündeki web sunucusu da öyle. Bunları kasıtlı olarak maskeleyin veya döndürün ve politikada tanımlayın — ya da bunları toplamadığınızı iddia etmeyi kesin.

Tuzak 06 · Kaçınılabilir

Eski sayıların arkasından koşmak

Yeni toplamlar eskilerle eşleşmeyecek ve hiçbir yapılandırma bunu sağlayamaz. Farklı sayma kuralları, farklı bir engellenme payı ve örneklemi filtreleyen bir banner yokluğu. İki haftayı kendi oranınızı öğrenmeye ayırın, ardından yeni sayıyı temel çizgi olarak kabul edin ve iki tanımı uzlaştırmaya çalışmayı bırakın.

SSS · Kendi kendine barındırılan analitik

Sorular, yanıtlandı.

Bunu yaparken ortaya çıkan on bir soru — herkesin her iki yönde de yanlış anladığı sorudan başlayarak.

Kendi kendime barındırırsam çerez banner'ını gerçekten kaldırabilir miyim?

Çoğu zaman evet, ve nedeni, "kendi kendine barındırmak yeterlidir" demekten daha kesindir. İki ayrı kural devrededir. ePrivacy Direktifi'nin 5(3) Maddesi — herkesin çerez yasası dediği kural — bir ziyaretçinin cihazında bilgi saklamak veya cihazdaki bilgiyi okumak için, bu talep ettikleri bir hizmet için kesinlikle gerekli olmadıkça, onay gerektirir. Bu, çerezlere uygulanır, ama aynı zamanda localStorage'a, sessionStorage'a ve geride bıraktığınız başka her şeye de uygulanır ve verinin kişisel olup olmadığına bakılmaksızın uygulanır. Cihaza hiçbir şey yazmayan bir araç, bunu basitçe tetiklemez. GDPR ikinci kuraldır ve ortadan kalkmaz: her istekte hâlâ bir IP adresi ve bir user-agent dizisi alırsınız ve bir IP adresi, bir web sitesi işletmecisinin elinde kişisel veridir (Adalet Divanı, Breyer, C-582/14). Çerezsiz bir analitik sunucusunun yaptığı şey, bu IP'yi her gün döndürülen bir salt ile hash'lemek ve ardından onu atmaktır; böylece veritabanına ulaşan şey bir kişi değil, güne özgü ve siteye özgü bir takma addır. Bu, çoğu işletmecinin meşru menfaatlere dayandırdığı, dar kapsamlı ve iyi belgelenmiş bir işleme faaliyetidir ve birçok denetim kurumu, salt kitle ölçümünün onaydan muaf tutulduğu kriterleri yayımlamıştır. Bu savunulabilir bir konumdur, sihirli bir söz değil: ne topladığınızı, nedenini ve ne kadar süreyle topladığınızı yazın ve bir tedarikçinin açılış sayfası yerine kendi düzenleyici kurumunuzun kılavuzunu okuyun. Bu sayfadaki hiçbir şey hukuki tavsiye değildir.

Bunu düşünmek istemiyorsam hangisini seçmeliyim?

Umami. Tek bir Node uygulaması ve bir PostgreSQL veritabanıdır, 1 GB belleğin içinde rahat eder, gösterge paneli ilk ziyarette okunaklıdır, kutudan çıktığı gibi çerezsizdir ve bir instance, sahip olduğunuz her siteye seve seve hizmet eder. Bir blogda, bir dokümantasyon sitesinde, bir mağazada veya bir şirket sitesinde Google Analytics'i değiştiren insanların ezici çoğunluğu için doğru yanıt budur ve diğer üçü, yaşamanıza gerek olmayan bir tartışmadır. Bunun yerine huniler, gelir hedefleri ve daha güçlü bir herkese açık gösterge paneli hikâyesi istiyorsanız ve bunlar için ClickHouse çalıştırmaya razıysanız Plausible Community Edition'ı seçin. Google Analytics özellik setine gerçekten ihtiyacınız varsa — segmentler, kohortlar, özel raporlar, e-ticaret ilişkilendirmesi, ham günlük içe aktarma — ve zamanlanmış bir arşivleme işi olan büyük bir PHP uygulaması çalıştırdığınızı kabul ediyorsanız Matomo'yu seçin. Sayfada hiç JavaScript istemiyorsanız GoAccess'i seçin.

Sayılar neden Google Analytics ile eşleşmiyor?

Çünkü farklı şeyleri sayıyorlar ve bu fark aynı anda her iki yönde de işliyor. Yukarı yönde: bir onay banner'ının ardındaki Google Analytics, yalnızca kabul et'e basan ziyaretçileri görür — bu da Avrupa'da genellikle onların yarısı kadardır — banner'sız çerezsiz bir sayaç ise herkesi görür. Yine yukarı yönde: yeni uç noktanız kendi alan adınızda bulunur ve bilinen izleyicilere gidecek istekleri reddeden filtre listelerinde yer almaz. Aşağı yönde: günlük döndürülen bir hash, aynı kişiyi ertesi gün tanıyamaz, bu yüzden Pazartesi ve Perşembe günü ziyaret eden bir okuyucu, geri gelen tek bir ziyaretçi değil, iki ziyaretçi olarak sayılır — oturumlar bir gün içinde birleştirilir, günler veya cihazlar arasında asla birleştirilmez. Yine aşağı yönde: kendi kendine barındırılan araçların çoğu, tutucu bir bot filtresiyle gelir ve Discover tarzı bir şişirme içermez. Pratik öneri, iki sayıyı uzlaştırmaya çalışmayı bırakmaktır. Kendi oranınızı öğrenmek için iki hafta boyunca ikisini birden çalıştırın, bunu bir yapışkan nota yazın, ardından Google etiketini silin ve yeni sayıları şimdi oldukları şey olarak, yani temel çizgi olarak kullanın. Kararlar için önemli olan, eğilimin şekli ve sayfalarla kaynakların birbirine göre sıralamasıdır ve ikisi de bu geçişten sağlam çıkar.

Reklam engelleyiciler kendi instance'ımı da engeller mi?

Kısmen, ve tam olarak nasıl olduğunu bilmeye değer, çünkü mekanizma insanların sandığından daha kabadır. Büyük filtre listeleri desenler üzerinde çalışır: barındırılan hizmetlerin hostname'leri ve bir dizi ünlü dosya ve yol adı — plausible.js, umami.js veya matomo.php ile biten bir şeye yapılan istek, hangi sunucuya gittiğine bakılmaksızın tanınabilir. Yazılımı, standart dosya adlarıyla stats.example.com'a taşısanız da teknik okuyucu kitlesinin bir kısmını kaybedersiniz. İki dürüst çözüm vardır ve bunlar üst üste biner. Script'i ve toplama uç noktasını bir izleyici adı olmayan bir şeye yeniden adlandırın — bu araçların her biri buna izin verir ve bu tek satırlık bir yapılandırmaya mal olur. Bunları, reverse proxy'nin ilettiği ana alan adınızdaki bir yol üzerinden, sitenin kendisiyle aynı kaynaktan sunun, böylece engellenecek hiçbir üçüncü taraf isteği kalmaz. Bu ikisi birlikte kaybın çoğunu geri kazandırır. Hepsini geri kazanamazsınız ve bunu istememelisiniz de: sıkı bir liste ile birlikte JavaScript'i devre dışı bırakmış bir ziyaretçi bir seçim yapmıştır ve buna doğru yanıt, bir silahlanma yarışı değil, sunucu günlüğüdür.

Script'i kendi alan adımdan proxy'lemek bir karanlık tasarım mı?

Bu soru sorulmaya değer ve yanıtı, engelleyicinin neyi koruduğuna bağlıdır. Bir filtre listesinin tek bir kaba aracı ve birbirinden çok farklı iki hedefi vardır: bir kişiyi on bin site boyunca takip edip profil çıkaran reklam teknolojisi ağı ve bir site sahibine dokümantasyon sayfasının dün dört yüz kez okunduğunu söyleyen sayaç. Birincisini engellemek, bir kişinin gözetime karşı kendini savunmasıdır. İkincisini engellemek, ikisini birbirinden ayırt edemeyen bir kuralın yan zararıdır. Kendi sayacınızı kendi alan adınızdan sunmak, bir izleyiciyi savunmanın arkasından kaçırmak değildir; hiç var olmaması gereken bir üçüncü taraf isteğini ortadan kaldırmaktır ve aynı ziyaret, ne olursa olsun erişim günlüğünüzde bir satır oluşturur. Savunulabilir olmaktan çıktığı nokta, proxy'lediğiniz şeyin burada tanımlanan şey olmadığı andır — siteler arası tanımlayıcılar, parmak izi çıkarma veya bir reklam platformuna giden bir veri hattı eklerseniz, engelleyici doğruydu ve proxy bir yalandır. Test basittir ve bir kez kendinize uygulamaya değer: bu uç noktanın tam olarak ne topladığını anlatan bir sayfa yayımlayabilir misiniz ve bir okuyucu bunu görünce omuz silker mi? Cevap evetse, proxy'leyin. Değilse, sorun proxy değildir.

VPS gerçekte ne kadar büyük olmalı?

Korktuğunuzdan daha küçük, bir istisna dışında. Umami bir Node süreci ve bir Postgres veritabanıdır: normal bir site için 1 GB'ın altında bellekte yerleşir ve veritabanı, sayfa görüntüleme başına kabaca bir metin satırı boyutunda büyür, bu yüzden bir Sentinel — 2 vCPU, 4 GB, 120 GB NVMe, ayda $3.90 — yıllarca yetecek boşluğa sahiptir. GoAccess bir yuvarlama hatasıdır. Matomo ortada yer alır: PHP ve MariaDB, arşivleme işi çalışana kadar talepkâr değildir — bu da boyutlandırmanız gereken CPU sıçramasıdır — ve ham tabloları diğerlerinden daha hızlı büyür, çünkü istek başına daha fazlasını tutar. İstisna Plausible Community Edition'dır ve sebep Plausible değil ClickHouse'dur: bir sütun deposu, belleği sorgu hızıyla takas etmek üzere tasarlanmıştır ve ortalıkta bıraktığınız her şeyi kendine mal eder. Gönderilen yapılandırmada önbelleklerini sınırlarsanız 4 GB'ta çalışır ve 8 GB'ta rahat eder — Garrison katmanının $7.90'la bu araç için makul alt sınır olmasının nedeni de budur. Her durumda, sonunda bir yükseltmeyi zorunlu kılan sayı bellek değil disktir, ve adım 06 bunu nasıl durduracağınızı anlatır.

Tek bir instance, birden fazla farklı siteyi ölçebilir mi?

Evet, ve bunları çalıştırmanın normal yolu da budur. JavaScript araçlarının üçü de tasarım olarak çoklu sitedir: her alan adını gösterge panelinde kaydedersiniz, her biri kendi tanımlayıcısını alır ve aynı script uç noktası, raporları ayrı tutarken hepsi için istekleri kabul eder. Bir sunucu, bir sertifika, bir yedekleme, bir güncelleme — yirmi site. Liste büyürken akılda tutulması gereken iki şey vardır. Raporlar siteye göre ayrılır, bu yüzden müşteriler için siteleri yönetiyorsanız, herkese yönetici hesabını vermek yerine aracın kendi kullanıcı ve takım izinlerini kullanın; ve paylaşılan bir instance'ın ne anlama geldiğini, bir sözleşmede kabul etmeden önce kontrol edin: onların ziyaretçi verilerini elinde tutan taraf siz olursunuz. Ve izleme uç noktası paylaşılan bir isimdir, bu da onu sunan alan adının, listedeki her sitenin kaynak kodunda görünmesi anlamına gelir — rakipleri sayfa kaynağını okuyan bir müşteriye söylenmeye değer bir gerçek ve adım 04'teki birinci taraf yol için bir gerekçe.

JavaScript'e gerçekten gerek var mı? Sunucu günlüğünü analiz etmeye ne dersiniz?

Sitelerin büyük bir kısmı için günlük yeterlidir ve mevcut en dürüst ölçüm biçimidir: fazladan hiçbir şey toplamaz, çünkü satırlar zaten oradadır. GoAccess bir web sunucusu erişim günlüğünü okur ve bir terminal raporu veya bağımsız bir HTML gösterge paneli üretir — en çok görüntülenen sayfalar, yönlendirenler, durum kodları, bant genişliği, yanıt süreleri, user agent'lar — statik bir site, bir dokümantasyon seti veya bir API için, bu bir script etiketinin size söyleyeceklerinin çoğudur. İki sınır, bunun sizin için yeterli olup olmadığını belirler. Bir günlük, sayfanın içinde olanları göremez: kaydırma derinliği yok, dış bağlantı tıklamaları yok, buton olayları yok, tek sayfa uygulaması rota değişiklikleri yok, çünkü bunların hiçbiri sunucuya dokunmaz. Ve bir günlük, kişileri değil istekleri sayar, bu yüzden önbelleğe almanın ve şu anda ham trafiğin çoğunluğunu oluşturan bot nüfusunun insafına kalırsınız — filtreleme, bir kurulum adımı değil kalıcı bir bakım görevidir. Beklediğinizin tersi yönde bir gizlilik tuzağı da vardır ve adım 06 bunu ele alır: analiz ettiğiniz günlük, tam IP adreslerini içerir; bu da reddettiğiniz JavaScript aracının sakladığından daha fazla kişisel veridir.

Google Analytics geçmişimi içe aktarabilir miyim?

Gerçekçi olarak, hayır, ve buna karşı planlama yapmak, buna karşı savaşmaktan daha iyidir. Matomo, dördü arasında ciddi bir içe aktarma hikâyesi olan tek araçtır ve orada bile pratik yollar, Google'ın işlenmiş raporlarının temiz bir aktarımı değil, kendi web sunucusu günlüklerinizi içe aktarmak ve eski Matomo örnekleri için göç araçlarını kullanmaktır. Umami ve Plausible Community Edition, eşleştirmeyi kendiniz yazmaya hazırsanız API'leri üzerinden toplu bir yükleme kabul edebilir, ancak toplu dışa aktarmalardan oturumlar ve ziyaretçiler icat ediyor olursunuz ve sonuç, sürekliymiş gibi görünen ama birleşim noktasında karşılaştırılabilir olmayan bir grafiktir. Gerçekten işe yarayan şudur: Google Analytics kaydınız kapanmadan önce önemsediğiniz raporları Google'dan CSV olarak dışa aktarın — aylık toplamlar, en çok görüntülenen sayfalar, en çok trafik gönderen kaynaklar, dönüşüm sayıları — bunları diğer kayıtlarınızla aynı yerde saklayın ve yeni aracı, not ettiğiniz bir tarihte yeni bir temel çizgi olarak başlatın. Eski dışa aktarmaya ilk yıl içinde iki kez başvurursunuz ve bir daha asla, ve içindeki her sayı zaten farklı bir tanıma göre ölçülmüştür.

Gizlilik politikasına gerçekte ne yazmam gerekiyor?

Düşündüğünüzden daha azı, ve bu kısalık tam olarak amaçlanan şeydir — savunabileceğiniz bir paragraf, kopyaladığınız bir sayfadan daha iyidir. Aracın ne olduğunu ve onu kendinizin çalıştırdığını söyleyin; sunucunun konumunu ve yasal işletmecisini belirtin, çünkü "Finlandiya'da kiraladığımız bir makinede" diyebilmek, bunu yapmanın tüm faydasıdır. Her ziyarette neyin kaydedildiğini söyleyin: sayfa, yönlendiren, ülke, cihaz ve tarayıcı ailesi, ve IP adresinden ve user agent'tan, her gün değişen bir salt ile türetilen, orijinal IP'nin geri elde edilemeyeceği takma bir tanımlayıcı. Neyin kaydedilmediğini söyleyin: çerez yok, siteler arası tanımlayıcı yok, profil yok, satılan veya paylaşılan veri yok. Dayandığınız hukuki temeli ve saklama süresini belirtin ve yazdığınız sayının, aracın yapılandırıldığı sayı olduğundan kesinlikle emin olun. Reverse proxy'niz erişim günlükleri tutuyorsa, bu kendi saklama süresi olan ayrı bir işleme faaliyetidir — bundan bahsedin, çünkü insanların unuttuğu şey tam olarak budur. Ardından paragrafı yapılandırmayla senkronize tutun: iki yıl önceki kurulumunuzu tanımlayan bir politika, belirsiz bir politikadan daha kötüdür.

Sadece sayfa görüntülemelerini tutan bir sunucu için barındırma sağlayıcısı neden önemlidir?

Çünkü "sadece sayfa görüntülemeleri" ifadesi, bir analitik veritabanının ne olduğunu küçümser. Bir yıl boyunca toplandığında, bu sitenizin okur kitlesidir: hangi sayfalar, hangi sırayla, hangi ülkelerden, hangi saatlerde, hangi bağlantılardan geliyor — küçük bir yayıncı veya niş bir mağaza için bu, tek bir tabloda toplanmış bir iş planı ve kaynak listesidir. Aynı zamanda, yargısal açıdan, bir düşmanın sizden istemek yerine sağlayıcınızdan isteyeceği türden bir veridir. Bundan iki özellik çıkar. Sunucunun bulunduğu yer, hangi hukuki sürecin ona ulaşacağını belirler: Stockholm, Helsinki, Oslo veya Reykjavík'teki bir makine, EEA içinde yer alır — bu da uluslararası veri aktarımı sorusunu uyum dosyanızdan tamamen kaldırır — ve güçlü basın özgürlüğü gelenekleri olan dört anayasal düzenin içinde yer alır. Hesabın kime ait olduğu da hesabın kendisinin neyi ifşa ettiğini belirler: NordBastion'da kimlik belgesi, yasal ad veya kart yoktur, fatura Monero veya Bitcoin ile ödenir ve okur kitlenizi barındıran makine, bir yerde pasaportunuzun iliştirilmiş olduğu bir müşteri veritabanında bir satır değildir. Yargı bölgesi kılavuzu, dördünün her birinin hukuki tabanını ayrıntılı biçimde ele alır.

Sunucuyu edinin

Okur kitleniz, sizin adınıza kayıtlı olmayan, EEA içindeki bir makinede.

Sentinel — Helsinki, Stockholm, Oslo veya Reykjavík'te, ayda $3.90'a 2 vCPU, 4 GB ve 120 GB NVMe — Umami'yi ve veritabanını, yıllarca olay verisi için yer bırakarak çalıştırır. Plausible veya Matomo'yu seçtiyseniz $7.90'lık Garrison'a yükseltin. Kayıt sırasında e-posta yok, kimlik belgesi yok, kart yok ve sitenizi okumuş olan herkesin listesini elinde tutan bir üçüncü taraf yok.

Son inceleme · 2026-10-12 · Kaynaklar · Umami, Plausible Community Edition, Matomo ve GoAccess dokümantasyonu; ePrivacy Direktifi 2002/58/EC Madde 5(3); Tüzük (AB) 2016/679; Adalet Divanı'nın Breyer (C-582/14) ve Schrems II (C-311/18) kararları; Temmuz 2023 tarihli AB-ABD Veri Gizliliği Çerçevesi yeterlilik kararı · Kadans · yıllık

Özel barındırma, Kuzey'de inşa edildi.