{"id":50704117,"url":"https://github.com/happygream/hexblock","last_synced_at":"2026-06-09T10:30:32.852Z","repository":{"id":362055852,"uuid":"1245540181","full_name":"happygream/hexblock","owner":"happygream","description":"Self-hosted privacy gateway — DNS filtering and WireGuard VPN","archived":false,"fork":false,"pushed_at":"2026-06-02T10:50:48.000Z","size":140,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-02T12:24:52.112Z","etag":null,"topics":["ad-blocker","dns","docker","pihole-alternative","privacy","raspberry-pi","self-hosted","wireguard"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/happygream.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":"ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-21T10:11:35.000Z","updated_at":"2026-06-02T10:50:51.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/happygream/hexblock","commit_stats":null,"previous_names":["happygream/hexblock"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/happygream/hexblock","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/happygream%2Fhexblock","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/happygream%2Fhexblock/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/happygream%2Fhexblock/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/happygream%2Fhexblock/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/happygream","download_url":"https://codeload.github.com/happygream/hexblock/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/happygream%2Fhexblock/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34103355,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-09T02:00:06.510Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ad-blocker","dns","docker","pihole-alternative","privacy","raspberry-pi","self-hosted","wireguard"],"created_at":"2026-06-09T10:30:30.318Z","updated_at":"2026-06-09T10:30:32.843Z","avatar_url":"https://github.com/happygream.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# HexBlock\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"banner.svg\" alt=\"HexBlock — Self-Hosted Privacy Gateway\" width=\"900\"/\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/version-1.1.0-00e8c0?style=flat-square\" alt=\"Version\"/\u003e\n  \u003cimg src=\"https://img.shields.io/badge/license-MIT-3d5a72?style=flat-square\" alt=\"MIT\"/\u003e\n  \u003cimg src=\"https://img.shields.io/badge/platform-Raspberry%20Pi%20%7C%20Linux-00e8c0?style=flat-square\" alt=\"Platform\"/\u003e\n  \u003cimg src=\"https://img.shields.io/badge/docker-compose-3d5a72?style=flat-square\" alt=\"Docker\"/\u003e\n\u003c/p\u003e\n\n\u003cbr/\u003e\n\nHexBlock is a free, self-hosted privacy gateway. **DNS filtering** blocks ads and trackers on every device on your network without installing anything on them. **WireGuard VPN** encrypts all traffic in transit. One command to install.\n\n## Features\n\n- **DNS filtering** — 500k+ domains blocked by default. Hagezi Ultimate, EasyList, Pi-hole lists and more. Auto-updates daily. No manual maintenance.\n- **Custom allow \u0026 deny rules** — per-domain rules that override all blocklists. Applied instantly, no restart required.\n- **Live query log** — every DNS query in real time with device attribution. Filter by allowed or blocked. Search by domain. 7-day rolling retention.\n- **WireGuard VPN** — automatic key generation, per-device QR code onboarding. Traffic encrypted and filtered everywhere — at home and away. Works on any device.\n- **Tailscale support** — works on mobile data including CGNAT carriers (Three, O2 etc). Install Tailscale on your device, set HexBlock as your exit node.\n- **HexBlock Watch** — ad-free YouTube at hexblock.co.uk/watch. No install, no account. SponsorBlock built in. Works on every device.\n- **HexBlock Shield** — browser extension for Chrome, Firefox, and Edge. Blocks inline ads DNS can't reach. YouTube pre-roll/mid-roll skipping, SponsorBlock integration, Twitch ad hide \u0026 mute.\n- **Security hardened** — Argon2id password hashing, brute-force lockout, CSRF protection, optional TOTP 2FA, full admin audit log.\n- **Proxy ready** — Traefik, Caddy, Nginx, or Cloudflare Tunnel. Setup script writes all config files.\n- **Runs on a Raspberry Pi** — 200 MB RAM at idle, 5 watts 24/7. No cloud, no subscription, no phoning home.\n\n## Requirements\n\n- Any Linux server or Raspberry Pi (64-bit OS)\n- Docker and Docker Compose\n- 512 MB RAM minimum (200 MB at idle)\n\n## Install\n\nOne command:\n\n```bash\nsudo bash \u003c(curl -fsSL hexblock.co.uk/install.sh)\n```\n\nThe interactive setup script asks five questions and writes every config file. Pick your deployment mode and it handles the rest.\n\n## Deployment modes\n\n| Mode | Description |\n|------|-------------|\n| **Home network** | No domain needed. Script sets a static IP and local hostname automatically. |\n| **Cloudflare Tunnel** | Recommended. Zero open ports. Cloudflare handles SSL. Works behind CG-NAT. |\n| **Caddy** | Auto-fetches and renews SSL certificates. Zero certificate configuration. |\n| **Nginx** | Script generates your config and prints exact commands. Certbot included. |\n\n## Connecting devices\n\n### Tailscale (recommended — works everywhere including mobile data)\n\nTailscale works on all networks including CGNAT mobile carriers that block inbound connections.\n\n1. Install Tailscale on HexBlock: `curl -fsSL https://tailscale.com/install.sh | sh \u0026\u0026 sudo tailscale up --advertise-exit-node`\n2. In the [Tailscale admin panel](https://login.tailscale.com/admin/machines), enable HexBlock as an exit node\n3. Install Tailscale on your device ([Android](https://tailscale.com/download/android) / [iPhone](https://tailscale.com/download/ios) / [Windows](https://tailscale.com/download/windows))\n4. Sign in with the same account → tap hexblock → Use as exit node\n\n### WireGuard (WiFi networks with port forwarding)\n\n1. Forward port 41820 UDP on your router to your HexBlock server IP\n2. In the HexBlock dashboard → VPN / WireGuard → enter a device name → Generate Config\n3. Scan the QR code with the [WireGuard app](https://www.wireguard.com/install/)\n\n\u003e **Note:** WireGuard requires a real public IP and open port. It does not work on mobile data with CGNAT carriers (Three, O2 etc). Use Tailscale for mobile.\n\n## HexBlock Shield\n\nBrowser extension companion for HexBlock. Blocks ads that DNS filtering can't reach — YouTube inline ads, Twitch pre-roll, ad trackers inside the browser.\n\n- [Chrome Web Store](https://chromewebstore.google.com/detail/hexblock-shield/bmjflnnopehafhmelobgbjeobdhokifj)\n- [GitHub — hexblock-shield](https://github.com/happygream/hexblock-shield)\n\n## Stack\n\n- **Backend** — Python / Flask, SQLite, Docker Compose\n- **DNS** — dnsmasq\n- **VPN** — WireGuard (linuxserver/wireguard)\n- **Proxy** — Traefik / Caddy / Nginx / Cloudflare Tunnel\n- **Frontend** — Vanilla JS, Space Grotesk, JetBrains Mono\n\n## Updating\n\n```bash\nsudo bash /opt/hexblock/update.sh\n```\n\n## Licence\n\nMIT — free forever. No subscription, no cloud, no phoning home.\n\n---\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://hexblock.co.uk\"\u003ehexblock.co.uk\u003c/a\u003e \u0026nbsp;\u0026middot;\u0026nbsp;\n  \u003ca href=\"https://github.com/happygream/hexblock-shield\"\u003eHexBlock Shield\u003c/a\u003e \u0026nbsp;\u0026middot;\u0026nbsp;\n  \u003ca href=\"https://github.com/happygream/hexblock/blob/main/SECURITY.md\"\u003eSecurity\u003c/a\u003e\n\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhappygream%2Fhexblock","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhappygream%2Fhexblock","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhappygream%2Fhexblock/lists"}