Phần mềm quản lý xe tự lưu trữ May là một ứng dụng web mã nguồn mở giúp bạn ghi chép nhiên liệu, chi phí, bảo dưỡng và nhắc lịch cho nhiều phương tiện trong cùng một giao diện sạch sẽ. Nó dành cho gia đình hoặc nhóm nhỏ muốn tự kiểm soát dữ liệu xe thay vì gửi lên dịch vụ đám mây bên thứ ba. Bạn có thể xem mã nguồn và hướng dẫn tại repository May trên GitHub.
Thank you for reading this post, don't forget to subscribe!Những điểm chính
- May là ứng dụng web mã nguồn mở, tự lưu trữ, dùng để theo dõi nhiên liệu, chi phí, bảo dưỡng và nhắc lịch cho nhiều phương tiện.
- Hỗ trợ đa người dùng, chia sẻ xe, tùy chỉnh đơn vị và 15 ngôn ngữ, phù hợp với gia đình hoặc đội xe nhỏ.
- Triển khai nhanh bằng Docker, mặc định dùng SQLite, có REST API, Home Assistant, lịch và thông báo qua Email, ntfy, Pushover, Webhook.
- Hạn chế đáng cân nhắc: bạn phải tự lo hạ tầng, cấu hình biến môi trường và các dịch vụ bên ngoài như SMTP để nhận email.
Phần mềm quản lý xe tự lưu trữ May là gì và giải quyết vấn đề gì?

Đây là ứng dụng self-hosted dành riêng cho việc quản lý phương tiện cá nhân: bạn nhập dữ liệu đổ xăng, sửa chữa, bảo hiểm, thuế và các khoản định kỳ, sau đó May tự tính toán mức tiêu hao và tạo nhắc lịch. Repo này giải quyết bài toán phân tán giấy tờ và số liệu rời rạc khi bạn sở hữu nhiều xe hoặc muốn chia sẻ chúng trong gia đình.
Khác với ứng dụng đám mây, May thuộc nhóm phần mềm tự lưu trữ, nghĩa là dữ liệu nằm trên máy chủ hoặc NAS của bạn. README của dự án còn cho biết tên May được đặt theo James May, vì vậy nó nằm trong bộ ba nhà dẫn chương trình Top Gear cùng Clarkson và Hammond. Điều này không ảnh hưởng kỹ thuật, nhưng cho thấy sản phẩm hướng tới người yêu xe thực thụ.
May có những tính năng nổi bật nào?

May gộp phần lớn thứ bạn cần để chăm sóc xe vào một dashboard web hiện đại: ghi nhiên liệu, chi phí, lịch bảo dưỡng, tài liệu xe và thông báo. Các phân hệ được thiết kế theo hướng thao tác nhanh, từ nhập dữ liệu đổ xăng đến xem báo cáo PDF. Dưới đây là nhóm tính năng chính được README nhấn mạnh.
Đa phương tiện, đa người dùng và chia sẻ
Bạn có thể tạo danh sách xe gồm ô tô, van, xe máy và xe tay ga với kiểu xe tùy chỉnh. Mỗi xe lưu thương hiệu, model, năm, biển số, loại nhiên liệu, dung tích bình và ảnh. Nếu bật trạng thái Shared, xe sẽ hiển thị cho mọi người dùng trong cùng instance và ai cũng có thể ghi dữ liệu. Trang chi tiết xe còn có bảng bảo dưỡng sắp tới cùng phần ghi chú phụ tùng có thể thu gọn.
Theo dõi nhiên liệu, chi phí và trạm xăng yêu thích
Tính năng Fuel Logs cho phép ghi mỗi lần đổ xăng kèm chỉ số odometer, lượng nhiên liệu, tổng tiền và đơn giá. Quick Entry Mode giúp nhập dữ liệu nhanh hơn, và khi đánh dấu đầy bình, ứng dụng tự tính tiêu hao theo L/100km hoặc MPG. Các chi phí được phân loại theo bảo dưỡng, đăng kiểm, bảo hiểm, thuế, gửi xe, phụ kiện và khoản khác. Bạn cũng có thể lưu trạm xăng yêu thích để chọn nhanh mỗi lần nhập liệu.
Bảo dưỡng, nhắc lịch và thông báo đa kênh
May cho phép tạo lịch bảo dưỡng định kỳ theo số km hoặc thời gian, ví dụ thay dầu mỗi 10.000 km hoặc 12 tháng. Các khoản định kỳ như bảo hiểm, thuế, đăng ký có thể lặp lại theo tháng, quý hoặc năm. Khi hết hạn, hệ thống tự sinh lời nhắc cho các mốc như MOT, bảo dưỡng, bảo hiểm, thuế. Thông báo có thể gửi qua Email, ntfy, Pushover hoặc Webhook, đồng thời bạn có thể đăng ký lịch qua webcal cho Apple Calendar, Google Calendar hoặc Outlook.
API, Home Assistant, PWA và báo cáo
Bên cạnh giao diện web, May có REST API với tài liệu tại /api/docs và hỗ trợ Home Assistant qua các endpoint như /api/ha/summary. Nếu bạn ở Anh, tính năng DVLA Integration giúp tra cứu tình trạng MOT và thuế xe. Ứng dụng cài được như PWA trên điện thoại, có thể nhập dữ liệu từ Fuelly CSV và xuất toàn bộ dữ liệu ra JSON hoặc CSV. Bạn cũng có thể đính kèm ảnh hoặc PDF vào bản ghi nhiên liệu, lưu giấy tờ xe tới 300MB mỗi tệp và tạo báo cáo PDF tổng hợp cho từng xe.
Hướng dẫn cài đặt và sử dụng May như thế nào?

