오픈소스 자산 관리 소프트웨어인 Snipe-IT에 대한 내용 및 docker compose로 환경을 구성한 내용을 정리합니다.
Snipe-IT 소개
Snipe-IT은 IT 자산 관리(IT Asset Management, ITAM)를 효율적으로 수행할 수 있도록 도와주는 오픈소스 소프트웨어입니다.
이를 통해 기업은 하드웨어, 소프트웨어, 라이선스 등 IT 자산을 체계적으로 관리하고 추적할 수 있습니다.
웹 기반으로 설계되어 어디서나 접근 가능하며, 직관적인 인터페이스와 강력한 기능으로 전 세계 많은 기업과 조직에서 사용되고 있습니다.
주요 특징
- 자산 관리: IT 장비, 소프트웨어 라이선스, 계약 등을 효율적으로 관리.
- 사용자 관리: 자산을 특정 사용자에게 할당하거나 반환 상태를 기록.
- 보고서 생성: 자산 상태, 만료일, 할당 현황 등의 보고서를 생성.
- REST API 지원: 외부 시스템과의 통합을 위한 API 제공.
- 다국어 지원: 다국어 UI로 글로벌 사용자들에게 적합.
- 보안 기능: 사용자 권한 관리 및 데이터 암호화 기능 제공.
Snipe-IT 설치 가이드 (Docker Compose 사용)
Snipe-IT을 Docker Compose를 사용하여 쉽게 설치할 수 있습니다. 아래는 간단한 설치 가이드입니다.
1. 사전 준비
- Docker 및 Docker Compose 설치.
.env
파일 작성
.env 코드
# --------------------------------------------
# REQUIRED: DOCKER SPECIFIC SETTINGS
# --------------------------------------------
APP_VERSION=v6.4.1
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:3ilviXqB9u6DX1NRcyWGJ+sjySF+H18CPDGb3+IVwMQ=
APP_URL=http://localhost:8000
# https://en.wikipedia.org/wiki/List_of_tz_database_time_zones - TZ identifier
APP_TIMEZONE='UTC'
APP_LOCALE=en-US
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.16.0.0/12
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
- 계정, 비밀번호, key 등 중요한 정보는 변경하여 사용해야 하겠습니다.
2. docker-compose.yml
파일 작성
아래 코드를 docker-compose.yml
파일로 저장합니다.
docker-compose.yml 코드
# Compose file for production.
volumes:
db_data:
storage:
services:
app:
image: snipe/snipe-it:${APP_VERSION:-v7.0.11}
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:
# https://mariadb.com/kb/en/using-healthcheck-sh/#compose-file-example
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
interval: 5s
timeout: 1s
retries: 5
3. 서비스 실행
docker compose up -d
Snipe-IT 접속 및 기능
사이트 접속 및 초기 셋팅
http://localhost:8000
으로 접속하여 Snipe-IT 초기 설정을 완료합니다.




Admin 설정

- 상단 오른쪽 톱니바퀴(설정) 버튼 클릭
메뉴 및 기능
Snipe-IT의 최신 웹 인터페이스는 IT 자산 관리를 효율적으로 수행할 수 있도록 다양한 메뉴를 제공합니다.
대시보드 (Dashboard):
- 시스템의 전반적인 상태와 주요 통계를 한눈에 확인할 수 있는 화면입니다.
- 자산 현황, 최근 활동, 알림 등을 제공합니다.

자산 (Assets):
- IT 자산을 등록, 조회, 수정, 삭제할 수 있는 메뉴입니다.
- 자산의 상태, 위치, 사용자 할당 등을 관리할 수 있습니다.

라이선스 (Licenses):
- 소프트웨어 라이선스를 관리하는 메뉴입니다.
- 라이선스의 할당, 만료일, 사용 현황 등을 추적할 수 있습니다.

액세서리 (Accessories):
- 키보드, 마우스 등 부속 장비를 관리하는 메뉴입니다.
- 액세서리의 수량, 상태, 할당 정보를 추적할 수 있습니다.

소모품 (Consumables):
- 잉크 카트리지, 배터리 등 소모품을 관리하는 메뉴입니다.
- 소모품의 재고 수준과 사용 내역을 추적할 수 있습니다.

컴포넌트 (Components):
- 자산을 구성하는 개별 부품이나 모듈을 관리하는 메뉴입니다.
- 컴포넌트의 상태, 위치, 할당 정보를 추적할 수 있습니다.

사전 정의된 키트 (Predefined Kits):
- 자주 함께 할당되는 자산의 그룹을 미리 정의하여, 사용자에게 일괄적으로 할당할 수 있는 기능입니다.
- 예를 들어, 신규 직원에게 필요한 노트북, 마우스, 키보드 등을 하나의 키트로 구성하여 신속하게 할당할 수 있습니다.

사람들 (People):
- 시스템 사용자와 직원 정보를 관리하는 메뉴입니다.
- 새로운 사용자를 생성하고, 권한을 부여하며, 사용자별 자산 할당 현황을 확인할 수 있습니다.

가져오기 (Import):
- CSV 파일을 통해 대량의 자산, 사용자, 라이선스 등의 데이터를 일괄적으로 시스템에 업로드할 수 있는 기능입니다.
- 데이터를 사전에 정의된 형식에 맞게 준비한 후, 가져오기 기능을 통해 효율적으로 시스템에 반영할 수 있습니다.

설정 (Settings):
- 시스템의 전반적인 설정을 관리하는 메뉴입니다.
- 회사 정보, 로케이션, 카테고리, 제조사 등 다양한 항목을 설정하고 관리할 수 있습니다.
- 또한, 사용자 권한, 이메일 알림, 브랜딩 등 시스템 운영에 필요한 세부 설정을 조정할 수 있습니다.

보고서 (Reports):
- 시스템 내 자산, 사용자, 라이선스 등의 다양한 활동과 상태에 대한 보고서를 생성하고 조회할 수 있는 메뉴입니다.
- 활동 보고서를 통해 자산의 체크인/체크아웃 기록, 수정 내역 등을 추적할 수 있습니다.
- 생성된 보고서는 CSV 형식으로 내보낼 수 있어, 외부 분석이나 기록 보관에 활용할 수 있습니다.

요청 가능 항목 (Requestable):
- 사용자가 시스템 내에서 특정 자산이나 액세서리를 요청할 수 있도록 설정하는 기능입니다.
- 관리자는 자산이나 모델을 요청 가능 상태로 지정하여, 사용자들이 필요한 자산을 쉽게 요청하도록 지원할 수 있습니다.
- 요청된 자산은 ‘Requested Assets’ 메뉴에서 관리자가 확인하고 승인 또는 거부할 수 있습니다.

참고자료
- https://snipeitapp.com/
- https://snipe-it.readme.io/docs/introduction
- https://snipe-it.readme.io/docs/docker
- https://github.com/snipe/snipe-it
- https://github.com/snipe/snipe-it/blob/master/.env.docker
- https://github.com/snipe/snipe-it/blob/master/docker-compose.yml
Snipe-IT은 간단한 설치와 강력한 기능으로 많은 기업에서 IT 자산 관리의 필수 도구로 사용되고 있습니다.