Snipe it 資産管理システムのインストールと使用

最近、私の会社ではIT資産管理システムが必要になりました。3つのオープンソースシステム(Snipe-IT、GLPI、Ralph)の中からSnipe-ITを選択しました。Ralphはコンピュータルーム管理に重点を置いており、GLPIも悪くないと思いましたが、今のところすべての追加機能は必要ありません。後で試してみるかもしれません。

システムは以下のようになります。

snipe デモ

1. ローカル Docker のインストールとテスト

手軽に試したい場合は、Docker を使ってテスト環境を構築するのが便利です(面倒でなければ、ホストのコマンドラインからインストールすることもできます)。

  • 1.1 イメージをダウンロードする
1docker pull snipe/snipe-it
  • 1.2 ディレクトリを見つけて環境変数ファイルを作成する
1touch my_env_file

企業は MySQL のテストに応募できますが、コンテナ化された MySQL は使用しません(コンテナ化された MySQL を使用する場合は、Snipe docker を参照してください)。

例を以下に示します。

 1➜ cat my_env_file
 2# MySQLパラメータ
 3MYSQL_PORT_3306_TCP_ADDR=127.0.0.1 #データベースホスト
 4MYSQL_PORT_3306_TCP_PORT=3306 #データベースポート
 5
 6MYSQL_DATABASE=xxxx #データベース名
 7MYSQL_USER=xxxx #データベースユーザー名
 8MYSQL_PASSWORD=xxxx #データベースパスワード
 9
10# メール設定(現在はコメントアウトされています)
11# メールパラメータ
12# - メールサーバーのホスト名/IPアドレス
13#MAIL_PORT_587_TCP_ADDR=smtp.whatever.com
14# メールサーバーのポート番号(通常は587ですが、他のポート番号でも構いません)
15#MAIL_PORT_587_TCP_PORT=587
16# デフォルトの送信元アドレスと送信元名メール
17#MAIL_ENV_FROM_ADDR=youremail@yourdomain.com
18#MAIL_ENV_FROM_NAME=メールアドレス
19# - SMTP over SSLの場合は「tls」、暗号化されていない場合は「tcp」を選択してください
20#MAIL_ENV_ENCRYPTION=tcp
21# SMTPユーザー名とパスワード
22#MAIL_ENV_USERNAME=メールアドレスのユーザー名
23#MAIL_ENV_PASSWORD=メールアドレスのパスワード
24
25# Snipe-IT設定
26APP_ENV=production
27APP_DEBUG=false
28APP_KEY=<<後で入力!>> # これは後で生成されるので、今は空白のままにしておいてください。
29APP_URL=http://192.169.1.33 # システムアクセスアドレス(IPまたはドメイン名)。テストを容易にするため、ローカルIPアドレスを使用してください。
30APP_TIMEZONE=Asia/Shanghai # タイムゾーン。後で調整できます。
31APP_LOCALE=en # 言語。後で調整できます。
32
33# Docker 固有の変数
34PHP_UPLOAD_LIMIT=100 # アップロードファイルのサイズ制限
  • 1.3 APP_KEY の生成
1docker run --rm snipe/snipe-it

上記のコマンドを実行すると、以下の出力が表示されます。

1環境変数 $APP_KEY を指定して、このコンテナを再実行してください。
2使用できる APP_KEY の例は次のとおりです。
3
4base64:D5oGA+zhFSVA3VwuoZoQ21RAcwBtJv/RGiqOcZ7BUvI=

base64:D5oGA+zhFSVA3VwuoZoQ21RAcwBtJv/RGiqOcZ7BUvI= この文字列は、環境変数 APP_KEY の値として使用されます。環境によって生成される値は異なりますが、形式は同じにしてください。

1.4 実行と起動 (注: 前の手順で設定した APP_KEY 値を入力し、開始前に保存してください)

1➜ docker run -p 80:80 --env-file=my_env_file snipe/snipe-it
2➜ docker ps
3コンテナ ID イメージ コマンド 作成日時 ステータス ポート名
455b39ab3e1ac snipe/snipe-it "/startup.sh" 8 時間前 8 時間前 0.0.0.0:80->80/tcp, :::80->80/tcp, 443/tcp jovial_carver

上記のように、正常に動作しており、ポート 80 でサービスが提供されています。