May cài đặt nhanh nhất bằng Docker, nhưng vẫn chạy được trực tiếp bằng Python nếu bạn không dùng container. Quy trình cơ bản gồm tải tệp docker-compose, khởi động dịch vụ, lấy mật khẩu admin từ log và vào web tại cổng 5050. Các bước dưới đây đi theo đúng hướng dẫn trong README của dự án.
Cài đặt bằng Docker Compose
- Tạo thư mục riêng:
mkdir may && cd may - Tải tệp compose:
curl -O https://raw.githubusercontent.com/dannymcc/may/main/docker-compose.yml - Khởi động container:
docker compose up -d - Mở trình duyệt và truy cập
http://localhost:5050
Nếu muốn chạy trực tiếp bằng Docker, dùng lệnh docker run -d --name may -p 5050:5050 -v may_data:/app/data -e SECRET_KEY=your-secret-key -e PUID=1000 -e PGID=1000 ghcr.io/dannymcc/may:latest. Biến PUID và PGID tuân theo quy ước linuxserver.io, mặc định là 1000:1000; trên Unraid bạn có thể đặt PUID=99 và PGID=100.
Lần đăng nhập đầu tiên và cấu hình cơ bản
Tài khoản mặc định là admin. Nếu bạn không đặt biến môi trường ADMIN_PASSWORD từ trước, May sẽ tạo mật khẩu ngẫu nhiên và in ra console. Hãy chạy lệnh xem log container để lấy mật khẩu, sau đó đổi ngay sau khi đăng nhập. Bạn nên đặt ADMIN_PASSWORD trong docker-compose.yml để tránh phải tìm password mỗi lần khởi động lại.
Tệp cấu hình dùng chung là .env.example:
SECRET_KEY: khóa mã hóa session, bạn nên tạo chuỗi ngẫu nhiên dài.DATABASE_URL: mặc địnhsqlite:///data/may.db, có thể đổi sang PostgreSQL.UPLOAD_FOLDER: thư mục lưu tệp đính kèm, mặc định/app/data/uploads.
Ngoài ra, bạn có thể chỉnh Tailwind Asset URL, Tailwind CDN URL và HTMX CDN URL nếu muốn tùy biến giao diện khi nâng cấp thư viện.
Ai nên dùng và ai không nên dùng May?

Từ góc nhìn người triển khai, May phù hợp với người đã quen tự chạy dịch vụ trên NAS hoặc VPS và muốn làm chủ dữ liệu xe của mình. Ngược lại, nếu bạn không muốn đụng tới Docker, biến môi trường hay cập nhật phần mềm thì một ứng dụng SaaS hoặc file Excel có thể nhẹ nhàng hơn. Dưới đây là bức tranh rõ hơn.
Trường hợp nên chọn May
- Bạn sở hữu từ hai phương tiện trở lên và muốn xem mức tiêu hao nhiên liệu, tổng chi phí vận hành trong một nơi duy nhất.
- Bạn cần chia sẻ việc ghi nhận với người thân hoặc đồng nghiệp trong một nhóm nhỏ, nhờ hỗ trợ đa người dùng.
- Bạn muốn nhận cảnh báo gia hạn bảo hiểm, thuế hoặc đăng kiểm qua email hoặc push notification.
- Bạn thích tích hợp dữ liệu vào Home Assistant hoặc tự động hóa bằng REST API.
Trường hợp không nên dùng May
- Bạn không có kiến thức cơ bản về Docker, container hoặc không muốn tự quản lý bản cập nhật.
- Bạn chỉ cần theo dõi một xe đơn giản và không muốn dành thời gian cấu hình máy chủ.
- Bạn cần đồng bộ dữ liệu xuyên thiết bị mà không tự thiết lập VPN hoặc expose công khai.
- Bạn muốn dữ liệu sẵn sàng trên mọi thiết bị mà không quan tâm dữ liệu nằm ở đâu.
May có hạn chế gì cần lưu ý?

