README 未给出具体启动命令与端口,需查阅官方文档的安装章节;配置文件为 YAML 格式,需自行准备;外部拦截列表需另行配置并会定期重载
blocky
0xERR0RApache-2.0活跃维护用 Go 写的轻量级 DNS 代理,在局域网层面拦截广告和恶意域名,支持 DoH、家长控制等规则,可自建替代 Pi-hole。
Fast and lightweight DNS proxy as ad-blocker for local network with many features
docker pull spx01/blockyREADME 未说明显存等硬件要求;支持 x86-64、ARM、MIPS 架构,可在树莓派和 OpenWrt 路由器上运行。
用 Go 写的轻量 DNS 代理兼广告拦截器,给局域网做去广告和自定义解析
用 Go 写的轻量级 DNS 代理,在局域网层面拦截广告和恶意域名,支持 DoH、家长控制等规则,可自建替代 Pi-hole。
核心能力
- 按客户端组配置允许/拒绝列表并定期重载
- 深度检查响应 CNAME 与响应 IP 进行拦截
- 支持 DoH、DoT、DoQ、DoH3 等现代 DNS 协议
- 缓存与预取常用查询,可并行使用多个上游解析器
- 输出 Prometheus 指标、CSV 或数据库查询日志与 REST API
容易踩的坑
- v0.35.0最新正式版2026-09-05 · 2026-09-05 16:55 UTC
Changelog
Features
- 7dd039c90d2fad74e5b01cf363d765bd4f4e38ec: feat(resolver): add blocky_client_response_total metric (#2222) (@jvandenbroek)
- 769d9089dbeeacc1e575622f930f0a5f71e4b33e: feat(resolver): add refused block type (#2239) (@ChrisJr404)
- 45a242ffce62c3e203f9a2c8a87fbb8ba106c7ab: feat: add MIPS64 architecture builds (#2253) (@0xERR0R)
Bug fixes
- 4cf62ce9087bca960c147be0148db28e3c424bab: fix(cmd): healthcheck follows ports.dns from the config (#2221) (@maximilize)
- a42d6566720389b7606887fb6500b1d6d5c853c7: fix(dnssec): don't return DNSSEC records to clients with the DO bit clear (#2203) (@kevinpark1217)
- a0cee0a07d02e8f2afba69c081d57722be41560e: fix(querylog): exclude sqlite on Solaris and illumos (#2242) (@drscream)
- 802869a578434813267d9faa681015bcdf4186e5: fix(resolver): Return SOA record with custom DNS NOERROR response (#2244) (@bb4242)
- 190d5125be36df3a4564c326a08214d4dbbbe8f7: fix(resolver): count down cached authority and additional TTLs (#2197) (@maximilize)
- 2e5d4781362bdc029509778d3d6015f555306d0e: fix(resolver): reply to NOTFQDN queries with a well-formed NXDOMAIN (#2250) (@0xERR0R)
- dcdd952ab5433ad900571c7f84e1d8269f731300: fix(resolver): restore fallbackUpstream for rewritten queries (#2223) (@maximilize)
- c46ed648642a065e41a5b14e9b5bc63bfeb51507: fix(resolver): retry DoH queries that fail on a stale pooled connection (#2251) (@0xERR0R)
- 344de8662e2580a5f29e6566a96413545d89bfbb: fix(resolver): scope allowlist-only mode to the whole client (#2249) (@0xERR0R)
- e2b40db357cc8c4108419af4023ed7ee1ff47452: fix(resolver): send the original name to the next resolver for rewritten queries (#2232) (@0xERR0R)
- ff2aae4437326519f5b13f0427b26c8a1596a15d: fix(server): always answer an EDNS0 query with an OPT record (#2240) (@jackboykin)
- db8d889b7bceda902ca10745966eb5e2bd50ba37: fix(server): compress responses larger than 512 bytes (#2213) (@0xERR0R)
- 78d5367151d626419eba0b0373eed3b3166f215d: fix: don't pass EDNS0 DNS Cookies through (#2252) (@0xERR0R)
Build and dependencies
- 5e7e84482c7dac20b8817a9745ec2a989d8af282: build(deps): bump actions/setup-python from 6 to 7 (#2182) (@dependabot[bot])
- 29d187ea2e3b5ecd75112e2a23182deb5ebf674e: build(deps): bump actions/stale from 10 to 11 (#2196) (@dependabot[bot])
- 938b83961b8d66c7c93401b62a9f8e3f66527a17: build(deps): bump docker/login-action from 4 to 4.5.2 (#2199) (@dependabot[bot])
- 554a41e937e180b3ae5a8da0fd07f5a00fdf51ea: build(deps): bump docker/login-action from 4.5.2 to 4.6.0 (#2206) (@dependabot[bot])
- 04dd5e27409b47a56f369dd4a75d29ba0d58d8a8: build(deps): bump github.com/go-chi/chi/v5 from 5.3.1 to 5.3.2 (#2234) (@dependabot[bot])
- 870b30e0ceec4cf9eceee8d25dd9847cf1059117: build(deps): bump github.com/miekg/dns from 1.1.72 to 1.1.73 (#2235) (@dependabot[bot])
- a9870d6373a4283e0a6bed5f528fbfc6c5980715: build(deps): bump github.com/moby/go-archive from 0.2.0 to 0.3.0 (#2229) (@dependabot[bot])
- cd984d5d61e4757b1704e20322759eef612d70fc: build(deps): bump github.com/oapi-codegen/runtime from 1.6.0 to 1.7.0 (#2230) (@dependabot[bot])
- 54bf28fc929f0e8eb8fbb39323405aaf1fac6757: build(deps): bump github.com/onsi/ginkgo/v2 from 2.32.0 to 2.32.1 (#2220) (@dependabot[bot])
- d3b0f1ca027979941442835846202e91ea84730c: build(deps): bump github.com/onsi/gomega from 1.42.1 to 1.43.0 (#2246) (@dependabot[bot])
- e33ab870a9b0a0b3611ac504711cee0703f4c501: build(deps): bump github.com/quic-go/quic-go from 0.61.0 to 0.62.0 (#2248) (@dependabot[bot])
- 253b912dfbbe5fecb4ad7b2b68022fff7541c265: build(deps): bump github.com/santhosh-tekuri/jsonschema/v6 from 6.0.2 to 6.0.3 (#2210) (@dependabot[bot])
- 4a3c1909356ffa8720d8629c74f1e4afeb5dcd10: build(deps): bump github.com/sirupsen/logrus from 1.10.0 to 1.10.2 (#2245) (@dependabot[bot])
- c5eb53308374d8486bcd938050927e9a5fb4f917: build(deps): bump github.com/sirupsen/logrus from 1.9.4 to 1.10.0 (#2225) (@dependabot[bot])
- 027badd17a70adfb056577d3edfa1a09ac355bc6: build(
- v0.34.02026-07-27 · 2026-07-27 20:37 UTC
查看更新说明
Changelog
Bug fixes
- 91a8f4437e983c840874aec4aded47fd90bd6ddf: fix(bootstrap): fall back to other resolved addresses when a dial fails (#2190) (@maximilize)
- 0a206718a007cde55582dac62683a75b8510f97c: fix(cache): set DO bit on prefetch reloads to keep DNSSEC-signed entry valid (#2158) (@logingood)
- d55cd4f50dc143d8eed4e72213e9c8a3369bca49: fix(docker): pre-create writable /app/cache and /logs owned by UID 100 (#2172) (@0xERR0R)
- dc958efd0b9624d3f029f6477a14a505eb633868: fix(lists): skip a lone "/" blocklist line instead of panicking (#2156) (@maximilize)
- 1d450af5e1240a2d069d1083eb80e7253077ac8c: fix(resolver): match custom DNS PTR queries case insensitively (#2191) (@maximilize)
- 472bac923de909ad8ec28f3f571baf30e66dcbd4: fix(stats): attribute filtered and non-FQDN queries to the client name (#2167) (@0xERR0R)
- c07bd555b0532a4a7c3459721fb2214de1ac6630: fix(stats): count only true blocks (BLOCKED) as blocked (#2161) (@maximilize)
- 84353421d78a2415077ba7b8fff45622737ad01c: fix(stats): give DNS rebinding protection its own REBIND response type (#2166) (@0xERR0R)
Build and dependencies
- c163c75e118852750d6ebeb8e0df91b2a299e6ba: build(deps): bump actions/setup-go from 6 to 7 (#2168) (@dependabot[bot])
- 958760dc47a5f3a1e0e93f5218553477eb07cf9a: build(deps): bump github.com/breml/rootcerts from 0.3.6 to 0.3.7 (#2181) (@dependabot[bot])
- d94652ffdce6af66a07cd8b9df168aa343fcffeb: build(deps): bump github.com/go-chi/chi/v5 from 5.3.0 to 5.3.1 (#2157) (@dependabot[bot])
- d784ac5c0486752ca196e9051c5441382e61c6f8: build(deps): bump github.com/jedib0t/go-pretty/v6 from 6.8.1 to 6.8.2 (#2154) (@dependabot[bot])
- 23575a47721dea7497ee9017274594b64c5fd1f5: build(deps): bump github.com/jedib0t/go-pretty/v6 from 6.8.2 to 6.8.3 (#2183) (@dependabot[bot])
- b1f8a7212c762de99fe762c4ce772a2c7c70343b: build(deps): bump github.com/oapi-codegen/runtime from 1.4.2 to 1.5.0 (#2164) (@dependabot[bot])
- 4fda662ed8878b6428ee8eb8638dfff7b7256698: build(deps): bump github.com/oapi-codegen/runtime from 1.5.0 to 1.6.0 (#2170) (@dependabot[bot])
- 7c8aeb445f8538fbbd0e7811ec0a9f3d4eb3d723: build(deps): bump github.com/pires/go-proxyproto from 0.12.0 to 0.13.0 (#2153) (@dependabot[bot])
- 77c115b68cf34d611cbee8fd06a899b5546b9832: build(deps): bump github.com/pires/go-proxyproto from 0.13.0 to 0.14.0 (#2155) (@dependabot[bot])
- 6154af24b363965d7114851735c6b6146db9371b: build(deps): bump github.com/pires/go-proxyproto from 0.14.0 to 0.15.0 (#2162) (@dependabot[bot])
- bd9e3ae6a971ef771df9815ffe10cde1cafaad67: build(deps): bump github.com/prometheus/client_golang from 1.23.2 to 1.24.0 (#2185) (@dependabot[bot])
- 6fd79dd9707469dca70f39f4a92a12e271d8a2c1: build(deps): bump github.com/prometheus/client_golang from 1.24.0 to 1.24.1 (#2193) (@dependabot[bot])
- 82777cad05100dbdecfbeec773f3a2d27a2cc1e1: build(deps): bump github.com/quic-go/quic-go from 0.60.0 to 0.61.0 (#2192) (@dependabot[bot])
- 59f0b0f6240db99083d09a97b7f2f00b92a4f43a: build(deps): bump golang.org/x/net from 0.56.0 to 0.57.0 (#2159) (@dependabot[bot])
- 288ff55e140b4b679cda58ec68dfdd3155d4c0ff: build(deps): bump oapi-codegen to 2.7.1 and kin-openapi to 0.144.0 (#2195) (@0xERR0R)
Misc
- 541860dd66ca9d04ca30605345841d4d6161c4f8: ci: automate sponsor list in README (#2173) (@0xERR0R)
- 493142d289d586179534ac5d10703f460402dc20: ci: build sponsor avatar URLs from the login to avoid HTML escaping (#2177) (@0xERR0R)
- d9e2827d40c32fb6c75f73113afa335ca079feb0: ci: fail the sponsors job instead of silently wiping the sponsor list (#2175) (@0xERR0R)
❤️ Support Blocky
Blocky is free and open source, developed in my spare time — no telemetry, no ads, no hidden filtering. If it's useful to you, please consider supporting its continued development:
GitHub Sponsors · thanks.dev · Liberapay · Ko-fi · [PayPa
- v0.33.02026-06-30 · 2026-06-30 08:22 UTC
查看更新说明
Changelog
Features
- 552eda5d7e8fd2de93efea4514f338fe468f7c70: feat(cli): add 'blocky stats' command (#2138) (@0xERR0R)
- e9deb53045412ddd02f065bc73e978bbecf5f653: feat(queryLog): add dnstap as a query log destination (#2144) (@rtmongold)
Bug fixes
- a191ad2000de2813820a0b4407f3588d4bba85dd: fix(dnssec): propagate Indeterminate (not Bogus) for unreachable chain of trust (#2120) (#2139) (@0xERR0R)
- 4b524e868c2dacb5d716d1f59a19cce9819c0a77: fix(ecs): apply useAsClient above cache and client-name lookup (#2140) (#2141) (@0xERR0R)
Build and dependencies
- afea4524d4b57147a58332463fabdf4c8afa7792: build(deps): bump github.com/breml/rootcerts from 0.3.5 to 0.3.6 (#2133) (@dependabot[bot])
- 247a3c13cbc49b6816d41fbbf982ef51ac9ec60f: build(deps): bump github.com/jedib0t/go-pretty/v6 from 6.6.7 to 6.8.1 (#2145) (@dependabot[bot])
- 2aa728de884404191fca6a930a5a1027e4cf6a72: build(deps): bump github.com/oapi-codegen/runtime from 1.4.1 to 1.4.2 (#2134) (@dependabot[bot])
- 3f3f7d95316a157dc2b75ae9c6943f8c23b84480: build(deps): bump github.com/onsi/ginkgo/v2 from 2.31.0 to 2.32.0 (#2135) (@dependabot[bot])
- 2d0e6f2855d0dc0c3fc8fb77c84f967ea3c04d81: build(deps): bump github.com/onsi/gomega from 1.42.0 to 1.42.1 (#2137) (@dependabot[bot])
- 61d9a980c4f0bed024cac65c1d2b039fb99ff67f: build(deps): bump github.com/testcontainers/testcontainers-go/modules/mariadb from 0.42.0 to 0.43.0 (#2131) (@dependabot[bot])
- cf865a6b61d014dd380cbb50f8cf574a3ec65fe4: build(deps): bump github.com/testcontainers/testcontainers-go/modules/postgres from 0.42.0 to 0.43.0 (#2130) (@dependabot[bot])
- e3c30dc4fce4699fde75a5dea993fa97f05d1d95: build(deps): bump github.com/testcontainers/testcontainers-go/modules/redis from 0.42.0 to 0.43.0 (#2129) (@dependabot[bot])
- a58f1c8f809859309fabffef4d532523d6c8201b: build(deps): bump google.golang.org/protobuf from 1.36.10 to 1.36.11 (#2148) (@dependabot[bot])
- 6df83cd99367d87ddf8046907f1a1c60194fd529: build(deps): bump gorm.io/gorm from 1.31.1 to 1.31.2 (#2147) (@dependabot[bot])
Misc
- 6da7ce121c5abea2345d31b8f9b20990e9adbccb: perf(blocking): Tier 2 — lock-free grouped cache, cheapest-first lookup, client-name indexing (#2146) (@0xERR0R)
- 302ca65668f3b3535ddaf2cf0f4236d7f6973f2a: perf(log): cut per-request logger allocations on the resolver hot path (#2142) (@0xERR0R)
- 223df0c74247214b4fc70df57b1c9a31d7e45ed8: perf(queryLog): skip per-request LogEntry build when off or ignored (#2149) (@0xERR0R)
- b73422e8198c4d9c87f074aed489c59d48ad42df: perf(resolver): allocation-free resolver selection in ParallelBestResolver (#2150) (@0xERR0R)
❤️ Support Blocky
Blocky is free and open source, developed in my spare time — no telemetry, no ads, no hidden filtering. If it's useful to you, please consider supporting its continued development:
GitHub Sponsors · thanks.dev · Liberapay · Ko-fi · PayPal
Thank you to everyone supporting Blocky! 🙏
- v0.32.12026-06-20 · 2026-06-20 08:37 UTC
查看更新说明
Changelog
Bug fixes
- d3a1fe57d5ee70b3c573f2bcade0556957f0a028: fix(dnssec): don't cache transient Indeterminate validation results (#2120) (#2127) (@0xERR0R)
- fc353a009230735e20888e08e373ad88f4bc15bb: fix(dnssec): only validate public-upstream answers (#2126) (#2128) (@0xERR0R)
- 53cfbda3399b256527394ef837ce15a6b2007034: fix(querylog): add loong64 to unsupported list (#2123) (@rtmongold)
Build and dependencies
- cad2480c4ede15165ddfc034cf5cdf3091f1672d: build(deps): bump actions/checkout from 6 to 7 (#2124) (@dependabot[bot])
- 6ff7db7b61202c4e3a7053e67db052f821b4a2b8: build(deps): bump github.com/moby/moby/api from 1.54.2 to 1.55.0 (#2125) (@dependabot[bot])
❤️ Support Blocky
Blocky is free and open source, developed in my spare time — no telemetry, no ads, no hidden filtering. If it's useful to you, please consider supporting its continued development:
GitHub Sponsors · thanks.dev · Liberapay · Ko-fi · PayPal
Thank you to everyone supporting Blocky! 🙏
- v0.32.02026-06-16 · 2026-06-16 14:36 UTC
查看更新说明
Changelog
Features
- c851293904f8a7f941e09448b1f0fe5b4a935994: feat(blocking): log the matched rule in the block reason (#2091) (@0xERR0R)
- 87be127f9e58df90f59b2a4f7782426722df5c17: feat(cache): Shard the result cache to remove the single-lock read ceiling (#2097) (@0xERR0R)
- 7c6da156e8fe22446e4bbe0d80b609fef3c51dea: feat(config): structurally merge config folder files (#1827) (#2112) (@0xERR0R)
- e7958e0dc14322583ea7e32edcea44f2aeb487c1: feat(lists): opt-in on-disk download cache with conditional revalidation (#2087) (@0xERR0R)
- b82199b64a8429f185fa04c1a7b750c86ddca245: feat(querylog): ignore domains (exact/wildcard/regex) in query log (#2084) (@0xERR0R)
- bee2d8bb87d1f5f5013b1a526d29ef813834e5a1: feat(resolver): UDP-first plain-DNS upstream and EDNS0 buffer floor (#2100) (@0xERR0R)
- 0b70e5cfd2838325d53e9d8ac9ee69248eb1fb1a: feat(resolver): add DNS rebinding protection (#2111) (@0xERR0R)
- 1b8e08a6f93c9f4b618d092067a49a06cefb9824: feat(resolver): pool DoT connections and enable TLS session resumption (#2098) (@0xERR0R)
- 4018d9e5da51215d183310e24be0e81e9ab1035f: feat: in-memory statistics subsystem with /api/stats REST endpoint (#2093) (@0xERR0R)
- 7abca446a597103b122e9894c176e4468b81b958: feat: support PROXY protocol on proxied DoT/DoH listeners (#2094) (@kastakhov)
Bug fixes
- 2496d12559f344fe0e49fd069b324d1ec3c4da7d: fix(dnssec): close DNSSEC validation bypass & cache-scope pollution (GHSA-x845-2f78-7v36) (#2119) (@0xERR0R)
- 06555e04de1fa4063d05fe0520e38f7af325dcd5: fix(metrics): bound reason label cardinality for blocked responses (#2114) (@0xERR0R)
- e0ea9b3ea56e3d074569abd3010251e7c6ebd593: fix(resolver): eliminate recursive RLock deadlock in blocking group resolution (#2106) (@0xERR0R)
- 80f742e6f0d9612d494f065f8202e61a5c7b4c97: fix(server): answer browser CORS preflights for custom headers and Private Network Access (#2109) (@0xERR0R)
- 9702c8fbd0b8f9356e0e0879ffc495f2944668b8: fix(stats): populate allow/denylist counts in /api/stats at startup (#2113) (@0xERR0R)
Build and dependencies
- 821e378131b78398a62f81c6dbf788dfd5d9a379: build(deps): bump codecov/codecov-action from 6 to 7 (#2089) (@dependabot[bot])
- d63f84b37aa234e8e80390c09b2e45e9e4a14a89: build(deps): bump github.com/0xERR0R/expiration-cache from 0.1.0 to 0.2.0 (#2095) (@dependabot[bot])
- 81f2b2a523ab0dc2f84fa2a50dd7161ebc82292d: build(deps): bump github.com/onsi/ginkgo/v2 from 2.29.0 to 2.30.0 (#2108) (@dependabot[bot])
- 9c5abdfcb2bf7b27d8c6bf9c55e3092ef170de1b: build(deps): bump github.com/onsi/ginkgo/v2 from 2.30.0 to 2.31.0 (#2116) (@dependabot[bot])
- 6c0ec5f604a8e4b4c6cfe305c881cf226eb3ddaf: build(deps): bump github.com/onsi/gomega from 1.41.0 to 1.42.0 (#2115) (@dependabot[bot])
- 4beb9fed8373ddd0ab4d0567c17ee5f1195adcfe: build(deps): bump github.com/quic-go/quic-go from 0.59.1 to 0.60.0 (#2090) (@dependabot[bot])
- 8fe22023516e25a57d6aacf23f60f4c7e6e4de80: build(deps): bump golang.org/x/net from 0.55.0 to 0.56.0 (#2101) (@dependabot[bot])
- 52fa6a4863aa40ad09bd95817d2bac018f671476: build(deps): bump golang.org/x/sys from 0.45.0 to 0.46.0 (#2096) (@dependabot[bot])
Misc
- 1c9f717c9d2fad94e01accd28466f1d09b067b8b: ci(e2e): speed up e2e job via Ginkgo proc oversubscription (#2085) (@0xERR0R)
- 8d49922a9afad384f070cf50b2194e792b3282b4: ci: cross-compile multi-arch docker image instead of QEMU emulation (#2081) (@0xERR0R)
- 355a9a177ae6d462d74c78766af61e0460fd821a: docs(grafana): redesign Grafana dashboard and update integration guide (#2110) (@0xERR0R)
- c791e8057e199b318e8062f1924bbb35c01deb7e: perf(e2e): probe blocky healthcheck at 250ms during start period (#2086) (@0xERR0R)
- a0fb375df96631c0889c69b2e29b32518845e775: perf(lists): speed up blocklist loading (cache build + parsing) (#2083) (@0xERR0R)
- 316b073dfe33944f46863d001206a5d489e3d6d5: perf(resolver): pre-classify client groups to cut per-query allocations (#2103) (@0xERR0R)
- d5028066c9af5b09cff89455e2d87fae7c7323ed: perf(server): l
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
Blocky
Blocky is a DNS proxy and ad-blocker for the local network written in Go with following features:
Features
-
Blocking - Blocking of DNS queries with external lists (Ad-block, malware) and allowlisting
- Definition of allow/denylists per client group (Kids, Smart home devices, etc.)
- Periodical reload of external allow/denylists
- Regex support
- Blocking of request domain, response CNAME (deep CNAME inspection) and response IP addresses (against IP lists)
-
Advanced DNS configuration - not just an ad-blocker
- Custom DNS resolution for certain domain names
- Conditional forwarding to external DNS server
- Upstream resolvers can be defined per client group
-
Performance - Improves speed and performance in your network
- Customizable caching of DNS answers for queries -> improves DNS resolution speed and reduces amount of external DNS queries
- Prefetching and caching of often used queries
- Using multiple external resolver simultaneously
- Low memory footprint
-
Various Protocols - Supports modern DNS protocols
- DNS over UDP and TCP
- DNS over HTTPS (aka DoH)
- DNS over TLS (aka DoT)
- DNS over QUIC (aka DoQ, RFC 9250)
- DNS over HTTPS/3 (aka DoH3, RFC 9114)
-
Security and Privacy - Secure communication
- Supports modern DNS extensions: DNSSEC, eDNS, ...
- DNSSEC validation of upstream resolvers
- Free configurable blocking lists - no hidden filtering etc.
- Provides DoH Endpoint
- Uses random upstream resolvers from the configuration - increases your privacy through the distribution of your DNS traffic over multiple provider
- Blocky does NOT collect any user data, telemetry, statistics etc.
-
Integration - various integration
- Prometheus metrics
- Prepared Grafana dashboards (Prometheus and database)
- Logging of DNS queries per day / per client in CSV format or MySQL/MariaDB/PostgreSQL/Timescale database - easy to analyze
- Various REST API endpoints
- CLI tool
-
Simple configuration - single or multiple configuration files in YAML format
- Simple to maintain
- Simple to backup
-
Simple installation/configuration - blocky was designed for simple installation
- Stateless (no database, no temporary files)
- Docker image with Multi-arch support
- Single binary
- Supports x86-64, ARM, and MIPS architectures -> runs fine on Raspberry PI and OpenWrt routers
- Community supported Helm chart for k8s deployment
❤️ Support Blocky
Blocky is free, open source, and built entirely in my spare time — with no telemetry, no data collection, and no hidden filtering. It keeps the DNS for thousands of home networks, homelabs, and businesses clean and private, and it always will.
Maintaining a project this size — fixing bugs, reviewing pull requests, shipping new features, and keeping up with security — takes a lot of time. Thousands of people run Blocky; only a handful support it. If Blocky is useful to you, please consider chipping in. Your support directly funds ongoing development and helps keep Blocky independent and ad-free, forever.
Even a small recurring contribution makes a real difference and is hugely appreciated. 🙏
🥇 Gold sponsors
Sponsors
Thank you to everyone who supports Blocky! ❤️
Quick start
You can jump to Installation chapter in the documentation.
Full documentation
You can find full documentation and configuration examples at: https://0xERR0R.github.io/blocky/
Contribution
Issues, feature suggestions and pull requests are welcome!