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:포트 앞에 추가해도 아무런 문제가 발생하지 않는 것으로 나타났습니다 . 이것이 가능한 해결 방법입니까? 이에 대한 단점이 있습니까?

관련 정보