mcci-catena / docker-iot-dashboard

A complete IoT server for LoRaWAN IoT projects: node-red + influxdb + grafana + ssl + let's encrypt using docker-compose.
MIT License
102 stars 60 forks source link

bug nginx /etc/nginx/sites-available/default for none ipv6 host #74

Open keiser1080 opened 3 years ago

keiser1080 commented 3 years ago

I have found a bug both are linked with /etc/nginx/sites-available/default here the original container file:

##
# You should look at the following URL's in order to grasp a solid understanding
# of Nginx configuration files in order to fully unleash the power of Nginx.
# https://www.nginx.com/resources/wiki/start/
# https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/
# https://wiki.debian.org/Nginx/DirectoryStructure
#
# In most cases, administrators will remove this file from sites-enabled/ and
# leave it as reference inside of sites-available where it will continue to be
# updated by the nginx packaging team.
#
# This file will automatically load configuration files provided by other
# applications, such as Drupal or Wordpress. These applications will be made
# available underneath a path with that package name, such as /drupal8.
#
# Please see /usr/share/doc/nginx-doc/examples/ for more detailed examples.
##

# Default server configuration
#
server {
        listen 80 default_server;
        listen [::]:80 default_server;

        # SSL configuration
        #
        # listen 443 ssl default_server;
        # listen [::]:443 ssl default_server;
        #
        # Note: You should disable gzip for SSL traffic.
        # See: https://bugs.debian.org/773332
        #
        # Read up on ssl_ciphers to ensure a secure configuration.
        # See: https://bugs.debian.org/765782
        #
        # Self signed certs generated by the ssl-cert package
        # Don't use them in a production server!
        #
        # include snippets/snakeoil.conf;

        root /var/www/html;

        # Add index.php to the list if you are using PHP
        index index.html index.htm index.nginx-debian.html;

        server_name _;

        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri/ =404;
        }

        # pass PHP scripts to FastCGI server
        #
        #location ~ \.php$ {
        #       include snippets/fastcgi-php.conf;
        #
        #       # With php-fpm (or other unix sockets):
        #       fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
        #       # With php-cgi (or other tcp sockets):
        #       fastcgi_pass 127.0.0.1:9000;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #       deny all;
        #}
}

# Virtual Host configuration for example.com
#
# You can move that to a different file under sites-available/ and symlink that
# to sites-enabled/ to enable it.
#
#server {
#       listen 80;
#       listen [::]:80;
#
#       server_name example.com;
#
#       root /var/www/example.com;
#       index index.html;
#
#       location / {
#               try_files $uri $uri/ =404;
#       }
#}

here the first error message

nginx_1        | *** Running /etc/my_init.d/setup.sh...
nginx_1        | Saving debug log to /var/log/letsencrypt/letsencrypt.log
nginx_1        | Error while running nginx -c /etc/nginx/nginx.conf -t.
nginx_1        |
nginx_1        | nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx_1        | nginx: [emerg] socket() [::]:80 failed (97: Address family not supported by protocol)
nginx_1        | nginx: configuration file /etc/nginx/nginx.conf test failed
nginx_1        |
nginx_1        | The nginx plugin is not working; there may be problems with your existing configuration.
nginx_1        | The error was: MisconfigurationError('Error while running nginx -c /etc/nginx/nginx.conf -t.\n\nnginx: the configuration file /etc/nginx/nginx.conf syntax is ok\nnginx: [emerg] socket() [::]:80 failed (97: Address family not supported by protocol)\nnginx: configuration file /etc/nginx/nginx.conf test failed\n')
nginx_1        | *** /etc/my_init.d/setup.sh failed with status 4
nginx_1        |
nginx_1        | *** Killing all processes...

seems to be linked to ipv6 workaround removing ipv6 listening: insert the following line at line 17 on the nginx docker file run sed -i 's/listen [::]:80 default_server;/#listen [::]:80 default_server;/g' /etc/nginx/sites-available/default

terrillmoore commented 3 years ago

@MuruganChandrasekar please take a look....

MuruganChandrasekar commented 3 years ago

Ok. I'll check and let you know. But this is not a bug it seems.

terrillmoore commented 3 years ago

@MuruganChandrasekar, I take it you mean that you've not encountered the problem. Neither have I.

Given that we don't see this in our deployments, I suspect that there are "environmental interactions". @keiser1080, we deploy this typically on Ubuntu 20 servers on Digital Ocean. We normally have IPv6 enabled on the base server. How and where are you deploying?

MuruganChandrasekar commented 3 years ago

Yes Terry. We haven't faced the issue since both the IPv4 and IPv6 address enabled automatically. We have checked it on Microsoft Azure and Digitalocean cloud as well.

keiser1080 commented 3 years ago

@MuruganChandrasekar, I take it you mean that you've not encountered the problem. Neither have I.

Given that we don't see this in our deployments, I suspect that there are "environmental interactions". @keiser1080, we deploy this typically on Ubuntu 20 servers on Digital Ocean. We normally have IPv6 enabled on the base server. How and where are you deploying?

yes it's seems to be related on the host os. ipv6 is disabled cat /sys/module/ipv6/parameters/disable 1