Hey guys,
I hope someone can help me with my setup.
I have just started with nextcloud a month ago and have just learned the basics so pls be kindful.
I have my Nextcloud allready up and running. My problem is it is running under “https://myurl.com/” but i want it to run under “https://myurl.com/SomeOtherName/” for example “https://myurl.com/nextcloud/”.
Yes i already searched for this and yes i found all the forum posts where someone with the issue fixed his or her problem.
My underlying problem, I think, is that i dont know how to stop my jwilder/nginx-proxy:alpine from changing/recreating the default.conf in my docker container in /etc/nginx/cond.d/ everytime on startup. Therefore I cant configure my proxy.
Maybe someone could give me a hint on this or maybe someone who knows dockerized nginx reverseproxy configurations could explain me how to fix this.
Thanks in advance
docker-compose.yml
version: '3.5'
services:
proxy:
image: jwilder/nginx-proxy:alpine
labels:
- "com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy=true"
container_name: nextcloud-proxy
networks:
- nextcloud_network
ports:
- 80:80
- 443:443
volumes:
- ./proxy/conf.d:/etc/nginx/conf.d:rw
- ./proxy/vhost.d:/etc/nginx/vhost.d:rw
- ./proxy/html:/usr/share/nginx/html:rw
- ./proxy/certs:/etc/nginx/certs:ro
- /etc/localtime:/etc/localtime:ro
- /var/run/docker.sock:/tmp/docker.sock:ro
restart: unless-stopped
letsencrypt:
image: jrcs/letsencrypt-nginx-proxy-companion
container_name: nextcloud-letsencrypt
depends_on:
- proxy
networks:
- nextcloud_network
volumes:
- ./proxy/certs:/etc/nginx/certs:rw
- ./proxy/vhost.d:/etc/nginx/vhost.d:rw
- ./proxy/html:/usr/share/nginx/html:rw
- /etc/localtime:/etc/localtime:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
restart: unless-stopped
db:
image: mariadb
container_name: nextcloud-mariadb
networks:
- nextcloud_network
volumes:
- db:/var/lib/mysql
- /etc/localtime:/etc/localtime:ro
environment:
- MYSQL_ROOT_PASSWORD=
- MYSQL_PASSWORD=
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
restart: unless-stopped
app:
image: nextcloud:latest
container_name: nextcloud-app
networks:
- nextcloud_network
depends_on:
- letsencrypt
- proxy
- db
volumes:
- nextcloud-html:/var/www/html
- ./app/config:/var/www/html/config
- ./app/custom_apps:/var/www/html/custom_apps
- nextcloud-data:/var/www/html/data
- ./app/themes:/var/www/html/themes
- /etc/localtime:/etc/localtime:ro
environment:
- VIRTUAL_HOST=my.url
- LETSENCRYPT_HOST=my.url
- LETSENCRYPT_EMAIL=me@my.email
restart: unless-stopped
volumes:
nextcloud-html:
external: true
nextcloud-data:
external: true
db:
networks:
nextcloud_network:
As one can see i have a mariadb Nextcloud with a nginx reverse proxy and letsencrypt ssl certification combined in a virtual network. The data volumes are lying external on my 8TB Raid 5 for data loss protection.
My config.php is pretty basic just some tweaks for mail stuff and so on.
Okay after more then a week of struggle with this I finally found an solution.
I found this: Solution
My docker-compose.yml changed slightly and I lost all my data due to my fault deleting my user DB but it works now.
Her are the nessecary files.
docker-compose.yml
version: '3.9'
services:
proxy:
image: jwilder/nginx-proxy:alpine
container_name: nextcloud-proxy
restart: unless-stopped
networks:
- nextcloud-network
volumes:
- ./proxy/conf.d:/etc/nginx/conf.d:rw
- ./proxy/vhost.d:/etc/nginx/vhost.d:rw
- ./proxy/html:/etc/nginx/html:rw
- ./proxy/certs:/etc/nginx/certs:ro
- /etc/localtime:/etc/localtime:ro
- /var/run/docker.sock:/tmp/docker.sock:ro
ports:
- 80:80
- 443:443
labels:
com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy: "true"
db:
image: mariadb
container_name: nextcloud-mariadb
restart: unless-stopped
networks:
- nextcloud-network
volumes:
- db:/var/lib/mysql
- /etc/localtime:/etc/localtime:ro
command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
environment:
- MYSQL_ROOT_PASSWORD=mysecurepassword
env_file:
- ./mysql_conf.env // <---
// replaces
// MYSQL_PASSWORD=myothersecurepassword
// MYSQL_DATABASE=nextcloud
// MYSQL_USER=nextcloud
letsencrypt-companion:
image: jrcs/letsencrypt-nginx-proxy-companion
container_name: nextcloud-letsencrypt
restart: unless-stopped
networks:
- nextcloud-network
volumes:
- ./proxy/certs:/etc/nginx/certs:rw
- ./proxy/vhost.d:/etc/nginx/vhost.d:rw
- ./proxy/html:/usr/share/nginx/html:rw
- /etc/localtime:/etc/localtime:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
depends_on:
- proxy
app:
image: nextcloud:latest
container_name: nextcloud-app
restart: unless-stopped
networks:
- nextcloud-network
volumes:
- ./app/config:/var/www/html/config
- ./app/custom_apps:/var/www/html/custom_apps
- ./app/themes:/var/www/html/themes
- ./app/core/skeleton:/var/www/html/core/skeleton
- nextcloud-html:/var/www/html
- nextcloud-data:/var/www/html/data
environment:
- MYSQL_HOST=db // <--- prefills your first login site where you have to bind to your db
- VIRTUAL_HOST=myurl.org
- LETSENCRYPT_HOST=myurl.org
- LETSENCRYPT_EMAIL=my@mail.de
env_file:
- ./mysql_conf.env // <--- prefills your first login site where you have to bind to your db
volumes:
nextcloud-html:
name: nextcloud-html
driver: local-persist
driver_opts:
mountpoint: /<pathToMainFolder>/html
nextcloud-data:
name: nextcloud-data
driver: local-persist
driver_opts:
mountpoint: /<pathToMainFolder>/data
db:
name: nextcloud-db
driver: local-persist // <--- for not loosing the db again
driver_opts: // <--- for not loosing the db again
mountpoint: /<pathToMainFolder>/db // <--- for not loosing the db again
networks:
nextcloud-network:
name: nextcloud-network
The part of .htaccess in /var/www/html/ or the bound path on my machine /pathToMainFolder/html/
#### DO NOT CHANGE ANYTHING ABOVE THIS LINE ####
ErrorDocument 403 //
ErrorDocument 404 //
<IfModule mod_rewrite.c>
Options -MultiViews
RewriteRule ^core/js/oc.js$ index.php [PT,E=PATH_INFO:$1]
RewriteRule ^core/preview.png$ index.php [PT,E=PATH_INFO:$1]
RewriteCond %{REQUEST_FILENAME} !\.(css|js|svg|gif|png|html|ttf|woff2?|ico|jpg|jpeg|map|webm|mp4|mp3|ogg|wav)$
// bla
// bla
// bla
RewriteRule . index.php [PT,E=PATH_INFO:$1]
RewriteBase /cloud // <--------------- Important. Replace with your subpath
<IfModule mod_env.c>
SetEnv front_controller_active true
<IfModule mod_dir.c>
DirectorySlash off
</IfModule>
</IfModule>
</IfModule>
The part of my config.php in /var/www/html/config/ or the bound path on my machine /pathToMainFolder/app/config/
// Proxy
'overwriteprotocol' => 'https',
'overwritehost' => 'myurl.org',
'overwritewebroot' => '/cloud', // <--- Important. Replace with your subpath
'overwritecondaddr' => '',
'htaccess.RewriteBase' => '/',
I hope i helped someone with similar problems.