RamaSite: CMS Laravel tự chứa trong một file SQLite
Lập trình viên kỳ cựu Dale Franks giới thiệu RamaSite, hệ quản trị nội dung mã nguồn mở xây dựng trên Laravel, Filament và SQLite, toàn bộ nội dung nằm trong một file cơ sở dữ liệu duy nhất. Dự án được viết xong trong khoảng 2 tuần với sự hỗ trợ của Claude Code, thay vì 6 tháng như công cụ blog ông tự làm năm 2006.

Lập trình viên kỳ cựu Dale Franks vừa giới thiệu RamaSite trên Hacker News — một hệ quản trị nội dung (CMS) mã nguồn mở, tự chứa hoàn toàn, xây dựng bằng Laravel, Filament và SQLite. Điểm đáng chú ý: toàn bộ mã nguồn được viết trong khoảng 2 tuần với sự hỗ trợ của Claude Code, trong khi công cụ blog ông tự làm năm 2006 mất tới 6 tháng.
Minh họa giao diện quản trị
Xuất phát từ nỗi ám ảnh WordPress
Franks không phải người mới trong ngành. Ông bắt đầu lập trình bằng BASIC năm 1980 trên chiếc TRS-80 Model I, từng viết RPG trên thẻ đục lỗ cho IBM System/360, COBOL trên DEC PDP 11/34, và làm việc chuyên nghiệp với VB, C#, SQL Server, ColdFusion, PHP.
Vấn đề ông muốn giải quyết rất cụ thể: ghét WordPress. Một blog về xe máy khá nổi tiếng của ông từng bị hacker phá, và ông cũng gặp tình cảnh tương tự với khách hàng. Theo ông, khi hacker tìm thấy một site WordPress, chúng "đập như đánh trống", còn việc quản trị thì mệt mỏi vì hệ thống plugin liên tục mất tương thích.
Ông cũng không phải fan lớn của PHP, nhưng thừa nhận nó có sẵn trên gần như mọi dịch vụ shared hosting — nơi phần lớn công việc web của ông diễn ra — nên trở thành lựa chọn mặc định.
RamaSite là gì?
Tên gọi lấy từ tiểu thuyết Rendezvous with Rama (1973) của Arthur C. Clarke, trong đó Rama là một thế giới hình trụ khép kín, tự mang theo mọi thứ bên trong. Triết lý thiết kế của sản phẩm cũng vậy:
- Toàn bộ nội dung nằm trong một file cơ sở dữ liệu SQLite duy nhất, hình ảnh nằm trong thư mục uploads bên trong site
- Không cần máy chủ cơ sở dữ liệu, dịch vụ bên ngoài, dòng lệnh hay file cấu hình phải sửa tay
- Cài đặt chỉ là tải một file zip lên shared hosting thông thường (Apache với cPanel) rồi hoàn tất màn hình thiết lập
Các tính năng chính gồm trang, blog và bài viết viết bằng Markdown với menu dựng tự động từ các trang; card, module và slider để dựng trang mà không cần viết HTML; thư viện ảnh và tệp cho phép thay ảnh, PDF mà không phải sửa các trang đang dùng chúng; nhúng video YouTube; form có lưu dữ liệu gửi lên và gửi email thông báo.
Ngoài ra còn có màn hình Theme để chỉnh logo, màu sắc, danh sách Google Fonts tuyển chọn, tiêu đề, header, footer và thanh trên cùng mà không cần sửa mã template. Việc chuyển hướng tự động khi trang đổi địa chỉ, sitemap tự sinh, robots.txt và RSS cho từng blog cũng được xử lý sẵn.
Phần vận hành gồm nhiều quản trị viên, đăng nhập hai bước tùy chọn, đặt lại mật khẩu qua email, ép buộc HTTPS, sao lưu một cú nhấp và cơ sở dữ liệu tự cập nhật sau khi nâng cấp.
Yêu cầu kỹ thuật và cách cài đặt
RamaSite cần PHP 8.4.1 trở lên với các extension pdo_sqlite, mbstring, intl, openssl, fileinfo, tokenizer, ctype, dom, xmlreader, filter và session (extension zip cần cho màn hình Backup). Cơ sở dữ liệu cần SQLite 3.26 trở lên — mức mà các máy chủ Red Hat, AlmaLinux và CloudLinux 8 đang có. Web server dùng Apache với mod_rewrite, tiêu chuẩn trên hosting cPanel.
Nếu thiếu thành phần nào, site sẽ báo rõ ngay lần truy cập đầu tiên bằng ngôn ngữ đủ để bạn chuyển tiếp cho nhà cung cấp hosting.
Quy trình cài đặt gồm: tải file ramasite-.zip từ trang Releases (không dùng bản "Source code" vì không chạy độc lập được), giải nén, tải toàn bộ nội dung thư mục ramasite lên thư mục web (thường là public_html). Sau đó mở site trên trình duyệt, nhập setup key lấy từ file setup-key.txt trong thư mục đã tải lên, rồi điền tên site, tên, email và mật khẩu. File key sẽ tự xóa khi thiết lập xong; trang quản trị nằm tại /admin.
Với người có Composer và PHP trên máy, có thể cài từ Packagist:
composer create-project dalefranks/ramasite mysite --no-dev
Khi nâng cấp, chỉ cần tải bản sao lưu ở màn hình Backup, ghi đè các file của bản phát hành mới, rồi mở site — lần truy cập đầu tiên nó sẽ tự cập nhật cơ sở dữ liệu sau khi lưu một bản sao. Trang, ảnh, cấu hình và tài khoản không nằm trong file zip nên không bao giờ bị ghi đè.
Màn hình cấu hình font chữ trong phần Theme
Quy trình phát triển
Franks cho biết ông tự thiết kế đặc tả cho những gì mình muốn, rồi để Claude Code đảm nhận việc viết mã. Dự án khởi đầu là một CMS dạng flat-file dùng Markdown, sau đó chuyển sang SQLite vì việc xử lý file và thư mục Markdown dần trở nên mệt mỏi.
RamaSite phát hành theo giấy phép MIT, bản quyền năm 2026. Với nhà phát triển, các bản phát hành được GitHub Actions dựng tự động khi đẩy tag bắt đầu bằng v: chạy kiểm thử, kiểm tra bảo mật gói phụ thuộc, rồi xuất bản file zip kèm thư mục vendor. Tag có dấu gạch nối như v0.4.0-alpha được phát hành dưới dạng pre-release.
Hiện ông đang vận hành hai website công khai trên RamaSite.
Góc nhìn
Với lập trình viên và doanh nghiệp Việt Nam, RamaSite là phương án đáng cân nhắc cho các site nội dung nhỏ và vừa chạy trên shared hosting giá rẻ: một file SQLite duy nhất giúp sao lưu chỉ là tải một tệp về, còn việc tự cập nhật cơ sở dữ liệu khi nâng cấp giảm bớt thao tác thủ công. Bề mặt tấn công cũng hẹp hơn mô hình WordPress với hàng loạt plugin bên thứ ba.
Điều đáng chú ý hơn là quy trình làm việc: một người đã 46 năm trong nghề dùng công cụ AI để rút thời gian phát triển từ 6 tháng xuống 2 tuần. Điều này không có nghĩa AI thay thế kinh nghiệm — chính đặc tả chi tiết và hiểu biết về hosting, PHP, Apache mới là thứ định hình sản phẩm. Bài học thực tế là kỹ năng viết đặc tả rõ ràng ngày càng có giá trị, nhất là với các đội nhỏ muốn tự dựng công cụ nội bộ thay vì phụ thuộc vào nền tảng có sẵn.
Nguồn: github.com · Quy trình biên tập


