From 33983246645ea26917ea43be897d7f891e62569a Mon Sep 17 00:00:00 2001 From: ngn Date: Fri, 17 Jan 2025 04:23:34 +0300 Subject: [PATCH] add privacy documentation Signed-off-by: ngn --- Makefile | 13 +++++++++++++ app/Makefile | 7 +++++++ app/src/locales/tr.json | 2 +- doc/docs/privacy.en.json | 4 ++++ doc/docs/privacy.en.md | 41 ++++++++++++++++++++++++++++++++++++++++ doc/docs/privacy.tr.json | 4 ++++ doc/docs/privacy.tr.md | 40 +++++++++++++++++++++++++++++++++++++++ 7 files changed, 110 insertions(+), 1 deletion(-) create mode 100644 Makefile create mode 100644 app/Makefile create mode 100644 doc/docs/privacy.en.json create mode 100644 doc/docs/privacy.en.md create mode 100644 doc/docs/privacy.tr.json create mode 100644 doc/docs/privacy.tr.md diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..09e6e24 --- /dev/null +++ b/Makefile @@ -0,0 +1,13 @@ +SERVERS = app api doc + +all: $(SERVERS) + for server in $^ ; do \ + make -C $$server ; \ + done + +format: + for server in $(SERVERS) ; do \ + make -C $$server format ; \ + done + +.PHONY: format diff --git a/app/Makefile b/app/Makefile new file mode 100644 index 0000000..1be4feb --- /dev/null +++ b/app/Makefile @@ -0,0 +1,7 @@ +all: + npm run build + +format: + npm run format + +.PHONY: format diff --git a/app/src/locales/tr.json b/app/src/locales/tr.json index 9280bf7..0ed217b 100644 --- a/app/src/locales/tr.json +++ b/app/src/locales/tr.json @@ -31,7 +31,7 @@ "title": "servisler", "desc": "Salak şeyler inşa etmenin yanı sıra, herkes için kullanıma açık özgür ve ücretsiz servisler host ediyorum", "speed": "Tüm servisler 600 Mbit/s ağ arayüzü üzerinden erişilebilir", - "security": "Hepsi SSL şifreli bağlantı kullanıyor ve hepsi gizliğinize saygı gösteriyor", + "security": "Hepsi SSL şifreli bağlantı kullanıyor ve hepsi gizliğinize önem veriyor", "privacy": "Accessible from clearnet, TOR and I2P, no region or network blocks", "privacy": "Açık ağdan, TOR ve I2P'den erişilebilirler, bölge ya da ağ blokları yok", "bullshit": "CDN yok, cloudflare yok, CAPTCHA yok, analitikler yok, boktan saçmalıklar yok", diff --git a/doc/docs/privacy.en.json b/doc/docs/privacy.en.json new file mode 100644 index 0000000..e367c11 --- /dev/null +++ b/doc/docs/privacy.en.json @@ -0,0 +1,4 @@ +{ + "title": "Privacy", + "desc": "Learn how I respect your privacy" +} diff --git a/doc/docs/privacy.en.md b/doc/docs/privacy.en.md new file mode 100644 index 0000000..622e062 --- /dev/null +++ b/doc/docs/privacy.en.md @@ -0,0 +1,41 @@ +As a privacy advocate myself I do my best to respect your privacy while simultaneously keeping my server safe. I also think it's +important to be transparent about this kind of stuff so I wrote this document to tell you how exactly I process or store your +information. + +## DNS & SSL +Currently I use cloudflare's name servers, however cloudflare doesn't own my domain (I didn't purchase the domain from cloudflare) +nor it proxies any of the traffic. All of my records use the *DNS only*" mode, meaning they are just DNS records and they point +to my server, not cloudflare. This also means cloudflare doesn't control any of the SSL certificates. All the certificates are +stored on my server and they are created with Let's Encrypt. So I own the certificates and it's not possible for cloudlfare to +suddenly switch DNS records (it would break SSL). + +## Usage metrics +I don't have any kind of request or traffic monitoring on my server. So no, your HTTP(S) requests or other network +connections are not processed to generate colorful graphs, pie charts and stuff. + +You may have realized that in the bottom of this page there is total visitor number tracker. It is the only +usage/visitor metric tracking I have, which is implemented by website's API, which is free (as in freedom) so you can +go audit it's code yourself. + +I want to make it clear that this metric tracker does not store any information about you or your HTTP(S) requests to +a database. It temporarily stores your IP address' SHA1 hash, in memory, so it doesn't recount the same visitor again +when they refresh the website or visit it multiple times in a short period of time. After a certain amount of requests, +your IP address' SHA1 hash will be removed from the memory and it will be replaced with a new visitor's SHA1 hash instead. + +## Logs +All the HTTP(S) services are proxied with nginx, and nginx logs all of them to a file on the disk. This file (`access.log`) +is only readable by the root user, and it is contents are deleted every 4 hours (with `shred` to make sure it doesn't leave +anything on the disk). The logs include *only* the following information: + +- Request time +- Requested host +- Requested path +- HTTP request method +- HTTP response code + +This is the minimal information I need to trace any issues if something goes wrong, which is the main reason why I use +logging at all, to make it easier to find any issues. + +## Data removal +If you want to remove any of your data from my server, [you can send me an email](mailto:ngn@ngn.tf). And yes this includes +removing usage metrics and logs. diff --git a/doc/docs/privacy.tr.json b/doc/docs/privacy.tr.json new file mode 100644 index 0000000..e886f1a --- /dev/null +++ b/doc/docs/privacy.tr.json @@ -0,0 +1,4 @@ +{ + "title": "Gizlilik", + "desc": "Gizliliğinize nasıl önem verdiğimi öğrenin" +} diff --git a/doc/docs/privacy.tr.md b/doc/docs/privacy.tr.md new file mode 100644 index 0000000..744d924 --- /dev/null +++ b/doc/docs/privacy.tr.md @@ -0,0 +1,40 @@ +Kişisel olarak ben bir gizlik savunucusu olduğumdan, bir yandan sunucumu güvende tutarken bir yandan da gizliliğinize önem göstermek +için elimden geleni yapıyorum. Aynı zamanda bu tarz şeyler hakkında şeffaf ve açık olmanın önemli olduğunu düşünüyorum, o yüzden +verilerinizi nasıl işlediğimi ya da depoladığımı anlamanız için bu dökümanı yazmaya karar verdim. + +## DNS & SSL +Şuan cloudflare'in isim sunucularını kullanıyorum, ancak cloudflare alan adıma sahip değil (alan adımı cloudflare'den almadım) +ve aynı şekilde herhangi bir trafiğe vekillik etmiyor. Tüm DNS kayıtlarım *Sadece DNS* modunu kullanıyor, yani sadece +DNS kayıtlarından ibaretler ve benim sunucuma işaret ediyorlar, cloudflare'e değil. Bu aynı zamanda cloudflare SSL sertifikalarımı +kontrol etmiyor demek. Tüm sertifikalar benim sunucumda tutuluyor ve Let's Encrypt ile oluşturuldular. Yani sertifikalar bana ait +ve cloudflare'in aniden DNS kayıtlarını değiştirmesi mümkün değil (bu SSL'in bozulmasına sebep olur). + +## Kullanım metrikleri +Sunucumda herhangi bir istek ya da trafik monitörlermesi yok. Yani hayır, HTTP(S) istekleriniz ya da diğer ağ +bağlantılarınız renki grafikler, pasta grafikleri gibi şeyler üretmek için işlenmiyor. + +Bu sayfanın altında bir ziyaretçi sayısı takipçisi olduğunu farketmiş olabilirsiniz. Bu kullandığım tek kullanım/ziyaretçi +metrik takibi ve websitemin, özgür olan, bu yüzden kodunu kendiniz denetleyebileceğiniz API'ı ile implemente edildi. + +Bu metrik takipçisinin, HTTP(S) istekleriniz hakkında herhangi bir veriyi bir veri tabanına kaydetmediğini belirtmek isterim. +Bu takipçi geçici olarak IP adresinizin SHA1 hash'ini bellekte tutuyor, bunun amacı aynı ziyaretçiyi sayfayı yenilediği zaman +ya da kısa bir süre için websitesini birden fazla kez ziyaret ettiği zaman tekrar saymayı önlemek. Belirli bir miktar istekten +sonra, IP adresinizin SHA1 hash'i bellekten kaldırılacaktır ve yeni bir ziyaretçinin SHA1'i onun yerine geçicektir. + +## Kayıtlar +Tüm HTTP(S) servisleri nginx ile vekilleniyor, ve nginx hepsini disk üzerindeki bir dosyaya kaydediyor. Bu dosya (`access.log`) +sadece root kullanıcısı tarafından okunabilir, ve içerği her 4 saatde bir siliniyor (diskde veri kalmadığından emin olmak için +shred komutu ile). Kayıtlar *sadece* aşağıdaki bilgileri içeriyor: + +- İstek zamanı +- İstenilen host +- İstenilen yol +- HTTP istek yöntemi +- HTTP cevap kodu + +Bu birşeyler yanlış giderse sorunları bulmak için ihtiyacım olan en az bilgi, kayıt tutmamın ana sebeplerinden bir tanesi +zaten bu, sorunları bulmayı kolaylaştırmak. + +## Veri silimi +Sunucumdan herhangi bir verinizi kaldırmak isterseniz, [bana bir email gönderebilirsiniz](mailto:ngn@ngn.tf). Ve evet buna +kullanım metrikleri ve kayıtlar dahil.