# Docker

Docker 容器化平台

# Docker Swarm 叢集

# LXC Docker Swarm 叢集架設

[![image.png](https://note.homesitetw.com/uploads/images/gallery/2025-11/scaled-1680-/TLRimage.png)](https://note.homesitetw.com/uploads/images/gallery/2025-11/TLRimage.png)

<span style="color: rgb(0, 0, 0);">**Docker Swarm Mode 是 Docker Engine 內建的容器編排（Container Orchestration）工具。簡單來說，它允許你將多台安裝了 Docker 的主機整合在一起，形成一個「集群」（Cluster），並將這個集群視為單一的虛擬 Docker 主機來管理。**</span>

<span style="color: rgb(0, 0, 0);">**這讓開發者從管理「單一容器」進階到管理「服務（Service）」，實現高可用性與負載平衡。**</span>

---

##### <span style="color: rgb(0, 0, 0);">**運行環境**</span>  


<span style="color: rgb(0, 0, 0);">**這裡使用PVE的LXC 三台主機做設定，建立特權LXC 並且功能勾選巢狀(nesting)**</span>

<span style="color: rgb(0, 0, 0);">**確認三台主機都安裝[Docker](https://note.homesitetw.com/books/docker/page/docker-portainer-gui)**</span>

<span style="color: rgb(0, 0, 0);">**一台為managers 二台workers**</span>

<span style="color: rgb(0, 0, 0);">**managers 10.0.0.150**</span>

<span style="color: rgb(0, 0, 0);">**workers-1 10.0.0.151**</span>

<span style="color: rgb(0, 0, 0);">**workers-2 10.0.0.152**</span>

##### <span style="color: rgb(0, 0, 0);">**初始化Swarm**</span>

<span style="color: rgb(0, 0, 0);">**在managers主機執行初始化設定，`--advertise-addr`輸入你的對外IP**</span>

<span style="color: rgb(0, 0, 0);">**`--default-addr-pool`如果不設定，Swarm 預設使用 `10.0.0.0/8` 這個超大範圍的私有網段來分配 IP 給 Overlay 網路**</span>

<span style="color: #000000;">**跟本次測試主機網路衝突故手動指定**</span>

```
docker swarm init --advertise-addr 10.0.0.150 --default-addr-pool 10.20.0.0/16
```

<span style="color: rgb(0, 0, 0);">**初始化設定後會出現token，在其他workers主機加入此token**</span>

```
docker swarm join --token SWMTKN-1-3pu6hszjas19xyp7ghgosyx9k8atbfcr8p2is99znpy26u2lkl-1awxwuwd3z9j1z3puu7rcgdbx 10.0.0.150:2377
```

<span style="color: rgb(0, 0, 0);">**加入後可以看到所有節點**</span>

```
root@docker-1:~# docker node ls
ID                            HOSTNAME   STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
x46rx0e108vhrxe354xom40w8 *   docker-1   Ready     Active         Leader           29.0.2
j96spq2xa7lx7oaw0qfhdava3     docker-2   Ready     Active                          29.0.2
v7flruyfi6glooxdasvx3a9n0     docker-3   Ready     Active                          29.0.2
```

<span style="color: rgb(0, 0, 0);">**由於在LXC內建立的Overlay網路會有不轉發問題，須將<span style="color: rgb(224, 62, 45);">ingress<span style="color: rgb(0, 0, 0);">網路開啟轉發</span></span>**</span>

```
nsenter --net=/run/docker/netns/ingress_sbox sysctl -w net.ipv4.ip_forward=1
```

<span style="color: rgb(0, 0, 0);">**可以使用GitHub <span class="author flex-self-stretch"><span dir="auto">dcwestra</span></span>製作的[DockerSwarmLXC](https://github.com/dcwestra/DockerSwarmLXC?tab=readme-ov-file)腳本，監控所有Docker網路並開啟轉發**</span>

##### <span style="color: rgb(0, 0, 0);">**部屬Portainer和Agent**</span>

<span style="color: rgb(0, 0, 0);">**使用Portainer來管理Swarm，每台主機都要安裝Agent來蒐集資訊，可以使用官方腳本來安裝**</span>

```
curl -L https://downloads.portainer.io/ce-lts/portainer-agent-stack.yml -o portainer-agent-stack.yml
```

<span style="color: rgb(0, 0, 0);">**這邊Portainer使用中文版本，故修改`portainer-agent-stack.yml`設定**</span>

```
version: '3.2'

services:
  agent:
    image: portainer/agent:lts
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /var/lib/docker/volumes:/var/lib/docker/volumes
    networks:
      - agent_network
    deploy:
      mode: global
      placement:
        constraints: [node.platform.os == linux]

  portainer:
    image: 6053537/portainer-ce:latest
    command: -H tcp://tasks.agent:9001 --tlsskipverify
    ports:
      - "9443:9443"
      - "9000:9000"
      - "8000:8000"
    volumes:
      - portainer_data:/data
    networks:
      - agent_network
    deploy:
      mode: replicated
      replicas: 1
      placement:
        constraints: [node.role == manager]

networks:
  agent_network:
    driver: overlay
    attachable: true

volumes:
  portainer_data:
```

```
docker stack deploy -c portainer-agent-stack.yml portainer
```

<span style="color: rgb(0, 0, 0);">**部屬後可以看到Portainer和Agent在執行**</span>

```
root@docker-1:~#  docker ps
CONTAINER ID   IMAGE                         COMMAND                  CREATED             STATUS             PORTS                                                             NAMES
8a157c104fdc   6053537/portainer-ce:latest   "/portainer -H tcp:/â€¦"   About an hour ago   Up About an hour   8000/tcp, 9000/tcp, 0.0.0.0:9443->9443/tcp, [::]:9443->9443/tcp   portainer_portainer.1.ofwefrgf28mgc9s78ulpm8l45
2b0713e79ea3   portainer/agent:lts           "./agent"                About an hour ago   Up About an hour   0.0.0.0:9001->9001/tcp, [::]:9001->9001/tcp                       portainer_agent.x46rx0e108vhrxe354xom40w8.8pf2g1dy8gwsaq9tazf1vcr1r
```

<span style="color: rgb(0, 0, 0);">**網頁上輸入`https://ip:9443`登入Portainer可以看到Swram資訊**</span>

[![image.png](https://note.homesitetw.com/uploads/images/gallery/2025-11/scaled-1680-/7u6image.png)](https://note.homesitetw.com/uploads/images/gallery/2025-11/7u6image.png)

# Docker Swarm 節點增減指令

##### <span style="color: rgb(0, 0, 0);">**加入Swarm**</span>

<span style="color: rgb(0, 0, 0);">**新增worker，在manager上輸入指令並在欲新增worker上貼入command**</span>

```
docker swarm join-token worker
```

```
root@docker-1:~# docker swarm join-token worker
To add a worker to this swarm, run the following command:

    docker swarm join --token SWMTKN-1-3pmzdoteij6znbf844068h9pukc-4rfw7oiyyihqx35eg3ncuzw29 10.0.0.150:2377
```

<span style="color: rgb(0, 0, 0);">**新增manager，在manager上輸入指令並在欲新增manager上貼入command**</span>

```
docker swarm join-token manager
```

```
root@docker-1:~# docker swarm join-token manager
To add a manager to this swarm, run the following command:

    docker swarm join --token SWMTKN-1-3pmzdoteij6znbf8g120abdfjukc-cckot0r7ii8e3xu3b6bngxz26 10.0.0.150:2377
```

##### <span style="color: rgb(0, 0, 0);">**移除Swarm**</span>

# Docker 安裝和Portainer GUI 管理工具

#### **運行環境**

- **PVE**
- **LXC**
- **Debian12**

#### **安裝Docker**

```
apt update
```

```
apt -y install ca-certificates curl gnupg lsb-release
```

```
curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
```

```
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
```

```
apt update
```

```
apt -y install docker-ce docker-ce-cli containerd.io
```

<span style="color: rgb(0, 0, 0);">**2025/11/24安裝時，發現containerd.io會導致`permission denied: open sysctl net.ipv4.ip_unprivileged_port_start`錯誤**</span>

<span style="color: rgb(0, 0, 0);">**可以安裝1.7.28-1 containerd.io避免，後續等待containerd.io修正更新**</span>

```
apt install containerd.io=1.7.28-1~debian.12~bookworm docker-ce docker-ce-cli
```

```
systemctl start docker
systemctl enable docker
```

#### **安裝docker-compose**

```
curl -L https://github.com/docker/compose/releases/download/v2.30.3/docker-compose-linux-x86_64 > /usr/local/bin/docker-compose
```

```
chmod +x /usr/local/bin/docker-compose
```

```
docker-compose version
```

#### **安裝portainer**

**中文版portainer下載**

```
docker pull outlovecn/portainer-cn
```

```
docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data 6053537/portainer-ce:latest
```

**瀏覽器輸入`http://ip:9000/`進入管理頁面**

# Docker 架設Vaultwarden密碼管理工具

<p class="callout info">**Vaultwarden是以Bitwarden為原型、用Rust語言重新改寫的版本，比原始的Bitwarden更加輕量化**</p>

#### **安裝Vaultwarden**  


```
docker pull vaultwarden/server
```

```
cd /var/lib/docker/volumes
```

```
mkdir vaultwarden
```

```
cd vaultwarden
```

**建立docker-compose.yml**

```
version: '3'
services:
  app:
    image: 'vaultwarden/server:latest'
    container_name: vaultwarden
    restart: always
    volumes:
      - ./vw-data/:/data/
    environment:
      - ADMIN_TOKEN=1qaxxwsx3xx
    ports:
      - 80:80
      - 443:443
```

```
docker compose up -d
```

#### **管理介面**

<p class="callout warning">**Vaultwarden強制使用SSL才能使用，Docker啟動後先進入admin頁面修改網域 http://ip/admin**</p>

**Admin Token為上方docker-compose.yml的token**

[![image.png](https://note.homesitetw.com/uploads/images/gallery/2025-07/scaled-1680-/eYNimage.png)](https://note.homesitetw.com/uploads/images/gallery/2025-07/eYNimage.png)

#### **修改網域**

[![image.png](https://note.homesitetw.com/uploads/images/gallery/2025-07/scaled-1680-/5a3image.png)](https://note.homesitetw.com/uploads/images/gallery/2025-07/5a3image.png)

#### **修改ADMIN TOKEN**  


[![image.png](https://note.homesitetw.com/uploads/images/gallery/2025-07/scaled-1680-/7UJimage.png)](https://note.homesitetw.com/uploads/images/gallery/2025-07/7UJimage.png)

#### **Nginx 反向代理設定**

```
server {
	listen 443 ssl;
	ssl_certificate /etc/letsencrypt/live/xxx.com/fullchain.pem;
	ssl_certificate_key /etc/letsencrypt/xxx.com/privkey.pem;
	root /var/www/html;
	index index.php;
	server_name xxx.com;
	server_tokens off;
	location /vaultwarden/ {
		proxy_set_header Host $host;
		proxy_set_header X-Real-IP $remote_addr;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_set_header X-Forwarded-Proto $scheme;
		proxy_pass http://ip/;
}
```

**瀏覽器輸入`https://xxx.com/vaultwarden/`**

# Docker 部屬 OpenObserve 日誌數據管理平台

[![image.png](https://note.homesitetw.com/uploads/images/gallery/2025-11/scaled-1680-/KbMimage.png)](https://note.homesitetw.com/uploads/images/gallery/2025-11/KbMimage.png)

<span style="color: rgb(0, 0, 0);">**OpenObserve是一個雲端原生可觀測性平台，專為日誌、指標、追蹤、分析、前端監控等應用而建置。您可以從一個可擴展至 TB 級的二進位檔案開始，也可以部署在高可用性模式下，以應對 PB 級的工作負載**</span>

---

##### <span style="color: rgb(0, 0, 0);">**安裝Portainer**</span>

<span style="color: rgb(0, 0, 0);">**<span style="color: rgb(0, 0, 0);">本次安裝使用Portainer部屬，可以先安裝[Portainer](https://note.homesitetw.com/books/docker/page/docker-portainer-gui)工具</span>**</span>

##### <span style="color: rgb(0, 0, 0);">**<span style="color: rgb(0, 0, 0);">安裝OpenObserve</span>**</span>

<span style="color: rgb(0, 0, 0);">**<span style="color: rgb(0, 0, 0);">建立掛載目錄`/var/lib/docker/volumes/openobserve`，</span>於Portainer內新增堆棧部屬**</span>

```
services:
  openobserve:
    image: public.ecr.aws/zinclabs/openobserve:latest
    container_name: openobserve
    restart: always
    ports:
      - "5080:5080"
    environment:
      - ZO_ROOT_USER_EMAIL=root@example.com
      - ZO_ROOT_USER_PASSWORD=Complexpass#123
      - TZ=Asia/Taipei
    volumes:
      - /var/lib/docker/volumes/openobserve/data:/data
```

<span style="color: rgb(0, 0, 0);">**瀏覽器輸入`ip:5080`，輸入部屬的預設帳號密碼即可登入**</span>

[![image.png](https://note.homesitetw.com/uploads/images/gallery/2025-11/scaled-1680-/resimage.png)](https://note.homesitetw.com/uploads/images/gallery/2025-11/resimage.png)

##### **使用 AxoSyslog 傳送日誌**

<span style="color: rgb(0, 0, 0);">**<span dir="auto">AxoSyslog 是一個二進位相容的</span>`syslog-ng`<span dir="auto">替代產品，由原作者的同一團隊開發。</span>**</span>

<span style="color: rgb(0, 0, 0);">**<span dir="auto">相同的架構、相同的設定檔、相同的路徑。雲端原生鏡像、快速發布、現代可觀測性（OTel、K8s、Windows）和強大的資料處理能力</span>**</span>

<span style="color: rgb(0, 0, 0);">**<span dir="auto">安裝</span>**</span>

<span style="color: rgb(0, 0, 0);">**替換sources.list component以符合你的系統**</span>

<table id="bkmrk-distribution-sources"><thead><tr><th><span style="color: rgb(0, 0, 0);">**Distribution**</span></th><th><span style="color: rgb(0, 0, 0);">**sources.list component**</span></th></tr></thead><tbody><tr><td><span style="color: rgb(0, 0, 0);">**Debian 12 (x86-64)**</span></td><td><span style="color: rgb(0, 0, 0);">**debian-bookworm**</span></td></tr><tr><td><span style="color: rgb(0, 0, 0);">**Debian 11 (x86-64)**</span></td><td><span style="color: rgb(0, 0, 0);">**debian-bullseye**</span></td></tr><tr><td><span style="color: rgb(0, 0, 0);">**Debian Unstable (x86-64)**</span></td><td><span style="color: rgb(0, 0, 0);">**debian-sid**</span></td></tr><tr><td><span style="color: rgb(0, 0, 0);">**Debian Testing (x86-64)**</span></td><td><span style="color: rgb(0, 0, 0);">**debian-testing**</span></td></tr><tr><td><span style="color: rgb(0, 0, 0);">**Ubuntu 25.04 (x86-64)**</span></td><td><span style="color: rgb(0, 0, 0);">**ubuntu-plucky**</span></td></tr><tr><td><span style="color: rgb(0, 0, 0);">**Ubuntu 24.10 (x86-64)**</span></td><td><span style="color: rgb(0, 0, 0);">**ubuntu-oracular**</span></td></tr><tr><td><span style="color: rgb(0, 0, 0);">**Ubuntu 24.04 (x86-64)**</span></td><td><span style="color: rgb(0, 0, 0);">**ubuntu-noble**</span></td></tr><tr><td><span style="color: rgb(0, 0, 0);">**Ubuntu 23.10 (x86-64)**</span></td><td><span style="color: rgb(0, 0, 0);">**ubuntu-mantic**</span></td></tr><tr><td><span style="color: rgb(0, 0, 0);">**Ubuntu 23.04 (x86-64)**</span></td><td><span style="color: rgb(0, 0, 0);">**ubuntu-lunar**</span></td></tr><tr><td><span style="color: rgb(0, 0, 0);">**Ubuntu 22.04 (x86-64)**</span></td><td><span style="color: rgb(0, 0, 0);">**ubuntu-jammy**</span></td></tr><tr><td><span style="color: rgb(0, 0, 0);">**Ubuntu 20.04 (x86-64)**</span></td><td><span style="color: rgb(0, 0, 0);">**ubuntu-focal**</span></td></tr></tbody></table>

```
wget -qO - https://pkg.axoflow.io/axoflow-code-signing-pub.asc | gpg --dearmor > /usr/share/keyrings/axoflow-code-signing-pub.gpg
```

```
echo "deb [signed-by=/usr/share/keyrings/axoflow-code-signing-pub.gpg] https://pkg.axoflow.io/apt stable debian-bookworm" | tee --append /etc/apt/sources.list.d/axoflow.list
```

```
apt update
```

```
apt install axosyslog
```

<span style="color: rgb(0, 0, 0);">**OpenObserve 數據源找到Syslog-Ng設定，新增到`/etc/syslog-ng/syslog-ng.conf`**</span>

[![image.png](https://note.homesitetw.com/uploads/images/gallery/2025-11/scaled-1680-/q5Vimage.png)](https://note.homesitetw.com/uploads/images/gallery/2025-11/q5Vimage.png)

```
systemctl restart syslog-ng.service 
```

<span style="color: rgb(0, 0, 0);">**可以看到接收日誌**</span>

[![image.png](https://note.homesitetw.com/uploads/images/gallery/2025-11/scaled-1680-/xYrimage.png)](https://note.homesitetw.com/uploads/images/gallery/2025-11/xYrimage.png)

# Docker 部屬 Homer 服務面板

[![image.png](https://note.homesitetw.com/uploads/images/gallery/2025-11/scaled-1680-/rDHimage.png)](https://note.homesitetw.com/uploads/images/gallery/2025-11/rDHimage.png)

<span style="color: rgb(0, 0, 0);">**Homer是一個靜態頁面，使用`yaml`設定檔來管理你的服務入口**</span>

---

##### <span style="color: rgb(0, 0, 0);">**部屬 Homer**</span>

<span style="color: rgb(0, 0, 0);">**本例使用Portainer部屬，可以先裝[Portainer](https://note.homesitetw.com/books/docker/page/docker-portainer-gui)**</span>

<span style="color: rgb(0, 0, 0);">**Docker內新增掛載目錄**</span>

```
mkdir /var/lib/docker/volumes/homer/assets
```

<span style="color: rgb(0, 0, 0);">**容器預設使用使用者 uid 和 gid 1000 運行，設定目錄權限相符**</span>

```
chown -R 1000:1000 /var/lib/docker/volumes/homer/assets
```

<span style="color: rgb(0, 0, 0);">**Portainer內新增堆棧並啟動**</span>

```
services:
  homer:
    image: b4bz/homer:latest
    container_name: homer
    volumes:
      - /var/lib/docker/volumes/homer/assets:/www/assets # Make sure your local config directory exists
    ports:
      - 9003:8080
    environment:
      - INIT_ASSETS=1 # default, requires the config directory to be writable for the container user (see user option)
    restart: always
```

<span style="color: rgb(0, 0, 0);">**將`assets`內的`config.yml.dist`複製為`config.yml`**</span>

```
cd /var/lib/docker/volumes/homer/assets
cp config.yml.dist config.yml
```

<span style="color: rgb(0, 0, 0);">**編輯`config.yml`自訂你的面板，以下只使用最簡單的頁面設定，其餘整合功能可以參考官方[https://github.com/bastienwirtz/homer](https://github.com/bastienwirtz/homer)**</span>

```
services:
  - name: "HomeLab"
    icon: "fa-solid fa-brain"
    class: "highlight-purple"
    items: 
      - name: "Proxmox - Lab"
        logo: "assets/icons/custom/proxmox.png"
        url: "https://192.168.18.248:8006/"
      - name: "Proxmox - Home"
        logo: "assets/icons/custom/proxmox.png"
        url: "https://192.168.22.254:8006/"
      - name: "Proxmox Backup Server"
        logo: "assets/icons/custom/proxmox.png"
        url: "https://192.168.74.244:8007/"
      - name: "Librenms"
        logo: "assets/icons/custom/librenms.png"
        url: "http://172.20.10.1:8000"
      - name: "SmokePing"
        logo: "assets/icons/custom/smokePing.png"
        url: "http://192.168.45.246/smokeping/"
      - name: "Portainer"
        logo: "assets/icons/custom/portainer.png"
        url: "http://192.168.155.245/"
```

<span style="color: rgb(0, 0, 0);">**輸入`IP:9003`就可以顯示你的Homer面板**</span>

[![image.png](https://note.homesitetw.com/uploads/images/gallery/2025-11/scaled-1680-/MlKimage.png)](https://note.homesitetw.com/uploads/images/gallery/2025-11/MlKimage.png)

# Docker 部屬 AdGuard Home 廣告攔截

![image.png](https://note.homesitetw.com/uploads/images/gallery/2025-11/scaled-1680-/Kg9image.png)<span style="color: rgb(0, 0, 0);">**AdGuard Home 是一款全網廣告攔截與追蹤軟體。設定完成後，它將覆蓋您家中的所有設備，無需任何客戶端軟體**</span>

---

##### **部屬 <span style="color: rgb(0, 0, 0);">AdGuard Home</span>**

**<span style="color: rgb(0, 0, 0);">本例使用Portainer部屬，可以先裝[Portainer](https://note.homesitetw.com/books/docker/page/docker-portainer-gui)</span>**

**<span style="color: rgb(0, 0, 0);">Docker內新增掛載目錄</span>**

```
mkdir /var/lib/docker/volumes/adguardhome
```

**<span style="color: rgb(0, 0, 0);">Portainer內新增堆棧並啟動</span>**

```
services:
  adguardhome:
    image: adguard/adguardhome
    container_name: adguardhome
    restart: unless-stopped
    volumes:
      - /var/lib/docker/volumes/adguardhome:/opt/adguardhome/work
      - /var/lib/docker/volumes/adguardhome:/opt/adguardhome/conf
    ports:
      - "53:53/tcp"
      - "53:53/udp"
      - "9004:80/tcp"
      - "3000:3000/tcp"
```

<span style="color: rgb(0, 0, 0);"> **AdGuard Home有提供多種服務，這裡我只需要 dns 53 port 和 管理介面 port 80 和 初始化安裝 port 3000**</span>

<table class="w-fit min-w-(--thread-content-width) align-center" data-end="937" data-start="581" id="bkmrk-port-%E5%8D%94%E5%AE%9A-%E7%94%A8%E9%80%94-53-tcp%2Fud"><thead data-end="599" data-start="581"><tr data-end="599" data-start="581"><th data-col-size="sm" data-end="588" data-start="581"><span style="color: rgb(0, 0, 0);">**Port**</span></th><th data-col-size="sm" data-end="593" data-start="588"><span style="color: rgb(0, 0, 0);">**協定**</span></th><th data-col-size="md" data-end="599" data-start="593"><span style="color: rgb(0, 0, 0);">**用途**</span></th></tr></thead><tbody data-end="937" data-start="622"><tr data-end="658" data-start="622"><td data-col-size="sm" data-end="627" data-start="622"><span style="color: rgb(0, 0, 0);">**53**</span></td><td data-col-size="sm" data-end="637" data-start="627"><span style="color: rgb(0, 0, 0);">**TCP/UDP**</span></td><td data-col-size="md" data-end="658" data-start="637"><span style="color: rgb(0, 0, 0);">**主要 DNS**</span></td></tr><tr data-end="724" data-start="659"><td data-col-size="sm" data-end="667" data-start="659"><span style="color: rgb(0, 0, 0);">**67/68**</span></td><td data-col-size="sm" data-end="673" data-start="667"><span style="color: rgb(0, 0, 0);">**UDP**</span></td><td data-col-size="md" data-end="724" data-start="673"><span style="color: rgb(0, 0, 0);">**DHCP server**</span></td></tr><tr data-end="755" data-start="725"><td data-col-size="sm" data-end="730" data-start="725"><span style="color: rgb(0, 0, 0);">**80**</span></td><td data-col-size="sm" data-end="736" data-start="730"><span style="color: rgb(0, 0, 0);">**TCP**</span></td><td data-col-size="md" data-end="755" data-start="736"><span style="color: rgb(0, 0, 0);">**初始 Web UI**</span></td></tr><tr data-end="784" data-start="756"><td data-col-size="sm" data-end="763" data-start="756"><span style="color: rgb(0, 0, 0);">**3000**</span></td><td data-col-size="sm" data-end="769" data-start="763"><span style="color: rgb(0, 0, 0);">**TCP**</span></td><td data-col-size="md" data-end="784" data-start="769"><span style="color: rgb(0, 0, 0);">**初始設定 Wizard**</span></td></tr><tr data-end="820" data-start="785"><td data-col-size="sm" data-end="791" data-start="785"><span style="color: rgb(0, 0, 0);">**443**</span></td><td data-col-size="sm" data-end="801" data-start="791"><span style="color: rgb(0, 0, 0);">**TCP/UDP**</span></td><td data-col-size="md" data-end="820" data-start="801"><span style="color: rgb(0, 0, 0);">**HTTPS DNS / DoH**</span></td></tr><tr data-end="855" data-start="821"><td data-col-size="sm" data-end="827" data-start="821"><span style="color: rgb(0, 0, 0);">**853**</span></td><td data-col-size="sm" data-end="833" data-start="827"><span style="color: rgb(0, 0, 0);">**TCP**</span></td><td data-col-size="md" data-end="855" data-start="833"><span style="color: rgb(0, 0, 0);">**DoT (DNS over TLS)**</span></td></tr><tr data-end="898" data-start="856"><td data-col-size="sm" data-end="869" data-start="856"><span style="color: rgb(0, 0, 0);">**784 / 8853**</span></td><td data-col-size="sm" data-end="875" data-start="869"><span style="color: rgb(0, 0, 0);">**UDP**</span></td><td data-col-size="md" data-end="898" data-start="875"><span style="color: rgb(0, 0, 0);">**DoQ (DNS over QUIC)**</span></td></tr><tr data-end="937" data-start="899"><td data-col-size="sm" data-end="906" data-start="899"><span style="color: rgb(0, 0, 0);">**5443**</span></td><td data-col-size="sm" data-end="916" data-start="906"><span style="color: rgb(0, 0, 0);">**TCP/UDP**</span></td><td data-col-size="md" data-end="937" data-start="916"><span style="color: rgb(0, 0, 0);">**加強加密 Web UI / API**</span></td></tr></tbody></table>

##### **設定 <span style="color: rgb(0, 0, 0);">AdGuard Home</span>**

<span style="color: rgb(0, 0, 0);">**進入`IP:3000`初始化安裝後，登入`IP:9004`管理介面**</span>

<span style="color: rgb(0, 0, 0);">**設定&gt;DNS設定**</span>

<span style="color: #000000;">**上游DNS伺服器新增，並選擇並行請求加快解析**</span>

```
8.8.8.8
168.95.1.1
https://dns.cloudflare.com/dns-query
```

[![image.png](https://note.homesitetw.com/uploads/images/gallery/2025-11/scaled-1680-/Lauimage.png)](https://note.homesitetw.com/uploads/images/gallery/2025-11/Lauimage.png)

[![image.png](https://note.homesitetw.com/uploads/images/gallery/2025-11/scaled-1680-/v1limage.png)](https://note.homesitetw.com/uploads/images/gallery/2025-11/v1limage.png)

<span style="color: rgb(0, 0, 0);">**DNS更改為你部屬的IP，瀏覽網頁後就會開始過濾和封鎖廣告**</span>

[![image.png](https://note.homesitetw.com/uploads/images/gallery/2025-11/scaled-1680-/OKOimage.png)](https://note.homesitetw.com/uploads/images/gallery/2025-11/OKOimage.png)