Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Having problems on custom Maps app, nothing displayed onto: maybe faulty nginx ? #1241

Closed
Chuckame opened this issue Sep 8, 2020 · 6 comments · Fixed by #2320
Closed

Having problems on custom Maps app, nothing displayed onto: maybe faulty nginx ? #1241

Chuckame opened this issue Sep 8, 2020 · 6 comments · Fixed by #2320
Labels

Comments

@Chuckame
Copy link

Chuckame commented Sep 8, 2020

Hello !

I installed the maps app.
The app icon is broken, and there is no content when I'm clicking on it :
image
I think this is a nginx configuration issue.
An error appear in Chrome console: Refused to execute script from 'https://cloud.home.chuckame.fr/apps/files/' because its MIME type ('text/html') is not executable, and strict MIME type checking is enabled.

What to do to fix it ?

docker-compose.yml:

version: '3.4'

x-log-limits: &log-limits
  logging:
    options:
      max-size: 10m

networks:
  internal:

services:
  db:
    image: postgres:alpine
    <<: *log-limits
    restart: always
    volumes:
      - xxx/nextcloud/db:/var/lib/postgresql/data
    env_file: secrets.db.env
    networks:
      - internal

  redis:
    image: redis:alpine
    <<: *log-limits
    restart: always
    networks:
      - internal

  backend:
    image: nextcloud:fpm-alpine
    <<: *log-limits
    restart: always
    volumes:
      - xxx/nextcloud/website:/var/www/html
      - xxx/nextcloud/apps:/var/www/html/custom_apps
      - xxx/nextcloud/config:/var/www/html/config
      - xxx/nextcloud/website_data:/var/www/html/data
    env_file: secrets.db.env
    environment:
      - REDIS_HOST=redis
      - POSTGRES_HOST=db
    depends_on:
      - db
      - redis
    networks:
      - internal

  frontend: # entrypoint http 80
    image: nginx:alpine
    <<: *log-limits
    restart: always
    volumes:
      - xxx/nextcloud/website:/var/www/html:ro
      - ./frontend/nginx.conf:/etc/nginx/nginx.conf
    depends_on:
      - backend
    ports:
      - 8111:80
    networks:
      - internal

nginx.conf:

worker_processes auto;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  300;

    #gzip  on;

    upstream php-handler {
        server backend:9000;
    }

    server {
        listen 80;

        # Add headers to serve security related headers
        # Before enabling Strict-Transport-Security headers please read into this
        # topic first.
        #add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;" always;
        #
        # WARNING: Only add the preload option once you read about
        # the consequences in https://hstspreload.org/. This option
        # will add the domain to a hardcoded list that is shipped
        # in all major browsers and getting removed from this list
        # could take several months.
        add_header Referrer-Policy "no-referrer" always;
        add_header X-Content-Type-Options "nosniff" always;
        add_header X-Download-Options "noopen" always;
        add_header X-Frame-Options "SAMEORIGIN" always;
        add_header X-Permitted-Cross-Domain-Policies "none" always;
        add_header X-Robots-Tag "none" always;
        add_header X-XSS-Protection "1; mode=block" always;

        # Remove X-Powered-By, which is an information leak
        fastcgi_hide_header X-Powered-By;

        # Path to the root of your installation
        root /var/www/html;

        location = /robots.txt {
            allow all;
            log_not_found off;
            access_log off;
        }

        # The following 2 rules are only needed for the user_webfinger app.
        # Uncomment it if you're planning to use this app.
        #rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
        #rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last;

        # The following rule is only needed for the Social app.
        # Uncomment it if you're planning to use this app.
        #rewrite ^/.well-known/webfinger /public.php?service=webfinger last;

        location = /.well-known/carddav {
            return 301 $scheme://$host:$server_port/remote.php/dav;
        }

        location = /.well-known/caldav {
            return 301 $scheme://$host:$server_port/remote.php/dav;
        }

        # set max upload size
        client_max_body_size 10G;
        fastcgi_buffers 64 4K;

        # Enable gzip but do not remove ETag headers
        gzip on;
        gzip_vary on;
        gzip_comp_level 4;
        gzip_min_length 256;
        gzip_proxied expired no-cache no-store private no_last_modified no_etag auth;
        gzip_types application/atom+xml application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy;

        # Uncomment if your server is build with the ngx_pagespeed module
        # This module is currently not supported.
        #pagespeed off;

        location / {
            rewrite ^ /index.php;
        }

        location ~ ^\/(?:build|tests|config|lib|3rdparty|templates|data)\/ {
            deny all;
        }
        location ~ ^\/(?:\.|autotest|occ|issue|indie|db_|console) {
            deny all;
        }

        location ~ ^\/(?:index|remote|public|cron|core\/ajax\/update|status|ocs\/v[12]|updater\/.+|oc[ms]-provider\/.+)\.php(?:$|\/) {
            fastcgi_split_path_info ^(.+?\.php)(\/.*|)$;
            set $path_info $fastcgi_path_info;
            try_files $fastcgi_script_name =404;
            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_param PATH_INFO $path_info;
            # fastcgi_param HTTPS on;

            # Avoid sending the security headers twice
            fastcgi_param modHeadersAvailable true;

            # Enable pretty urls
            fastcgi_param front_controller_active true;
            fastcgi_pass php-handler;
            fastcgi_intercept_errors on;
            fastcgi_request_buffering off;
        }

        location ~ ^\/(?:updater|oc[ms]-provider)(?:$|\/) {
            try_files $uri/ =404;
            index index.php;
        }

        # Adding the cache control header for js, css and map files
        # Make sure it is BELOW the PHP block
        location ~ \.(?:css|js|woff2?|svg|gif|map)$ {
            try_files $uri /index.php$request_uri;
            add_header Cache-Control "public, max-age=15778463";
            # Add headers to serve security related headers (It is intended to
            # have those duplicated to the ones above)
            # Before enabling Strict-Transport-Security headers please read into
            # this topic first.
            #add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;" always;
            #
            # WARNING: Only add the preload option once you read about
            # the consequences in https://hstspreload.org/. This option
            # will add the domain to a hardcoded list that is shipped
            # in all major browsers and getting removed from this list
            # could take several months.
            add_header Referrer-Policy "no-referrer" always;
            add_header X-Content-Type-Options "nosniff" always;
            add_header X-Download-Options "noopen" always;
            add_header X-Frame-Options "SAMEORIGIN" always;
            add_header X-Permitted-Cross-Domain-Policies "none" always;
            add_header X-Robots-Tag "none" always;
            add_header X-XSS-Protection "1; mode=block" always;

            # Optional: Don't log access to assets
            access_log off;
        }

        location ~ \.(?:png|html|ttf|ico|jpg|jpeg|bcmap|mp4|webm)$ {
            try_files $uri /index.php$request_uri;
            # Optional: Don't log access to other assets
            access_log off;
        }
    }
}