1.5 ブラウザを開き、前の手順で設定した APP_URL アドレスに移動します。 http://192.169.1.33 にアクセスして、システムの初期化を行います。

この手順は比較的簡単です。Web ページにステップバイステップのガイドが表示されますので、指示に従ってください。ここでは詳細は説明しませんので、公式ドキュメントを参照してください。

テスト環境がセットアップされたら、システムにログインして Maxthon をお楽しみください!

2. 本番ホストへのデプロイ

本番環境では Docker ではなくホストを使用しているのはなぜでしょうか?Snipe-it では、ユーザーが画像やファイルをアップロードし、ローカルに保存できるためです。Snipe-it では、Amazon S3 などのサービスに保存するオプションも提供されています(公式ドキュメント)。しかし、弊社のプライベートクラウドにはそのような機能がないため、コンテナデプロイは適していません。スケジュールバックアップ付きのホストデプロイも利用可能です。

以下は、PHP + PHP-FPM + Nginx のデプロイ方法です。

  • 2.1 コードのダウンロード

本番サーバーにログインし、Snipe-it のコードをダウンロードします。

git clone https://github.com/snipe/snipe-it

  • 2.2 インストールスクリプトの実行

ソースコードリポジトリには組み込みのインストールスクリプトが含まれています。ダウンロードして直接実行してください。この自動スクリプトは、システムの種類に応じて、MariaDB、Apache2、PHP、その他のコンポーネントをインストールします。詳細については、「PACKAGES」キーワードで検索してください。便宜上、主にPHPと関連プラグインがインストールされます。インストール後、不要になったMariaDBとApache2は無効化または削除できます。このチュートリアルでは「nginx + php-fpm」を使用します。

1cd snipe-it
2wget https://raw.githubusercontent.com/snipe/snipe-it/master/install.sh
3chmod 744 install.sh
4./install.sh
  • 2.3 PHP-FPMとNginxのインストール インストール前に、httpd(Apache2)を無効化してください。そうしないと、ポートの競合により Nginx の起動に失敗します。
1systemctl disable httpd
2systemctl stop httpd
3yum install php-fpm nginx
  • 2.4 環境変数ファイルの準備
1cp .env.example .env

必要に応じて、テスト環境の設定を参考に .env 内の設定を変更してください。

公式テンプレート

  1# ------------------------------------------
  2# 必須: 基本アプリ設定
  3# ------------------------------------------
  4APP_ENV=production
  5APP_DEBUG=false
  6APP_KEY=ChangeMe
  7APP_URL=null
  8APP_TIMEZONE='UTC'
  9APP_LOCALE=en
 10MAX_RESULTS=500
 11
 12# ------------------------------------------
 13# 必須: アップロードファイルストレージ設定
 14# --------------------------------------------------
 15PRIVATE_FILESYSTEM_DISK=local
 16PUBLIC_FILESYSTEM_DISK=local_public
 17
 18#PRIVATE_FILESYSTEM_DISK=s3_private
 19#PUBLIC_FILESYSTEM_DISK=s3_public
 20
 21#------------------------------------------------
 22# 必須: データベース設定
 23#------------------------------------------------
 24DB_CONNECTION=mysql
 25DB_HOST=127.0.0.1
 26DB_DATABASE=null
 27DB_USERNAME=null
 28DB_PASSWORD=null
 29DB_PREFIX=null
 30DB_DUMP_PATH='/usr/bin'
 31DB_CHARSET=utf8mb4
 32DB_COLLATION=utf8mb4_unicode_ci
 33
 34#------------------------------------------
 35# オプション: SSL データベース設定
 36# --------------------------------------------------
 37DB_SSL=false
 38DB_SSL_IS_PAAS=false
 39DB_SSL_KEY_PATH=null
 40DB_SSL_C
 41
 42ERT_PATH=null
 43DB_SSL_CA_PATH=null
 44DB_SSL_CIPHER=null
 45
 46#------------------------------------------------
 47# 必須: 送信メールサーバー設定
 48#------------------------------------------------
 49MAIL_DRIVER=smtp
 50MAIL_HOST=email-smtp.us-west-2.amazonaws.com
 51MAIL_PORT=587
 52MAIL_USERNAME=ユーザー名
 53MAIL_PASSWORD=パスワード
 54MAIL_ENCRYPTION=null
 55MAIL_FROM_ADDR=you@example.com
 56MAIL_FROM_NAME='Snipe-IT'
 57MAIL_REPLYTO_ADDR=you@example.com
 58MAIL_REPLYTO_NAME='Snipe-IT'
 59MAIL_AUTO_EMBED_METHOD='attachment'
 60
 61# --------------------------------------------------
 62# 必須:画像ライブラリ
 63# gd または imagick を指定してください
 64#------------------------------------------------
 65IMAGE_LIB=gd
 66
 67#---------------------------------------------
 68# オプション: バックアップ設定
 69#------------------------------------------------
 70MAIL_BACKUP_NOTIFICATION_DRIVER=null
 71MAIL_BACKUP_NOTIFICATION_ADDRESS=null
 72BACKUP_ENV=true
 73ALLOW_BACKUP_DELETE=false
 74ALLOW_DATA_PURGE=false
 75
 76#---------------------------------------------
 77# オプション: セッション設定
 78# --------------------------------------------------
 79SESSION_DRIVER=file
 80SESSION_LIFETIME=12000
 81EXPIRE_ON_CLOSE=false
 82ENCRYPT=false
 83COOKIE_NAME=snipeit_session
 84COOKIE_DOMAIN=null
 85SECURE_COOKIES=false
 86API_TOKEN_EXPIRATION_YEARS=15
 87
 88#------------------------------------------------
 89# オプション: セキュリティヘッダー設定
 90#-------------------------------------------
 91APP_TRUSTED_PROXIES=192.168.1.1,10.0.0.1
 92ALLOW_IFRAMING=false
 93REFERRER_POLICY=same-origin
 94ENABLE_CSP=false
 95CORS_ALLOWED_ORIGINS=null
 96ENABLE_HSTS=false
 97
 98#-------------------------------------------
 99# オプション: キャッシュ設定
