UbuntuサーバーでAdGuard Homeのローカルインスタンスを実行する方法は?

UbuntuサーバーでAdGuard Homeのローカルインスタンスを実行する方法は?

Ubuntuサーバー(23.04)でAdGuard Homeを実行し、ルーターをサーバーに接続してネットワークなどの広告をブロックしたいです。しかし、ポートに関して様々な問題が発生する。特にポート53、67、68です。

これはdocker-compose.yml私が書いたものです(しかしpodman代わりにを使用しますdocker):

version: "3.4"
services:
  adguardhome:
    image: "adguard/adguardhome"
    container_name: "adguardhome"
    restart: "unless-stopped"
    cap_add:
      - NET_ADMIN
    ports:
      - "53:53/tcp"
      - "53:53/udp"
      - "67:67/udp"
      - "68:68/udp"
      - "80:80/tcp"
      - "443:443/tcp"
      - "443:443/udp"
      - "3000:3000/tcp"
      - "853:853/tcp"
      - "853:853/udp"
      - "784:784/udp"
      - "8853:8853/udp"
      - "5443:5443/tcp"
      - "5443:5443/udp"
    volumes:
      - "./work:/opt/adguardhome/work"
      - "./conf:/opt/adguardhome/conf"

コマンドを実行しましたが、sudo podman-compose up -dポート53がバインドされていると文句を言いました。だから、次の手順を実行しました。

私が試したこと:

  • 公式Docker Hubの指示に従ってください。のためのsystemd-resolved

    • sudo lsof -i :53ディスプレイを実行すると、systemd-resolvedポートを占有しなくなりますが、libvirt-dnsmasq占有します。
  • sudo virsh net-edit default行を実行して追加して設定を編集します<dns enable=no />

    • sudo lsof -i :53何も返しませんsudo netstat -tuln | grep 53
    • コマンドを再実行してくださいsudo podman-compose up -d。ポート 67 がバインドされていると表示されます。
  • 実行中のsudo lsof -i :67ディスプレイlibvirt-dnsmasqポートはまだ使用中です。

    • 無効にする方法の便利なリソースがオンラインで見つかりません。ほとんどのリソースがかなり古く、情報が最新ではないので(編集するように指示されたファイルの多くは単に存在しないなど)、ただ次の方法を使用しました。sudo kill <pid>
    • コマンドを再実行してくださいsudo podman-compose up -d。ポート 68 がバインドされていると表示されます。使用を確認するlsofと、使用中であることがわかりps aux | grep <pid>ました。systemd-networkd
  • network_mode: hostこのファイルに追加すると、docker-compose次の結果が生成されます。

['podman', '--version', '']
using podman version: 4.3.1
** excluding:  set()
['podman', 'network', 'exists', 'adguardhome_default']
['podman', 'network', 'create', '--label', 'io.podman.compose.project=adguardhome', '--label', 'com.docker.compose.project=adguardhome', 'adguardhome_default']
['podman', 'network', 'exists', 'adguardhome_default']
podman run --name=adguardhome -d --label io.podman.compose.config-hash=123 --label io.podman.compose.project=adguardhome --label io.podman.compose.version=0.0.1 --label com.docker.compose.project=adguardhome --label com.docker.compose.project.working_dir=/home/tester/containers/adguardhome --label com.docker.compose.project.config_files=docker-compose.yml --label com.docker.compose.container-number=1 --label com.docker.compose.service=adguardhome --network host --cap-add NET_ADMIN -v /home/tester/containers/adguardhome/work:/opt/adguardhome/work -v /home/tester/containers/adguardhome/conf:/opt/adguardhome/conf --net adguardhome_default --network-alias adguardhome -p 53:53/tcp -p 53:53/udp -p 67:67/udp -p 68:68/udp -p 80:80/tcp -p 443:443/tcp -p 443:443/udp -p 3000:3000/tcp -p 853:853/tcp -p 853:853/udp -p 784:784/udp -p 8853:8853/udp -p 5443:5443/tcp -p 5443:5443/udp --restart unless-stopped adguard/adguardhome
Error: cannot set multiple networks without bridge network mode, selected mode host: invalid argument
exit code: 125
podman start adguardhome
Error: no container with name or ID "adguardhome" found: no such container
exit code: 125

私は迷っています。何をすべきか、なぜ仕事がこのように起こるのかは本当にわかりません。もちろん、AGHが機能するようにシステムのすべてを無効にすることはできません。

  1. うまくいけば、network_mode: host私のユースケースに欠点があります(他のコンテナからコンテナにアクセスできないことに加えて)。
  2. 127.0.0.1:ポートの前に追加しても問題が発生しないことがわかりました。これは可能な回避策ですか?これに欠点はありますか?

関連情報