Jump to content

Emby with nginx reverse proxy + lets encrypt and nextcloud docker


leon123456789

Recommended Posts

leon123456789

Hey Guys.

 

I want to add Emby to my current setup with a nginx reverse proxy, lets encrypt and nextcloud.

I already tried some things but it didnt worked so I hope you can help me.

 

docker-compose.yml:

version: '2'

services:
  proxy:
    image: jwilder/nginx-proxy
    container_name: proxy
    ports:
      - 80:80
      - 443:443
    volumes:
      - ./proxy/conf.d:/etc/nginx/conf.d
      - ./uploadlimit.conf:/etc/nginx/conf.d/uploadlimit.conf:ro
      - ./proxy/vhost.d:/etc/nginx/vhost.d
      - ./proxy/html:/usr/share/nginx/html
      - ./proxy/certs:/etc/nginx/certs:ro
      - /var/run/docker.sock:/tmp/docker.sock:ro
    networks:
      - proxy-tier
    restart: always

  letsencrypt-companion:
    image: jrcs/letsencrypt-nginx-proxy-companion
    container_name: letsencrypt-companion
    volumes_from:
      - proxy
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ./proxy/certs:/etc/nginx/certs:rw
    restart: always

  web:
    image: nginx
    container_name: nextcloud_webserver
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf:ro
    links:
      - app
    volumes_from:
      - app
    environment:
      - VIRTUAL_HOST=nextcloud.mydomain.de, alternative.domain.de
      - VIRTUAL_NETWORK=nginx-proxy
      - VIRTUAL_PORT=80
      - LETSENCRYPT_HOST=nextcloud.mydomain.de, alternative.domain.de
      - LETSENCRYPT_EMAIL=my@email.de
    networks:
    restart: always

  app:
    image: nextcloud:fpm
    container_name: nextcloud_fpm
    links:
      - db
    volumes:
      - ./nextcloud/apps:/var/www/html/apps
      - ./nextcloud/config:/var/www/html/config
      - /mainstorage/nextcloud/data:/var/www/html/data
    networks:
      - proxy-tier
    restart: always

  db:
    image: mariadb
    container_name: db
    volumes:
      - /mainstorage/nextcloud/db:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=securepw
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=user
      - MYSQL_PASSWORD=anothersecurepw
    networks:
      - proxy-tier
    restart: always

networks:
  proxy-tier:
    external:
      name: nginx-proxy

nginx.conf:

user www-data;

events {
  worker_connections 768;
}

http {
  upstream backend {
      server app:9000;
  }

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

  server {
    listen 80;

    # Add headers to serve security related headers
    add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;";
    add_header X-Content-Type-Options nosniff;
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Robots-Tag none;
    add_header X-Download-Options noopen;
    add_header X-Permitted-Cross-Domain-Policies none;

    root /var/www/html;
    client_max_body_size 10G; # 0=unlimited - set max upload size
    fastcgi_buffers 64 4K;

    gzip off;

    index index.php;
    error_page 403 /core/templates/403.php;
    error_page 404 /core/templates/404.php;

    rewrite ^/.well-known/carddav /remote.php/dav/ permanent;
    rewrite ^/.well-known/caldav /remote.php/dav/ permanent;

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

    location ~ ^/(build|tests|config|lib|3rdparty|templates|data)/ {
      deny all;
    }

    location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) {
      deny all;
    }

    location / {
      rewrite ^/remote/(.*) /remote.php last;
      rewrite ^(/core/doc/[^\/]+/)$ $1/index.html;
      try_files $uri $uri/ =404;
    }

    location ~ \.php(?:$|/) {
      fastcgi_split_path_info ^(.+\.php)(/.+)$;
      include fastcgi_params;
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
      fastcgi_param PATH_INFO $fastcgi_path_info;
      fastcgi_param HTTPS on;
      fastcgi_param modHeadersAvailable true; #Avoid sending the security headers twice
      fastcgi_pass backend;
      fastcgi_intercept_errors on;
    }

    # Adding the cache control header for js and css files
    # Make sure it is BELOW the location ~ \.php(?:$|/) { block
    location ~* \.(?:css|js)$ {
      add_header Cache-Control "public, max-age=7200";
      # Add headers to serve security related headers
      add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;";
      add_header X-Content-Type-Options nosniff;
      add_header X-Frame-Options "SAMEORIGIN";
      add_header X-XSS-Protection "1; mode=block";
      add_header X-Robots-Tag none;
      add_header X-Download-Options noopen;
      add_header X-Permitted-Cross-Domain-Policies none;
      # Optional: Don't log access to assets
      access_log off;
    }

    # Optional: Don't log access to other assets
    location ~* \.(?:jpg|jpeg|gif|bmp|ico|png|swf)$ {
      access_log off;
    }
  }
}

