Simplifying Self-Hosting: Setting Up Nextcloud, MariaDB, and phpMyAdmin with Docker Compose
In today's digital age, privacy and control over our data are becoming increasingly important. Self-hosting solutions offer a way to regain control by hosting applications like cloud storage and databases on your own servers. In this guide, we'll walk you through setting up Nextcloud, MariaDB, and phpMyAdmin using Docker Compose, making self-hosting accessible and manageable for everyone.
Why Self-Host?
Self-hosting allows you to store your data on your own infrastructure, providing greater control, privacy, and security compared to relying on third-party services. By hosting applications like Nextcloud for file storage, sharing, and collaboration, and MariaDB for database management, you can tailor the setup to your specific needs while maintaining full ownership of your data.
Prerequisites
Before we dive into the setup process, ensure you have the following prerequisites:
- Docker installed on your system
- Docker Compose installed on your system
- Basic understanding of Docker and Docker Compose
Docker Compose Configuration
We'll use Docker Compose to define and run our multi-container application. Below is the docker-compose.yml
file that orchestrates Nextcloud, MariaDB, and phpMyAdmin:
version: '3.8'
services:
mariadb:
container_name: nextclouddb
deploy:
resources:
limits:
memory: 2603M
environment:
- MYSQL_DATABASE=nextcloud
- MYSQL_PASSWORD= # Blank password for security reasons
- MYSQL_ROOT_PASSWORD= # Blank password for security reasons
- MYSQL_USER=ncloud-admin
- PGID=1000
- PUID=1000
- TZ=Europe/Berlin
image: linuxserver/mariadb:10.11.4
ports:
- "3306:3306"
restart: unless-stopped
volumes:
- /DATA/AppData/mariadb/config:/config
nextcloud:
cpu_shares: 90
command:
- apache2-foreground
container_name: n-cloud
deploy:
resources:
limits:
memory: 7751M
environment:
- MYSQL_HOST=mariadb
- MYSQL_DATABASE=nextcloud
- MYSQL_PASSWORD= # Blank password for security reasons
- MYSQL_USER=ncloud-admin
- PHP_OPCACHE_MEMORY_CONSUMPTION=256 # PHP OPCache memory consumption
image: nextcloud:latest
labels:
icon: https://cdn.jsdelivr.net/gh/IceWhaleTech/CasaOS-AppStore@main/Apps/Nextcloud/icon.png
ports:
- target: 443
published: "443"
protocol: tcp
- target: 80
published: "45289"
protocol: tcp
privileged: true
restart: unless-stopped
volumes:
- type: bind
source: /mnt/cloud/nextcloud
target: /var/www/html
phpmyadmin:
container_name: phpmyadmin
image: phpmyadmin/phpmyadmin
environment:
- PMA_ARBITRARY=1
ports:
- "8080:80"
restart: always
depends_on:
- mariadb
Understanding the Configuration
- MariaDB Service: Provides the database backend for Nextcloud.
- Nextcloud Service: Offers cloud storage and collaboration features.
- phpMyAdmin Service: Enables convenient management of the MariaDB database through a web interface.
Conclusion
Self-hosting applications like Nextcloud, MariaDB, and phpMyAdmin with Docker Compose empowers you to take control of your data while maintaining privacy and security. With this setup, you can enjoy the benefits of cloud storage and database management on your own terms. Simply run docker-compose up
in the directory containing the docker-compose.yml
file, and your services will be up and running. Embrace the freedom and control of self-hosting today!