LINUXSELF HOSTING

Hướng dẫn cài đặt Nextcloud trên Ubuntu

Nextcloud là một giải pháp lưu trữ đám mây mã nguồn mở, cho phép bạn lưu trữ, đồng bộ và chia sẻ dữ liệu một cách an toàn. Nó cung cấp một nền tảng linh hoạt để quản lý tài liệu, hình ảnh, lịch và danh bạ, tương tự như các dịch vụ đám mây thương mại nhưng với quyền kiểm soát và bảo mật cao hơn.

Sử dụng Docker để cài đặt Nextcloud mang lại nhiều lợi ích:

  • Dễ dàng triển khai: Docker cho phép bạn đóng gói Nextcloud và tất cả các phụ thuộc của nó vào một container, giúp quá trình cài đặt trở nên đơn giản và nhanh chóng.
  • Tính nhất quán: Môi trường Docker đảm bảo Nextcloud hoạt động giống nhau trên mọi hệ thống, giảm thiểu các vấn đề liên quan đến sự khác biệt về môi trường.
  • Cô lập: Các container Docker cô lập ứng dụng, giúp tăng cường bảo mật và tránh xung đột với các ứng dụng khác trên hệ thống.
  • Dễ dàng cập nhật và bảo trì: Việc cập nhật Nextcloud trở nên đơn giản hơn khi sử dụng Docker, chỉ cần kéo image mới và khởi động lại container.
  • Khả năng mở rộng: Docker Compose cho phép bạn dễ dàng thêm các dịch vụ bổ sung như cơ sở dữ liệu hoặc máy chủ web vào cấu hình của mình.

Trong hướng dẫn này, chúng ta sẽ tận dụng những lợi ích này để cài đặt và cấu hình Nextcloud trên Ubuntu sử dụng Docker, giúp bạn có được một hệ thống lưu trữ đám mây cá nhân mạnh mẽ và linh hoạt.

Yêu cầu hệ thống

Trước khi bắt đầu cài đặt Nextcloud bằng Docker trên Ubuntu, hãy đảm bảo hệ thống của bạn đáp ứng các yêu cầu sau:

  • Ubuntu 20.04 LTS hoặc mới hơn (khuyến nghị sử dụng phiên bản LTS mới nhất)
  • CPU: 2 core
  • RAM: 2GB (khuyến nghị 4GB hoặc cao hơn cho hiệu suất tốt)
  • Dung lượng ổ cứng: Tối thiểu 20GB (tùy thuộc vào lượng dữ liệu bạn dự định lưu trữ)
  • Docker
  • Docker Compose

Cài đặt Docker (nếu chưa có)

ếu bạn đã cài đặt Docker trên hệ thống Ubuntu của mình, bạn có thể bỏ qua phần này. Nếu chưa, hãy làm theo các bước sau để cài đặt Docker

Cài đặt Docker trên Ubuntu

1. Thêm GPG key của Docker:

sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

2. Thêm repository Docker:

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

3. Cập nhật lại danh sách gói và cài đặt Docker:

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin

4. Kiểm tra cài đặt Docker bằng lệnh sau:

sudo docker run hello-world

Cài đặt Docker Compose:

1. Tải Docker Compose:

curl -SL https://github.com/docker/compose/releases/download/v2.29.3/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose

2. Cấp quyền thực thi:

sudo chmod +x /usr/local/bin/docker-compose

3. Kiểm tra cài đặt bằng lệnh sau:

docker-compose --version

Cấu hình người dùng:

Để tránh phải sử dụng sudo mỗi khi chạy lệnh Docker, thêm người dùng hiện tại vào nhóm docker:

sudo usermod -aG docker ${USER}

Sau đó, đăng xuất và đăng nhập lại để áp dụng thay đổi.

Sau khi hoàn thành các bước trên, môi trường của bạn đã sẵn sàng để cài đặt Nextcloud bằng Docker.

Cấu hình và cài đặt Nextcloud

