Snipe-IT とは?なぜ必要なのか
Snipe-IT は オープンソースで無料の IT アセット管理システム(IT Asset Management, ITAM)だ。Laravel 12(PHP)ベースで構築され、AGPL-3.0 ライセンスを採用している。GitHub 上で 1 万以上のスター を集め、世界で最も人気のあるオープンソースアセット管理ツールだ。
💡 代表的なユースケース:チームにノート PC が 10 台、モニターが 5 台、ソフトウェアライセンスが 20 個あるとする。誰がどのデバイスを使っているのか?どのライセンスが期限切れになりそうか?いつ折旧して廃棄すべきか?Excel で管理していては、いつか必ず破綻する。Snipe-IT はまさにこうした問題を解決するために生まれた。
主な機能一覧
| 機能 | 説明 |
|---|---|
| 📦 ハードウェアアセット管理 | ノート PC、サーバー、スマホ、モニターなど、デバイスのライフサイクルを完全に追跡 |
| 🔑 ライセンス管理 | ソフトウェアライセンスの購入日、期限通知、シート数追跡 |
| 🖱️ アクセサリ管理 | マウス、キーボード、LAN ケーブルなど消耗品の在庫追跡 |
| 📋 貸出/返却 | アセットを従業員にチェックアウト、チェックイン時に状態と備考を記録 |
| 📊 折旧計算 | 年間/月間でアセットの折旧価値を自動計算 |
| 🔌 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〜1,000 台以上のデバイス | 10〜500 台 | 50 台以上の Apple デバイス | 50 人以上のチーム |
Docker ワンクリックデプロイ
Snipe-IT は公式 Docker イメージを提供しており、Docker Compose を使えば 5 分以内でデプロイできる。
環境要件
- Docker 20+ と Docker Compose 2+
- RAM 2GB 以上(推奨 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 にアクセスし、会社ロゴのアップロード、サイト名とデフォルトタイムゾーンの設定を行う。
ステップ 2:アセットカテゴリを作成
Snipe-IT はカテゴリでアセットを整理する。Admin → Categories で以下を作成しよう:
| カテゴリ名 | タイプ | 用途 |
|---|---|---|
| ノート PC | Asset | MacBook、ThinkPad など |
| モニター | Asset | 外部ディスプレイ |
| ソフトウェアライセンス | License | Office、Adobe など |
| アクセサリ | Accessory | マウス、キーボード、LAN ケーブル |
| 消耗品 | Consumable | 印刷用紙、インクカートリッジ |
ステップ 3:ハードウェアアセットを追加
Assets → New Asset で以下を入力:
アセット名: MacBook Pro 14" M3
アセットタグ: MBP-2026-001 ← 一意の識別子。規則的な番号付けを推奨
カテゴリ: ノート PC
ステータス: 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 で折旧ルールを作成:
名前: PC 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 モデル テキスト
メモリ容量 テキスト
OS ドロップダウン 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 トークンの取得: Profile → Generate API Token にアクセス
全アセットの取得:
curl -X GET "https://snipeit.yourcompany.com/api/v1/hardware" \
-H "Accept: application/json" \
-H "Authorization: Bearer YOUR_API_TOKEN"
新規アセットの作成:
curl -X POST "https://snipeit.yourcompany.com/api/v1/hardware" \
-H "Accept: application/json" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-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):
"""新员工にノート PC を割り当て"""
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("Zhang San", "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(コンテナ名)になっているか、データベースが ready になっているか確認 |
| メールが送信されない | SMTP 設定を確認。ファイアウォールが 587 ポートをブロックしていないか確認 |
| APP_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