Không có công cụ nào hoàn hảo, và May cũng có những điểm bạn cần cân nhắc trước khi triển khai. Phần lớn hạn chế đến từ bản chất self-hosted hơn là lỗi tính năng. Tuy nhiên, người dùng ít kinh nghiệm có thể gặp rào cản ở bước cấu hình thông báo hoặc tích hợp bên ngoài.
- Giao diện và nội dung được viết bằng tiếng Anh mặc định; README liệt kê 15 ngôn ngữ nhưng chưa có tiếng Việt. Bản dịch do AI tạo nên có thể chưa chính xác và dự án khuyến khích cộng đồng gửi pull request chỉnh sửa.
- Việc nhận email yêu cầu bạn cấu hình SMTP trong phần admin; ntfy, Pushover và Webhook cũng cần tài khoản hoặc endpoint riêng.
- PDF generation dùng WeasyPrint, có thể cần cài thêm thư viện hệ thống như libpango trên Ubuntu/Debian hoặc pango trên macOS.
- Nếu chạy bằng SQLite theo mặc định, bạn nên sao lưu file may.db thường xuyên. Khi dữ liệu lớn hơn, có thể chuyển sang PostgreSQL bằng DATABASE_URL.
- Ứng dụng chưa được quảng bá rộng rãi, vì vậy bạn nên dựa vào GitHub Issues nếu gặp lỗi và tự kiểm tra log hệ thống.
Nếu bạn muốn đọc kỹ tài liệu gốc, hãy xem trang GitHub của dự án May.
Câu hỏi thường gặp
May có miễn phí sử dụng không?
Dự án được phát hành theo giấy phép MIT, nên bạn có thể tự do tải mã nguồn, chạy và chỉnh sửa cho nhu cầu cá nhân hoặc tổ chức. Tuy nhiên, bạn vẫn cần tự lo máy chủ, lưu trữ dữ liệu và chi phí vận hành nếu triển khai trên VPS hoặc NAS.
May có hỗ trợ tiếng Việt không?
Theo danh sách ngôn ngữ trong README, May hiện hỗ trợ tiếng Anh, Đức, Tây Ban Nha, Pháp, Ý, Hà Lan, Bồ Đào Nha, Ba Lan, Thụy Điển, Đan Mạch, Na Uy, Phần Lan, Nhật, Trung và Hàn. Chưa có tiếng Việt trong danh sách này, nhưng bạn có thể đóng góp bản dịch theo hướng dẫn trong README nếu muốn.
Tôi có thể chuyển từ SQLite sang PostgreSQL không?
Có. May đọc biến môi trường DATABASE_URL và hỗ trợ PostgreSQL bên cạnh SQLite mặc định. Bạn chỉ cần đổi giá trị DATABASE_URL thành chuỗi kết nối PostgreSQL rồi khởi động lại container. Quá trình tạo bảng và migration được README mô tả là tự động, nhưng bạn nên sao lưu dữ liệu trước khi chuyển.
Làm sao để lấy mật khẩu admin sau khi cài đặt?
Nếu chưa đặt ADMIN_PASSWORD, May tạo mật khẩu ngẫu nhiên và in ra console trong lần chạy đầu tiên. Bạn chỉ cần xem log container bằng lệnh docker logs để tìm dòng SECURITY NOTICE. Sau khi đăng nhập, hãy đổi mật khẩu ngay và nên đặt ADMIN_PASSWORD trong tệp docker-compose.yml cho những lần sau.
May có thể kết nối với Home Assistant không?
Có. README cung cấp endpoint REST như /api/ha/status, /api/ha/vehicles, /api/ha/alerts và /api/ha/summary để tạo sensor trong Home Assistant. Bạn cần tạo API key trong phần Settings > API rồi truyền qua header Authorization dạng Bearer. Sau đó có thể dùng resource để hiển thị tổng chi phí hoặc số cảnh báo đang đến hạn.
Kết luận
May là lựa chọn đáng thử nếu bạn muốn một phần mềm quản lý xe tự lưu trữ gọn gàng, mã nguồn mở và giàu tính năng. Nó không dành cho người ngại kỹ thuật, nhưng nếu bạn đã quen Docker thì việc ghi nhiên liệu, theo dõi bảo dưỡng và nhận nhắc lịch trở nên rất rõ ràng. Bạn có thể bắt đầu ngay bằng cách tải repo May trên GitHub và chạy container trong vài phút.

