crazy-max / docker-rtorrent-rutorrent

rTorrent and ruTorrent Docker image
MIT License
457 stars 103 forks source link

Error in nginx: [emerg] socket() [::]:8000 failed (97: Address family not supported by protocol) #348

Closed tiberio87 closed 1 month ago

tiberio87 commented 1 month ago

Support guidelines

I've found a bug and checked that ...

Description

I'm getting an nginx error

Expected behaviour

working as it should

Actual behaviour

totalt breakdown

Steps to reproduce

update to latest version

Docker info

Client: Docker Engine - Community
 Version:    26.1.3
 Context:    default
 Debug Mode: false
 Plugins:
  buildx: Docker Buildx (Docker Inc.)
    Version:  v0.14.0
    Path:     /usr/libexec/docker/cli-plugins/docker-buildx
  compose: Docker Compose (Docker Inc.)
    Version:  v2.27.0
    Path:     /usr/libexec/docker/cli-plugins/docker-compose

Server:
 Containers: 29
  Running: 28
  Paused: 0
  Stopped: 1
 Images: 39
 Server Version: 26.1.3
 Storage Driver: overlay2
  Backing Filesystem: extfs
  Supports d_type: true
  Using metacopy: false
  Native Overlay Diff: true
  userxattr: false
 Logging Driver: json-file
 Cgroup Driver: systemd
 Cgroup Version: 2
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local splunk syslog
 Swarm: inactive
 Runtimes: io.containerd.runc.v2 runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: e377cd56a71523140ca6ae87e30244719194a521
 runc version: v1.1.12-0-g51d5e94
 init version: de40ad0
 Security Options:
  apparmor
  seccomp
   Profile: builtin
  cgroupns
 Kernel Version: 5.15.0-107-generic
 Operating System: Ubuntu 22.04.4 LTS
 OSType: linux
 Architecture: x86_64
 CPUs: 8
 Total Memory: 15.4GiB
 Name: homelab
 ID: 64034960-fb4a-4687-bb99-367046b6ef28
 Docker Root Dir: /var/lib/docker
 Debug Mode: false
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Live Restore Enabled: false

Docker Compose config

