feat: replace Cloudflare analytics with self-hosted pixel, clarify privacy
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -2,7 +2,9 @@
|
||||
|
||||
## Overview
|
||||
|
||||
TOD (The Other Dude) implements a 1Password-inspired zero-knowledge security architecture. The server never stores or sees user passwords. All data is stored on infrastructure you own and control — no external telemetry, analytics, or third-party data transmission.
|
||||
TOD (The Other Dude) implements a 1Password-inspired zero-knowledge security architecture. The server never stores or sees user passwords. All data is stored on infrastructure you own and control — the application sends no telemetry or data to external services unless you explicitly opt in.
|
||||
|
||||
> **Website vs. Application:** The theotherdude.net marketing website uses a lightweight, self-hosted analytics pixel to measure page views. It uses no cookies, stores no IP addresses, and sends no data to third parties. The TOD application itself does not collect or transmit any data unless the operator explicitly enables opt-in telemetry.
|
||||
|
||||
## Authentication: SRP-6a Zero-Knowledge Proof
|
||||
|
||||
@@ -108,7 +110,7 @@ TOD includes on-demand WinBox tunnels and browser-based SSH terminals for device
|
||||
- **Audit logs:** Encrypted at rest via Transit encryption — audit log content is protected even from database administrators.
|
||||
- **Subresource Integrity (SRI):** SHA-384 hashes on JavaScript bundles prevent tampering with frontend code.
|
||||
- **Content Security Policy (CSP):** Strict CSP headers prevent XSS, code injection, and unauthorized resource loading.
|
||||
- **No external dependencies:** Fully self-hosted with no external analytics, telemetry, CDNs, or third-party services. The only outbound connections are:
|
||||
- **No external dependencies:** Fully self-hosted with no external CDNs or third-party services. The application does not phone home or transmit telemetry unless the operator explicitly opts in. The only outbound connections are:
|
||||
- RouterOS firmware update checks (no device data sent)
|
||||
- SMTP for email notifications (if configured)
|
||||
- Webhooks for alerts (if configured)
|
||||
|
||||
@@ -167,9 +167,18 @@
|
||||
<a href="https://github.com/staack/the-other-dude" rel="noopener">GitHub</a>
|
||||
<a href="mailto:license@theotherdude.net">Licensing</a>
|
||||
</nav>
|
||||
<p style="margin-top:12px;font-size:0.75em;color:#888;text-align:center;">This site uses a self-hosted, cookie-free analytics pixel to count page views. No personal data is collected or shared with third parties.</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<!-- Cloudflare Web Analytics --><script defer src='https://static.cloudflareinsights.com/beacon.min.js' data-cf-beacon='{"token": "d5f1e31cb9744c998a8f7d1303c6efef"}'></script><!-- End Cloudflare Web Analytics -->
|
||||
<script>
|
||||
(function(){
|
||||
var d=document,i=new Image();
|
||||
i.src="https://telemetry.theotherdude.net/px?p="+encodeURIComponent(location.pathname)
|
||||
+"&t="+encodeURIComponent(d.title)
|
||||
+"&r="+encodeURIComponent(d.referrer)
|
||||
+"&sw="+screen.width;
|
||||
})();
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -218,8 +218,17 @@
|
||||
<a href="mailto:license@theotherdude.net">Licensing</a>
|
||||
</nav>
|
||||
</div>
|
||||
<p style="margin-top:12px;font-size:0.75em;color:#888;text-align:center;">This site uses a self-hosted, cookie-free analytics pixel to count page views. No personal data is collected or shared with third parties.</p>
|
||||
</footer>
|
||||
|
||||
<!-- Cloudflare Web Analytics --><script defer src='https://static.cloudflareinsights.com/beacon.min.js' data-cf-beacon='{"token": "d5f1e31cb9744c998a8f7d1303c6efef"}'></script><!-- End Cloudflare Web Analytics -->
|
||||
<script>
|
||||
(function(){
|
||||
var d=document,i=new Image();
|
||||
i.src="https://telemetry.theotherdude.net/px?p="+encodeURIComponent(location.pathname)
|
||||
+"&t="+encodeURIComponent(d.title)
|
||||
+"&r="+encodeURIComponent(d.referrer)
|
||||
+"&sw="+screen.width;
|
||||
})();
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -218,8 +218,17 @@
|
||||
<a href="mailto:license@theotherdude.net">Licensing</a>
|
||||
</nav>
|
||||
</div>
|
||||
<p style="margin-top:12px;font-size:0.75em;color:#888;text-align:center;">This site uses a self-hosted, cookie-free analytics pixel to count page views. No personal data is collected or shared with third parties.</p>
|
||||
</footer>
|
||||
|
||||
<!-- Cloudflare Web Analytics --><script defer src='https://static.cloudflareinsights.com/beacon.min.js' data-cf-beacon='{"token": "d5f1e31cb9744c998a8f7d1303c6efef"}'></script><!-- End Cloudflare Web Analytics -->
|
||||
<script>
|
||||
(function(){
|
||||
var d=document,i=new Image();
|
||||
i.src="https://telemetry.theotherdude.net/px?p="+encodeURIComponent(location.pathname)
|
||||
+"&t="+encodeURIComponent(d.title)
|
||||
+"&r="+encodeURIComponent(d.referrer)
|
||||
+"&sw="+screen.width;
|
||||
})();
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -1541,8 +1541,17 @@ open http://localhost</code></pre>
|
||||
<a href="mailto:support@theotherdude.net">Support</a>
|
||||
</nav>
|
||||
</div>
|
||||
<p style="margin-top:12px;font-size:0.75em;color:#888;text-align:center;">This site uses a self-hosted, cookie-free analytics pixel to count page views. No personal data is collected or shared with third parties.</p>
|
||||
</footer>
|
||||
|
||||
<!-- Cloudflare Web Analytics --><script defer src='https://static.cloudflareinsights.com/beacon.min.js' data-cf-beacon='{"token": "d5f1e31cb9744c998a8f7d1303c6efef"}'></script><!-- End Cloudflare Web Analytics -->
|
||||
<script>
|
||||
(function(){
|
||||
var d=document,i=new Image();
|
||||
i.src="https://telemetry.theotherdude.net/px?p="+encodeURIComponent(location.pathname)
|
||||
+"&t="+encodeURIComponent(d.title)
|
||||
+"&r="+encodeURIComponent(d.referrer)
|
||||
+"&sw="+screen.width;
|
||||
})();
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -214,8 +214,17 @@
|
||||
<a href="mailto:license@theotherdude.net">Licensing</a>
|
||||
</nav>
|
||||
</div>
|
||||
<p style="margin-top:12px;font-size:0.75em;color:#888;text-align:center;">This site uses a self-hosted, cookie-free analytics pixel to count page views. No personal data is collected or shared with third parties.</p>
|
||||
</footer>
|
||||
|
||||
<!-- Cloudflare Web Analytics --><script defer src='https://static.cloudflareinsights.com/beacon.min.js' data-cf-beacon='{"token": "d5f1e31cb9744c998a8f7d1303c6efef"}'></script><!-- End Cloudflare Web Analytics -->
|
||||
<script>
|
||||
(function(){
|
||||
var d=document,i=new Image();
|
||||
i.src="https://telemetry.theotherdude.net/px?p="+encodeURIComponent(location.pathname)
|
||||
+"&t="+encodeURIComponent(d.title)
|
||||
+"&r="+encodeURIComponent(d.referrer)
|
||||
+"&sw="+screen.width;
|
||||
})();
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -187,8 +187,17 @@
|
||||
<a href="mailto:license@theotherdude.net">Licensing</a>
|
||||
</nav>
|
||||
</div>
|
||||
<p style="margin-top:12px;font-size:0.75em;color:#888;text-align:center;">This site uses a self-hosted, cookie-free analytics pixel to count page views. No personal data is collected or shared with third parties.</p>
|
||||
</footer>
|
||||
|
||||
<!-- Cloudflare Web Analytics --><script defer src='https://static.cloudflareinsights.com/beacon.min.js' data-cf-beacon='{"token": "d5f1e31cb9744c998a8f7d1303c6efef"}'></script><!-- End Cloudflare Web Analytics -->
|
||||
<script>
|
||||
(function(){
|
||||
var d=document,i=new Image();
|
||||
i.src="https://telemetry.theotherdude.net/px?p="+encodeURIComponent(location.pathname)
|
||||
+"&t="+encodeURIComponent(d.title)
|
||||
+"&r="+encodeURIComponent(d.referrer)
|
||||
+"&sw="+screen.width;
|
||||
})();
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -166,8 +166,17 @@
|
||||
<a href="mailto:support@theotherdude.net">Support</a>
|
||||
</nav>
|
||||
</div>
|
||||
<p style="margin-top:12px;font-size:0.75em;color:#888;text-align:center;">This site uses a self-hosted, cookie-free analytics pixel to count page views. No personal data is collected or shared with third parties.</p>
|
||||
</footer>
|
||||
|
||||
<script defer src='https://static.cloudflareinsights.com/beacon.min.js' data-cf-beacon='{"token": "d5f1e31cb9744c998a8f7d1303c6efef"}'></script>
|
||||
<script>
|
||||
(function(){
|
||||
var d=document,i=new Image();
|
||||
i.src="https://telemetry.theotherdude.net/px?p="+encodeURIComponent(location.pathname)
|
||||
+"&t="+encodeURIComponent(d.title)
|
||||
+"&r="+encodeURIComponent(d.referrer)
|
||||
+"&sw="+screen.width;
|
||||
})();
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -189,8 +189,17 @@
|
||||
<a href="mailto:license@theotherdude.net">Licensing</a>
|
||||
</nav>
|
||||
</div>
|
||||
<p style="margin-top:12px;font-size:0.75em;color:#888;text-align:center;">This site uses a self-hosted, cookie-free analytics pixel to count page views. No personal data is collected or shared with third parties.</p>
|
||||
</footer>
|
||||
|
||||
<!-- Cloudflare Web Analytics --><script defer src='https://static.cloudflareinsights.com/beacon.min.js' data-cf-beacon='{"token": "d5f1e31cb9744c998a8f7d1303c6efef"}'></script><!-- End Cloudflare Web Analytics -->
|
||||
<script>
|
||||
(function(){
|
||||
var d=document,i=new Image();
|
||||
i.src="https://telemetry.theotherdude.net/px?p="+encodeURIComponent(location.pathname)
|
||||
+"&t="+encodeURIComponent(d.title)
|
||||
+"&r="+encodeURIComponent(d.referrer)
|
||||
+"&sw="+screen.width;
|
||||
})();
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -198,8 +198,17 @@
|
||||
<a href="mailto:license@theotherdude.net">Licensing</a>
|
||||
</nav>
|
||||
</div>
|
||||
<p style="margin-top:12px;font-size:0.75em;color:#888;text-align:center;">This site uses a self-hosted, cookie-free analytics pixel to count page views. No personal data is collected or shared with third parties.</p>
|
||||
</footer>
|
||||
|
||||
<!-- Cloudflare Web Analytics --><script defer src='https://static.cloudflareinsights.com/beacon.min.js' data-cf-beacon='{"token": "d5f1e31cb9744c998a8f7d1303c6efef"}'></script><!-- End Cloudflare Web Analytics -->
|
||||
<script>
|
||||
(function(){
|
||||
var d=document,i=new Image();
|
||||
i.src="https://telemetry.theotherdude.net/px?p="+encodeURIComponent(location.pathname)
|
||||
+"&t="+encodeURIComponent(d.title)
|
||||
+"&r="+encodeURIComponent(d.referrer)
|
||||
+"&sw="+screen.width;
|
||||
})();
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -422,6 +422,7 @@
|
||||
<a href="mailto:license@theotherdude.net">Licensing</a>
|
||||
<a href="mailto:support@theotherdude.net">Support</a>
|
||||
</nav>
|
||||
<p style="margin-top:12px;font-size:0.75em;color:#888;text-align:center;">This site uses a self-hosted, cookie-free analytics pixel to count page views. No personal data is collected or shared with third parties.</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
@@ -433,7 +434,6 @@
|
||||
</div>
|
||||
|
||||
<script src="script.js"></script>
|
||||
<!-- Cloudflare Web Analytics --><script defer src='https://static.cloudflareinsights.com/beacon.min.js' data-cf-beacon='{"token": "d5f1e31cb9744c998a8f7d1303c6efef"}'></script><!-- End Cloudflare Web Analytics -->
|
||||
<script>
|
||||
(function() {
|
||||
var lb = document.getElementById('lightbox');
|
||||
@@ -478,5 +478,14 @@
|
||||
});
|
||||
})();
|
||||
</script>
|
||||
<script>
|
||||
(function(){
|
||||
var d=document,i=new Image();
|
||||
i.src="https://telemetry.theotherdude.net/px?p="+encodeURIComponent(location.pathname)
|
||||
+"&t="+encodeURIComponent(d.title)
|
||||
+"&r="+encodeURIComponent(d.referrer)
|
||||
+"&sw="+screen.width;
|
||||
})();
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
Reference in New Issue
Block a user