- Blacklisted scanners
- 940
- Packets dropped · 24h
- 11,618
- On router blocklist
- 3,693
- DE — 3,590 hits
- CA — 2,237 hits
- BG — 1,741 hits
- US — 860 hits
Infrastructure
I maintain a homelab to support decentralized networks, personal infrastructure, and continuous learning. Below is the real-time status of my public services.
Live · injected at serve time · 11:35 UTC+2
Everything described here runs on hardware I own and pay for, on a domestic fibre line in Valencia, Spain — not on a managed platform. The router is a MikroTik RB5009 terminating the ISP link over PPPoE with a delegated IPv6 prefix; the services sit behind it on mini PCs and a NAS, with two VPS for the parts that need to be reachable when the house is not.
The self-hosted services include a Mastodon instance, a Matrix homeserver, an AT Protocol PDS, file sync, media streaming and monitoring. Four Tor nodes run alongside them: two bridges speaking obfs4 and WebTunnel, one in Valencia and one in Alicante, and two middle relays on IONOS VPS instances, one in London and one in Madrid.
Security is one pipeline rather than a set of unrelated rules. A honeypot on the router turns a scanner's first packet into an address-list entry, nginx tarpits and pattern matches on the web tier, both feed CrowdSec, and CrowdSec drives bouncers back on the router and the reverse proxy. The counters above report what that pipeline is stopping. The figures are injected into this page by the edge server itself as it responds — no JavaScript involved — so every reader and every crawler sees the same numbers, stamped with the time they were captured.
3 / 4
services online
6,872
active connections
275,411
requests · 24h
↑ 93 GB↓ 138 GB
WAN traffic · 24h
Edge Defense
router + nginxCrowdSec acts as a WAF: it analyses NGINX patterns and, together with the router honeypot, decides which IPs to block. Decisions fan out to every bouncer: NGINX, the server's firewall and the router via my cs-RouterOS-bouncer.
MikroTik honeypot + NGINX patterns → CrowdSec · WAF → bouncers (NGINX / firewall / router)
A decentralized social network server. Part of the Fediverse.
Secure, decentralized communication. My Server: matrix.jmrp.io
My self-hosted Personal Data Server on the AT Protocol network — the identity and data behind @jmrp.io on Bluesky.
Model Context Protocol servers I run and expose publicly, so an AI client can call them over HTTP without installing anything.
mcp.jmrp.io/gitlab mcp.jmrp.io/libgen Pluggable transport bridge helping censored users access the Tor network from Valencia. Running obfs4 and WebTunnel.
Connections (24h)
Pluggable transport bridge helping censored users access the Tor network from Alicante. Running obfs4 and WebTunnel.
Connections (24h)
Middle relay forwarding encrypted traffic within the Tor network from United Kingdom.
Peers (24h)
Middle relay forwarding encrypted traffic within the Tor network from Madrid.
Peers (24h)
Reverse proxy · firewall
Synapse
Fediverse instance
ZFS storage
MikroTik · CrowdSec
A TrueNAS server (i5-14400, 64 GB, ZFS on 2× 18 TB plus NVMe), a Mastodon node (Ryzen 5 3550H, 64 GB), the nginx edge node that serves this site (Ryzen 5 5500U), a Home Assistant node, a MikroTik RB5009 router, two Tor bridges in Valencia and Alicante and two Tor relays on VPS in London and Madrid. On them: a Mastodon instance, a Matrix homeserver, a Bluesky PDS and the public MCP servers.
Yes. The page is static HTML with no JavaScript; nginx replaces each figure at serve time from the homelab's own metrics (InfluxDB, Prometheus and the services' APIs), refreshed at most once a minute. When a source cannot be read, the figure shows a dash rather than a number.
CrowdSec analyses nginx traffic and, together with a honeypot on the router, decides which addresses to block; the decisions reach three bouncers: nginx, the server's firewall and the router through cs-routeros-bouncer. Probes for sensitive paths land in a tarpit that slows them down instead of answering.