100# --------------------------------------------------
101CACHE_DRIVER=file
102QUEUE_DRIVER=sync
103CACHE_PREFIX=snipeit
104
105#---------------------------------------------
106# オプション: REDIS 設定
107#------------------------------------------------
108REDIS_HOST=null
109REDIS_PASSWORD=null
110REDIS_PORT=null
111
112#------------------------------------------------
113# オプション: MEMCACHED 設定
114#------------------------------------------------
115MEMCACHED_HOST=null
116MEMCACHED_PORT=null
117
118#------------------------------------------------
119# オプション: PUBLIC S3 設定
120# --------------------------------------------------
121PUBLIC_AWS_SECRET_ACCESS_KEY=null
122PUBLIC_AWS_ACCESS_KEY_ID=null
123PUBLIC_AWS_DEFAULT_REGION=null
124PUBLIC_AWS_BUCKET=null
125PUBLIC_AWS_URL=null
126PUBLIC_AWS_BUCKET_ROOT=null
127
128#---------------------------------------------
129# オプション: プライベート S3 設定
130#-------------------------------------------
131PRIVATE_AWS_ACCESS_KEY_ID=null
132PRIVATE_AWS_SECRET_ACCESS_KEY=null
133PRIVATE_AWS_DEFAULT_REGION=null
134PRIVATE_AWS_BUCKET=null
135PRIVATE_AWS_URL=null
136PRIVATE_AWS_BUCKET_ROOT=null
137
138#-------------------------------------------------
139# オプション: AWS 設定
140# --------------------------------------------------
141AWS_ACCESS_KEY_ID=null
142AWS_SECRET_ACCESS_KEY=null
143AWS_DEFAULT_REGION=null
144
145#------------------------------------------------
146# オプション: ログインスロットリング
147#------------------------------------------------
148LOGIN_MAX_ATTEMPTS=5
149LOGIN_LOCKOUT_DURATION=60
150
151#------------------------------------------------
152# オプション: パスワード忘れ時の設定
153#------------------------------------------------
154RESET_PASSWORD_LINK_EXPIRES=15
155PASSWORD_CONFIRM_TIMEOUT=10800
156PASSWORD_RESET_MAX_ATTEMPTS_PER_MIN=50
157
158#---------------------------------------------
159# オプション: その他
160# ------------------------------------------
161APP_LOG=single
162APP_LOG_MAX_FILES=10
163APP_LOG_LEVEL=warning
164APP_LOCKED=false
165APP_CIPHER=AES-256-CBC
166APP_FORCE_TLS=false
167APP_ALLOW_INSECURE_HOSTS=false
168GOOGLE_MAPS_API=
169LDAP_MEM_LIM=500M
170LDAP_TIME_LIM=600
171IMPORT_TIME_LIMIT=600
172IMPORT_MEMORY_LIMIT=500M
173REPORT_TIME_LIMIT=12000
174REQUIRE_SAML=false
175API_THROTTLE_PER_MINUTE=120

