Sign inSign up

martmaiste/nextcloud

By martmaiste

•Updated over 4 years ago

Nextcloud Docker using php-fpm and Nginx reverse proxy with SSL and Let's Encrypt support

Image
3

10K+

martmaiste/nextcloud repository overview

⁠Nextcloud Docker using php-fpm, Nginx reverse proxy with SSL and Let's Encrypt support

⁠About

This Nextcloud Docker uses php-fpm, Nginx reverse proxy with SSL and Let's Encrypt. By default it uses SQLite but can be configured to use external MySQL or PostgreSQL database. At installation, the self-signed SSL certificate is generated. This can later replaced by generating a Let's Encrypt certificate using included tools.

⁠Installation

Install and run MariaDB 10

Random MySQL root password is generated at install time and outputed to messages log.

Database and user for Nextcloud is also created.

docker run -d --name nextcloud-db \
       -v /mnt2/nextcloud-db:/var/lib/mysql \
       -e MYSQL_RANDOM_ROOT_PASSWORD=yes \
       -e MYSQL_DATABASE=nextcloud \
       -e MYSQL_USER=nextcloud \
       -e MYSQL_PASSWORD=password \
       mariadb:10

Install and run Nextcloud Docker

docker run -d --name nextcloud -p 80:8080 -p 443:8443 \
       --link nextcloud-db:nextcloud-db \
       -v /mnt2/nextcloud-data:/data \
       -v /mnt2/nextcloud-config:/config \
       -v /mnt2/nextcloud-app:/apps2 \
       -e UID=1000 -e GID=1000 \
       -e UPLOAD_MAX_SIZE=10G \
       -e APC_SHM_SIZE=128M \
       -e OPCACHE_MEM_SIZE=128 \
       -e CRON_PERIOD=15m \
       -e DB_TYPE=mysql \
       -e DB_HOST=nextcloud-db \
       -e DB_USER=nextcloud \
       -e DB_PASSWORD=password \
       -e TZ=Etc/UTC \
       -e DOMAIN=localhost \
       -e EMAIL=hostmaster@localhost \
       martmaiste/nextcloud
⁠Building
git clone https://github.com/martmaiste/nextcloud.git
docker build -t nextcloud nextcloud

Run nextcloud-docker

docker run -d --name nextcloud -p 80:8080 -p 443:8443 \
       --link nextcloud-db:nextcloud-db \
       -v /mnt2/nextcloud-data:/data \
       -v /mnt2/nextcloud-config:/config \
       -v /mnt2/nextcloud-app:/apps2 \
       -e UID=1000 -e GID=1000 \
       -e UPLOAD_MAX_SIZE=10G \
       -e APC_SHM_SIZE=128M \
       -e OPCACHE_MEM_SIZE=128 \
       -e CRON_PERIOD=15m \
       -e DB_TYPE=mysql \
       -e DB_HOST=nextcloud-db \
       -e DB_USER=nextcloud \
       -e DB_PASSWORD=password \
       -e TZ=Etc/UTC \
       -e DOMAIN=localhost \
       -e EMAIL=hostmaster@localhost \
       -t nextcloud

DOMAIN and EMAIL are mainly used for generating Let's Encrypt certificate later. Remove if not needed.

Nextcloud needs to be accessible on ports 80 and 443 for generating Let's Encrypt certificates. 80 port is used for authenticating.

⁠Let's Encrypt certificate setup
docker exec -ti nextcloud letsencrypt-setup

Manual certificate renewal

docker exec -ti nextcloud letsencrypt-renew
⁠Credits

Nextcloud Dockerfile by Wonderfall⁠

Nginx with SSL and Let's Eencrypt support by ngineered⁠

Self Signed SSL Certificate Generator by paulczar⁠

Tag summary

Content type

Image

Digest

Size

377.2 MB

Last updated

over 4 years ago

docker pull martmaiste/nextcloud