All apps · 0 apps
Faro
Docker app from derek-diaz's Repository
Overview
Readme
View on GitHub
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.
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.
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.
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.
Requirements
Categories
Download Statistics
Related apps
Explore more like this
Explore allDetails
tabierto/faro:0.11.0Runtime 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
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
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 service over UDP. Keep this at port 53 for router-wide DNS.
- Target
- 53
- Default
- 53
- Value
- 53
DNS service over TCP. Use the same host port as UDP.
- Target
- 53
- Default
- 53
- Value
- 53
Maximum size in bytes of each raw CoreDNS query-log file.
- Target
- FARO_QUERY_LOG_MAX_BYTES
- Default
- 10485760
- Value
- 10485760
Number of rotated raw DNS query-log files retained.
- Target
- FARO_QUERY_LOG_BACKUPS
- Default
- 2
- Value
- 2