Snipe-IT 是什麼?為什麼你需要它
Snipe-IT 是一個 開源免費的 IT 資產管理系統(IT Asset Management, ITAM),基於 Laravel 12 (PHP) 建構,採用 AGPL-3.0 授權。它在 GitHub 上擁有 超過 1 萬顆 Star,是全球最受歡迎的開源資產管理工具。
💡 核心場景:你的團隊裡有 10 台筆記型電腦、5 個螢幕、20 個軟體授權——誰在用哪台裝置?哪個授權快到期了?什麼時候該折舊報廢?用 Excel 管遲早亂成一團。Snipe-IT 就是為了解決這些問題而生的。
核心功能一覽
| 功能 | 說明 |
|---|---|
| 📦 硬體資產管理 | 筆記型電腦、伺服器、手機、螢幕等裝置的完整生命週期追蹤 |
| 🔑 授權管理 | 軟體授權的購買日期、到期提醒、席位数追蹤 |
| 🖱️ 配件管理 | 滑鼠、鍵盤、網路線等消耗品庫存追蹤 |
| 📋 借用/歸還 | 資產 checkout 給員工,checkin 時記錄狀態和備註 |
| 📊 折舊計算 | 自動按年/月計算資產折舊價值 |
| 🔌 REST API | 完整的 JSON API,可整合 Jenkins、Ansible、Jamf 等工具 |
| 🌐 多語言 | 支援 40+ 種語言(包含中文) |
| 📱 行動端適配 | 響應式 Web 介面,手機也能管理資產 |
Snipe-IT vs 商業方案
| 比較維度 | Snipe-IT(自部署) | Snipe-IT Cloud | JAMF Pro | Freshservice |
|---|---|---|---|---|
| 費用 | 完全免費 | $399/年起 | ~$100/裝置/年 | ~$49/人/月 |
| 資料主權 | 你的伺服器,你掌控 | 雲端託管 | 雲端託管 | 雲端託管 |
| 自訂程度 | 完全可客製化 | 有限 | 高 | 中 |
| 部署難度 | Docker 一鍵部署 | 免部署 | 需設定 MDM | SaaS 即用 |
| 適合規模 | 10-1000+ 台裝置 | 10-500 台 | 50+ Apple 裝置 | 50+ 人團隊 |
Docker 一鍵部署
Snipe-IT 官方提供了 Docker 映像檔,使用 Docker Compose 可以在 5 分鐘內完成部署。
環境需求
- Docker 20+ 和 Docker Compose 2+
- 至少 2GB RAM(建議 4GB)
- 10GB 可用磁碟空間
步驟 1:建立專案目錄
mkdir -p ~/snipe-it && cd ~/snipe-it
步驟 2:編寫 Docker Compose 檔案
建立 docker-compose.yml:
version: '3.8'
services:
snipeit-db:
image: mysql:8.0
container_name: snipeit-db
environment:
MYSQL_ROOT_PASSWORD: rootpassword123
MYSQL_DATABASE: snipeit
MYSQL_USER: snipeit
MYSQL_PASSWORD: snipeit_password_456
volumes:
- db-data:/var/lib/mysql
restart: always
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
interval: 10s
timeout: 5s
retries: 5
snipeit:
image: snipe/snipe-it:latest
container_name: snipe-it
ports:
- "8080:80"
environment:
# 資料庫設定
DB_HOST: snipeit-db
DB_DATABASE: snipeit
DB_USERNAME: snipeit
DB_PASSWORD: snipeit_password_456
# 應用程式設定
APP_KEY: base64:CHANGE_ME_GENERATE_KEY
APP_ENV: production
APP_DEBUG: false
APP_URL: http://localhost:8080
APP_TIMEZONE: Asia/Shanghai
APP_LOCALE: zh-CN
# 郵件設定(選用)
MAIL_PORT_587_TCP_ADDR: smtp.example.com
MAIL_PORT_587_TCP_PORT: 587
MAIL_ENV_FROM_ADDR: admin@yourcompany.com
MAIL_ENV_FROM_NAME: Snipe-IT Admin
MAIL_ENV_ENCRYPTION: tls
MAIL_ENV_USERNAME: admin@yourcompany.com
MAIL_ENV_PASSWORD: your-email-password
depends_on:
snipeit-db:
condition: service_healthy
volumes:
- snipeit-images:/var/lib/snipeit
restart: always
volumes:
db-data:
snipeit-images:
⚠️ 重要:
APP_KEY不能隨意填寫!需要先生成。
步驟 3:生成 APP_KEY
# 啟動一個臨時容器來產生金鑰
docker run --rm snipe/snipe-it:latest php artisan key:generate --show
# 輸出類似:base64:abcdef1234567890...
# 將輸出值替換到 docker-compose.yml 中的 APP_KEY
步驟 4:啟動服務
docker compose up -d
# 查看日誌確認啟動狀態
docker compose logs -f snipeit
步驟 5:存取 Web 介面
瀏覽器開啟 http://localhost:8080,會進入安裝精靈:
- 檢查環境需求(全部綠色 ✓)
- 建立管理員帳戶(使用者名稱、信箱、密碼)
- 完成!進入儀表板
🔒 正式環境建議:使用 Nginx 反代 + Let's Encrypt HTTPS 憑證,將
http://localhost:8080改為https://snipeit.yourcompany.com。
快速上手:5 步開始管理資產
安裝完成後,按以下步驟快速錄入第一批資產。
步驟 1:設定公司資訊和品牌
進入 Admin → Settings → Branding,上傳公司 Logo、設定站點名稱和預設時區。
步驟 2:建立資產分類
Snipe-IT 按分類組織資產。進入 Admin → Categories 建立:
| 分類名 | 類型 | 用途 |
|---|---|---|
| 筆記型電腦 | Asset | MacBook、ThinkPad 等 |
| 螢幕 | Asset | 外接螢幕 |
| 軟體授權 | License | Office、Adobe 等 |
| 配件 | Accessory | 滑鼠、鍵盤、網路線 |
| 消耗品 | Consumable | 列印紙、墨水匣 |
步驟 3:新增硬體資產
進入 Assets → New Asset,填寫:
資產名稱: MacBook Pro 14" M3
資產標籤: MBP-2026-001 ← 這是唯一識別碼,建議按規則編號
分類: 筆記型電腦
狀態: Ready to Deploy(待部署)
位置: 總部辦公室
購買日期: 2026-03-15
購買價格: ¥14,999
供應商: Apple Store
保固截止: 2029-03-15
型號: MacBook Pro 14-inch M3 Pro
序號: C02XXXXX
步驟 4:分配給員工(Checkout)
在資產詳情頁點擊 Check Out:
分配給: 使用者(需先在 People 中建立)
預計歸還日期: 2027-03-15(選用)
備註: 研發部新專案使用
發送通知郵件: ✓
員工收到郵件後確認接收,資產狀態變為 Deployed。
步驟 5:批次匯入
有 Excel 表格?Snipe-IT 支援 CSV 批次匯入:
- Admin → Import → Download CSV Template
- 用模板填寫資產資料
- 上傳 CSV 檔案
- 預覽並確認映射欄位
- 點擊 Import
進階功能實戰
1. 資產折舊自動計算
Snipe-IT 支援多種折舊模型,幫你即時了解資產目前價值。
進入 Admin → Depreciations 建立折舊規則:
名稱: 電腦 3 年直線折舊
月份: 36(3 年)
折舊類型: 直線折舊
然後在資產上關聯此規則,系統會自動計算:
| 時間 | 原始價值 | 折舊後價值 | 備註 |
|---|---|---|---|
| 2026-03 | ¥14,999 | ¥14,999 | 剛購買 |
| 2027-03 | ¥14,999 | ¥9,999 | 使用 1 年 |
| 2028-03 | ¥14,999 | ¥4,999 | 使用 2 年 |
| 2029-03 | ¥14,999 | ¥0 | 折舊完畢 |
2. 授權管理 & 到期提醒
軟體授權到期了沒人知道?Snipe-IT 幫你盯著。
新增授權:
名稱: Microsoft 365 Business
授權金鑰: XXXX-XXXX-XXXX-XXXX
席位總數: 25
已分配: 18
購買日期: 2026-01-01
到期日期: 2027-01-01
供應商: Microsoft
購買價格: ¥1,288/使用者/年
當授權即將到期時,系統會: - 📧 發送郵件提醒管理員 - 🔴 儀表板顯示紅色警告 - 📊 報表中突出顯示
3. 自訂欄位 — 記錄任何你需要的資訊
Snipe-IT 允許為每個分類新增自訂欄位:
# 透過 Admin → Custom Fields 新增
欄位名 類型 格式
CPU 型號 文字
記憶體大小 文字
作業系統 下拉選單 macOS, Windows, Linux
資產歸屬部門 下拉選單 研發部, 產品部, 設計部
內網 IP 位址 文字 ^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$
4. 報表與稽核
Snipe-IT 內建多種報表:
- 資產清單報表 — 所有資產的完整列表,支援按狀態/位置/分類篩選
- 折舊報表 — 按時間段統計資產折舊情況
- 未分配資產報表 — 閒置資產一覽,避免「買了沒人用」
- 授權到期報表 — 即將到期的軟體授權
- 稽核報表 — 資產檢查歷史,誰在什麼時間確認了什麼狀態
5. API 整合實戰
Snipe-IT 提供完整的 REST API,可以用 curl 或任何 HTTP 客戶端呼叫。
取得 API Token: 進入 Profile → Generate API Token
查詢所有資產:
curl -X GET "https://snipeit.yourcompany.com/api/v1/hardware" \
-H "Accept: application/json" \
-H "Authorization: Bearer ***"
建立新資產:
curl -X POST "https://snipeit.yourcompany.com/api/v1/hardware" \
-H "Accept: application/json" \
-H "Authorization: Bearer ***" \
-H "Content-Type: application/json" \
-d '{
"name": "Dell XPS 15",
"asset_tag": "DELL-2026-001",
"model_id": 3,
"status_id": 1,
"rtd_location_id": 1,
"purchase_date": "2026-07-30",
"purchase_cost": "9999.00",
"serial": "SN123456789"
}'
整合到 CI/CD 流程 — 比如新員工入職時自動建立資產記錄:
#!/usr/bin/env python3
"""新員工入職自動建立 IT 資產記錄"""
import requests
SNIPE_URL = "https://snipeit.yourcompany.com/api/v1"
API_TOKEN = "YOUR_API_TOKEN"
def onboard_employee(name, email, asset_tag, model_id=1):
"""為新員工分配筆記型電腦"""
headers = {
"Accept": "application/json",
"Authorization": f"Bearer {API_TOKEN}",
"Content-Type": "application/json",
}
# 1. 建立使用者
user = requests.post(f"{SNIPE_URL}/users", headers=headers, json={
"first_name": name.split()[0],
"last_name": name.split()[-1],
"username": email.split("@")[0],
"email": email,
})
if user.status_code != 200:
print(f"建立使用者失敗: {user.text}")
return
user_id = user.json()["payload"]["id"]
# 2. 分配資產
checkout = requests.post(
f"{SNIPE_URL}/hardware/{asset_tag}/checkout",
headers=headers,
json={"assigned_user": user_id}
)
if checkout.status_code == 200:
print(f"✅ {name} 已成功分配資產 {asset_tag}")
else:
print(f"❌ 資產分配失敗: {checkout.text}")
# 使用範例
onboard_employee("張三", "zhangsan@company.com", "MBP-2026-015")
日常維運
備份資料庫
# 匯出資料庫
docker exec snipeit-db mysqldump -u snipeit -psnipeit_password_456 snipeit > \
~/backup/snipeit-$(date +%Y%m%d).sql
# 匯出持久化資料卷
tar czf ~/backup/snipeit-images-$(date +%Y%m%d).tar.gz \
/var/lib/docker/volumes/snipe-it_snipeit-images/
升級 Snipe-IT
cd ~/snipe-it
# 拉取最新映像檔
docker compose pull snipeit
# 重新建立容器
docker compose up -d snipeit
# 檢查版本
docker exec snipe-it php artisan snipeit:version
常見問題排查
| 問題 | 解決方案 |
|---|---|
| 頁面 500 錯誤 | 檢查 docker compose logs snipeit,查看 Laravel 錯誤日誌 |
| 資料庫連線失敗 | 確認 DB_HOST 是 snipeit-db(容器名),且資料庫已就緒 |
| 郵件不發送 | 檢查 SMTP 設定,確認防火牆未阻擋 587 連接埠 |
| APP_KEY 錯誤 | 重新產生 key,確認格式為 base64:xxxx |
| 上傳檔案失敗 | 檢查 snipeit-images 資料卷掛載權限 |
為什麼 Snipe-IT 值得長期投入
Snipe-IT 自 2013 年開源以來,已經持續開發了 13 年,GitHub 上貢獻者超過 500 人。相比 Excel 表格或商業 SaaS 方案,它的優勢在於:
- 零授權費用 — 自建伺服器即可使用,無使用者數限制
- 完全資料自主 — 所有資產資料儲存在你自己的伺服器上
- 活躍的社群 — Discord 社群和論壇有大量使用者分享經驗
- 豐富的整合生態 — JAMF、Kandji、Jira、Google Workspace 等官方/第三方整合腳本
- 可擴展性強 — 從 10 台到 10,000 台裝置都能勝任
如果你正在用 Excel 管公司資產,或者覺得商業 ITAM 太貴,Snipe-IT 是最務實的選擇。
- 🌐 官網: snipeitapp.com
- 📦 GitHub: grokability/snipe-it
- 📖 文件: snipe-it.readme.io
- 💬 社群: Discord
- 🐳 Docker Hub: snipe/snipe-it