Faro

Faro

Docker app from derek-diaz's Repository

Overview

Friendly, self-hosted DNS protection and network visibility. This template runs the same Faro application image used by standard Docker Compose.

Faro lighthouse logo

Faro

Understand and protect your network with self-hosted DNS.

Get started · Screenshots · Documentation · Unraid

Faro shows which devices are requesting domains, what gets blocked, and why. Run it on your own hardware to block unwanted domains, investigate network activity, and manage DNS from one web interface.

Your DNS history and configuration are stored locally. No cloud account is required. Faro uses CoreDNS to answer DNS requests and forwards requests it cannot answer locally to your chosen upstream DNS provider.

Faro dashboard with daily requests, blocked domains, cache performance, and upstream response times

Current interface, captured September 2026 with example data. Click any screenshot to view it at full size.

What you can do

  • See what is happening. Follow live activity, search domains and devices, and see why a request was allowed or blocked.
  • Choose protection for your household. Apply blocklists across your network or create per-device protection setups with schedules and exceptions.
  • Get to know your devices. Give them friendly names, replay their activity, and optionally connect a local UniFi controller for device identification.
  • Manage DNS in one place. Add local names for your servers, compare upstream providers, and use encrypted DNS-over-HTTPS with health checks and failover.
  • Keep control of your data. Set history retention, download encrypted backups, and restore them from the interface.
  • Add a second DNS server. Pair read-only replicas with a primary Faro server for DNS redundancy.

Get started

You need:

  • A machine that stays on, with Docker and Docker Compose installed.
  • A fixed local IP address or a DHCP reservation for that machine.
  • Port 53 TCP/UDP available for DNS and port 1787 TCP for the web interface.
  • Access to your router's DNS settings, or a device on which you can set DNS manually.

1. Start Faro

On Linux or macOS:

mkdir faro && cd faro
curl -LO https://raw.githubusercontent.com/derek-diaz/Faro/main/docker-compose.yml
docker compose up -d
Windows PowerShell
New-Item -ItemType Directory faro -Force | Out-Null
Set-Location faro
Invoke-WebRequest https://raw.githubusercontent.com/derek-diaz/Faro/main/docker-compose.yml -OutFile docker-compose.yml
docker compose up -d

Using Unraid? Follow the Unraid installation notes.

2. Complete setup

Open http://YOUR-FARO-IP:1787 in your browser, replacing YOUR-FARO-IP with the machine's local IP address. For example: http://192.168.1.10:1787.

Create your administrator account and follow the guided setup to choose upstream DNS providers and protection. Account creation closes automatically after the first administrator is created.

3. Point your devices to Faro

Set your router's LAN/DHCP DNS server to Faro's local IP address. The exact setting varies by router. Reconnect your devices or renew their DHCP leases so they receive the new setting.

To try Faro on one device first, set that device's DNS server manually to the same address. Open Activity in Faro and browse a few sites to check that requests appear.

Your devices → Faro → Your chosen upstream DNS provider
               │
               └─ Protection, local DNS, cache, and activity history

Faro only sees DNS requests sent through it. Devices using their own DNS service may bypass it. DNS blocking works on domains; it does not remove every ad or show the contents of visited pages.

If requests do not appear, see installation checks and troubleshooting.

Explore Faro

Activity: understand each request

Search domains, devices, and events. Use the timeline and filters to investigate blocks, cached answers, and requests sent upstream.

Faro Activity page with a request timeline, filters, and allowed and blocked DNS requests

Devices: see who is using your network

See each device's activity, blocked requests, and assigned protection. Select a device to inspect its domains and history or investigate a broken site.

Faro Devices page showing example computers and a television, request counts, and protection assignments

All screenshots use synthetic device names and DNS activity, not a real household's history.

Update Faro

From the folder containing docker-compose.yml, run:

docker compose pull
docker compose up -d

The default configuration follows the latest image. Your settings and history persist in the faro-config Docker volume. Faro also creates a database backup before applying a schema upgrade.

For version pinning, rollback, and failed upgrades, see database upgrades and recovery. You can also download a passphrase-encrypted backup from Faro's interface before updating.

Documentation

I want to… Guide
Change ports, settings, or deployment options Configuration
Install on Unraid Unraid setup
Investigate a site that stopped working Fix a broken site
Connect UniFi for device identification UniFi integration
Run more than one Faro server DNS redundancy
Manage storage, backups, and recovery Persistent data
Run from source or understand the backend Local development and architecture

License

Copyright 2026 Derek Diaz Correa. Licensed under the Apache License, Version 2.0.

Made in Puerto Rico.

Install Faro on Unraid in a few clicks.

Find Faro in Community Apps on your Unraid server, review the template, and click Install. Unraid handles the Docker app or plugin setup from the published template.

Open the Apps tab on your Unraid server Search Community Apps for Faro Review the template variables and paths Click Install

Requirements

TCP and UDP port 53 must be available. A dedicated static IP on an Unraid custom ipvlan or macvlan network is recommended when the host already uses port 53.

Download Statistics

1,649
Total Downloads

Related apps

Explore more like this

Explore all

Details

Repository
tabierto/faro:0.11.0
Last Updated2026-08-09
First Seen2026-07-28

Runtime arguments

Web UI
http://[IP]:[PORT:1787]/
Network
bridge
Shell
bash
Privileged
false
Extra Params
--log-opt max-size=10m --log-opt max-file=3

Template configuration

Application DataPathrw

Faro's database, generated DNS configuration, cached icons, and bounded raw query logs.

Target
/config
Default
/mnt/user/appdata/faro
Value
/mnt/user/appdata/faro
Web InterfacePorttcp

Faro web interface port. Change the host port when using bridge networking; custom-IP installations use Faro's internal port 1787.

Target
1787
Default
1787
Value
1787
DNS (UDP)Portudp

DNS service over UDP. Keep this at port 53 for router-wide DNS.

Target
53
Default
53
Value
53
DNS (TCP)Porttcp

DNS service over TCP. Use the same host port as UDP.

Target
53
Default
53
Value
53
Query Log SizeVariable

Maximum size in bytes of each raw CoreDNS query-log file.

Target
FARO_QUERY_LOG_MAX_BYTES
Default
10485760
Value
10485760
Query Log BackupsVariable

Number of rotated raw DNS query-log files retained.

Target
FARO_QUERY_LOG_BACKUPS
Default
2
Value
2