File Sync & Share
Nextcloud
Nền tảng đồng bộ và chia sẻ file tự host, thay thế Google Drive và Dropbox với nhiều plugin mở rộng.
Ghi chú review
Cấu hình PHP và database cần đúng. Sử dụng PostgreSQL cho production, nên đặt cron job và Redis để tăng hiệu năng.
Hướng dẫn deploy
Chạy bằng Docker Compose với PostgreSQL và Redis. Cần cấu hình domain và trusted_domains đúng.
- Tạo thư mục dữ liệu và cấu hình cho Nextcloud.
- Chạy Docker Compose với Nextcloud, PostgreSQL và Redis.
- Truy cập web UI, tạo tài khoản admin và cấu hình trusted_domains.
- Cài đặt cron job (system cron hoặc webcron) để xử lý background tasks.
- Đặt reverse proxy HTTPS và cấu hình overwrite.cli.url.
Backup:Backup thư mục data, database PostgreSQL và file config.php. Nên test restore định kỳ.
Copy để chạy trên server
Dùng từng block riêng: lưu compose trước, hoặc copy script bash để tạo file và chạy container.
docker-compose.ymlyaml
services:
nextcloud:
image: nextcloud:stable
container_name: nextcloud
volumes:
- ./html:/var/www/html
- ./data:/var/www/html/data
environment:
POSTGRES_HOST: postgres
POSTGRES_DB: nextcloud
POSTGRES_USER: nextcloud
POSTGRES_PASSWORD: CHANGEME_db_password # CHANGE THIS
REDIS_HOST: redis
ports:
- "8080:80"
depends_on:
- postgres
- redis
restart: unless-stopped
postgres:
image: postgres:16-alpine
container_name: nextcloud_postgres
environment:
POSTGRES_USER: nextcloud
POSTGRES_PASSWORD: CHANGEME_db_password # CHANGE THIS
POSTGRES_DB: nextcloud
volumes:
- ./postgres:/var/lib/postgresql/data
restart: unless-stopped
redis:
image: redis:7-alpine
container_name: nextcloud_redis
restart: unless-stoppedsetup.shbash
#!/usr/bin/env bash
set -euo pipefail
sudo mkdir -p /opt/nextcloud
sudo chown "$USER":"$USER" /opt/nextcloud
cd /opt/nextcloud
cat > docker-compose.yml <<'COMPOSE'
services:
nextcloud:
image: nextcloud:stable
container_name: nextcloud
volumes:
- ./html:/var/www/html
- ./data:/var/www/html/data
environment:
POSTGRES_HOST: postgres
POSTGRES_DB: nextcloud
POSTGRES_USER: nextcloud
POSTGRES_PASSWORD: CHANGEME_db_password # CHANGE THIS
REDIS_HOST: redis
ports:
- "8080:80"
depends_on:
- postgres
- redis
restart: unless-stopped
postgres:
image: postgres:16-alpine
container_name: nextcloud_postgres
environment:
POSTGRES_USER: nextcloud
POSTGRES_PASSWORD: CHANGEME_db_password # CHANGE THIS
POSTGRES_DB: nextcloud
volumes:
- ./postgres:/var/lib/postgresql/data
restart: unless-stopped
redis:
image: redis:7-alpine
container_name: nextcloud_redis
restart: unless-stopped
COMPOSE
docker compose up -d
echo "Nextcloud is running on http://SERVER_IP:8080"Stack
PHPPostgreSQLDocker