Tự xây “Google Drive” riêng trên Ubuntu 24.04 với Docker Compose: Làm chủ dữ liệu 100%

Ubuntu tutorial - IT technology blog
Ubuntu tutorial - IT technology blog

Nỗi lo mất trắng dữ liệu khi phụ thuộc vào Big Tech

Hãy tưởng tượng một sáng thức dậy, tài khoản Google Drive chứa toàn bộ ảnh 10 năm qua của bạn bị khóa do vi phạm chính sách “nhầm”. Hoặc đơn giản là khi bạn chạm mốc 15GB miễn phí, mỗi tháng bạn phải chi khoảng 45.000đ – 225.000đ để duy trì dung lượng. Việc giao phó dữ liệu cho bên thứ ba không chỉ tốn kém mà còn khiến bạn mất quyền kiểm soát hoàn toàn sự riêng tư.

Nhiều anh em bắt đầu tìm đến Home Lab hoặc thuê VPS giá rẻ (chỉ khoảng 5$/tháng) để tự cài Nextcloud. Tuy nhiên, việc cài đặt thủ công các thành phần PHP, Apache hay Database thường là một “cơn ác mộng” về xung đột phiên bản. Chỉ cần một dòng lệnh sai, hệ thống rất dễ rơi vào tình trạng “dependency hell” khiến việc sửa lỗi mất cả ngày trời.

Tại sao Docker Compose là lựa chọn tối ưu?

Thay vì cài trực tiếp lên hệ điều hành (Bare-metal), mình luôn ưu tiên Docker Compose. Cách này giúp tách biệt ứng dụng khỏi hệ thống gốc, giữ cho Ubuntu của bạn luôn “sạch sẽ”.

Thực tế tại dự án mình từng triển khai, việc dùng Docker giúp giảm 90% thời gian bảo trì. Khi cần nâng cấp, bạn chỉ mất đúng 30 giây để kéo Image mới về. Hệ thống sẽ vận hành nhịp nhàng qua 3 thành phần:

  • Nextcloud Container: Đóng vai trò bộ não xử lý mọi tác vụ.
  • MariaDB Container: Nơi lưu trữ thông tin người dùng và metadata cực kỳ ổn định.
  • Redis Container: “Trợ lý” đắc lực giúp tăng tốc độ load ảnh và xử lý file nhanh gấp 2-3 lần.

Mọi cấu hình được gói gọn trong một file duy nhất. Khi muốn đổi server, bạn chỉ cần copy thư mục dự án sang máy mới là xong.

Triển khai chi tiết trên Ubuntu 24.04

Bước 1: Cài đặt Docker chuẩn chỉnh

Đầu tiên, hãy cập nhật hệ thống để đảm bảo mọi thứ trơn tru:

sudo apt update && sudo apt upgrade -y
sudo apt install curl git -y

Đừng dùng bản Docker mặc định của Ubuntu vì nó thường cũ hơn. Hãy cài bản chính thức từ Docker Repo để có hiệu năng tốt nhất:

# Thiết lập GPG key
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

# Thêm repository
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 update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y

Bước 2: Tạo không gian làm việc

Mình khuyên bạn nên tạo thư mục trong /opt hoặc home để dễ quản lý và backup sau này.

mkdir ~/nextcloud-docker && cd ~/nextcloud-docker
mkdir data mysql redis

Bước 3: Thiết lập file Docker Compose

Tạo file docker-compose.yml. Đây là nơi chứa toàn bộ “linh hồn” của hệ thống:

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

  redis:
    image: redis:alpine
    restart: always

  app:
    image: nextcloud:latest
    restart: always
    ports:
      - 8080:80
    depends_on:
      - db
      - redis
    volumes:
      - ./data:/var/www/html
    environment:
      - MYSQL_PASSWORD=your_db_password
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
      - MYSQL_HOST=db
      - REDIS_HOST=redis

Mẹo nhỏ: Hãy thay your_db_password bằng một chuỗi ký tự khó đoán để bảo mật tốt hơn.

Bước 4: Kích hoạt “đám mây”

Chỉ cần một lệnh duy nhất để Docker tự động tải và thiết lập mọi thứ:

sudo docker compose up -d

Sau khoảng 1 phút, hãy kiểm tra bằng lệnh sudo docker ps. Nếu thấy cả 3 container đang ở trạng thái “Up”, bạn đã thành công.

Bước 5: Hoàn tất cài đặt qua giao diện Web

Truy cập vào địa chỉ IP của server qua port 8080 (ví dụ: http://192.168.1.10:8080). Tại màn hình chào mừng, bạn hãy tạo tài khoản Admin. Nextcloud sẽ tự kết nối với MariaDB nhờ các biến môi trường chúng ta đã thiết lập sẵn.

Tối ưu hiệu năng: Đừng bỏ qua Redis

Nếu không có Redis, Nextcloud sẽ chạy khá lờ đờ khi bạn cuộn qua danh sách hàng nghìn tấm ảnh. Để hệ thống mượt như Google Drive, hãy sửa file config:

sudo nano ~/nextcloud-docker/data/config/config.php

Thêm đoạn mã này vào trước dấu đóng ngoặc cuối cùng:

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

Cuối cùng, khởi động lại để áp dụng: sudo docker compose restart app.

Lời kết

Sở hữu một server lưu trữ riêng không hề khó nếu bạn đi đúng hướng. Với Ubuntu 24.04 và Docker Compose, bạn đã có trong tay một hệ thống mạnh mẽ, bảo mật và hoàn toàn miễn phí duy trì (ngoại trừ tiền điện hoặc tiền thuê VPS).

Để an toàn tuyệt đối khi truy cập từ xa, bạn nên nghiên cứu thêm về Cloudflare Tunnel hoặc Nginx Proxy Manager để cài đặt HTTPS. Chúc các bạn thành công!

Share: