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,會進入安裝精靈:

  1. 檢查環境需求(全部綠色 ✓)
  2. 建立管理員帳戶(使用者名稱、信箱、密碼)
  3. 完成!進入儀表板

🔒 正式環境建議:使用 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 批次匯入:

  1. Admin → Import → Download CSV Template
  2. 用模板填寫資產資料
  3. 上傳 CSV 檔案
  4. 預覽並確認映射欄位
  5. 點擊 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_HOSTsnipeit-db(容器名),且資料庫已就緒
郵件不發送 檢查 SMTP 設定,確認防火牆未阻擋 587 連接埠
APP_KEY 錯誤 重新產生 key,確認格式為 base64:xxxx
上傳檔案失敗 檢查 snipeit-images 資料卷掛載權限

為什麼 Snipe-IT 值得長期投入

Snipe-IT 自 2013 年開源以來,已經持續開發了 13 年,GitHub 上貢獻者超過 500 人。相比 Excel 表格或商業 SaaS 方案,它的優勢在於:

  1. 零授權費用 — 自建伺服器即可使用,無使用者數限制
  2. 完全資料自主 — 所有資產資料儲存在你自己的伺服器上
  3. 活躍的社群 — Discord 社群和論壇有大量使用者分享經驗
  4. 豐富的整合生態 — JAMF、Kandji、Jira、Google Workspace 等官方/第三方整合腳本
  5. 可擴展性強 — 從 10 台到 10,000 台裝置都能勝任

如果你正在用 Excel 管公司資產,或者覺得商業 ITAM 太貴,Snipe-IT 是最務實的選擇。