---
title: "Deploy AdGuardHome"
description: "Network-wide software for blocking ads and tracking"
category: "Other"
url: https://railway.com/deploy/adguardhome
---

# Deploy AdGuardHome

Network-wide software for blocking ads and tracking

**[Deploy AdGuardHome on Railway](https://railway.com/template/adguardhome)**

Machine-readable deploy manifest (JSON, validated by TemplateCI): https://railway.com/deploy/adguardhome/manifest.json

- **Creator:** OpenSource Templates
- **Category:** Other
- **Total deploys:** 2

## Template content

### AdGuardHome https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/adguard-home.svg

- **Image:** adguard/adguardhome:v0.107.79
- **Public domain:** Yes

## Documentation

# Deploy and Host AdGuard Home on Railway

AdGuard Home is a network-wide, open-source software for blocking ads and trackers. Once set up, it covers all your devices without needing client-side software. This template deploys the official AdGuard Home Docker image on Railway with persistent configuration and work directories, and exposes the web admin interface on a public HTTPS domain.

[![Deploy on Railway](https://railway.com/button.svg)](https://railway.com/new/template/adguardhome)


## About Hosting AdGuard Home

Hosting AdGuard Home on Railway runs a single container using the official image `adguard/adguardhome:v0.107.79`. Two persistent volumes store configuration (`/opt/adguardhome/conf`) and runtime data (`/opt/adguardhome/work`). The start command forces the web UI to listen on `0.0.0.0:3000` so Railway can proxy HTTPS traffic to it. Auto-updates are disabled (`--no-check-update`) for stability.

**Important Railway limitation:** Railway public domains are HTTP/HTTPS-oriented. Classic DNS on port 53 (UDP/TCP) is not exposed by this template. Use the web UI for management, and configure DNS-over-HTTPS (DoH), DNS-over-TLS (DoT), or point individual devices / a local forwarder at the instance if you need DNS resolution. For full LAN-wide DNS + DHCP you typically need a VPS or home server with host networking.

## Common Use Cases

- Centralized ad &amp; tracker blocking dashboard you can reach from anywhere
- Remote management of filter lists, query log, and client settings
- DNS-over-HTTPS / DNS-over-TLS endpoint for browsers, phones, and routers that support it
- Privacy-focused DNS resolver under your control (no third-party DNS vendor)
- Testing filter lists and parental controls before rolling them out on a local network

## Dependencies for AdGuard Home Hosting

- **AdGuard Home image:** `adguard/adguardhome:v0.107.79`
- **Two persistent volumes** — configuration and work directories (already defined in the template)
- **Railway public domain** — maps to the web UI on port 3000
- No database or additional services required

Upstream: [AdGuard Home Docs](https://adguard-dns.io/kb/adguard-home/overview/) · [Docker Wiki](https://github.com/AdguardTeam/AdGuardHome/wiki/Docker) · [GitHub](https://github.com/AdguardTeam/AdGuardHome)

### Implementation Details

| Item | Value |
|------|-------|
| Image | `adguard/adguardhome:v0.107.79` |
| Web UI port | `3000` (forced via `--web-addr 0.0.0.0:3000`) |
| Config volume | `/opt/adguardhome/conf` |
| Work volume | `/opt/adguardhome/work` |
| Start command | `--no-check-update -c /opt/adguardhome/conf/AdGuardHome.yaml -w /opt/adguardhome/work --web-addr 0.0.0.0:3000` |
| Restart policy | `ON_FAILURE` |

The first boot creates `AdGuardHome.yaml` inside the config volume and presents the initial setup wizard.

## Topology

| Service        | Role                          | Volumes                                      | Public | Notes                          |
|----------------|-------------------------------|----------------------------------------------|--------|--------------------------------|
| **AdGuardHome** | Ad-blocking DNS + web UI     | `/opt/adguardhome/conf`<br>`/opt/adguardhome/work` | Yes (port 3000) | Single container, restart on failure |

#### Volumes (drives) — what to mount

Volumes are already attached by the template. They survive redeploys.

| Mount path                  | What is stored                                      |
|-----------------------------|-----------------------------------------------------|
| `/opt/adguardhome/conf`     | `AdGuardHome.yaml`, certificates, user settings     |
| `/opt/adguardhome/work`     | Query logs, statistics, filter data, runtime files  |

Do **not** remove these volumes — configuration and history will be lost on the next deploy.

## Quick Start

1. Click the **Deploy on Railway** button above.
2. Sign in (or create a free Railway account) and deploy.
3. Wait 1–2 minutes for the service and volumes to come up.
4. Open the **AdGuardHome** service → **Settings** → **Networking** and open the generated public domain.
5. Complete the initial setup wizard:
   - Set an admin username and password
   - Choose upstream DNS servers (or keep the defaults)
   - Confirm the web UI is reachable
6. (Optional) Configure DNS-over-HTTPS or DNS-over-TLS in the AdGuard Home settings if you want encrypted DNS clients to use this instance.

After the wizard finishes you land on the dashboard. All settings are persisted in the config volume.

## Configuration

Most settings are managed through the web UI after the first boot. The important container-level choices are already set:

| Setting              | Value / Behavior                                      |
|----------------------|-------------------------------------------------------|
| Web address          | `0.0.0.0:3000` (required for Railway proxy)           |
| Config file          | `/opt/adguardhome/conf/AdGuardHome.yaml`              |
| Work directory       | `/opt/adguardhome/work`                               |
| Auto-update check    | Disabled (`--no-check-update`)                        |
| Restart policy       | `ON_FAILURE`                                          |

### Custom Domain

1. AdGuardHome service → **Settings** → **Networking** → **Custom Domain**.
2. Add your domain and follow Railway’s DNS instructions.
3. Railway provisions TLS automatically.
4. Access the dashboard at `https://your.custom.domain`.

No extra environment variables are required for the basic web UI.

## Updating AdGuard Home

1. AdGuardHome service → **Settings** → **Source**.
2. Change the image tag (e.g. `v0.107.79` → a newer stable tag).
3. Redeploy.

Always check the [AdGuard Home releases](https://github.com/AdguardTeam/AdGuardHome/releases) before upgrading. Configuration is preserved by the volume.

## Traps

**Ways this still fails or surprises people:**

- **Port 53 is not publicly available** — Railway does not expose classic DNS (UDP/TCP 53) on the public domain. This template is primarily for the web admin UI and encrypted DNS protocols (DoH / DoT) that you enable inside AdGuard Home.
- **First-boot wizard required** — Until you finish the setup wizard and set an admin password, the instance is not usable.
- **Volumes are mandatory** — If the volumes are missing or detached, configuration and query history are lost on every redeploy.
- **Web UI must stay on 3000** — The start command forces `--web-addr 0.0.0.0:3000`. Changing it without also updating the Railway domain target port will make the public URL stop working.
- **Do not enable DHCP** — DHCP requires host networking and broadcast access, which Railway does not provide. Leave DHCP disabled.
- **Resource usage** — Filter lists and query logging can grow. Watch disk usage on the volumes and raise memory if you enable many heavy blocklists.

View live logs: service → **Deployments** → latest deployment → **View Logs**.

## Why Deploy AdGuard Home on Railway?

Railway is a singular platform to deploy your infrastructure stack. Railway will host your infrastructure so you don't have to deal with configuration, while allowing you to vertically and horizontally scale it.

By deploying AdGuard Home on Railway, you get a managed, always-on admin interface and optional encrypted DNS endpoint with persistent storage and automatic HTTPS — no servers to maintain.



## Similar templates

- [Rocky Linux](https://railway.com/deploy/rocky-linux) — Hosted Rocky Linux 9 workspace with SSH and persistent storage. 🚀
- [Foundry Virtual Tabletop](https://railway.com/deploy/X5tR6G) — A Self-Hosted & Modern Roleplaying Platform
- [Letta Code Remote](https://railway.com/deploy/letta-code-remote) — Run a Letta Code agent 24/7. No inbound ports, just deploy.

Open this page in a browser: https://railway.com/deploy/adguardhome