Trong phần này, chúng ta sẽ tạo cấu hình Docker Compose để cài đặt Nextcloud.

  1. Tạo một thư mục mới cho dự án Nextcloud:
mkdir nextcloud
cd nextcloud
  1. Tạo file docker-compose.yml trong thư mục vừa tạo:
nano docker-compose.yml
  1. Sao chép và dán nội dung sau vào file:
version: '3'

services:
  db:
    image: mariadb
    command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
    restart: always
    volumes:
      - db:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=nextcloud
      - MYSQL_PASSWORD=nextcloud
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud

  app:
    image: nextcloud
    ports:
      - 8080:80
    links:
      - db
    volumes:
      - nextcloud:/var/www/html
    restart: always

volumes:
  db:
  nextcloud:

Giải thích các thành phần trong file docker-compose.yml

  • db: Dịch vụ cơ sở dữ liệu MariaDB
  • image: mariadb: Sử dụng image MariaDB từ Docker Hub
  • volumes: Lưu trữ dữ liệu cơ sở dữ liệu trong volume Docker
  • environment: Thiết lập các biến môi trường cho cơ sở dữ liệu
  • app: Dịch vụ Nextcloud
  • image: nextcloud: Sử dụng image Nextcloud chính thức
  • ports: Ánh xạ cổng 8080 của máy host với cổng 80 của container
  • links: Kết nối với dịch vụ cơ sở dữ liệu
  • volumes: Lưu trữ dữ liệu Nextcloud trong volume Docker
  • volumes: Định nghĩa các volume Docker để lưu trữ dữ liệu

Lưu ý: Đảm bảo thay đổi các mật khẩu trong phần environment để tăng cường bảo mật.

Khởi chạy Nextcloud container

1. Trong thư mục chứa file docker-compose.yml, chạy lệnh sau để khởi động các container:

sudo docker-compose up -d

Lệnh này sẽ tải về các image cần thiết và khởi động các container trong chế độ detached (chạy nền).

2. Để xem trạng thái của các container, sử dụng lệnh:

sudo docker-compose ps

Bạn sẽ thấy hai container đang chạy: một cho MariaDB và một cho Nextcloud.

3. Để xem logs của các container, sử dụng:

sudo docker-compose logs

Điều này có thể giúp bạn phát hiện bất kỳ vấn đề nào trong quá trình khởi động.

Sau khi các container đã khởi động thành công, Nextcloud sẽ có sẵn tại địa chỉ http://localhost:8080 hoặc http://your_server_ip:8080 nếu bạn đang cài đặt trên VPS.

Cấu hình Nextcloud

Sau khi đã cài đặt thành công Nextcloud bằng Docker, bạn cần thực hiện một số bước cấu hình cơ bản để bắt đầu sử dụng.

1. Mở trình duyệt web và truy cập địa chỉ:

http://localhost:8080

hoặc

http://your_server_ip:8080

2. Tại trang cấu hình ban đầu, bạn sẽ thấy form tạo tài khoản quản trị. Điền các thông tin sau:

  • Tên người dùng: Chọn một tên người dùng cho tài khoản admin
  • Mật khẩu: Đặt một mật khẩu mạnh
  • Thư mục dữ liệu: Giữ nguyên giá trị mặc định (/var/www/html/data)

3. Trong phần cấu hình cơ sở dữ liệu, chọn “MySQL/MariaDB” và điền các thông tin sau:

  • Tên người dùng cơ sở dữ liệu: nextcloud
  • Mật khẩu cơ sở dữ liệu: nextcloud (hoặc mật khẩu bạn đã đặt trong file docker-compose.yml)
  • Tên cơ sở dữ liệu: nextcloud
  • Địa chỉ máy chủ cơ sở dữ liệu: db (tên service của MariaDB trong docker-compose.yml)

4. Nhấn “Hoàn thành cài đặt” để kết thúc quá trình cấu hình ban đầu.

