snipe-it是一个用php开发的开源IT资产管理系统,BS架构,支持多语言。官方文档中有更详细的介绍。
安装需要php环境以及MySQL/MariaDB数据库。
这里用docker来部署,以版本v7.0.12为例。
通过Docker安装
拉取指定版本的镜像
docker pull snipe/snipe-it:v7.0.12
创建一个环境变量文件
vim env_file
内容如下:
# Mysql Parameters
MYSQL_ROOT_PASSWORD=YOUR_SUPER_SECRET_PASSWORD
MYSQL_DATABASE=snipeit
MYSQL_USER=snipeit
MYSQL_PASSWORD=YOUR_snipeit_USER_PASSWORD
# Email Parameters
# - the hostname/IP address of your mailserver
MAIL_PORT_587_TCP_ADDR=smtp.whatever.com
#the port for the mailserver (probably 587, could be another)
MAIL_PORT_587_TCP_PORT=587
# the default from address, and from name for emails
MAIL_ENV_FROM_ADDR=youremail@yourdomain.com
MAIL_ENV_FROM_NAME=Your Full Email Name
# - pick 'tls' for SMTP-over-SSL, 'tcp' for unencrypted
MAIL_ENV_ENCRYPTION=tcp
# SMTP username and password
MAIL_ENV_USERNAME=your_email_username
MAIL_ENV_PASSWORD=your_email_password
# Snipe-IT Settings
APP_ENV=production
APP_DEBUG=false
APP_KEY=<<Fill in Later!>>
APP_URL=http://127.0.0.1:YOUR_PORT_NUMBER
APP_TIMEZONE=US/Pacific
APP_LOCALE=en
# Docker-specific variables
PHP_UPLOAD_LIMIT=100
其中,# Mysql Parameters
中的几项是数据库相关的配置,看key的名字就知道,大概是ROOT密码、数据库名称、用户名、用户密码,根据自己的情况进行修改。
# Email Parameters
下配置的是邮箱相关的,不配置也不影响使用。
# Snipe-IT Settings
是应用的配置,其中需要修改的有APP_KEY
:应用密钥,后续生成后替换、APP_URL
:应用的实际地址、APP_TIMEZONE
:时区、APP_LOCALE
:语言代码,后续生成完APP_KEY
后再一起修改。
启动MySQL容器
根据情况先修改环境变量文件中MySQL的相关信息,然后在启动时指定环境变量文件。这里是把/var/lib/mysql
映射到数据卷snipesql-vol
,改成例如-v /root/app/snipeit/db:/var/lib/mysql
挂载到宿主机的目录也行。
docker run --name snipe-mysql --env-file=env_file --mount source=snipesql-vol,target=/var/lib/mysql -d -P mysql:5.6
获取App Key
docker run --rm snipe/snipe-it:v7.0.12
将会输出如下:
Please re-run this container with an environment variable $APP_KEY
An example APP_KEY you could use is:
base64:U0Io75A2HJ5XVQmeb4g0UAX47Cz/zepCI833iirr+pA=
将App Keybase64:U0Io75A2HJ5XVQmeb4g0UAX47Cz/zepCI833iirr+pA=
完整复制到环境变量文件中的APP_KEY处。
顺便改一下其他环境变量。
# Snipe-IT Settings
APP_ENV=production
APP_DEBUG=false
APP_KEY=base64:U0Io75A2HJ5XVQmeb4g0UAX47Cz/zepCI833iirr+pA=
APP_URL=http://服务器的IP:8000
APP_TIMEZONE=Asia/Shanghai
APP_LOCALE=zh-CN
启动Snipe容器
这边映射的端口要和配置文件中APP_URL
中的端口一致,这边随便用个8000端口。
docker run -d -p 8000:80 --name="snipeit" --link snipe-mysql:mysql --env-file=env_file --mount source=snipe-vol,dst=/var/lib/snipeit snipe/snipe-it:v7.0.12
访问页面
访问APP_URL对应的地址即可。这里如果APP_URL设置不正确,后续跳转可能会跳转都不正确的地址。
第一次访问会进入初始化页面,页面上分步骤进行检查和配置。按照说明下一步即可。
全局设置默认语言管理员右上角设置中的Localization中,路径是/admin/localization
。用户自己的语言设置在头像栏里的Edit Your Profile
中,修改Language
即可,路径是/account/profile
。
通过Docker Compose安装
创建一个环境变量文件
同样也是先新建一个环境变量文件。
vim .env
然后修改内容,主要还是前面几行APP和DB相关的配置,注意要修改APP_URL
为实际的地址。
# .env
# --------------------------------------------
# REQUIRED: DOCKER SPECIFIC SETTINGS
# --------------------------------------------
APP_VERSION=v7.0.12
APP_PORT=8000
# --------------------------------------------
# REQUIRED: BASIC APP SETTINGS
# --------------------------------------------
APP_ENV=production
APP_DEBUG=false
# Please regenerate the APP_KEY value by calling `docker compose run --rm snipeit php artisan key:generate --show`. Copy paste the value here
APP_KEY=base64:U0Io75A2HJ5XVQmeb4g0UAX47Cz/zepCI833iirr+pA=
APP_URL=http://localhost:8000
# https://en.wikipedia.org/wiki/List_of_tz_database_time_zones - TZ identifier
APP_TIMEZONE='Asia/Shanghai'
APP_LOCALE=zh-CN
MAX_RESULTS=500
# --------------------------------------------
# REQUIRED: UPLOADED FILE STORAGE SETTINGS
# --------------------------------------------
PRIVATE_FILESYSTEM_DISK=local
PUBLIC_FILESYSTEM_DISK=local_public
# --------------------------------------------
# REQUIRED: DATABASE SETTINGS
# --------------------------------------------
DB_CONNECTION=mysql
DB_HOST=db
DB_PORT='3306'
DB_DATABASE=snipeit
DB_USERNAME=snipeit
DB_PASSWORD=changeme1234
MYSQL_ROOT_PASSWORD=changeme1234
DB_PREFIX=null
DB_DUMP_PATH='/usr/bin'
DB_CHARSET=utf8mb4
DB_COLLATION=utf8mb4_unicode_ci
# --------------------------------------------
# OPTIONAL: SSL DATABASE SETTINGS
# --------------------------------------------
DB_SSL=false
DB_SSL_IS_PAAS=false
DB_SSL_KEY_PATH=null
DB_SSL_CERT_PATH=null
DB_SSL_CA_PATH=null
DB_SSL_CIPHER=null
DB_SSL_VERIFY_SERVER=null
# --------------------------------------------
# REQUIRED: OUTGOING MAIL SERVER SETTINGS
# --------------------------------------------
MAIL_MAILER=smtp
MAIL_HOST=mailhog
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_TLS_VERIFY_PEER=true
MAIL_FROM_ADDR=you@example.com
MAIL_FROM_NAME='Snipe-IT'
MAIL_REPLYTO_ADDR=you@example.com
MAIL_REPLYTO_NAME='Snipe-IT'
MAIL_AUTO_EMBED_METHOD='attachment'
# --------------------------------------------
# REQUIRED: DATA PROTECTION
# --------------------------------------------
ALLOW_BACKUP_DELETE=false
ALLOW_DATA_PURGE=false
# --------------------------------------------
# REQUIRED: IMAGE LIBRARY
# This should be gd or imagick
# --------------------------------------------
IMAGE_LIB=gd
# --------------------------------------------
# OPTIONAL: BACKUP SETTINGS
# --------------------------------------------
MAIL_BACKUP_NOTIFICATION_DRIVER=null
MAIL_BACKUP_NOTIFICATION_ADDRESS=null
BACKUP_ENV=true
# --------------------------------------------
# OPTIONAL: SESSION SETTINGS
# --------------------------------------------
SESSION_LIFETIME=12000
EXPIRE_ON_CLOSE=false
ENCRYPT=false
COOKIE_NAME=snipeit_session
COOKIE_DOMAIN=null
SECURE_COOKIES=false
API_TOKEN_EXPIRATION_YEARS=40
# --------------------------------------------
# OPTIONAL: SECURITY HEADER SETTINGS
# --------------------------------------------
APP_TRUSTED_PROXIES=192.168.1.1,10.0.0.1,172.0.0.0/8
ALLOW_IFRAMING=false
REFERRER_POLICY=same-origin
ENABLE_CSP=false
CORS_ALLOWED_ORIGINS=null
ENABLE_HSTS=false
# --------------------------------------------
# OPTIONAL: CACHE SETTINGS
# --------------------------------------------
CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync
CACHE_PREFIX=snipeit
# --------------------------------------------
# OPTIONAL: REDIS SETTINGS
# --------------------------------------------
REDIS_HOST=null
REDIS_PASSWORD=null
REDIS_PORT=6379
# --------------------------------------------
# OPTIONAL: MEMCACHED SETTINGS
# --------------------------------------------
MEMCACHED_HOST=null
MEMCACHED_PORT=null
# --------------------------------------------
# OPTIONAL: PUBLIC S3 Settings
# --------------------------------------------
PUBLIC_AWS_SECRET_ACCESS_KEY=null
PUBLIC_AWS_ACCESS_KEY_ID=null
PUBLIC_AWS_DEFAULT_REGION=null
PUBLIC_AWS_BUCKET=null
PUBLIC_AWS_URL=null
PUBLIC_AWS_BUCKET_ROOT=null
# --------------------------------------------
# OPTIONAL: PRIVATE S3 Settings
# --------------------------------------------
PRIVATE_AWS_ACCESS_KEY_ID=null
PRIVATE_AWS_SECRET_ACCESS_KEY=null
PRIVATE_AWS_DEFAULT_REGION=null
PRIVATE_AWS_BUCKET=null
PRIVATE_AWS_URL=null
PRIVATE_AWS_BUCKET_ROOT=null
# --------------------------------------------
# OPTIONAL: AWS Settings
# --------------------------------------------
AWS_ACCESS_KEY_ID=null
AWS_SECRET_ACCESS_KEY=null
AWS_DEFAULT_REGION=null
# --------------------------------------------
# OPTIONAL: LOGIN THROTTLING
# --------------------------------------------
LOGIN_MAX_ATTEMPTS=5
LOGIN_LOCKOUT_DURATION=60
RESET_PASSWORD_LINK_EXPIRES=900
# --------------------------------------------
# OPTIONAL: MISC
# --------------------------------------------
LOG_CHANNEL=stderr
LOG_MAX_DAYS=10
APP_LOCKED=false
APP_CIPHER=AES-256-CBC
APP_FORCE_TLS=false
GOOGLE_MAPS_API=
LDAP_MEM_LIM=500M
LDAP_TIME_LIM=600
创建docker-compose.yaml文件
volumes:
db_data:
storage:
services:
app:
image: snipe/snipe-it:${APP_VERSION:-v7.0.12}
restart: unless-stopped
volumes:
- storage:/var/lib/snipeit
ports:
- "${APP_PORT:-8000}:80"
depends_on:
db:
condition: service_healthy
restart: true
env_file:
- .env
db:
image: mariadb:11.5.2
restart: unless-stopped
volumes:
- db_data:/var/lib/mysql
environment:
MYSQL_DATABASE: ${DB_DATABASE}
MYSQL_USER: ${DB_USERNAME}
MYSQL_PASSWORD: ${DB_PASSWORD}
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
healthcheck:
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
interval: 5s
timeout: 1s
retries: 5
启动
docker compose up -d
等待容器全部正常启动后,访问页面即可。