I already tried something like adding

  emby:
    image: emby/embyserver
    container_name: emby
    volumes:
      - /mainstorage/emby/config:/config
      - /mainstorage/nextcloud/data/user1/files/:/mnt/share1
      - /mainstorage/nextcloud/data/user2/files/:/mnt/share2
    devices:
      - /dev/dri/renderD128
    networks:
      - proxy-tier
    restart: always

to the docker-compose file but it didnt work.

My Goal is to be able to access emby from a different subdomain than my nextcloud.

Like nextcloud access is under nextcloud.mydomain.de and emby is emby.mydomain.de.

 

I hope someone can help me :)

Link to comment
Share on other sites

mastrmind11

why are you messing with compose and not just installing the container straight up and managing the redirected ports in emby/nginx?  I have no issues doing it that way.

Link to comment
Share on other sites

leon123456789

Im new to docker and found an explanation what uses this docker-compose. It was simple to set up but now its hard to edit these containers. I understand the basics but I dont know what do you mean.

 

Should I redirect the ports directly to emby container like

  emby:
    image: emby/embyserver
    container_name: emby
    volumes:
      - /mainstorage/emby/config:/config
      - /mainstorage/nextcloud/data/user1/files/:/mnt/share1
      - /mainstorage/nextcloud/data/user2/files/:/mnt/share2
    devices:
      - /dev/dri/renderD128
    ports:
      - 8096:8096
    restart: always

that didnt worked.

 

Do I have to change something in the nginx.conf or in the nginx container?

Link to comment
Share on other sites

leon123456789

I don't see anything in your nginx config for emby?

 

You are right because I dont know what to write there. I tried some stuff like

location / {
  proxy_pass http://ip_of_local_emby_container:8096
}

but it didnt work.

Link to comment
Share on other sites

leon123456789

I tried this stuff but it didnt work. I think i didnt understand it completly and I am not sure what to do.

I changed the system.xml file. I think I have to change the docker-compose file and/or the nginx.conf but I dont know to what

Link to comment
Share on other sites

dcrdev

I tried this stuff but it didnt work. I think i didnt understand it completly and I am not sure what to do.

I changed the system.xml file. I think I have to change the docker-compose file and/or the nginx.conf but I dont know to what

  • system.xml file ✔
  • nginx.conf / docker-compose ✖

Just specify the options required in the docker run command, if you have to many options to make this practical - specify a DockerFile to be included and specify the options there. Why you are using compose, is a mystery...

Link to comment
Share on other sites

leon123456789

Whats wrong with using docker-compose?

 

I did it now. I specified in the environment my domain and it worked

  emby:
    image: emby/embyserver
    container_name: emby
    volumes:
      - /mainstorage/emby/config:/config
      - /mainstorage/nextcloud/data/admin/files/Audiobooks:/mnt/audiobooks
      - /mainstorage/nextcloud/data/admin/files/Music:/mnt/music
      - /mainstorage/nextcloud/data/admin/files/Movies:/mnt/movie
    devices:
      - /dev/dri/renderD128
    environment:
      - VIRTUAL_HOST=emby.mydomain.de
      - VIRTUAL_NETWORK=nginx-proxy
      - VIRTUAL_PORT=8096
      - LETSENCRYPT_HOST=emby.mydomain.de
      - LETSENCRYPT_EMAIL=mail@mydomain.de
    networks:
      - proxy-tier
    restart: always

Thanks for the help :)

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...