Thursday , 4 June 2026

Nâng Cấp DSM 7 Nextcloud Không Chạy – Fix Nhanh Bằng Docker

Sau khi nâng cấp DSM 7 Nextcloud không chạy là tình trạng khá phổ biến — nguyên nhân chính là DSM 7.x bỏ hỗ trợ PHP 7.x, khiến các bản Nextcloud cũ cài theo kiểu native không thể khởi động. Giải pháp gọn nhất là chuyển Nextcloud sang chạy trong Docker, giữ nguyên toàn bộ database và dữ liệu cũ, không cần nâng cấp phiên bản Nextcloud.

Bài viết hướng dẫn cụ thể từng bước cho trường hợp migrate Nextcloud 19.x sang Docker trên DSM 7.x, áp dụng được cho các phiên bản Nextcloud cũ khác có cùng vấn đề.


Tại Sao Nâng Cấp DSM 7 Khiến Nextcloud Không Chạy?

DSM 6.2 đi kèm PHP 7.x. Khi nâng lên DSM 7.x, Synology loại bỏ PHP 7.x khỏi Web Station — các ứng dụng web cài native phụ thuộc vào PHP này sẽ báo lỗi hoặc không load được. Nextcloud 19 trở về trước là những phiên bản bị ảnh hưởng trực tiếp.

Thay vì nâng cấp Nextcloud từng bước (19 → 20 → 21 → … → mới nhất, rất tốn thời gian), cách nhanh hơn là đóng gói Nextcloud cũ vào Docker container với PHP phiên bản tương thích, cho chạy độc lập với PHP của DSM.


Mục Tiêu

  • Chạy lại Nextcloud phiên bản cũ bằng Docker, không phụ thuộc PHP của DSM
  • Giữ nguyên database và toàn bộ dữ liệu cũ
  • Chạy ổn định trên DSM 7.x mà không cần nâng cấp Nextcloud

Bước 1: Chuẩn Bị Thư Mục Và Dump Database

Tạo cấu trúc thư mục để Docker mount vào:

Copy toàn bộ mã nguồn Nextcloud cũ vào /volume1/docker/nextcloud/app.

Dump Database Trước Khi Tiến Hành

Nextcloud cũ đang dùng MariaDB 10.x cài native trên DSM. Cần dump trước khi làm bất cứ thứ gì. Nếu đã nâng DSM rồi mà chưa dump, vào Package Manager repair lại MariaDB — DSM 7.0 vẫn chạy được.

SSH vào Synology, chạy lệnh dump:


Bước 2: Tạo File docker-compose.yml

Lưu ý: thay your_root_passwordyour_password bằng mật khẩu thực tế. Hai giá trị này phải khớp với database đang dùng trong Nextcloud cũ.


Bước 3: Cập Nhật File config.php

Mở file tại /volume1/docker/nextcloud/app/config/config.php, chỉnh các dòng sau:

Kiểm tra lại các giá trị dbname, dbuser, dbpassword phải trùng khớp với thông số trong docker-compose.yml.


Bước 4: Phân Quyền Thư Mục

User ID 33 là www-data bên trong container Nextcloud. Bỏ qua bước này, container sẽ báo lỗi permission khi truy cập file.


Bước 5: Import Database Và Khởi Chạy

Khởi động container database trước để import:

Import database cũ vào container:

Nếu lệnh trên bị treo hoặc báo lỗi, SSH thẳng vào container để import trực tiếp (copy file .sql vào đúng thư mục mount /var/lib/mysql của container trước).

Sau khi import xong, khởi động container Nextcloud:

Kiểm tra trạng thái Nextcloud:

Output trả về installed: true là thành công.


Lưu Ý Về Tường Lửa DSM

Nếu container khởi động nhưng không truy cập được hoặc database không kết nối được, kiểm tra DSM Firewall. DSM 7.x có lỗi chặn Docker bridge network — cần whitelist subnet 172.17.0.0/16 trong Control Panel → Security → Firewall. Chi tiết xem bài fix lỗi tường lửa Docker trên Synology.


Tổng Kết

Khi nâng cấp DSM 7 Nextcloud không chạy do PHP cũ bị loại bỏ, migrate sang Docker là giải pháp nhanh và ổn định hơn so với nâng cấp Nextcloud từng bước. Toàn bộ dữ liệu và database được giữ nguyên, chỉ thay đổi môi trường chạy từ native PHP sang container.

Nếu sau này muốn nâng Nextcloud lên phiên bản mới hơn, chỉ cần thay tag image trong docker-compose và chạy lần lượt từng phiên bản — đã có Docker thì bước này dễ kiểm soát hơn nhiều.

Tham khảo thêm hướng dẫn cài Nextcloud trên Synology bằng Docker tại mariushosting.com.

Xem thêm các bài viết kỹ thuật tại tungle.blog và chuyên mục Thủ thuật.

Bạn đang chạy Nextcloud phiên bản nào trên Synology? Gặp lỗi gì sau khi nâng DSM? Để lại bình luận bên dưới.

About Tung Le

Cài win 10000 lần

Check Also

cau_hinh_ulimit_linux_docker_k8s

Cấu Hình ulimit Linux Cho Docker Và Kubernetes trong 5 phút

Cấu hình ulimit Linux là bước thường bị bỏ qua sau khi cài OS mới …

Leave a Reply