Table of Contents
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
sslmodule - Enable
default-sslsite
FROM nextcloud:latest
RUN a2enmod ssl
RUN a2ensite default-ssl