Blocky: Difference between revisions

From NixOS Wiki
Mirquee (talk | contribs)
Additional nesting fot `ports` section, according to the doc https://0xerr0r.github.io/blocky/v0.23/configuration/#ports-configuration
Pascal (talk | contribs)
m Update to current blocky config format
 
(3 intermediate revisions by 3 users not shown)
Line 4: Line 4:


== Configuration Examples ==
== Configuration Examples ==
<syntaxhighlight lang="nix">
<syntaxHighlight lang=nix>
services.blocky = {
services.blocky = {
     enable = true;
     enable = true;
     settings = {
     settings = {
       ports.dns = 53; # Port for incoming DNS Queries.
       ports.dns = 53; # Port for incoming DNS Queries.
       upstreams.groups.default = [ # You can define as many upstream groups as you want.
       upstreams.groups.default = [
         "https://one.one.one.one/dns-query" # Using Cloudflare's DNS over HTTPS server for resolving queries.
         "https://one.one.one.one/dns-query" # Using Cloudflare's DNS over HTTPS server for resolving queries.
       ];
       ];
Line 17: Line 17:
         ips = [ "1.1.1.1" "1.0.0.1" ];
         ips = [ "1.1.1.1" "1.0.0.1" ];
       };
       };
       #Enable Blocking of certian domains.
       #Enable Blocking of certain domains.
       blocking = {
       blocking = {
         blackLists = {
         denylists = {
           #Adblocking
           #Adblocking
           ads = ["https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts"];
           ads = ["https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts"];
Line 25: Line 25:
           adult = ["https://blocklistproject.github.io/Lists/porn.txt"];
           adult = ["https://blocklistproject.github.io/Lists/porn.txt"];
           #You can add additional categories
           #You can add additional categories
      };
        };
      #Configure what block categories are used
        #Configure what block categories are used
      clientGroupsBlock = {
        clientGroupsBlock = {
        default = [ "ads" ];
          default = [ "ads" ];
        kids-ipad = ["ads" "adult"];
          kids-ipad = ["ads" "adult"];
        };
       };
       };
     };
     };
   };
   };
</syntaxhighlight>
</syntaxHighlight>
 


== Adding Additional Functionality ==
== Adding Additional Functionality ==
Line 46: Line 46:
};
};
</syntaxHighlight>
</syntaxHighlight>
[[Category:Server]]
[[Category:Cookbook]]

Latest revision as of 16:39, 12 September 2024

Blocky is a DNS proxy and ad-blocker for the local network written in Go. It provides network wide adblocking similar to Pi-hole while offering additional features (and it's in nixpkgs).


Configuration Examples

services.blocky = {
    enable = true;
    settings = {
      ports.dns = 53; # Port for incoming DNS Queries.
      upstreams.groups.default = [
        "https://one.one.one.one/dns-query" # Using Cloudflare's DNS over HTTPS server for resolving queries.
      ];
      # For initially solving DoH/DoT Requests when no system Resolver is available.
      bootstrapDns = {
        upstream = "https://one.one.one.one/dns-query";
        ips = [ "1.1.1.1" "1.0.0.1" ];
      };
      #Enable Blocking of certain domains.
      blocking = {
        denylists = {
          #Adblocking
          ads = ["https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts"];
          #Another filter for blocking adult sites
          adult = ["https://blocklistproject.github.io/Lists/porn.txt"];
          #You can add additional categories
        };
        #Configure what block categories are used
        clientGroupsBlock = {
          default = [ "ads" ];
          kids-ipad = ["ads" "adult"];
        };
      };
    };
  };

Adding Additional Functionality

To add a cache of DNS Requests and Prefetching add:

caching = {
  minTime = "5m";
  maxTime = "30m"
  prefetching = true;
};