자산관리 솔루션 SNIPE-IT 설치 (타임아웃 문제 해결)

개요

Synology DS218+에 Docker기반의 SNIPE-IT를 설치하는 방법을 간략히 기술한다. SNIPE-IT는 자산관리를 위하여 무료료 사용 가능한 오픈소스 솔루션이다. 설치 과정에서 발생되는 타임아웃(Timeout) 문제를 해결하기 위하여 Docker Container내의 일부 설정을 수정하였다. Synology NAS를 대상으로 설치를 수행하였으나 기타 Linux 운영체제에서도 큰 차이가 없을걸로 생각된다. 설치 과정에 문제가 발생되지 않는다면 필요없는 내용이지만 기록보존을 위하여 남겨둔다.

사전준비

  • Mysql (MariaDB) : Synology NAS에 Docker를 사용하여 미리 설치 하였음
  • Portainer : 간편하게 SNIPER-IT를 설치하기 위한 용도

SNIPER-IT 설치

참고Ref1의 방법을 따라 설치를 진행할 수 있다. 해당 링크에 설명이 아주 잘되어 있어 본 문서에서는 간략하게만 기술한다. 대상 시스템에는 Mysql (MariaDB)가 이미 설치되어 있기 때문에 아래와 같은 snipe-it 설정만을 Portainer Stack의 Web Editor에 기록하였다.

version: "3"
services:
snipeit:
  image: linuxserver/snipe-it:latest
  container_name: snipe-it
  restart: always
  volumes:
    - /volume1/docker/snipeit:/config
  environment:
    - APP_URL=http://nasip:1339
    - NGINX_APP_URL=nasip:1339
    - MYSQL_PORT_3306_TCP_ADDR=dbip
    - MYSQL_PORT_3306_TCP_PORT=3306
    - MYSQL_DATABASE=snipe
    - MYSQL_USER=snipe
    - MYSQL_PASSWORD=dbpassword
    - PGID=1024
    - PUID=100
  ports:
    - "1339:80"

운영환경에 맞게 서버 IP 및 계정 설정을 기록하고 volume 설정을 위한 디렉터리를 미리 만들어 두는것으로 설정을 완료한다.

Docker Container가 정상적으로 실행되었다면 브라우저로 설정한 주소를 접속하면 아래와 같이 설치를 위한 점검을 수행한 결과를 표기한다.

SNIPE-IT SETUP 화면

문제가 없다면 다음 과정으로 넘어가서 데이터베이스 테이블을 생성하게 된다. 해당 설치 과정에서 아래와 같이 Nginx Server에서 Timeout이 발생되었다.

SNIPE-IT NGINX Timeout 화면

Timeout이 발생 되더라도 처리중인 명령이 정상적으로 수행될 수도 있으나 오류 발생 화면을 가급적 피하기 위하여 아래와 같이 Timeout 발생과 관련된 파일의 설정을 수정하였다. 일정 시간 대기 후에 데이터베이스 설치가 정상적으로 진행되는 경우에는 아래의 과정을 생략해도 무방하다.

Docker를 이용하여 설치하였기 때문에 아래 수정된 파일은 모두 Docker Container 안의 파일이다.

/config/nginx/nginx.conf 파일에서 keepalive_timeout300으로 수정하고 나머지 proxy_connect_timeout 등의 설정도 300으로 설정하였다.

http {                                                                                                                
                                                                                                                      
        ##                                                                                                            
        # Basic Settings                                                                                              
        ##                                                                                                            
                                                                                                                      
        sendfile on;                                                                                                  
        tcp_nopush on;                                                                                                
        tcp_nodelay on;                                                                                               
        keepalive_timeout 300;                                                                                         
        types_hash_max_size 2048;                                                                                     
        server_tokens off;       
   proxy_connect_timeout 300;      
  proxy_send_timeout 300;      
   proxy_read_timeout 300;      
   send_timeout 300; 

/etc/php7/php.ini 파일의 max_input_time, default_socket_time, max_execution_time의 설정 모두 동일하게 300으로 수정하였다.

; Maximum execution time of each script, in seconds                                                                   
; http://php.net/max-execution-time                                                                                   
; Note: This directive is hardcoded to 0 for the CLI SAPI                                                             
max_execution_time = 300                                                                                               
                        
; Maximum amount of time each script may spend parsing request data. It's a good                                      
; idea to limit this time on productions servers in order to eliminate unexpectedly                                   
; long running scripts.                                                                                               
; Note: This directive is hardcoded to -1 for the CLI SAPI                                                            
; Default Value: -1 (Unlimited)                                                                                       
; Development Value: 60 (60 seconds)                                                                                  
; Production Value: 60 (60 seconds)                                                                                   
; http://php.net/max-input-time                                                                                       
max_input_time = 300                                                                                                  

; Default timeout for socket based streams (seconds)                                                                  
; http://php.net/default-socket-timeout                                                                               
default_socket_timeout = 300        

설치가 정상적으로 진행되지 않은 경우 위와 같이 설정을 완료 후 설치 과정을 초기화한 이후 재구동을 수행하고 설치를 재진행하였다.

아래와 같이 데이터베이스 테이블 생성이 정상적으로 완료된 것을 확인하였다.

SNIPE-IT Database 설정 완료 화면

정리

늘어나는 장비들과 소프트웨어의 관리 문제 해결을 위하여 부담없이 이용 가능한 SNIPE-IT를 선정하여 설치해보았다. 아직 설치만 진행한 상태로 실제 활용은 해보지 못했지만 잘 활용해서 조금더 체계적인 관리가 이루어졌으면 한다.

[Ref1]  How to Install Snipe-IT on Your Synology NAS

“자산관리 솔루션 SNIPE-IT 설치 (타임아웃 문제 해결)”에 대한 2개의 생각

  1. 감사합니다
    설치 후에 500 error가 뜨는데 뭘 잘못 설정했는지 찾던 도중 여기까지 흘러왔네요 ㅠ
    비슷한 에러 사례가 안보여서 아예 리셋하고 다시 해봐야할 것 같습니다….

    혹시 설치하실 때 시놀로지 내부의 maria db 이용해서 하셨나요 아니면 docker로 mysql 설치해서 진행하셨나요?
    ghost db 설치할 땐 mariadb를 지원을 안해가지고 mysql로 설치하려고 하긴 했는데 이 친구는 따로 그런 제약사항은 없는것 같아서 mariadb에 모아두려고 하는지라….

    1. 안녕하세요. 관리를 거의 하지 않는 블로그에 댓글이 달려있어 깜짝 놀랐네요.
      첫 댓글임에도 불구하고 이제서야 확인을 하게되어 죄송합니다.
      저는 synology docker에서 mariadb를 설치하였는데 데이터베이스와 통신만 문제 없다면 직접 설치던 docker를 이용하던 큰 상관은 없어보입니다.

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다