services:
  geoip-updater:
    image: crazymax/geoip-updater:latest
    container_name: geoip-updater
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Rome
    networks:
      - rtorrent-rutorrent
    volumes:
      - "/home/mgrsys/rtorrent/geoip:/data"
    env_file:
      - "./geoip-updater.env"
    restart: unless-stopped

  rtorrent-rutorrent:
    image: crazymax/rtorrent-rutorrent:latest
    container_name: rtorrent-rutorrent
    environment:
      AUTH_DELAY: 0s
      LOG_ACCESS: "true"
      LOG_IP_VAR: remote_addr
      MAX_FILE_UPLOADS: "50"
      MEMORY_LIMIT: 256M
      OPCACHE_MEM_SIZE: "128"
      PGID: "1000"
      PUID: "1000"
      REAL_IP_FROM: 0.0.0.0/32
      REAL_IP_HEADER: X-Forwarded-For
      RT_DHT_PORT: "51347"
      RT_INC_PORT: "51348"
      RT_LOG_EXECUTE: "false"
      RT_LOG_LEVEL: info
      RT_LOG_XMLRPC: "false"
      RU_DO_DIAGNOSTIC: "true"
      RU_FORBID_USER_SETTINGS: "false"
      RU_HTTP_TIME_OUT: "30"
      RU_HTTP_USE_GZIP: "true"
      RU_HTTP_USER_AGENT: Mozilla/5.0 (Windows NT 6.0; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0
      RU_LOCALE: UTF8
      RU_LOG_FILE: /data/rutorrent/rutorrent.log
      RU_LOG_RPC_CALLS: "false"
      RU_LOG_RPC_FAULTS: "true"
      RU_OVERWRITE_UPLOADED_TORRENTS: "false"
      RU_PHP_GZIP_LEVEL: "2"
      RU_PHP_USE_GZIP: "false"
      RU_RPC_TIME_OUT: "5"
      RU_SAVE_UPLOADED_TORRENTS: "true"
      RU_SCHEDULE_RAND: "10"
      RUTORRENT_AUTHBASIC_STRING: ruTorrent restricted access
      RUTORRENT_PORT: "8080"
      TZ: Europe/Paris
      UPLOAD_MAX_SIZE: 16M
      WAN_IP_CMD: dig +short myip.opendns.com @resolver1.opendns.com
      WEBDAV_AUTHBASIC_STRING: WebDAV restricted access
      WEBDAV_PORT: "9000"
      XMLRPC_AUTHBASIC_STRING: rTorrent XMLRPC restricted access
      XMLRPC_PORT: "8000"
    networks:
      - rtorrent-rutorrent
    expose:
      - 51347/udp
      - "8000"
      - "8080"
      - "9000"
      - "51348"
    ports:
      - target: 51347
        published: "51347"
        protocol: udp
      - target: 8080
        published: "8080"
        protocol: tcp
      - target: 9000
        published: "9001"
        protocol: tcp
      - target: 51348
        published: "51348"
        protocol: tcp
    volumes:
      - "/home/mgrsys/rtorrent:/data"
      - "/home/mgrsys/download:/downloads"
      - "/home/mgrsys/rtorrent/passwd:/passwd"

    ulimits:
      nproc: 65535
      nofile:
        soft: 32000
        hard: 40000
    stop_grace_period: 300s
    restart: unless-stopped

  rtorrent-logs:
    image: bash
    container_name: rtorrent-rutorrent-logs
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Rome
    command: bash -c 'tail -f /log/*.log'
    network_mode: none
    depends_on:
      - rtorrent-rutorrent
    volumes:
      - "/home/mgrsys/rtorrent/rtorrent/log:/log"
    restart: unless-stopped

networks:
  rtorrent-rutorrent:
    name: rtorrent-rutorrent
    external: true

Logs

[s6-init] making user provided files available at /var/run/s6/etc...exited 0.

[s6-init] ensuring user provided files have correct perms...exited 0.

[fix-attrs.d] applying ownership & permissions fixes...

[fix-attrs.d] done.

[cont-init.d] executing container initialization scripts...

[cont-init.d] 00-fix-logs.sh: executing... 

[cont-init.d] 00-fix-logs.sh: exited 0.

[cont-init.d] 01-fix-uidgid.sh: executing... 

[cont-init.d] 01-fix-uidgid.sh: exited 0.

[cont-init.d] 02-fix-perms.sh: executing... 

Fixing perms...

[cont-init.d] 02-fix-perms.sh: exited 0.

[cont-init.d] 03-config.sh: executing... 

Setting timezone to Europe/Paris...

Setting PHP-FPM configuration...

Setting PHP INI configuration...

Setting OpCache configuration...

Setting Nginx configuration...

Setting Nginx XMLRPC over SCGI configuration...

Setting Nginx ruTorrent configuration...

Setting Nginx WebDAV configuration...

Update healthcheck script...

Initializing files and folders...

rpc.htpasswd is empty, removing authentication...

rutorrent.htpasswd is empty, removing authentication...

webdav.htpasswd is empty, removing authentication...

Checking rTorrent local configuration...

Checking rTorrent configuration...

Bootstrapping ruTorrent configuration...

Setting custom config for create plugin...

Checking ruTorrent custom plugins...

Checking ruTorrent plugins configuration...

Checking ruTorrent custom themes...

Setting GeoIP2 databases for geoip2 plugin...

Fixing perms...

[cont-init.d] 03-config.sh: exited 0.

[cont-init.d] 04-create-services.sh: executing... 

[cont-init.d] 04-create-services.sh: exited 0.

[cont-init.d] ~-socklog: executing... 

[cont-init.d] ~-socklog: exited 0.

[cont-init.d] done.

[services.d] starting services

[services.d] done.

2024/05/23 08:22:22 [emerg] 512#512: socket() [::]:8000 failed (97: Address family not supported by protocol)

nginx: [emerg] socket() [::]:8000 failed (97: Address family not supported by protocol)

[23-May-2024 08:22:22] NOTICE: fpm is running, pid 515

[23-May-2024 08:22:22] NOTICE: ready to handle connections

2024/05/23 08:22:23 [emerg] 573#573: socket() [::]:8000 failed (97: Address family not supported by protocol)

Additional info

No response

tiberio87 commented 1 month ago

I found the problem. I had ipv6 disabled in GRUB, once reactivated it works. How can I make it work with ipv6 disabled?

crazy-max commented 1 month ago

I wonder if this is related to recent changes in Docker 26.1 with IPv6 (cc @robmry)

robmry commented 1 month ago

I wonder if this is related to recent changes in Docker 26.1 with IPv6 (cc @robmry)

One change we made is to not-disable IPv6 on the loopback interface just because a container isn't (yet) connected to an IPv6-enabled network. But, if the kernel hasn't added a ::1 to the loopback interface in the first place, we take that as a signal that IPv6 is disabled on the host, or for the container using --sysctl net.ipv6.conf.all.disable_ipv6=1, or similar. We shouldn't be doing anything to try to enable IPv6 at that point.

Is there anything in the nginx config that's explicitly enabling IPv6 or asking it to listen on ::? From a glance at the project's Dockerfile, I think this is nginx installed in an alpine container ... I just tried that with IPv6 disabled in the container, and nginx started, even with listen [::]:80 default_server; left in its default config - but perhaps disabling IPv6 in the kernel would be different.

stickz commented 1 month ago

This is related to the nginx software. I submitted a pull request to resolve the problem. There's no reason to support IPV6 in the first place. IPV6 support was never properly tested and added to rTorrent. IPV4 is required to use the docker container.

crazy-max commented 1 month ago

Ah right that makes sense and indeed no need to enable IPv6 within the nginx conf explicitly.