5. Sau khi đăng nhập vào trang quản trị Nextcloud, bạn nên thực hiện một số cấu hình cơ bản:

  • Cài đặt các ứng dụng cần thiết:
    • Truy cập “Ứng dụng” trong menu chính
    • Tìm và cài đặt các ứng dụng như Calendar, Contacts, Tasks, nếu cần
  • Cấu hình email:
    • Vào “Cài đặt” > “Cài đặt cơ bản”
    • Điền thông tin email admin và cấu hình SMTP để gửi email thông báo
  • Thiết lập giới hạn tải lên:
    • Trong “Cài đặt” > “Quản trị” > “Bổ sung”
    • Điều chỉnh giới hạn kích thước tải lên tối đa nếu cần
  • Bật các tính năng bảo mật:
    • Trong “Cài đặt” > “Quản trị” > “Bảo mật”
    • Bật xác thực hai yếu tố nếu cần
    • Cấu hình chính sách mật khẩu

6. Khám phá và tùy chỉnh:

  • Dành thời gian để khám phá các tính năng và cài đặt khác của Nextcloud để tối ưu hóa cho nhu cầu sử dụng của bạn.

Sau khi hoàn thành các bước này, Nextcloud của bạn đã sẵn sàng để sử dụng. Bạn có thể bắt đầu tải lên tệp, tạo thư mục và chia sẻ dữ liệu với người dùng khác.

Bảo mật và tối ưu hóa

Sau khi cài đặt và cấu hình cơ bản Nextcloud, việc tăng cường bảo mật và tối ưu hóa hiệu suất là rất quan trọng. Dưới đây là một số biện pháp bạn nên thực hiện:

Cấu hình HTTPS

1. Sử dụng Let’s Encrypt để có chứng chỉ SSL miễn phí:

  • Cài đặt Certbot: sudo apt install certbot python3-certbot-nginx
  • Tạo chứng chỉ: sudo certbot --nginx -d your_domain.com

2. Cập nhật file docker-compose.yml để sử dụng HTTPS:

app:
  ...
  ports:
    - 443:443
  volumes:
    - ./certs:/etc/letsencrypt

3. Cấu hình Nextcloud để sử dụng HTTPS:

Chỉnh sửa file config.php trong thư mục Nextcloud:

'overwrite.cli.url' => 'https://your_domain.com',
'overwriteprotocol' => 'https',

Thiết lập tường lửa

4. Cấu hình UFW (Uncomplicated Firewall):

sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable

Các biện pháp bảo mật khác

5. Bật xác thực hai yếu tố (2FA): Trong giao diện quản trị Nextcloud, vào “Cài đặt” > “Bảo mật” > “Xác thực hai yếu tố

6. Cập nhật thường xuyên: Đặt lịch kiểm tra và cập nhật Docker images:

sudo docker-compose pull
sudo docker-compose up -d

7. Giới hạn truy cập quản trị: Chỉnh sửa file config.php

