1. Tổng quan.
Snipe-IT là một phần mềm quản lý tài sản mã nguồn mở, được thiết kế để giúp các tổ chức theo dõi, quản lý và bảo quản tài sản vật lý, như máy tính, thiết bị mạng, thiết bị điện tử và các tài sản khác. Đây là một hệ thống quản lý tài sản mạnh mẽ và linh hoạt, cung cấp các tính năng quan trọng như quản lý cấu hình, lịch sử sửa chữa, theo dõi mượn/trả, theo dõi vị trí và nhiều tính năng khác.
Snipe-IT có thể chạy trên nhiều hệ điều hành, bao gồm:
- Hệ điều hành Windows: Snipe-IT có thể chạy trên các phiên bản Windows như Windows Server hoặc Windows 10.
- Hệ điều hành Linux: Snipe-IT có thể chạy trên các phiên bản Linux như Ubuntu, CentOS, Debian và nhiều hệ điều hành Linux khác.
- Hệ điều hành macOS: Snipe-IT cũng có thể chạy trên macOS, cho phép người dùng trên các thiết bị Mac sử dụng phần mềm này để quản lý tài sản.
Snipe-IT phù hợp cho nhiều loại doanh nghiệp và tổ chức, bao gồm:
- Doanh nghiệp vừa và nhỏ: Snipe-IT cung cấp một giải pháp quản lý tài sản linh hoạt và dễ sử dụng cho các doanh nghiệp vừa và nhỏ.
- Tổ chức giáo dục: Trường học, trung tâm đào tạo và các tổ chức giáo dục khác có thể sử dụng Snipe-IT để quản lý các tài sản công nghệ trong môi trường học tập.
- Tổ chức công: Snipe-IT cũng phù hợp cho các tổ chức công, đơn vị chính phủ hoặc tổ chức phi lợi nhuận để quản lý tài sản và các thiết bị công cộng.
Ưu điểm của Snipe-IT bao gồm:
- Mã nguồn mở: Snipe-IT là một phần mềm mã nguồn mở, cho phép người dùng tùy chỉnh và mở rộng theo nhu cầu cụ thể.
- Giao diện người dùng thân thiện: Giao diện Snipe-IT dễ sử dụng, có thể được tùy chỉnh để phù hợp với yêu cầu của người dùng.
- Quản lý toàn diện: Snipe-IT cung cấp các tính năng quản lý tài sản toàn diện, bao gồm theo dõi, bảo trì, mượn/trả, quản lý lịch sử và nhiều tính năng khác.
- Theo dõi vị trí: Snipe-IT cho phép người dùng theo dõi vị trí vật lý của các tài sản và thiết bị.
Nhược điểm của Snipe-IT có thể bao gồm:
- Yêu cầu cấu hình: Snipe-IT có thể yêu cầu một số yêu cầu cấu hình hệ thống nhất định để chạy một cách tốt nhất.
- Hỗ trợ kỹ thuật: Do là một phần mềm mã nguồn mở, hỗ trợ kỹ thuật có thể hạn chế so với các sản phẩm thương mại.
Các tính năng nổi bật của Snipe-IT bao gồm:
- Quản lý tài sản: Snipe-IT cung cấp khả năng quản lý tài sản vật lý từ việc gắn kết, cấu hình, đăng ký, kiểm kê, mượn/trả và báo cáo.
- Theo dõi lịch sử: Snipe-IT theo dõi lịch sử của các tài sản, bao gồm thông tin sửa chữa, di chuyển và sử dụng.
- Bảo trì và bảo dưỡng: Snipe-IT cho phép lập lịch bảo trì định kỳ và theo dõi trạng thái bảo trì của các tài sản.
- Tích hợp API: Snipe-IT cung cấp API để tích hợp với các ứng dụng và hệ thống khác.
- Giao diện đa ngôn ngữ: Snipe-IT hỗ trợ nhiều ngôn ngữ khác nhau, cho phép người dùng sử dụng trong môi trường đa quốc gia.
Đây chỉ là một số tính năng và thông tin cơ bản về Snipe-IT. Có thể có nhiều tính năng khác tuỳ thuộc vào phiên bản và cấu hình được tùy chỉnh của người dùng.
2. Triển khai Snipe-IT sử dụng Container.
Bước 1 – Cài đặt Docker từ hướng dẫn https://wiki.hoanghd.com/cai-dat-docker-tren-ubuntu/
.
Bước 2 – Cài đặt Docker Compose từ hướng dẫn https://wiki.hoanghd.com/cai-dat-docker-compose-tren-ubuntu/
.
Bước 3 – Tạo file docker-compose.yml
với nội dung bằng cách sử dụng vi docker-compose.yml
.
version: '3'
services:
snipe-mysql:
container_name: snipe-mysql
image: mysql:5.6
env_file:
- ./.env
volumes:
- snipesql-vol:/var/lib/mysql
command: --default-authentication-plugin=mysql_native_password
expose:
- "3306"
snipe-it:
container_name: snipe-server
image: snipe/snipe-it
env_file:
- ./.env
ports:
- "80:80"
depends_on:
- snipe-mysql
volumes:
snipesql-vol:
Trong file tin cấu hình docker-compose.yaml
trên, đoạn mã định nghĩa hai dịch vụ được sử dụng để triển khai Snipe-IT:
snipe-mysql
: Dịch vụ MySQL 5.6:container_name
: Tên của container chứa MySQL.image
: Image của MySQL 5.6 được sử dụng.env_file
: Đường dẫn đến file tin .env, chứa các biến môi trường được sử dụng để cấu hình MySQL (như đã giải thích trước đó).volumes
: Định nghĩa một khối dữ liệu (volume) có tênsnipesql-vol
để lưu trữ dữ liệu MySQL.command
: Tham số command được truyền khi khởi chạy container MySQL, trong trường hợp này là--default-authentication-plugin=mysql_native_password
để sử dụng phương thức xác thực mặc định của MySQL 5.6.expose
: Mở cổng 3306 để cho phép kết nối đến MySQL từ các dịch vụ khác trong mạng nội bộ của Docker.
snipe-it
: Dịch vụ Snipe-IT:container_name
: Tên của container chứa Snipe-IT.image
: Image của Snipe-IT được sử dụng.env_file
: Đường dẫn đến file tin .env, chứa các biến môi trường được sử dụng để cấu hình Snipe-IT (như đã giải thích trước đó).ports
: Mở cổng 80 của container để có thể truy cập Snipe-IT qua HTTP từ bên ngoài Docker.depends_on
: Chỉ định rằng dịch vụ Snipe-IT phụ thuộc vào dịch vụ snipe-mysql, tức là Snipe-IT chỉ được khởi chạy sau khi MySQL đã khởi chạy thành công.
Ngoài ra, file tin cấu hình docker-compose.yaml còn định nghĩa một volume có tên snipesql-vol
được sử dụng để lưu trữ dữ liệu của MySQL. Volume này sẽ giữ cho dữ liệu không bị mất khi container MySQL bị xóa hoặc khởi động lại.
Bước 4 – Tạo file ./.env
với nội dung bằng cách sử dụng vi ./.env
.
# Mysql Parameters
MYSQL_PORT_3306_TCP_ADDR=snipe-mysql
MYSQL_PORT_3306_TCP_PORT=3306
MYSQL_ROOT_PASSWORD=Hoanghd164
MYSQL_DATABASE=snipeit
MYSQL_USER=hoanghd
MYSQL_PASSWORD=Hoanghd164
# Email Parameters
MAIL_PORT_587_TCP_ADDR=smtp.hoanghd.com
MAIL_PORT_587_TCP_PORT=587
MAIL_ENV_FROM_ADDR=hoanghd@hoanghd.com
MAIL_ENV_FROM_NAME=Ha Dang Hoang
MAIL_ENV_USERNAME=hoanghd
MAIL_ENV_PASSWORD=Hoanghd164
# Snipe-IT Settings
APP_ENV=production
APP_DEBUG=false
APP_KEY={{INSERT_API_TOKEN}}
APP_URL=http://192.168.13.209
APP_TIMEZONE=Asia/Ho_Chi_Minh
APP_LOCALE=vi
Nhớ thay thế các tham số cho phù hợp với thông tin của bạn. Dưới đây là các giải thích cho các tham số cấu hình trong file tin môi trường (.env
) của Snipe-IT:
MYSQL_PORT_3306_TCP_ADDR
: Địa chỉ IP hoặc tên máy chủ của MySQL.MYSQL_PORT_3306_TCP_PORT
: Cổng kết nối MySQL.MYSQL_ROOT_PASSWORD
: Mật khẩu của người dùng root trong MySQL.MYSQL_DATABASE
: Tên cơ sở dữ liệu MySQL mà Snipe-IT sẽ sử dụng.MYSQL_USER
: Tên người dùng MySQL được sử dụng bởi Snipe-IT.MYSQL_PASSWORD
: Mật khẩu của người dùng MySQL.MAIL_PORT_587_TCP_ADDR
: Địa chỉ IP hoặc tên máy chủ của SMTP server (máy chủ email).MAIL_PORT_587_TCP_PORT
: Cổng kết nối SMTP.MAIL_ENV_FROM_ADDR
: Địa chỉ email nguồn (người gửi).MAIL_ENV_FROM_NAME
: Tên người gửi trong email.MAIL_ENV_USERNAME
: Tên người dùng (username) để xác thực với SMTP server.MAIL_ENV_PASSWORD
: Mật khẩu để xác thực với SMTP server.APP_ENV
: Môi trường ứng dụng của Snipe-IT, trong trường hợp này làproduction
(triển khai thực tế).APP_DEBUG
: Có bật chế độ gỡ lỗi (debug mode) cho ứng dụng hay không (true
hoặcfalse
).APP_KEY
: Khóa ứng dụng, thường được tạo tự động và không nên thay đổi thủ công (riêng trường này ở bước này bạn hãy để trống, chúng ta sẽ lấy token và điền vào nó ở các bước tiếp theo).APP_URL
: URL gốc của ứng dụng Snipe-IT.APP_TIMEZONE
: Múi giờ của ứng dụng, ở đây làAsia/Ho_Chi_Minh
(Giờ chuẩn Đông Á).APP_LOCALE
: Ngôn ngữ và vùng địa lý được sử dụng trong ứng dụng, ở đây là tiếng Việt (vi
).
Các thông số này được sử dụng để cấu hình Snipe-IT để kết nối với cơ sở dữ liệu MySQL và gửi email thông qua máy chủ SMTP.
Bước 5 – Chạy Docker Compose.
sudo docker-compose up -d
Quá trình lệnh docker-compose up -d diễn ra như sau:
$ sudo docker-compose up -d
[+] Running 44/44
⠿ snipe-mysql Pulled 38.3s
⠿ 35b2232c987e Pull complete 25.6s
⠿ fc55c00e48f2 Pull complete 25.7s
⠿ 0030405130e3 Pull complete 26.0s
⠿ e1fef7f6a8d1 Pull complete 26.3s
⠿ 1c76272398bb Pull complete 26.6s
⠿ f57e698171b6 Pull complete 27.8s
⠿ f5b825b269c0 Pull complete 28.1s
⠿ dcb0af686073 Pull complete 28.2s
⠿ 27bbfeb886d1 Pull complete 32.6s
⠿ 6f70cc868145 Pull complete 34.0s
⠿ 1f6637f4600d Pull complete 34.2s
⠿ snipe-it Pulled 45.3s
⠿ 6b851dcae6ca Pull complete 4.9s
⠿ cbbd533a8158 Pull complete 23.3s
⠿ 74783b11fee9 Pull complete 23.5s
⠿ 258a445e87d7 Pull complete 23.6s
⠿ b23b890384ca Pull complete 23.7s
⠿ 05c8ee495844 Pull complete 23.8s
⠿ fe4a682d46aa Pull complete 23.9s
⠿ aa853f31ef78 Pull complete 24.0s
⠿ 1bb109b419e7 Pull complete 24.1s
⠿ 79ea795ab7ad Pull complete 24.2s
⠿ 44d4fe0ec77d Pull complete 24.2s
⠿ 2129d832cdc6 Pull complete 24.3s
⠿ a91bc8ea7d40 Pull complete 24.4s
⠿ 92f1a2bc890c Pull complete 24.5s
⠿ 0e883498e236 Pull complete 24.6s
⠿ b0677e9272ae Pull complete 24.7s
⠿ 7e4786ffc7ce Pull complete 24.7s
⠿ 117eeb2d949b Pull complete 24.8s
⠿ dc2310e76cb2 Pull complete 24.9s
⠿ 93991ac326eb Pull complete 28.7s
⠿ 56a6a53c4938 Pull complete 28.8s
⠿ 40884347234f Pull complete 28.8s
⠿ 4f4fb700ef54 Pull complete 28.9s
⠿ 8cc944f4b5f4 Pull complete 29.3s
⠿ 6832bf933c83 Pull complete 33.9s
⠿ c69748b31f84 Pull complete 34.3s
⠿ c2571b2e4806 Pull complete 34.4s
⠿ 27310da0ae1c Pull complete 41.0s
⠿ d30123fae3f3 Pull complete 41.1s
⠿ 2b8e74d18921 Pull complete 41.2s
⠿ 904471d89b38 Pull complete 41.2s
[+] Running 4/4
⠿ Network root_default Created 0.1s
⠿ Volume "root_snipesql-vol" Created 0.0s
⠿ Container snipe-mysql Started 5.5s
⠿ Container snipe-server Started 1.8s
Chờ tiến trình pull image và deploy container xong, bạn hãy sử dụng lệnh docker ps hoặc docker-compose ps để xác nhận các container đã triển khai thành công.
– Với Docker Compose.
$ sudo docker-compose ps
NAME COMMAND SERVICE STATUS PORTS
snipe-mysql "docker-entrypoint.s…" snipe-mysql running 3306/tcp
snipe-server "/startup.sh" snipe-it running 0.0.0.0:80->80/tcp, :::80->80/tcp
Hoặc Docker.
$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cf0a0abf1d25 snipe/snipe-it "/startup.sh" About a minute ago Up About a minute 0.0.0.0:80->80/tcp, :::80->80/tcp, 443/tcp snipe-server
78ef2c61eca4 mysql:5.6 "docker-entrypoint.s…" About a minute ago Up About a minute 3306/tcp snipe-mysql
Mặc dù đã triển khai xong các container nhưng các bạn vẫn chưa truy cập được, bằng chứng là đây.
Lý do là trong file ./.env
các bạn chưa lấy được token và truyền vào biến APP_KEY
cho nó.
Bước 6 – Lấy Token.
Sử dụng lệnh docker exec -it <snipe_container_name> sh
để truy cập vào container snipe_container_name
.
sudo docker exec -it snipe-server sh
Sau khi vào được container bạn hãy sử dụng lệnh php artisan key:generate --show
để lấy token. Theo thông tin ở dưới, token chúng ta lấy được sẽ là base64:zQivEm5BOA2vMLRkvCuITWsKR9p/LGZ1TpQKn9u+/m8=
.
$ sudo docker exec -it snipe-server sh
# sudo php artisan key:generate --show
base64:zQivEm5BOA2vMLRkvCuITWsKR9p/LGZ1TpQKn9u+/m8=
Lưu ý quan trọng là mỗi lần chúng ta chạy lại lệnh php artisan key:generate --show
thì hệ thống sẽ cho bạn một token khác nhau nhé, hãy chắc chắn bạn sử dụng token cuối cùng để gắn cho biến APP_KEY
.
Sau khi lấy được token, bạn hãy sử dụng lệnh exit
để thoát khỏi container.
Bước 7 – Truyền token vừa lấy vào biến APP_KEY.
Hãy mở file ./.env
và truyền token vào biến APP_KEY
và lưu lại.
# Mysql Parameters
MYSQL_PORT_3306_TCP_ADDR=snipe-mysql
MYSQL_PORT_3306_TCP_PORT=3306
MYSQL_ROOT_PASSWORD=Hoanghd164
MYSQL_DATABASE=snipeit
MYSQL_USER=hoanghd
MYSQL_PASSWORD=Hoanghd164
# Email Parameters
MAIL_PORT_587_TCP_ADDR=smtp.hoanghd.com
MAIL_PORT_587_TCP_PORT=587
MAIL_ENV_FROM_ADDR=hoanghd@hoanghd.com
MAIL_ENV_FROM_NAME=Ha Dang Hoang
MAIL_ENV_USERNAME=hoanghd
MAIL_ENV_PASSWORD=Hoanghd164
# Snipe-IT Settings
APP_ENV=production
APP_DEBUG=false
APP_KEY=base64:zQivEm5BOA2vMLRkvCuITWsKR9p/LGZ1TpQKn9u+/m8=
APP_URL=http://192.168.13.209
APP_TIMEZONE=Asia/Ho_Chi_Minh
APP_LOCALE=vi
Bước 8 – Build lại container.
Ssau khi mọi thứ đã hoàn thành, bạn hãy build lại container đang chạy bằng lệnh sudo docker-compose down && docker-compose up -d --build
.
$ sudo docker-compose down && docker-compose up -d --build
[+] Running 3/3
⠿ Container snipe-server Removed 0.8s
⠿ Container snipe-mysql Removed 2.2s
⠿ Network root_default Removed 0.1s
[+] Running 3/3
⠿ Network root_default Created 0.1s
⠿ Container snipe-mysql Started 1.0s
⠿ Container snipe-server Started 1.7s
Bước 9 – Truy cập Snipe-IT bằng trình duyệt.
Sử dụng url chúng ta đã khai báo ở biến APP_URL=http://192.168.13.209
để truy cập vào GUI của Snipe-IT. Bấm Next: Create Database Tables
để chuyển qua trang kế tiếp.
Phần này thiết lập Database nhưng cấu hình container của mình đã thiết lập cho các bạn sẵn rồi nên chúng ta bấm Next: Create User
để chuyển sang trang kết tiếp.
Hãy khai báo thông tin mà bạn mong muốn và bấm Next: Save User
để kết thúc.
Kết quả cuối cùng.
Lưu ý là phần mềm Snipe-IT do nhiều bạn mong muốn có một hướng dẫn cài đặt trên Linux nên mình chỉ hướng dẫn cài đặt thôi chứ mình không biết dùng nó.
Cách dùng nó như thế nào các bạn tự tìm hiểu nhé.