個人情報の例: 機密情報はxxxに置き換えられました

 1
 2[root@snipe-it]# egrep -v '^#|^$' .env | head -n 25
 3APP_ENV=production
 4APP_DEBUG=false
 5APP_KEY=xxx
 6APP_URL=http://xxx
 7APP_TIMEZONE='Asia/Shanghai'
 8APP_LOCALE=en
 9MAX_RESULTS=500
10
11PRIVATE_FILESYSTEM_DISK=local
12PUBLIC_FILESYSTEM_DISK=local_public
13
14DB_CONNECTION=mysql
15DB_HOST=xxx
16DB_PORT=xxx
17DB_DATABASE=xxx
18DB_USERNAME=xx
19DB_PASSWORD=xxx
20DB_PREFIX=null
21DB_DUMP_PATH='/usr/bin'
22DB_CHARSET=utf8mb4
23DB_COLLATION=utf8mb4_unicode_ci
24
25DB_SSL=false
  • 2.5 PHPパッケージの依存関係をインストール
1curl -sS https://getcomposer.org/installer | php
2php composer.phar install --no-dev --prefer-source
  • 2.6 APP_KEY の生成
1php artisan key:generate
  • 2.7 Nginx と PHP-FPM の設定

nginx 設定リファレンス

 1[root@conf.d]# cat snipe-it.conf
 2server {
 3listen 80;
 4server_name localhost;
 5
 6root /data/snipe-it/public;
 7index index.php index.html index.htm;
 8
 9location/{
10try_files $uri $uri/ /index.php$is_args$args;
11}
12
13location ~ \.php$ {
14try_files $uri $uri/ =404;
15fastcgi_pass unix:/var/run/php7-fpm-www.sock;
16fastcgi_index index.php;
17fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
18include fastcgi_params;
19}
20}

php-fpm 設定リファレンス

 1[root@php-fpm.d]# egrep -v '^;|^$' www.conf
 2[www]
 3user=nginx
 4group=nginx
 5listen = /var/run/php7-fpm-www.s
 6ock
 7listen.owner = nginx
 8listen.group = nginx
 9listen.mode = 0660
10listen.allowed_clients = 127.0.0.1
11pm = dynamic
12pm.max_children = 50
13pm.start_servers = 5
14pm.min_spare_servers = 5
15pm.max_spare_servers = 35
16slowlog = /var/log/php-fpm/www-slow.log
17php_admin_value[error_log] = /var/log/php-fpm/www-error.log
18php_admin_flag[log_errors] = on
19php_value[session.save_handler] = files
20php_value[session.save_path] = /var/lib/php/session
21php_value[soap.wsdl_cache_dir] = /var/lib/php/wsdlcache
22
23php-fpm のnginx と nginx はどちらもユーザー `nginx` で実行されます。この不一致は権限の問題を引き起こします。次に、コードディレクトリを `nginx` に変更します。もちろん、任意のユーザーに変更できます。また、関連する設定ファイルも変更することを忘れないでください。
24
25ディレクトリの権限を変更し、関連サービスを起動します。
26
27``shell
28chown -R nginx:nginx /data/snipe-it
29systemctl start php-fpm
30systemctl start nginx

必要であれば、ソースコードディレクトリに test.php というファイルを配置して、環境設定が正しいかどうかをテストできます。

``shell echo -e '' > test.php

 1
 2- 2.8 最終テストと検証
 3
 4http://xxx.xxx.xxx/test.php にアクセスし、phpinfo 情報が正しく表示されていることを確認します。
 5
 6````` ![php info](/images/phpinfo.webp)
 7
 8エラーが発生した場合は、nginx と php-fpm のエラーログを確認し、問題を解決してください。
 9
10その後、http://xxx.xxx.xxx/ にアクセスし、指示に従ってログインしてシステムを使用してください。
11
12初めてご利用の場合は、[公式デモ](https://demo.snipeitapp.com/) をご参照ください。
最終更新日: Wednesday, October 29, 2025

このシリーズの投稿:

翻訳: