Introduction

Snipte-IT の公式インストール手順 Installation が古いのと、 Laravel に関する暗黙知を要求されたことにより、かなり時間を無駄にしたので備忘録。

PHP のバージョンの都合や OS バージョンの都合があるので順番にやっていく。

How to do?

1. 移行先のインストール

まず、移行元と同じバージョンの環境を構築する。
手順は簡単。
master ブランチは危なくて使えないので適切なリリースを選択してクローンし、 snipe-it.sh を修正する。
面倒なことにどのブランチを利用しようとしても、常に master ブランチをチェックアウトする仕様になっているのが最悪。

1
2
3
4
5
6
$ git clone -b v4.9.5 https://github.com/snipe/snipe-it ~/snipe-it
$ cd ~/snipe-it && sed -i \
-e 's|git clone https://github.com/snipe/snipe-it \$APP_PATH|git clone -b v4.9.5 https://github.com/snipe/snipe-it \$APP_PATH|' \
-e 's|\[ "\$version" -ge "18.04" \]|[ "\$version" == "20.04" ]|' \
snipeit.sh
$ ./install.sh

ログが長いので質問だけ記載。何もない場合はそのまま Enter を押下している。

1
2
3
4
5
6
7
8
9
10
11
Q. What is the FQDN of your server? (VM999):
Q. Do you want to automatically create the database user password? (y/n) y
Enter current password for root (enter for none):
Set root password? [Y/n] n
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y
Enter password:
Do you trust "kylekatarnls/update-helper" to execute code and wish to enable it now? (writes "allow-plugins" to composer.json) [y,n,d,?] y
Q. Do you want to configure mail server settings? (y/n) n

2. バックアップの復元

移行元の環境でバックアップを実行し、zip に含まれる下記のファイルおよびフォルダを移行先の任意のディレクトリに展開。

  • var\www\snipeit\.env
  • var\www\snipeit\public
  • var\www\snipeit\storage\private_uploads
  • var\www\snipeit\storage\oauth-private.key
  • var\www\snipeit\storage\oauth-public.key
  • db-dumps¥mysql-snipeit.sql

移行先の、上記を展開したディレクトリに移動し、下記を実行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
$ sudo cp -Rf private_uploads/* /var/www/snipeit/storage/private_uploads
$ sudo chown -R snipeitapp:www-data /var/www/snipeit/storage/private_uploads

$ sudo cp -Rf uploads/* /var/www/snipeit/public/uploads
$ sudo chown -R snipeitapp:www-data /var/www/snipeit/public/uploads

$ sudo cp -f oauth-private.key /var/www/snipeit/storage
$ sudo cp -f oauth-public.key /var/www/snipeit/storage

$ sudo chown -R www-data:www-data /var/www/snipeit/storage/oauth-private.key
$ sudo chown -R www-data:www-data /var/www/snipeit/storage/oauth-public.key

$ output=$(cat /var/www/snipeit/.env | grep DB_DATABASE)
$ database=${output#*=}
$ output=$(cat /var/www/snipeit/.env | grep DB_USERNAME)
$ username=${output#*=}
$ output=$(cat /var/www/snipeit/.env | grep DB_PASSWORD)
$ password=${output#*=}
$ sudo mysql -h localhost -u ${username} -p${password} ${database} < mysql-snipeit.sql

$ output=$(cat .env | grep APP_KEY)
$ key=${output#*=}
$ sudo sed -i "s/^APP_KEY=.*/APP_KEY=$key/" /var/www/snipeit/.env

$ sudo systemctl restart apache2

この時点ですでに移行先の Snipe-IT が動作しているので確認しておく。

3. oauth-private.key と oauth-public.key の再生成 (オプション)

自分の場合だけなのか、これらのファイルがサイズ 0 になっていた。
Snipe-IT の v5.1.7 (正確にはコミットID 7d1c2199ed912982631511bda2ccb9e536ac3830) 以降にバージョンアップすると表示がおかしくなるので、下記を実行し、鍵を再生成する。

1
2
3
4
5
6
$ cd /var/www/snipeit && sudo -u snipeitapp env \
HOME=$(getent passwd snipeitapp | cut -d: -f6) \
USER=snipeitapp \
LOGNAME=snipeitapp \
bash -c 'rm -f /var/www/snipeit/storage/*.key && php artisan passport:keys'
$ sudo systemctl restart apache2

4. バージョンアップ

以下を実行

1
2
3
4
5
$ cd /var/www/snipeit && sudo -u snipeitapp env \
HOME=$(getent passwd snipeitapp | cut -d: -f6) \
USER=snipeitapp \
LOGNAME=snipeitapp \
bash -c 'git checkout . && php upgrade.php v5.4.4'

ログが長いので質問だけ記載。何もない場合はそのまま Enter を押下している。

1
2
Do you trust "kylekatarnls/update-helper" to execute code and wish to enable it now? (writes "allow-plugins" to composer.json) [y,n,d,?]
Discard changes [y,n,v,d,s,?]?

5. 動かない対処

自分は下記に遭遇。

500 エラー何も出ない

バージョンアップ時に /var/www/snipeit/storage/logs/laravel.log に書き込めないみたいなエラーが出ていたので、下記で権限を与えた。

1
$ sudo chmod 777 /var/www/snipeit/storage/logs/laravel.log

これでもまだ動かないので、エラーログをチェックすると

production.ERROR: Symfony\Component\Debug\Exception\FatalErrorException: Uncaught ErrorException: file_put_contents(/var/www/snipeit/storage/framework/cache/cf/90/cf906e7195218453e4ff6f1bdcdc6b2d9f6cae71): failed to open stream: Permission denied in /var/www/snipeit/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php:133

というエラーがあったので、下記で権限を与えた。

1
$ sudo chmod -R 777 /var/www/snipeit/storage/framework/cache

これで動くようになった。

バックアップが動かない

バックアップ画面で下記のエラー。

Backup Error

Backup failed because: unlink(/var/www/snipeit/storage/app/backup-temp/temp/db-dumps/mysql-snipeit.sql): Permission denied. とあるが、公式に Issue Manual Backup Failing #8080 が上がっている。

権限の問題なので、ディレクトリの権限を変更すればよいのだが、CLI でバックアップを実行しても良い。

1
2
3
4
5
6
7
8
9
10
11
12
$ cd /var/www/snipeit && sudo -u snipeitapp env \
HOME=$(getent passwd snipeitapp | cut -d: -f6) \
USER=snipeitapp \
LOGNAME=snipeitapp \
bash -c 'php artisan snipeit:backup'
$ ls -la storage/app/backups
total 30020
drwxrwxr-x 3 snipeitapp www-data 4096 8月 3 14:36 .
drwxrwxr-x 4 snipeitapp www-data 4096 8月 3 14:14 ..
drwxrwxr-x 2 snipeitapp www-data 4096 8月 3 14:14 env-backups
-rwxrwxr-x 1 snipeitapp snipeitapp 26 8月 3 14:14 .gitignore
-rw-rw-r-- 1 snipeitapp snipeitapp 30720528 8月 3 14:36 snipe-it-2025-08-03-14-36-56.zip