-
-
Save ichiTechs/83e228fa1e6c83543623a1bf06f3eb32 to your computer and use it in GitHub Desktop.
# NextCLoud with MariaDB/MySQL | |
# | |
# Access via "http://localhost:80" (or "http://$(docker-machine ip):80" if using docker-machine) | |
# | |
# During initial NextCLoud setup, select "Storage & database" --> "Configure the database" --> "MySQL/MariaDB" | |
# Database user: nextcloud | |
# Database password: nextcloud | |
# Database name: ncdb | |
# Database host: replace "localhost" with "maria-db" the same name as the data base container name. | |
# | |
# | |
# The reason for the more refined data persistence in the volumes is because if you were to | |
# use just the the '/var/www/html' then everytime you would want/need to update/upgrade | |
# NextCloud you would have to go into the volume on the host machine and delete 'version.php' | |
# | |
version: '2' | |
services: | |
nextcloud: | |
container_name: nextcloud | |
restart: unless-stopped | |
image: nextcloud | |
ports: | |
- 80:80 | |
volumes: | |
- /containers/cloud/nextcloud/apps:/var/www/html/apps | |
- /containers/cloud/nextcloud/config:/var/www/html/config | |
- /containers/cloud/nextcloud/data:/var/www/html/data | |
depends_on: | |
- db | |
db: | |
container_name: maria-db | |
restart: unless-stopped | |
image: mariadb | |
environment: | |
MYSQL_ROOT_PASSWORD: root | |
MYSQL_DATABASE: ncdb | |
MYSQL_USER: nextcloud | |
MYSQL_PASSWORD: nextcloud | |
volumes: | |
- /containers/cloud/mariadb:/var/lib/mysql | |
Port
To bypass some conflicts you need to change the port to 8080:80.
ports:
- 8080:80
Mariadb
If you get this message:
Doctrine\DBAL\Exception\DriverException: An exception occurred while executing a query: SQLSTATE[HY000]: General error: 4047 InnoDB refuses to write tables with ROW_FORMAT=COMPRESSED or KEY_BLOCK_SIZE.
You need to change the docker-compose.yml file.
Nextcloud has some problems with the new MariaDB versions (ROW_FORMAT = COMPRESSED).
To fix this, add this line to your docker-compose.yml
command: --innodb-read-only-compressed=OFF
New docker-compose.yml
# NextCLoud with MariaDB/MySQL
#
# Access via "http://localhost:80" (or "http://$(docker-machine ip):8080" if using docker-machine)
#
# During initial NextCLoud setup, select "Storage & database" --> "Configure the database" --> "MySQL/MariaDB"
# Database user: nextcloud
# Database password: nextcloud
# Database name: ncdb
# Database host: replace "localhost" with "maria-db" the same name as the data base container name.
#
#
# The reason for the more refined data persistence in the volumes is because if you were to
# use just the the '/var/www/html' then everytime you would want/need to update/upgrade
# NextCloud you would have to go into the volume on the host machine and delete 'version.php'
#
version: '2'
services:
nextcloud:
container_name: nextcloud
restart: unless-stopped
image: nextcloud
ports:
- 8080:80 #Port change
volumes:
- /containers/cloud/nextcloud/apps:/var/www/html/apps
- /containers/cloud/nextcloud/config:/var/www/html/config
- /containers/cloud/nextcloud/data:/var/www/html/data
depends_on:
- db
db:
container_name: maria-db
restart: unless-stopped
image: mariadb
command: --innodb-read-only-compressed=OFF #Maria-DB fix
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: ncdb
MYSQL_USER: nextcloud
MYSQL_PASSWORD: nextcloud
volumes:
- /containers/cloud/mariadb:/var/lib/mysql
Thank you! Worked like a charm.
Hi, I have a concern with this line -
volumes:
- /containers/cloud/mariadb:/var/lib/mysql
It works fine when the /container is part of the same storage filesystem as the docker-compose file.
But if connect an external drive to store media and replace /containers/cloud/mariadb
with /mnt/usb0/containers/cloud/mariadb
It give me permission issue. It tries to change ownership of the location and fails. How do I handle it ?
I can't run nextcloud on my primary storage drive as it will run out of storage memory pretty soon.
Hi @anu1097, probably you need to give permissions to that folder Tray 'sudo chmod 775 /mnt/usb0/containers/cloud/mariadb'
If this didn't work you can try 'sudo chmod 777 /mnt/usb0/containers/cloud/mariadb' but "777" is not recommended.
Hi,
Trying to get this setup but I get this when entering the databse information during the initial setup.
SQLSTATE[HY000] [1130] Host '172.28.0.3' is not allowed to connect to this MariaDB server
@raverdave-2k Did you ever figure that out?
how to enable https
how to enable https
Use a reverse proxy, I'd recommend caddy.
Hi,
Trying to get this setup but I get this when entering the databse information during the initial setup.
SQLSTATE[HY000] [1130] Host '172.28.0.3' is not allowed to connect to this MariaDB server
I have this exact same problem. I'll try adding this to the db
service and see if it fixes it :
command: mysqld --bind-address=0.0.0.0
How can I backup the data directory? Everything in it is owned by www-data so none of my backup solutions can get access. I’ve added my user to the www-data group but it still doesn’t work
How do I update to the latest version of Nextcloud?
@sailing12388 just pull the latest version of the image and recreate the container. IIRC, this should do both:
docker compose up -d --pull
Follow the instructions but after I submitted the initial form I get the following response: