Skip to content

Background? A bit more info? #1

Open

Description

@codefaux

First, I have to say, I haven't done extensive vetting but this project looks amazing.

Honestly, a little too amazing. This seems to have come from nowhere, two weeks ago.

From what I see, this is a lot of what I need. I'm just a little nervous given the current landscape of the internet.

The sole thing which would fit this system into my network better would be supported loading and auto-reloading of external files, IE, I manage three DNS zones via zone file (loaded via CoreDNS 'auto' plugin, or 'file' plugin) created dynamically based on running containers.

It's a weird ask, but would you mind disclosing a bit about your background and how this came to be? What's your use of AI in the codebase? Does this deployment operate fully locally, or is there a cloud/telemetry/etc?

Activity

  1. derek-diaz commented on Aug 7, 2026

    @derek-diaz
    Owner

    Completely valid to be skeptical! 😅

    I basically created Faro for my own homelab. I got tired of dealing with issues with Pi-hole and AdGuard Home, and I also got tired of relatives wanting ad blocking on their networks but finding the existing tools too hard to use. I figured I'd release it publicly in case anyone else found it useful.

    Faro is 100% local, with zero telemetry, and I have no plans to ever add any. I'm actually trying to move more of what I run at home toward being completely cloud-free, so it would be pretty hypocritical for me to do otherwise.

    As for my background, I've been in the software industry for over 18 years and I'm currently a Tech Lead at a robotics company. We build software for warehouse automation, so I spend most of my time working with Kubernetes, IoT, distributed systems, robots, and some hilariously old industrial software. Basically real life "Factorio" 😆. A big part of our job is taking incredibly complex systems and making them approachable for operators by hiding as much complexity as possible. That philosophy naturally carried over into Faro.

    As for the AI question, I'll be completely transparent. Yep, AI was used extensively while building Faro. I use GPT-5.6 Luna as a coding partner because I prefer working in small, reviewable chunks. It lets me understand every change, review the implementation, test it, refactor it, and make sure everything behaves the way I expect before moving on.

    I completely understand why people are skeptical of AI-generated code. For me, Faro wasn't an experiment to see how much code AI could write. It was simply a tool that helped me build something I genuinely wanted to run on my own network. If I wasn't comfortable trusting it myself, I wouldn't expect anyone else to.

    Regarding the external zone files, that's actually a really interesting idea. Right now Faro owns the generated CoreDNS configuration, but I can definitely see the value in supporting externally managed zones through CoreDNS's file or auto plugins. I'll keep this issue open as a feature request and give it some thought. 👍

  2. codefaux commented on Aug 7, 2026

    @codefaux
    Author

    Thank you for taking the time to be so thorough with your answer, especially regarding the use of AI.

    I also appreciate the fully local design. There's just way too much invasive software out there. Thank you.

    I must say, I can relate to the background re: pihole, adguard, etm -- I've been using CoreDNS as a sole solution for a while. I really like the look of Faro, and I'm probably going to move things over - especially if you're willing to (continue to, lol) answer a few questions regarding implementation. I appreciate that you've got a deep background, it comes across well in the quality of Faro's interface, and that's frankly part of what made me so wary. It just looks too good to be so new, lol.

    Generally I do look down on "AI projects" but this sounds like a personal project where AI was used as a tool, and used in an intelligent manner. Some may look down their nose when AI was even consulted during the coding phase, but the way I see it, so long as the AI is helping you understand how to accomplish your goal and not accomplishing your goal for you I'm less upset by it. (It's also close to how I code, when I reach the edge of my familiarity. I don't use any code produced by AI; it explains options to cover my need, shows basic implementation examples, and then I go read language/library documentation/examples until I grok.)

    So, regarding my personal deployment, here's a vaguely modified version of my Corefile;

    (common) {
        cache
        reload 2s
    
        auto {
            directory /config/zones
            reload 2s
        }
    
        file /config/adblock/oisd_big_rpz.txt {
            reload 2s
            fallthrough
        }
    
        hosts /config/adblock/stevenblack-hosts {
            reload 2s
            fallthrough
        }
    
        forward ournet 192.168.250.250
        forward automation 192.168.250.250
        forward ournet-wifi 192.168.250.250
        forward local 192.168.250.250
        forward ipmi 192.168.250.250
    
        forward . tls://1.1.1.1 tls://1.0.0.1 {
            tls_servername cloudflare-dns.com
            policy random
        }
    }
    
    .:53 {
        health
        prometheus 0.0.0.0:35053
        import common
    }
    
    tls://.:853 https://.:443 https3://.:443 {
        tls /config/ssl/chain.pem /config/ssl/key.pem
        import common
    }
    
    quic://.:8853 {
        quic
        tls /config/ssl/chain.pem /config/ssl/key.pem
        import common
    }
    

    This server is also exposed to the internet, as I'm working toward being able to configure it as an Android Private DNS target.

    So after poking around a bit more, there are a few things I would absolutely love to DEATH if they were implemented in Faro;

    • The capacity to forward multiple specific domains to a specific server
    • The capacity to load zones via either 'file' or 'auto'
    • certificates, DoT/DoH/Quic/etc

    Honestly, I'd also settle for the option to manually inject entries into the final file, listed as an "expert" option or similar.

    And lastly (for now) a query regarding redundancy; I saw options for it in the menus -- you'll have to forgive me, I wasn't prepared to spend too much time until I heard more about the project -- where it stated that one could run a second instance of Faro, and link them. Can you describe how this works? Right now I have two DNS servers, where primary clones its config to secondary with each update. I'd imagine a similar sort of deployment here?

    (Also, consider opening Discussions on this repo, if you'd like to humor conversation about the project but don't feel Issues are the most appropriate place.)

  3. codefaux commented on Aug 8, 2026

    @codefaux
    Author

    So I've kind of brute-forced the functionality I need.

    https://github.com/codefaux/Faro/tree/ugly_import_hack

    First commit is all that was required to get the config loading, the others are for my own local use of the repo as a service on my network. I've deployed and run this overnight, and done some thorough but brief testing this morning, and even with my extraordinarily unusual requirements, my repo and this Corefile.external are all I needed and everything does work;

        auto {
            directory /config/zones
            reload 2s
        }
    
        forward ournet 192.168.250.250
        forward automation 192.168.250.250
        forward ournet-wifi 192.168.250.250
        forward local 192.168.250.250
        forward ipmi 192.168.250.250
    

    As far as "minimum required for Faro to run and suit my specific needs" that covers it. For more comfortable integration, you could make it detect and only import Corefile.external if it were present in /config, or create an empty one and load it by default as it does now, or even make it a frontend toggle with a textbox editor.

    I'd love to see "my personal needs" addressed fully in the frontend with the same level of detail and sophistication as the rest, lol, but I certainly won't expect any of it from you unless you deem it worth adding.

    Anyway, that's all for now. Thanks again for the great project.

  4. derek-diaz commented on Aug 8, 2026

    @derek-diaz
    Owner

    Hey, that's awesome! You’ve convinced me to add some more advanced features. I’ll try to keep a balanced experience though. The whole point of Faro is to make this stuff easy to use, and I definitely don’t want it to turn into an airplane cockpit for CoreDNS 😅

    You also asked about Faro redundancy. Right now, from the primary Faro instance you can go into Settings and generate a pairing token. Then on the second Faro instance, during the initial setup flow, there’s an option to configure it as a secondary. You enter the primary instance IP and the token, and that’s basically it.

    Under the hood, it’s mainly synchronizing the DNS configuration from the primary to the secondary. I still need to finish the part where the secondary sends its metrics back to the primary so you can see everything from one place.

    I’m actually running it this way at home right now: the primary is on a mini PC and the secondary is on my Unraid server.

    I also have a ton of changes locally that I haven’t pushed yet because I’m currently going through the codebase, cleaning things up, and changing some pieces I’m not happy with. 👍

  5. codefaux commented on Aug 8, 2026

    @codefaux
    Author

    don’t want it to turn into an airplane cockpit for CoreDNS

    Oh I definitely don't want to try to compel you to make it such either, I really appreciate the balance it has now -- almost. ;)

    Faro redundancy

    Ah, okay - fair enough. I went ahead and deployed it on my three (primary, secondary, testbed) DNS servers for our network with my patch. (I would love to see a frontend interface for "reset and join" instead of manually nuking /config.) You can't even click Back on the "create an admin" page when you notice the Join link you should've clicked, lol, it's already too late.

    I do rather love the presentation overall, for sure. Another tiny note, my DNS servers have multiple IPs because (for example) the Automation VLAN isn't routed to the LAN. I'm not sure what the implication is beyond UI presentation, though, so this might not matter..?

    running it this way at home right now

    Me too! lol. Primary DNS is handled by a ZimaBlade 7700 which also handles remotely starting a borg backup on my important hosts. Secondary is handled by an RPi5 which also acts as a home audio system/bluetooth/airplay audio target, and the testbed in an LXC container on Unraid. Primary and Secondary both run a service which connects to the Docker socket through a permissions proxy, and write out a zonefile based on my template, so I get the format of container_name.docker_network.docker_host.docker aka mealie.extsvc.alpha.docker or ombi.services.tower.docker

    I also have a ton of changes locally that I haven’t pushed yet because I’m currently going through the codebase, cleaning things up, and changing some pieces I’m not happy with. 👍

    Ooh, that sounds fun. I'm happy to help out with testing when you're ready for extra eyes and ears; I'm pretty experienced with deploying and testing homelab DNS on a rather unusual network, so I can trip over all sorts of edge cases lol. I'm also pretty good at breaking things.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions