跳转至

Mihomo Docker 部署

安装 Docker

curl -sS -O https://raw.githubusercontent.com/kejilion/sh/main/kejilion.sh && chmod +x kejilion.sh && ./kejilion.sh

脚本 → 6 Docker 管理 → 1 安装 Docker

如果是国内服务器,可能需要更换 Docker源:脚本 → 6 Docker 管理 → 8 更换 Docker 源

部署 Mihomo Docker compose

1.新建目录

mkdir -p /root/mihomo

2.写入 Docker compose 文件

cat > /root/mihomo/docker-compose.yml << EOF
services:
  clash:
    container_name: clash-meta
    image: metacubex/mihomo:latest  # 最新版用 metacubex/mihomo:Alpha
    restart: always
    pid: host
    ipc: host
    network_mode: host
    cap_add:
      - ALL
    security_opt:
      - apparmor=unconfined
    volumes:
      - ~/clash_meta/clash:/root/.config/mihomo
      - /dev/net/tun:/dev/net/tun
      # 共享host的时间环境
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
EOF

写入 Mihomo 配置

注意

http://your-service-provider替换为你的节点订阅

或按需进行修改

cat > /root/clash_meta/clash/config.yaml << EOF
# Author:https://github.com/Repcz
# TG:https://t.me/QVQ_Channel
# 以 '#' 或 '//' 开头的配置文件行为注释行
#
# Mihomo ≥ 1.8.4
#
# 最后更新时间: 2024-06-28 21:32
#
# ================

mixed-port: 7893
tcp-concurrent: true
allow-lan: true
ipv6: false
mode: rule
log-level: info
find-process-mode: strict

geodata-mode: true
geox-url:
  geoip: "https://mirror.ghproxy.com/https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/geoip-lite.dat"
  geosite: "https://mirror.ghproxy.com/https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/geosite.dat"
  mmdb: "https://mirror.ghproxy.com/https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/country-lite.mmdb"

tun:
  enable: true
  stack: mixed
  dns-hijack: [null]
  auto-route: true
  auto-detect-interface: true

dns:
  enable: true
  ipv6: false
  enhanced-mode: fake-ip
  listen: :1053
  fake-ip-range: 198.18.0.1/16
  fake-ip-filter: ['*.lan','*.direct', cable.auth.com, '*.msftconnecttest.com', '*.msftncsi.com', network-test.debian.org, detectportal.firefox.com, resolver1.opendns.com, '*.srv.nintendo.net', '*.stun.playstation.net', xbox.*.microsoft.com, '*.xboxlive.com', stun.*, global.turn.twilio.com, global.stun.twilio.com, app.yinxiang.com, injections.adguard.org, local.adguard.org, cable.auth.com, localhost.*.qq.com, localhost.*.weixin.qq.com, '*.logon.battlenet.com.cn', '*.logon.battle.net', '*.blzstatic.cn', music.163.com, '*.music.163.com', '*.126.net', musicapi.taihe.com, music.taihe.com, songsearch.kugou.com, trackercdn.kugou.com, '*.kuwo.cn', api-jooxtt.sanook.com, api.joox.com, joox.com, y.qq.com, '*.y.qq.com', streamoc.music.tc.qq.com, mobileoc.music.tc.qq.com, isure.stream.qqmusic.qq.com, dl.stream.qqmusic.qq.com, aqqmusic.tc.qq.com, amobile.music.tc.qq.com, '*.xiami.com', '*.music.migu.cn', music.migu.cn, proxy.golang.org, '*.mcdn.bilivideo.cn', '*.cmpassport.com', id6.me, open.e.189.cn, mdn.open.wo.cn, opencloud.wostore.cn, auth.wosms.cn, '*.jegotrip.com.cn', '*.icitymobile.mobi', '*.pingan.com.cn', '*.cmbchina.com', '*.10099.com.cn', pool.ntp.org, '*.pool.ntp.org', ntp.*.com, time.*.com, 'ntp?.*.com', 'time?.*.com', time.*.gov, time.*.edu.cn, '*.ntp.org.cn', PDC._msDCS.*.*, DC._msDCS.*.*, GC._msDCS.*.*]
  nameserver: [quic://223.5.5.5:853, quic://223.6.6.6:853, https://1.12.12.12/dns-query, https://120.53.53.53/dns-query]                     

# 策略组引用相关参数
pg: &pg {type: select, proxies: [手动切换, 香港节点, 美国节点, 狮城节点, 日本节点, 台湾节点, 欧洲节点, DIRECT]}
# 订阅更新和延迟测试相关参数
p: &p {type: http, interval: 86400, health-check: {enable: true, url: http://latency-test.skk.moe/endpoint, interval: 1800}}
# 自动选择策略组:选取延迟最低节点
url-test: &url-test {type: url-test, url: http://latency-test.skk.moe/endpoint, interval: 300, tolerance: 0, include-all: true}
# 手动选择策略组:手动选择想要的节点/策略组
select: &select {type: select, include-all: true}
# 故障回退策略组:策略组将按顺序选择你列表中第一个可用的节点
fallback: &fallback {type: fallback, url: http://latency-test.skk.moe/endpoint, interval: 300, include-all: true}
# 负载均衡策略组:不同的请求将使用不同的代理节点
load-balance: &load-balance {type: load-balance, strategy: consistent-hashing, url: http://latency-test.skk.moe/endpoint, interval: 300, include-all: true}
# classical规则相关
c: &c {type: http, behavior: classical, format: text, interval: 86400}
# domain规则相关
d: &d {type: http, behavior: domain, format: text, interval: 86400}
# ipcidr规则相关
i: &i {type: http, behavior: ipcidr, format: text, interval: 86400}

proxy-providers:
  Subscribe: {<<: *p, path: ./proxy-providers/Sub.yaml, url: http://your-service-provider}

proxy-groups:
  - {name: Proxy, type: fallback, include-all: true}

rules:
  - PROCESS-PATH,/opt/nezha/agent/nezha-agent,DIRECT
  - GEOSITE,openai,Proxy
  - GEOSITE,category-games,Proxy
  - GEOSITE,github,Proxy
  - GEOSITE,telegram,Proxy
  - GEOSITE,twitter,Proxy
  - GEOSITE,microsoft,Proxy
  - GEOSITE,youtube,Proxy
  - GEOSITE,google,Proxy
  - GEOSITE,private,DIRECT
  - GEOSITE,cn,DIRECT
  - GEOSITE,geolocation-!cn,Proxy

  - GEOIP,telegram,Proxy
  - GEOIP,twitter,Proxy
  - GEOIP,apple,Proxy
  - GEOIP,google,Proxy
  - GEOIP,private,DIRECT
  - GEOIP,lan,DIRECT
  - GEOIP,CN,DIRECT

  - MATCH,Proxy

EOF

如果你的服务器上同时搭建了 Adguard Home 服务,Mihomo 配置中的dns需修改为 127.0.0.1:53,具体以实际监听的端口为准。

启动/删除 Mihomo Docker

1.进入目录

cd /root/mihomo

2.启动 Docker compose

docker compose up -d

3.或者 停止删除 Docker compose

docker compose down