Jump to content
leon123456789

Emby with nginx reverse proxy + lets encrypt and nextcloud docker

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 :)

Share this post


Link to post
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.

Share this post


Link to post
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?

Share this post


Link to post
Share on other sites
pir8radio

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

Share this post


Link to post
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.

Share this post


Link to post
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

Share this post


Link to post
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...

Share this post


Link to post
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 :)

Share this post


Link to post
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...