Enable HTTPS for NextCloud Docker using docker-compose
By default, NextCloud Docker doesn't enable HTTPS.
Steps
Create
- Create folders
/app/nextcloud/data/db
: for MySQL database/app/nextcloud/data/db_conf
: for MySQL database configuration (don't see anything in it)/app/nextcloud/data/cert
: for nextcloud certificates/app/nextcloud/data/html
: for nextcloud data and packages
- Create
docker-compose.yml
- Create
Dockerfile.nextcloud
- Run
docker-compose build
- Run
docker-compose up -d
Destroy
- Run
docker-compose down
Docker Compose
docker-compose.yml
:
version: '3'
services:
db:
image: mariadb:latest
restart: always
command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
volumes:
- /app/nextcloud/data/db:/var/lib/mysql
- /app/nextcloud/data/db_conf:/etc/mysql/conf.d
environment:
- MYSQL_ROOT_PASSWORD=<mysql_root_password>
- MYSQL_PASSWORD=<mysql_user_password>
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
app:
build:
context: .
dockerfile: Dockerfile.nextcloud
restart: always
ports:
- 80:80
- 443:443
links:
- db
volumes:
- /app/nextcloud/data/html:/var/www/html
- /app/nextcloud/data/cert/fullchain.pem:/etc/ssl/certs/ssl-cert-snakeoil.pem
- /app/nextcloud/data/cert/privkey.pem:/etc/ssl/private/ssl-cert-snakeoil.key
environment:
- MYSQL_PASSWORD=<mysql_user_password>
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- MYSQL_HOST=db
Dockerfile.nextcloud
- Define base docker image as
nextcloud:latest
- Enable
ssl
module - Enable
default-ssl
site
FROM nextcloud:latest
RUN a2enmod ssl
RUN a2ensite default-ssl