Setting Up Nextcloud with Docker Compose
Introduction to Nextcloud
Nextcloud is an open-source, self-hosted file share and collaboration platform. It provides a secure and private alternative to cloud-based storage services.
Docker Compose Configuration for Nextcloud
This setup includes Nextcloud and a MariaDB database, ensuring an isolated and manageable environment.
Docker Compose File (docker-compose.yml)
version: '2'
volumes:
nextcloud:
db:
services:
db:
image: mariadb:10.6
restart: always
command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW
volumes:
- db:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=<ENTER PASSWORD HERE>
- MYSQL_PASSWORD=<ENTER PASSWORD HERE>
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
app:
image: nextcloud
restart: always
ports:
- 8080:80
links:
- db
volumes:
- nextcloud:/var/www/html
environment:
- MYSQL_PASSWORD=<ENTER PASSWORD HERE>
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- MYSQL_HOST=db
Key Components of the Configuration
Volumes
- nextcloud: Stores Nextcloud's data.
- db: Stores the MariaDB database files.
Services
db
- Image:
mariadb:10.6
- Restart: Always ensures the container restarts after a crash or reboot.
- Command: Configures MariaDB for optimal use with Nextcloud.
- Volumes: Maps
db
volume to MariaDB data directory. - Environment Variables: Set the MySQL root and Nextcloud user passwords, database, and user.
app
- Image:
nextcloud
- Restart: Always ensures the container restarts after a crash or reboot.
- Ports: Maps port 8080 of the host to port 80 of the container.
- Links: Connects to the
db
service. - Volumes: Maps
nextcloud
volume to Nextcloud's HTML directory. - Environment Variables: Set the database details for Nextcloud to connect to MariaDB.
Deploying Nextcloud
-
Save the Docker Compose configuration in a
docker-compose.yml
file. -
Replace
with your chosen passwords. -
Run
docker compose up -d
to start Nextcloud in detached mode. -
Access Nextcloud via
http://
.:8080
Configuring and Using Nextcloud
After deployment, configure your Nextcloud instance through its web interface. This includes admin account setup, storage management, and app configurations.