'trusted_domains' => 
  array (
    0 => 'localhost',
    1 => 'your_domain.com',
  ),

    Tối ưu hóa hiệu suất

    8. Bật bộ nhớ đệm (cache):

    Cài đặt Redis:

    redis:
      image: redis:alpine
      restart: always
    
    app:
      ...
      links:
        - redis

    Cấu hình trong config.php

    'memcache.local' => '\OC\Memcache\Redis',
    'redis' => [
        'host' => 'redis',
        'port' => 6379,
    ],

    9. Tối ưu hóa PHP:

    • Tăng giới hạn bộ nhớ trong php.ini:
      memory_limit = 512M
    memory_limit = 512M

    10. Sử dụng CDN cho tài nguyên tĩnh:

    Cấu hình trong config.php:

    'htaccess.RewriteBase' => '/',
    'customclient_desktop' =>
      'https://download.nextcloud.com/desktop/releases/Windows/latest',

    Bằng cách áp dụng các biện pháp này, bạn sẽ cải thiện đáng kể bảo mật và hiệu suất của hệ thống Nextcloud của mình.

    Sao lưu và khôi phục

    Việc sao lưu dữ liệu Nextcloud là rất quan trọng để đảm bảo an toàn cho dữ liệu của bạn. Dưới đây là hướng dẫn cách sao lưu và khôi phục Nextcloud khi sử dụng Docker.

    Cách sao lưu dữ liệu Nextcloud

    1. Sao lưu volumes:

    Docker volumes chứa tất cả dữ liệu quan trọng của Nextcloud. Để sao lưu, sử dụng lệnh sau:

    sudo docker run --rm --volumes-from nextcloud_app_1 -v $(pwd):/backup ubuntu tar cvf /backup/nextcloud_data_backup.tar /var/www/html
    sudo docker run --rm --volumes-from nextcloud_db_1 -v $(pwd):/backup ubuntu tar cvf /backup/nextcloud_db_backup.tar /var/lib/mysql

    Lệnh này sẽ tạo hai file sao lưu: nextcloud_data_backup.tar cho dữ liệu ứng dụng và nextcloud_db_backup.tar cho cơ sở dữ liệu.

    2. Sao lưu cấu hình:

    Sao chép file docker-compose.yml và bất kỳ file cấu hình nào khác bạn đã tùy chỉnh.

    3. Tự động hóa quá trình sao lưu:

    Tạo một script sao lưu và lên lịch chạy nó bằng cron:

    #!/bin/bash
    BACKUP_DIR="/path/to/backup/directory"
    DATE=$(date +"%Y%m%d")
    
    # Sao lưu volumes
    docker run --rm --volumes-from nextcloud_app_1 -v $BACKUP_DIR:/backup ubuntu tar cvf /backup/nextcloud_data_$DATE.tar /var/www/html
    docker run --rm --volumes-from nextcloud_db_1 -v $BACKUP_DIR:/backup ubuntu tar cvf /backup/nextcloud_db_$DATE.tar /var/lib/mysql
    
    # Sao lưu file cấu hình
    cp /path/to/docker-compose.yml $BACKUP_DIR/docker-compose_$DATE.yml
    
    # Xóa các bản sao lưu cũ hơn 30 ngày
    find $BACKUP_DIR -name "nextcloud_*" -mtime +30 -delete

    Thêm vào crontab để chạy hàng ngày:

    0 2 * * * /path/to/backup_script.sh

    Quy trình khôi phục

    1. Dừng các container đang chạy:

    docker-compose down

    2. Khôi phục volumes:

    docker run --rm -v nextcloud_app:/var/www/html -v $(pwd):/backup ubuntu bash -c "cd /var/www/html && tar xvf /backup/nextcloud_data_backup.tar --strip 1"
    docker run --rm -v nextcloud_db:/var/lib/mysql -v $(pwd):/backup ubuntu bash -c "cd /var/lib/mysql && tar xvf /backup/nextcloud_db_backup.tar --strip 1"

    3. Khôi phục file cấu hình: Đảm bảo rằng bạn có file docker-compose.yml đã sao lưu.

    4. Khởi động lại các container:

    docker-compose up -d

    5. Kiểm tra và cập nhật:

    Truy cập vào giao diện web Nextcloud để đảm bảo mọi thứ hoạt động bình thường. Nếu cần, chạy lệnh cập nhật cơ sở dữ liệu:

    docker-compose exec --user www-data app php occ maintenance:mode --off
    docker-compose exec --user www-data app php occ upgrade

    Bằng cách thực hiện sao lưu thường xuyên và hiểu rõ quy trình khôi phục, bạn có thể đảm bảo dữ liệu của mình luôn được bảo vệ và có thể khôi phục nhanh chóng trong trường hợp xảy ra sự cố.

    Có thể bạn chưa biết

    Nhận thông báo qua email
    Nhận thông báo cho
    guest

    2 Bình luận
    Mới nhất
    Cũ nhất Nhiều like nhất
    Phản hồi nội tuyến
    Xem tất cả bình luận
    sieutonghop
    20 ngày trước

    Với những phiên bản khác thì sao ad nhỉ, có cần thay đổi phần nào ko