OpenSource-Hub

snipe-it

アプリケーション

grokability/snipe-it

オープンソースのIT資産・ライセンス管理システム。

概要

Snipe-IT は、無料でオープンソースの Web ベースの IT 資産管理システムであり、組織がハードウェア資産を追跡し、ソフトウェアライセンスと減価償却を管理するのを支援します。Laravel で構築されており、REST API を提供し、Docker によるデプロイをサポートしています。

README プレビュー

\n\n[](https://crowdin.com/project/snipe-it) [](https://hub.docker.com/r/snipe/snipe-it/)  [](https://github.com/grokability/snipe-it/actions/workflows/tests-mysql.yml)\n[](#contributing) [](https://discord.gg/yZFtShAcKk)\n\n## Snipe-IT - Open Source Asset Management System\n\nThis is a FOSS project for asset management in IT Operations. Knowing who has which laptop, when it was purchased in order to depreciate it correctly, handling software licenses, etc.\n\nIt is built on [Laravel 12](http://laravel.com).\n\nSnipe-IT is actively developed and we [release quite frequently](https://github.com/grokability/snipe-it/releases). ([Check out the live demo here](https://snipeitapp.com/demo/).)\n\n> [!TIP]\n> __This is web-based software__. This means there is no executable file (aka no .exe files), and it must be run on a web server and accessed through a web browser. It runs on any Mac OSX, any flavor of Linux, as well as Windows, and we have a [Docker image](https://snipe-it.readme.io/docs/docker) available if that's what you're into.\n\n-----\n\n### Table of Contents\n* [Installation](#installation)\n* [User's Manual](#users-manual)\n* [Bug Reports & Feature Requests](#bug-reports--feature-requests)\n* [Security](#security)\n* [Upgrading](#upgrading)\n* [Translations!](#translations-)\n* [Libraries, Modules & Related Projects](#libraries-modules--related-projects)\n* [Join the Community!](#join-the-community)\n* [Contributing](#contributing)\n* [Announcement List](#announcement-list)\n\n\n-----\n\n### Installation\n\nFor instructions on installing and configuring Snipe-IT on your server, check out the [installation manual](https://snipe-it.readme.io/docs). (Please see the [requirements documentation](https://snipe-it.readme.io/docs/requirements) for full requirements.)\n\nIf you're having trouble with the installation, please check the [Common Issues](https://snipe-it.readme.io/docs/common-issues) and [Getting Help](https://snipe-it.readme.io/docs/getting-help) documen

FAQ (5)

トラブル対応
Snipe-IT API のハードウェアのページネーションで limit と offset を使用すると、アセットがスキップされたり漏れたりするのはなぜですか?

Snipe-IT は /api/v1/hardware インデックスのソートをデフォルトで created_at に設定しますが、これは一意ではありません。多くの資産が同じ作成タイムスタンプを共有している場合(バッチインポートなど)、オフセットベースのページが重複したり、レコードが暗黙的にスキップされたりする可能性があります。修正方法:ページネーションされるすべてのリクエストに明示的な一意のソートを追加します。例:GET /api/v1/hardware?limit=200&offset=0&sort=id&order=asc。その後、ページごとに offset をインクリメントし続けます。これにより、完全なインベントリを一貫して取得できます。また、権限のバグと判断する前に、最新の Snipe-IT バージョンで問題を再現確認し、FMCS の会社スコープ制限ではないことを確認してください。

参照 Issue #19866
トラブル対応
Snipe-ITで同期アダプターの「Create new Snipe-IT assets」チェックボックスのチェックを外せないのはなぜですか?

これは Snipe-IT v8.8.3 の既知のバグです(Microsoft Intune などの同期アダプターに影響します)。app/SyncAdapters/SyncAdapter.php(907行目付近)では、コードが $request->boolean($slug.'_create_snipeit_assets_on_pull', true) を使用しています。チェックを外した HTML チェックボックスは送信されないため、フィールドが存在しない場合にデフォルト値の true にフォールバックし、常に "1" が保存されてしまいます。回避策:データベースを直接更新してください:

UPDATE sync_adapter_instances
SET config = JSON_SET(config, '$.create_snipeit_assets_on_pull', '0')
WHERE slug = '<your-adapter-slug>';

恒久的な修正:$request->boolean(...) の true デフォルト値を削除するか、フォームに非表示の 0 入力を追加して、値が常に送信されるようにしてください。

参照 Issue #19917
トラブル対応
Snipe-IT Intune 同期(snipeit:pull-inventory)がいつまでも実行され続けて終了しないのはなぜですか?

これは、管理デバイス数が約999台を超える Intune テナントに影響する問題で、app/SyncAdapters/Intune/IntuneClient.php(managedDevices()、約80行目)にあるページネーションのバグが原因です。Graph API の最初のページを取得した後も、空の $query 配列がそのまま get() に渡されます。Laravel はそれを Guzzle の query オプションとして転送し、Guzzle は空の配列であってもリクエスト URI のクエリ文字列を置き換えてしまうため、Graph の @odata.nextLink カーソルから $skiptoken が削除されます。その結果、Graph はページ1を無限に返し続け、同期は同じデバイス上でループして完了しなくなります。修正方法:$query が空でない場合にのみ渡すように、その行を以下のように修正してください。

$response = ($query === [] ? $this->request()->get($url) : $this->request()->get($url, $query))->throw()->json();

php artisan snipeit:pull-inventory <slug> --dry-run --limit=1500 で修正を確認してください。最初のページ(約999件)で打ち切られるのではなく、1,500件の一意なデバイス ID が返されるはずです。その後、完全なプルが正常に完了するようになります(例:約6,200台のデバイスで約1時間)。

参照 Issue #19916
トラブル対応
Active Flagが空白の場合にSnipe-ITのLDAP同期でActive Directoryユーザーが無効化されない問題を修正するにはどうすればよいですか?

Snipe-IT v8.8.0では、新しいLDAPウィザードが空白のActive FlagをNULLではなく空文字列('')として保存してしまうことがあります。LdapSyncは値がnullの場合にのみuserAccountControlを要求するため、ADで無効化されたユーザーがアクティブのまま残ってしまいます。暫定的な回避策:レガシーのLDAP設定フォームを開き、Active Flagを空白のまま保存してから、php artisan snipeit:ldap-syncを実行してください。レガシーフォームは空文字列をNULLに変換します。次のコマンドで確認してください: php artisan tinker --execute="var_dump(Setting::getSettings()->ldap_active_flag);" 出力はNULLになるはずです。恒久的なコード修正:app/Console/Commands/LdapSync.phpで、userAccountControl属性リクエストのチェックにあるis_null($ldap_map['activated'])をblank($ldap_map['activated'])に置き換えるか、app/Livewire/LdapSettings.phpが空白のオプションマッピングをnullとして永続化するように変更してください。

参照 Issue #19789
トラブル対応
ドイツ語de-DEロケール環境のv8.8.0で発生する空のSnipe-ITテーブルと「string literal contains an unescaped line break」エラーの修正方法

これは v8.8.0 のバグで、de-DE の翻訳文字列に生の改行が含まれており、それがインライン JavaScript 文字列を壊し、bootstrap-table の初期化を妨げることが原因です。即時の回避策: 影響を受けるユーザーの言語を英語に変更するか、.env で APP_LOCALE=en を設定してコンテナを再起動してください。恒久的な修正: コミット 6525787ba523ea9655ce8f1dfe3310e4faaa63ee を含む v8.8.0 より新しい Snipe-IT リリースにアップグレードしてください。Docker の場合は、docker compose pull && docker compose up -d を実行し、その後ブラウザをハードリフレッシュしてください。既存のアセットおよびライセンスデータは失われません。

参照 Issue #19772