app.config.php:

<?php
$CONFIG = array (
  "apps_paths" => array (
      0 => array (
              "path"     => OC::$SERVERROOT."/apps",
              "url"      => "/apps",
              "writable" => false,
      ),
      1 => array (
              "path"     => OC::$SERVERROOT."/custom_apps",
              "url"      => "/custom_apps",
              "writable" => true,
      ),
  ),
);
?>

config.php:

<?php
$CONFIG = array (
  'memcache.local' => '\\OC\\Memcache\\APCu',
  'apps_paths' => 
  array (
    0 => 
    array (
      'path' => '/var/www/html/apps',
      'url' => '/apps',
      'writable' => false,
    ),
    1 => 
    array (
      'path' => '/var/www/html/custom_apps',
      'url' => '/custom_apps',
      'writable' => true,
    ),
  ),
  'memcache.distributed' => '\\OC\\Memcache\\Redis',
  'memcache.locking' => '\\OC\\Memcache\\Redis',
  'redis' => 
  array (
    'host' => 'redis',
    'password' => false,
    'port' => 6379,
  ),
  'instanceid' => 'xxxxx',
  'passwordsalt' => 'xxxxx',
  'secret' => 'xxxxx',
  'trusted_domains' => 
  array (
    0 => 'xxxxxxx',
  ),
  'datadirectory' => '/var/www/html/data',
  'dbtype' => 'pgsql',
  'version' => '19.0.2.2',
  'overwrite.cli.url' => 'http://xx.xx.xx.xx:xxxx',
  'overwriteprotocol' => 'https',
  'dbname' => 'nextcloud',
  'dbhost' => 'db',
  'dbport' => '',
  'dbtableprefix' => 'oc_',
  'dbuser' => 'xxx',
  'dbpassword' => 'xxxx',
  'installed' => true,
  'maintenance' => false,
);
?>
@Chuckame
Copy link
Author

Chuckame commented Sep 8, 2020

Actually tested with apache: working perfectly... Will keep apache until nginx is resolved

@dvorpahl
Copy link

isn't really your answer!? nextcloud-fpm version currently does not work

@J0WI J0WI added the question label Nov 7, 2020
@662
Copy link

662 commented Apr 7, 2022

  ...
  ...
  backend:
    image: nextcloud:fpm-alpine
    <<: *log-limits
    restart: always
    volumes:
      - xxx/nextcloud/website:/var/www/html
      - xxx/nextcloud/apps:/var/www/html/custom_apps
      - xxx/nextcloud/config:/var/www/html/config
      - xxx/nextcloud/website_data:/var/www/html/data
    env_file: secrets.db.env
    environment:
      - REDIS_HOST=redis
      - POSTGRES_HOST=db
    depends_on:
      - db
      - redis
    networks:
      - internal

  frontend: # entrypoint http 80
    image: nginx:alpine
    <<: *log-limits
    restart: always
    volumes:
      - xxx/nextcloud/website:/var/www/html:ro
      - xxx/nextcloud/apps:/var/www/html/custom_apps                // Hi.
      - ./frontend/nginx.conf:/etc/nginx/nginx.conf
    depends_on:
      - backend
    ports:
      - 8111:80
    networks:
      - internal

@J0WI
Copy link
Contributor

J0WI commented Jun 23, 2023

Please use https://help.nextcloud.com/ for individual deployment questions.

@J0WI J0WI closed this as completed Jun 23, 2023
@Muzosh
Copy link

Muzosh commented Oct 20, 2024

@Chuckame Hi, have you managed to solve it?

@joshtrichards
Copy link
Member

@Chuckame Likely because the volume mounts in the Compose are incomplete on frontend, as alluded to by the response from @662.

However, please take follow-up to the help forum: https://help.nextcloud.com as also already mentioned. This channel is for bug reporting in the image itself, not general support or troubleshooting of configuration matters.

Also see:

https://github.com/nextcloud/docker/blob/master/.examples/docker-compose/insecure/postgres/fpm/compose.yaml
https://github.com/nextcloud/docker/blob/master/.examples/docker-compose/with-nginx-proxy/mariadb/fpm/compose.yaml
https://github.com/nextcloud/docker/tree/master?tab=readme-ov-file#base-version---fpm

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging a pull request may close this issue.

6 participants