Complete Install
Nextcloud Installation using Docker Build and Docker Compose
This method includes Redis, MariaDB, Nextcloud Memories, and Office
inotify libraries have been added to the Dockerfile for the iNotify App
Nextcloud 28.0.4 was the latest version when making this tutorial.
First lets update your system.
sudo apt-get update && apt-get upgrade -y
Setting up the directories
Now lets setup the Directories
You can change the directories to your liking.
sudo mkdir /var/docker && sudo mkdir /var/docker/nextcloud
Lets take ownership of the directory
sudo chown -R 1000:1000 /var/docker && cd /var/docker/nextcloud
Creating .env files
Now lets create the Docker Variables files in the new directory.
Creating .env
nano .env
When editing the configuration below, remove all instances of <>
from the values
Paste the Following with CNTRL+SHIFT+V
# Nextcloud and MariaDB
# Directory paths for persistent data storage
DATA_LOCATION=./nextcloud
DB_DATA_LOCATION=./mariadb
# Nextcloud Port
PORT=8080
NEXTCLOUD_TRUSTED_DOMAINS=cloud.<YourDomain>.com
TRUSTED_PROXIES=<IP address of your Reverse Proxy>
OVERWRITEPROTOCOL=https
OVERWRITECLIURL=https://cloud.<YourDomain>.com
REDIS_HOST=redis
REDIS_PORT=6379
PHP_MEMORY_LIMIT=512M
PHP_UPLOAD_LIMIT=100M
NEXTCLOUD_ADMIN_USER=admin
NEXTCLOUD_ADMIN_PASSWORD=password
MYSQL_ROOT_PASSWORD=CHANGEME
MYSQL_PASSWORD=CHANGEME
MYSQL_DATABASE=nextcloud
MYSQL_USER=nextcloud
MARIADB_AUTO_UPGRADE=true
# Go_Vod
NEXTCLOUD_HOST=https://cloud.example.com
NEXTCLOUD_ALLOW_INSECURE=1 # (self-signed certs or no HTTPS)
NVIDIA_VISIBLE_DEVICES=all
# Collabora
username=admin
password=PASSWORD
domain=cloud\\.domain\\.com
Please Change CHANGEME
to a password of your choosing.
Refrain from using Special characters for you MySQL Passwords.
Ex. ‘ ~ ! @ # $ % ^ & * ( ) _ - + = { } [ ] / < > , . ; ? ' : | (space)
Save the new file by pressing CTRL+X
Creating the Compose file
nano docker-compose.yaml
Now lets edit the compose file.
name: nextcloud
services:
mariadb:
image: mariadb:10.11
container_name: mariadb
restart: always
command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW --log_bin_trust_function_creators=true
volumes:
- ${DB_DATA_LOCATION}:/var/lib/mysql
env_file:
- .env
networks:
- nextcloud
nextcloud:
image: bankaitech/nextcloud:latest
container_name: nextcloud
restart: always
ports:
- ${PORT}:80
links:
- mariadb
- redis
- collabora
# - onlyoffice
- go-vod
volumes:
- ${DATA_LOCATION}:/var/www/html
env_file:
- .env
networks:
- nextcloud
cron:
image: bankaitech/nextcloud:latest
container_name: cron
restart: always
volumes:
- ${DATA_LOCATION}:/var/www/html:z
depends_on:
- mariadb
- redis
networks:
- nextcloud
entrypoint: /cron.sh
redis:
container_name: redis
image: redis:latest
volumes: # Optional
- type: tmpfs # Optional
target: /data # Optional
tmpfs:
size: 1073741824 # 1GB "Optional"
expose:
- 6379
command: redis-server --save 60 1 --loglevel warning
networks:
- nextcloud
restart: always
collabora:
container_name: collabora
hostname: collabora
privileged: true
tty: true
ports:
- 9980:9980
cap_add:
- MKNOD
image: collabora/code:latest
# volumes:
# - ./collabora/config/coolwsd.xml:/etc/coolwsd/coolwsd.xml
env_file:
- .env
networks:
- nextcloud
restart: always
go-vod:
image: radialapps/go-vod
restart: always
container_name: go-vod
env_file:
- .env
volumes:
- ${DATA_LOCATION}:/var/www/html:ro
networks:
- nextcloud
# runtime: nvidia # (NVENC)
# documentserver:
# container_name: onlyoffice
# stdin_open: true
# tty: true
# ports:
# - 87:80
# volumes:
# - ./DocumentServer/logs:/var/log/onlyoffice
# - ./DocumentServer/data:/var/www/onlyoffice/Data
# networks:
# - nextcloud
# image: onlyoffice/documentserver
networks:
nextcloud:
driver: bridge
If you want to use GPU for transcoding then uncomment this line
runtime: nvidia # (NVENC) # For Nvidia HW Acceleration, Uncomment after installing nvidia drivers.
Test nvidia by running sudo nvidia-smi
tmpfs uses memory (RAM), adjust the value as needed or optionally remove the volume section from the redis container
Starting Nextcloud
Now lets start it up.
sudo docker compose up -d
the -d
flag stands for detatched mode.
After its done pulling the docker images you can open up a web browser.
Before proceeding, you will need to configure your reverse proxy. I have an example Nginx config Here.
Connect to nextcloud by typing in your configured domain
You should see this screen.
If you see this warning
Performance warning
You chose SQLite as database.
SQLite should only be used for minimal and development instances. For production we recommend a different database backend.
If you use clients for file syncing, the use of SQLite is highly discouraged.
You will need to click the drop down and select MySQL/MariaDB
and type in the info manually.
- database account: nextcloud
- database password: YOUR_PASSWORD_FROM .env
- database name: nextcloud
- database host: mariadb:3306
Account Creation
Now create an admin account and click Install
Click Install Recommended Apps
When its done installing you should see your Dashboard
Checking for errors and warnings
On the top right click the User Icon
and go to Administration Settings
Here you should see Security & Setup Warnings
In order to fix the Maintenance Window and the Phone Region warnings, we will have to edit our config.php
file.
Modifying the config.php file
Run the following command to open the config.php
file with nano.
nano nextcloud/config/config.php
If you recieved an error Directory nextcloud doesnt exist
, then you need to change directories.
Run cd /var/docker/nextcloud
then try again.
Now add the following to the bottom of the file.
'maintenance_window_start' => 1,
'default_phone_region' => 'US',
Now if you go back to your Administration Settings
Page.
It should look something like this.
In some cases, you may have to delete your browser cache and restart the browser for the Warnings to update.
Creating production use user
Now you can go create a user for yourself.
Go to the user icon on the top right and select Users
.
Click on Add User
on the left hand side.
Now create your User.
Make sure to set Groups
to admin
Setting up Nextcloud Office (Collabora Code)
Head back over to your Administration Settings
and scroll down on the left until you see Nextcloud Office
Wait a few seconds while it processes.
Now choose Use your own Server
Enter in your domain that you will use for office and Uncheck Disable certificate verification
You will have to add an A
record for office
and setup your reverse proxy for Collabra
WOPI List
Now scroll down to the WOPI List
Enter in your Public IP
, Network CIDR
, and 127.0.0.1
Ex. 251.163.184.3,192.168.1.1/24,127.0.0.1
Press
ENTER
Testing Nextcloud Office
Go to Files
and create a new document
Installing Nextcloud Memories
Go to Apps
Now click Download and enable
Now search and install Preview Generator
.
Configuring Nextcloud Memories
Go to your Administration Settings
and find Memories
My Settings are as Follows
Fixing the warnings
Im sure you noticed that there are a few warnings we need to take care of.
Geometry table has not been created.
Reverse geocoding has not been configured (-1).
We can generate the Geometry table using this command.
sudo docker exec -it -u 33 nextcloud php occ memories:places-setup
I prefer generating the Geometry table this way so I can view the progress
Congragulations!! you have installed Nextcloud!
Troubleshooting
For troubleshooting, please visit Troublshooting.
Comment at the bottom of this page if you need help or have any suggestions to improve this site