Windows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstallOutdated Drivers Are Slowing You Down
One free scan finds every outdated or missing driver and matches the right update for your exact hardware.Free scan · exact hardware matchYou can run Fathom Lite on a Linux VPS without sending analytics data to a hosted service. The reliable layout is a Fathom process bound to localhost, persistent SQLite (or MySQL/PostgreSQL) storage, NGINX as the public reverse proxy, Certbot for HTTPS, and a systemd unit that restarts the service after failure or reboot. After the server is reachable, create a site in the Fathom dashboard and place its tracking snippet in your website header.
Antihost offers Linux VPS plans with full root access, unlimited traffic on a 1 Gbps port and a 14-day free trial.
Fathom Lite is the MIT-licensed, self-hosted predecessor to the current managed Fathom Analytics product. The project describes Lite as a previous open-source version: it is no longer receiving new features, although the repository says bug-fix maintenance continues. Check the current repository and release notes before installing because that status and the installation commands can change.
As an Amazon Associate I earn from qualifying purchases.
What you are actually deploying
A self-hosted installation has four separate parts:
- Fathom Lite: the application that serves the dashboard and receives tracking events.
- Persistent configuration and data: an environment file containing the server, database and secret settings, plus a database that survives process or container replacement.
- Public entry point: NGINX listens on your domain and forwards requests to Fathom on a private loopback address.
- Operations: systemd, firewall rules, HTTPS renewal, backups, updates and monitoring become your responsibility.
The hosted product is managed for you; Lite is self-operated. That distinction matters more than the initial installation command. A working demo can be started in minutes, but a dependable service also needs a protected administrator account, persistent storage and a recovery plan.
#1 Best Overall
- Includes Raspberry Pi 5 with 2.4Ghz 64-bit quad-core CPU (8GB RAM)
- Includes 128GB Micro SD Card pre-loaded with 64-bit Raspberry Pi OS, USB MicroSD Card Reader
- CanaKit Turbine Black Case for the Raspberry Pi 5
- CanaKit Low Noise Bearing System Fan
- Mega Heat Sink - Black Anodized
Choose a deployment method
| Method | What the documented workflow does | When it fits | Main caution |
|---|---|---|---|
| Release binary | Download the platform release, extract it to /usr/local/bin, make it executable and verify with fathom --version. |
A conventional VPS installation with direct host control. | You must manage the binary, service account, configuration and upgrades. |
| Build from source | Install Go and NPM, clone the repository, run make build, configure it, create the required user and start ./fathom server. |
Auditing or modifying source, or when no suitable release binary exists. | Build prerequisites and the user-creation command can change between releases. |
| Docker | Build locally with docker build -t fathom ., or run the published image with docker run -d -p 8080:8080 usefathom/fathom:latest. |
Teams already operating containers and image-based deployments. | The database and configuration must be mounted persistently; do not treat latest as an immutable production version. |
Pick one method and keep its filesystem and process model consistent. Do not install a host binary and then point systemd at a container, or start a container whose database is stored only in its writable layer.
Prepare the Linux VPS
Confirm the prerequisites
- A supported Linux distribution with SSH and administrative access.
- A DNS name whose A or AAAA record points to the VPS. Use the final name before requesting a certificate.
- Permission to open SSH and public HTTP/HTTPS in the VPS firewall and the operating-system firewall.
- Enough disk space for the database, logs and backups. The documentation does not specify a universal CPU, memory or storage minimum, so size the VPS for your traffic and retention needs.
- A plan for backing up the database and restoring it on a different host.
Update the operating system, create a dedicated service account, and reserve a private working directory. The commands below assume a user named fathom and a directory at /var/lib/fathom; choose equivalent paths if your distribution uses a different layout.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
sudo useradd --system --home /var/lib/fathom --create-home --shell /usr/sbin/nologin fathom
sudo install -d -o fathom -g fathom -m 0750 /var/lib/fathom
sudo install -d -o fathom -g fathom -m 0750 /etc/fathom
Keep the application secret and environment file outside the public web root. A strong, unique administrator password is equally important because the dashboard is your analytics control plane.
Install the release binary
1. Obtain and verify the matching release
Download the Fathom Lite release that matches the VPS architecture from the project’s current release page. The older production guide uses a compressed archive, but archive names and supported platforms are release-specific. Do not copy an x86-64 binary to an ARM VPS, and review the release notes before selecting a version.
After downloading the archive, extract it and install the executable:
tar -xzf fathom-linux-amd64.tar.gz
sudo install -m 0755 fathom /usr/local/bin/fathom
fathom --version
Replace the archive filename with the one you downloaded. The final command should print the installed version; if it reports “command not found,” check that /usr/local/bin is in the service user’s path and that the file is executable.
Quick wins for a faster PC:
Scan for outdated or missing drivers - takes under a minuteDriver Scan →Repair Windows errors before they cause bigger problemsFix Now →2. Create persistent configuration
Put the environment file in the working directory from which Fathom will run, or use the configuration location supported by your release. The production example uses SQLite and includes server address, gzip, debug, database driver/name and a secret. A representative file is:
Rank #2
- Includes Raspberry Pi 5 16GB with 2.4Ghz 64-bit quad-core CPU (16GB RAM)
- Includes 128GB Micro SD Card pre-loaded with 64-bit Raspberry Pi OS, USB MicroSD Card Reader
- CanaKit Turbine Black Case for the Raspberry Pi 5
- CanaKit Low Noise Bearing System Fan
- Mega Heat Sink - Black Anodized
FATHOM_SERVER_ADDRESS='127.0.0.1:9000'
FATHOM_GZIP='true'
FATHOM_DEBUG='false'
FATHOM_DATABASE_DRIVER='sqlite3'
FATHOM_DATABASE_NAME='/var/lib/fathom/fathom.db'
FATHOM_SECRET='replace-with-a-long-random-secret'
Environment-variable names and accepted address formats should be checked against the configuration reference for the version you install. The important properties are that the process listens only on the loopback interface when NGINX is public, SQLite points to a persistent absolute path, debug mode is off in production, and the secret is unpredictable.
sudo chown fathom:fathom /var/lib/fathom/.env
sudo chmod 0600 /var/lib/fathom/.env
If your release expects the file in another working directory, place it there and apply the same ownership and mode. Never put the database or secret under a directory served as static web content.
3. Start a manual test
Run the server as the service account from its working directory:
sudo -u fathom -H sh -c 'cd /var/lib/fathom && /usr/local/bin/fathom server'
In another SSH session, make a local request to the configured port. A response, redirect or dashboard HTML confirms that the process is listening; a connection refusal points to the address, port or startup configuration.
curl -i http://127.0.0.1:9000/
Stop the foreground process after this check. systemd will own the production process later.
Build Fathom Lite from source
The repository lists Go and NPM as build prerequisites. Source installation is useful when you need to inspect or modify the code, but it introduces a toolchain that must also be patched and reproduced during upgrades.
- Install the Go and NPM versions supported by the current repository instructions.
- Clone the repository into a build directory.
- Run
make build. - Apply the documented configuration, including the database and secret.
- Run the repository’s required user-creation command before starting the application. That subcommand is part of the README workflow and may differ between releases; use the command shown by the checkout you built rather than guessing an older one.
- Start the resulting executable with
./fathom serverand perform the same local HTTP test used for a release binary.
Once the build works, copy the resulting executable to a controlled location such as /usr/local/bin/fathom, record the commit or release used, and point systemd at that copy. Do not leave production dependent on an untracked working tree that can be deleted during the next deployment.
Recommended Free Tools
Rank #3
- CanaKit Raspberry Pi 5 Essentials Starter Kit
Run Fathom with Docker
Use a pinned image for production
The documented quick start is:
docker run -d -p 8080:8080 usefathom/fathom:latest
That command is suitable for confirming that the image starts, not for a durable public service. The latest tag can move, and the container’s writable layer is not a backup. Select a known release tag after reviewing the current image documentation, and record that tag in your deployment files.
Make storage and networking explicit
Publish the container only to localhost so NGINX is the public entry point. Map a host directory or named volume to the path that the selected image uses for its working directory and database; the correct in-container path is image-version-specific and must be confirmed in its current documentation. Persist the environment configuration and database outside the replaceable container, and set a restart policy such as --restart unless-stopped.
A production container design therefore has these properties:
- A pinned image tag rather than an unreviewed moving tag.
127.0.0.1-only host publishing, for example host port 9000 to the image’s application port.- A persistent volume for the SQLite file or credentials for an external MySQL/PostgreSQL database.
- A secret supplied through a protected environment file or secret mechanism.
- Container logs collected and rotated so a busy tracker cannot fill the VPS disk.
Before placing NGINX in front, use docker logs and a localhost request to verify that the container has initialized its database and is listening on the expected port.
Database, secrets and persistence
SQLite
SQLite is the default shown in the production guide, with the database file created in Fathom’s current working directory unless you set another name. An absolute path under /var/lib/fathom avoids accidental data loss when a service is started from a different directory. Back up the file while the application is in a consistent state, and test restoring a copy on a non-production host.
MySQL or PostgreSQL
The project’s configuration documentation describes MySQL and PostgreSQL options. Use an external database when your traffic, availability requirements or backup tooling justify it. Keep database credentials out of the web root, restrict database network access to the Fathom host or private network, and grant only the permissions the application needs.
Secrets and administrator access
The application secret protects internal security functions and must remain stable across restarts. Generate a long random value, restrict the environment file to the service account and administrators, and avoid committing it to Git or baking it into a public container image. Protect the initial administrator account with a unique password and remove any temporary credentials created during testing.
Rank #4
- All-in-One Complete Kit: This SANOOV RPi 5 bundle comes with Raspberry Pi 5 4GB RAM single board, active cooler, durable ABS case and screwdriver. No extra parts needed, ready to use right out of the box for beginners and hobbyists
- Powerful Single Board Computer: Equipped with 4GB RAM and high-performance processor, delivers fast running speed for 4K playback, AI projects, programming and daily computing tasks. SANOOV for raspberry pi 5 4GB is equipped with broadcom 64 quad-core Arm Cortex A76 processor with gigabit ethernet and upgraded with IEEE 802.11ac Wi-Fi, Bluetooth 5.0 dual-band 2.4Ghz and 5Ghz and Power Over Ethernet (POE). Upgrading delivers 2-3 x speed vs Pi 4, redefining the experience
- Efficient Active Cooler: Effectively lowers operating temperature and prevents performance throttling. Runs quietly even under long-time heavy load, ensures stable operation all day long. SANOOV RPi 5 4GB kit offer an active cooler, which combines an aluminium heatsink with a high-performance PWM fan. Active cooler is fully compatible with the Pi OS, which can effectively reduce the temperature of RPi5 and ensure its good performance during long-term high load operation
- Sturdy ABS Protective Case: Well-fitted for Raspberry Pi 5 board, can be secured with 4 screws to effectively protect the Pi 5 motherboard from damage, reserves full access to all ports and buttons. SANOOV uses ABS material to produce the case, which has a softer texture and feel. Meanwhile, SANOOV case adopts a layered design for easy disassembly and installation. (Tip: The Case cannot install M.2 HAT Add on Board and Solid State Drive!)
- Wide Application & Full Compatibility: Seamlessly compatible with official OS and mainstream peripheral accessories for Raspberry Pi 5. Whether you are a beginner, student, electronics hobbyist or professional developer, this all-in-one kit meets your diverse needs. It excels in IoT projects, robotics design, retro gaming devices, home media servers and other DIY creations. Backed by a large global community, you can easily find guides, technical support and shared projects online
Make the service survive reboots with systemd
Create /etc/systemd/system/fathom.service with a non-root user, the persistent working directory and automatic restart:
[Unit]
Description=Fathom Lite analytics
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=fathom
Group=fathom
WorkingDirectory=/var/lib/fathom
ExecStart=/usr/local/bin/fathom server
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
The service must be able to read its environment file and create or update the database. If you placed configuration elsewhere, add the environment-file directive supported by your release or move the file into the working directory expected by Fathom.
Load, enable and start the unit:
sudo systemctl daemon-reload
sudo systemctl enable fathom
sudo systemctl start fathom
sudo systemctl status fathom
sudo journalctl -u fathom -f
Check that the status is active, then test a restart and, during a maintenance window, a reboot. A service that works only when launched from an interactive shell usually has a wrong working directory, missing environment file or incorrect file permissions.
Put NGINX in front of Fathom
DNS and firewall first
Point your domain to the VPS and allow only the ports you need: SSH for administration and TCP 80 and 443 for the public web service. Do not expose Fathom’s application port directly to the internet. Restrict it to loopback so NGINX is the sole public endpoint.
Configure the reverse proxy
Create an NGINX server block for your domain. The documented proxy example forwards the client and host information that Fathom needs:
server {
listen 80;
server_name my-fathom-site.com;
location / {
proxy_pass http://127.0.0.1:9000;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
}
}
Use the actual domain and the port on which your binary, source build or container listens. Validate before reloading:
sudo nginx -t
sudo systemctl reload nginx
If NGINX returns a gateway error, inspect both NGINX’s error log and journalctl -u fathom. A successful NGINX test proves syntax only; the upstream must also be running and reachable at the configured loopback address.
Best Value
- 【What you Get】You will get 1*Pi 5 8GB Single Board,1*RasTech Case,1*Active Cooler,1*Screwdriver,1*Installation instructions,12-month free warranty, lifetime service, 24-hour prompt and friendly response.
- 【More Connectors】There are two USB 3.0 ports(5Gbps simultaneously) and two USB 2.0 ports, which triple total bandwidth ,support any combination of up to two cameras or displays. Peak SD card performance is doubled through support for the SDR104 high-speed mode. It provides a smooth desktop experience for you. Offer Gigabit Ethernet and a PCIe interface, along with dual-band Wi-Fi and Bluetooth 5.0/BLE wireless capability. The RasTech Pi 5 Kit use the new 27W 5.1V 5A USB-C power connector.
- 【 Support Dual 4Kp60 Display 】Each of the two microHDMI sockets can control a 4K display at 60 Hertz, now support HDR, offering super HD video for media streaming projects. RPi 5 is the first RPi model that comes with a PCI Express port (PCIe 2.0 x1 with 500 MB/s) to attach SSDs (requires separate M.2 HAT).
- 【 Excellent Chips And Applications】Pi 5 is a full-size Pi computer using silicon built in-house at Pi. The RP1 “southbridge” provides the bulk of the I/O capabilities for Pi 5. Pi 5 is more friendly and convenient in the development of Internet of Things, Web development, machine identification, automatic control and other electronic equipment applications and network.
- 【 Faster CPU, Better GPU 】 Pi 5 features a Broadcom BCM2712 64-bit quad-core Arm Cortex-A76 processor running at 2.4GHz, it delivers a 2–3× increase in CPU performance relative to RaspberryPi 4. The 800MHz VideoCore VII GPU is compatible to OpenGL ES 3.1 and Vulkan 1.2, substantial uplift in graphics performance. Pi 5 Offers lightning-fast CPU speed, a PCI Express interface, a Real Time Clock (RTC) and a power button and runs significantly cooler than Pi 4.
Add HTTPS with Certbot
After DNS resolves and the HTTP server block works, install Certbot using your distribution’s supported package method and request a certificate through the NGINX plugin:
Do these 3 things before closing this tab:
1Scan for outdated or missing drivers - takes under a minute2Clear out junk files and repair common Windows errors3Fix the driver behind crashes, sound loss and screen glitchessudo certbot --nginx -d my-fathom-site.com
Choose the redirect to HTTPS when Certbot offers it. Confirm that the dashboard loads at the HTTPS URL, that the certificate name matches the domain and that HTTP redirects rather than serving a second unprotected login endpoint. Certbot normally installs a renewal timer; check its status and perform a dry run with the command provided by your distribution. A certificate that has been issued but cannot renew is not an operational success.
Create a site and install tracking
- Sign in to the Fathom dashboard over HTTPS.
- Create a site for the domain you want to measure.
- Copy the tracking snippet generated for that site.
- Place the script in the tracked website’s header so it loads on the pages whose visits you want to count.
- Open the website in a separate browser session and watch the dashboard’s real-time count.
The real-time view is the quickest installation check. If no visit appears, verify that the snippet is present in the rendered page, the browser can resolve the Fathom domain, NGINX access logs show the request and the Fathom service logs show an accepted event.
Content-security policy
A strict Content-Security-Policy can block an otherwise correct installation. The project README calls out both script-src and img-src: allow the hostname of your Fathom instance in the directives used by your tracked site. Inspect the browser developer console for CSP violations, then update the policy deliberately rather than disabling CSP globally.
Operate the VPS after launch
Backups and restore tests
Back up the SQLite file or external database, the Fathom environment configuration and the NGINX and systemd files. Store at least one copy away from the VPS. The project guide does not prescribe a backup interval, so choose one based on how much analytics data you can afford to lose and verify restores on a separate instance.
Updates
Fathom Lite’s README says it is no longer receiving new features and is maintained for bug fixes; that statement is time-sensitive. Review the current repository before every update. For a binary, download and verify the new release, stop or drain the service as appropriate, replace the executable and restart. For source builds, record the commit and rebuild with the supported Go and NPM versions. For Docker, pull the pinned replacement tag, recreate the container with the same persistent mounts and confirm the database is still present.
Logs, capacity and availability
Monitor systemd or container health, NGINX errors, disk usage, database growth and certificate expiry. Rotate logs. A full disk can stop event ingestion even when the process still appears active. If analytics are business-critical, document how to provision a replacement VPS, restore the database and point DNS to it.
Troubleshoot common failures
| Symptom | Likely cause | Checks and correction |
|---|---|---|
fathom --version fails |
Wrong architecture, missing execute permission or a path problem. | Confirm the release matches the VPS CPU, run ls -l /usr/local/bin/fathom, apply mode 0755 and invoke the absolute path. |
| systemd exits immediately | Missing environment file, wrong working directory or unreadable database. | Read journalctl -u fathom -b; verify User, WorkingDirectory, ownership and the exact configuration names for the installed release. |
| NGINX shows 502 Bad Gateway | Fathom is stopped, listening on another port or bound to a different address. | Check systemctl status fathom, test curl http://127.0.0.1:9000/ and make proxy_pass match the listener. |
| Dashboard loads but tracking is empty | The site was not created, the snippet is missing, the browser blocked it or CSP excludes the instance. | Confirm the site entry, inspect the rendered header and browser console, allow the instance in script-src and img-src, then check real-time data. |
| Data disappears after a container update | The database lived only in the old container layer. | Stop recreating containers until the data path is identified; attach a persistent host directory or named volume and restore the last backup if necessary. |
| HTTPS renewal fails | DNS changed, port 80 is blocked or the NGINX configuration no longer matches the certificate request. | Verify DNS, firewall rules and the active server block, then run the distribution’s Certbot renewal test before expiry. |
Self-hosted Fathom Lite or hosted Fathom?
| Consideration | Self-hosted Lite | Hosted service |
|---|---|---|
| Infrastructure | You provide the VPS, storage, database and network edge. | The provider manages the application infrastructure. |
| Maintenance | You review releases, apply updates, monitor logs and renew certificates. | Much of that operational work is handled for you. |
| Data location | You choose the server geography and control retention and backups. | Location and processing depend on the provider’s service and terms. |
| Cost model | The VPS and your administration time are ongoing costs; a self-hosted setup can cost more than a hosted plan once maintenance is included. | A recurring service fee trades some infrastructure control for managed operations. |
| Product status | Lite is the older open-source predecessor and is not receiving new features according to the repository’s current description. | The hosted product is the actively managed offering described by the vendor. |
Choose self-hosting when control over the server, network and data handling outweighs the time required to operate them. Choose the hosted service when dependable analytics with minimal infrastructure work is the priority. Any GDPR or other legal conclusion depends on your jurisdiction, contracts and actual data flows; obtain current legal advice rather than relying on a general product comparison.
Quick Recap
Final deployment checklist
- Selected binary, source or Docker and recorded the exact release or image tag.
- Created a non-root service account and a persistent working directory.
- Configured the database, strong secret and administrator password.
- Confirmed that the database survives a service restart or container replacement.
- Bound Fathom to localhost and exposed only NGINX publicly.
- Validated NGINX, issued HTTPS and tested renewal.
- Enabled systemd or a container restart policy and tested recovery after reboot.
- Created the tracked site, inserted the header snippet and observed a real-time visit.
- Allowed the Fathom host in CSP where a policy is enabled.
- Established backups, restore testing, log monitoring, update review and certificate monitoring.
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.
Free tools Windows power users keep installed
One-click scans. No signup required.




