Tools: Easily Build Your Own Private Cloud Storage with Nextcloud and Docker

Tools: Easily Build Your Own Private Cloud Storage with Nextcloud and Docker

1. Introduction ### 2. Environment ### 3. Step-by-Step Guide ### 4. Post-Installation & Operation ### 5. Conclusion & Security I wanted to set up my own storage server in a local environment to save costs. Why Nextcloud + Docker? Ease of Setup: Get up and running quickly. Simple Maintenance: Easy to update and manage containers. Tip: Most DB settings from your .env file will be auto-filled. Just double-check them! Status check, Update, Start/Stop, and Logs. Templates let you quickly answer FAQs or store snippets for re-use. as well , this person and/or COMMAND_BLOCK:

sudo apt install docker.io docker-compose-plugin COMMAND_BLOCK:
sudo apt install docker.io docker-compose-plugin COMMAND_BLOCK:
sudo apt install docker.io docker-compose-plugin COMMAND_BLOCK:
mkdir nextcloud
cd nextcloud COMMAND_BLOCK:
mkdir nextcloud
cd nextcloud COMMAND_BLOCK:
mkdir nextcloud
cd nextcloud CODE_BLOCK:
nano docker-compose.yml CODE_BLOCK:
nano docker-compose.yml CODE_BLOCK:
nano docker-compose.yml CODE_BLOCK:
services: db: image: mariadb:10.11 restart: always command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW volumes: - nextcloud_db:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} MYSQL_PASSWORD: ${MYSQL_PASSWORD} MYSQL_DATABASE: ${MYSQL_DATABASE} MYSQL_USER: ${MYSQL_USER} app: image: nextcloud:apache restart: always ports: - 8080:80 depends_on: - db volumes: - nextcloud_data:/var/www/html environment: MYSQL_HOST: db MYSQL_DATABASE: ${MYSQL_DATABASE} MYSQL_USER: ${MYSQL_USER} MYSQL_PASSWORD: ${MYSQL_PASSWORD} volumes: nextcloud_db: nextcloud_data: CODE_BLOCK:
services: db: image: mariadb:10.11 restart: always command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW volumes: - nextcloud_db:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} MYSQL_PASSWORD: ${MYSQL_PASSWORD} MYSQL_DATABASE: ${MYSQL_DATABASE} MYSQL_USER: ${MYSQL_USER} app: image: nextcloud:apache restart: always ports: - 8080:80 depends_on: - db volumes: - nextcloud_data:/var/www/html environment: MYSQL_HOST: db MYSQL_DATABASE: ${MYSQL_DATABASE} MYSQL_USER: ${MYSQL_USER} MYSQL_PASSWORD: ${MYSQL_PASSWORD} volumes: nextcloud_db: nextcloud_data: CODE_BLOCK:
services: db: image: mariadb:10.11 restart: always command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW volumes: - nextcloud_db:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} MYSQL_PASSWORD: ${MYSQL_PASSWORD} MYSQL_DATABASE: ${MYSQL_DATABASE} MYSQL_USER: ${MYSQL_USER} app: image: nextcloud:apache restart: always ports: - 8080:80 depends_on: - db volumes: - nextcloud_data:/var/www/html environment: MYSQL_HOST: db MYSQL_DATABASE: ${MYSQL_DATABASE} MYSQL_USER: ${MYSQL_USER} MYSQL_PASSWORD: ${MYSQL_PASSWORD} volumes: nextcloud_db: nextcloud_data: CODE_BLOCK:
MYSQL_ROOT_PASSWORD=change-me
MYSQL_PASSWORD=change-me
MYSQL_DATABASE=nextcloud
MYSQL_USER=nextcloud CODE_BLOCK:
MYSQL_ROOT_PASSWORD=change-me
MYSQL_PASSWORD=change-me
MYSQL_DATABASE=nextcloud
MYSQL_USER=nextcloud CODE_BLOCK:
MYSQL_ROOT_PASSWORD=change-me
MYSQL_PASSWORD=change-me
MYSQL_DATABASE=nextcloud
MYSQL_USER=nextcloud COMMAND_BLOCK:
docker compose up -d COMMAND_BLOCK:
docker compose up -d COMMAND_BLOCK:
docker compose up -d - Why build your own?
- Storing large amounts of data on public cloud services can be expensive.
- I wanted to set up my own storage server in a local environment to save costs.
- Why Nextcloud + Docker?
- Ease of Setup: Get up and running quickly.
- Simple Maintenance: Easy to update and manage containers. - OS: Debian Linux
- Prerequisites: A system where Docker and Docker Compose can be installed. - Install Docker - Create a Working Directory - Create `docker-compose.yml` - Create .env file - Launch Containers - Initial Setup via Browser
- Access http://localhost:8080 and create an admin account.
- Tip: Most DB settings from your .env file will be auto-filled. Just double-check them!
- Useful Commands
- Status check, Update, Start/Stop, and Logs. - Personal Reflection: Using Docker makes maintenance incredibly easy.
- Important Security Note: This setup is not encrypted (No SSL). If you plan to access it from the internet, please use a Reverse Proxy or a tool like Tailscale.