반응형

Synology WebStation을 이용해 GLPI를 설치해 이용중이였는데,

GLPI의 버전을 9에서 10으로 마이그레이션 후 아래와 같은 오류가 화면에 표시되었습니다.

 

오늘은 이 문제를 해결한 경험을 공유해보도록 하겠습니다.

참고했던 관련 포스팅은 https://github.com/glpi-project/glpi/issues/10534 입니다.

 

주황색 경고창에 해결 방법까지 자세히 나와있지만, 콘솔창에 어떻게 입력하라는건지 깝깝하기만 합니다.

 

하지만, 어려워 하지말고 차근차근 고민해 봅니다. 자세히 뚤어져라 계속 보다보면, 답이 보이기 마렵이니.

 

glpi 폴더를 보면 bin/console 이라는 파일이 있음을 확인 할 수 있습니다.

우리는, 쉘로 접속해 php 명령어를 glpi 경로에서 실행시켜 주기만 하면 되는것 같습니다.

 

1. 쉘 접속을 위한 환경설정 변경

쉘에 접속하기 위해 Synology DSM에 접속 > 제어판에서 SSH 포트를 활성화 합니다.

※ 해킹에 노출이 되기 쉬우니 위해 SSH 서비스는 필요할때만 활성화 하시고, 22번 포트 보다는 10022 등과 같은 남이 모를만한 포트로 사용하시기 바랍니다. 

 

 

2. PHP 패키지 설치 확인

그리고 패키지 센터에서 PHP 7.2 또는 7.4가 설치 되어 있는지 확인하세요.

 

3. 쉘 접속 및 PHP 명령어 실행

Putty 또는 SSH 접속으로 NAS의 IP:설정한 포트(ex. 주소 : 192.168.0.111 / 포트 : 22 )와 같이 접속합니다.
그리고, glpi가 설치된 경로로 이동해서, 명령어를 입력합니다. (glpi의 경로는 이때 web의 경로에 따라 경로가 달라질 수 있습니다)

※ 명령어를 입력은 오류메시지 상에서 php~ 로 시작되지만, Synology 에서는 여러개의 php가 설치되어 있기 때문에 버전을 지정하여 실행하기 위해 php72 또는 php74 등으로 시작해서 마이그레이션 명령어를 입력합니다.

 

오류 내용표시 및 마이그레이션 요청 내용(예시)

columns are using the deprecated datetime storage field type.
Run the "php bin/console glpi:migration:timestamps" command to migrate them.

 

예시내용 기준 쉘 명령 입력

$ php74 bin/console glpi:migration:timestamps

 

이후 처리 질의 및 처리 결과

 

4. 결과 확인

GLPI에 접속하면, 오류 메시지가 표시되지 않는 것을 확인 할 수 있습니다.

 

 

 

5. SSH 서비스 비활성화

보안을 위해 Synology DSM에 접속 > 제어판 > SSH 포트를 비활성화 합니다.

반응형
반응형

오늘은 무료 연구노트 기록관리용 서비스인 eLabFTW 패키지에 대해 소개해 볼까 합니다.

 

정부과제를 하다보면, 연구노트를 접하고는 합니다. 이제까지 다소 어쩔수 없이 사용했던 연구노트만 경험해봤다면, 지금부터 소개할 서비스는 다소 실제로 활용하기에 유용할 수 있으리라 생각 됩니다.

 

물론 Synology Docker를 이용해 구성이 가능합니다.

※ 지난번 Docker 관련 포스팅을 응용해 보세요. 

 

https://www.elabftw.net/

 

eLabFTW - Open Source Laboratory Notebook

A free and open source electronic laboratory notebook for experimental research.

www.elabftw.net

 

eLabFTW의 주요 기능

  • Tag, 공유, 잠금, 팀단위 연구 등의 기능을 지원합니다.
  • 타임스탬프를 남길 수 있습니다.
  • PDF, ZIP, CSV, JSON으로 내보내기 기능을 지원합니다.
  • 마우스로 직접 그림을 그리기를 지원합니다.
  • 실험에 템플릿을 사용할 수 있습니다.
  • 프로토콜 또는 실험에 단계 추가할 수 있습니다.
  • 외부 API를 활용 가능합니다.
  • 다양한 파일의 유형을 업로드 할 수 있습니다. 
  • Molecule Draw(분자식 그리기)를 지원합니다.

※ 그외에 다양한 기능에 대한 gif 영상은 링크를 확인하세요.

 

eLabFTW의 시스템 기능

  • 서비스에 필요한 자원을 많이 소모하지 않습니다.
  • Docker 컨테이너를 지원합니다.
  • LDAP 연동 / SAML2 인증을 지원합니다
  • 2중 인증을 지원합니다.
  • 보안에 취약하지 않습니다. (Mozila Observatory 테스트에서 만점 받음)

 

직접적인 사용 경험

시놀로지의 Docker와 역방향 프록시, 서브도메인 연동을 통해 단기적으로 운영 테스트를 진행 중에 있습니다.

우선은 장점으로는 어떤 연구에 대한 목표/성과관리와 기반이 되는 데이터베이스를 공유하여 유연하게 구성할 수 있고, 기본적으로 에디터가 클립보드 이미지 붙여넣기가 지원되거나 편집이 자유로워 작성에 큰 불편함이 없었습니다. PDF로 내보내기시에, 타임스템프가 표시되기때문에 변조등에 대해서도 기본적인 역할을 할 수 있고, 기존 연구에서는 노션이나 에버노트와 같은 노트 툴에 저장했는데, 보다 전문적으로 관리할 수 있는 채널로서 기대하고 있습니다.

 

반응형
반응형

1. 머릿말

시놀로지 NAS 하위에 서비스를 구축하여 운영할 경우, 계정들을 별도로 관리해주어야 하는 번거로움이 있습니다.

오늘은 LDAP 서버를 구성하여 하위 서비스에 연동해 보는 것을 연구해 보려고 합니다.

 

※ 참고사항

LDAP 하위 계정은 Synology 제어판의 사용자 계정과는 별개로 동작됩니다.

통합하여 운영하고자 할경우, 2. LDAP Server에서 세팅한 서비스를 제어판 > 도메인/LDAP Client로 설정하여 운영해야한다고 합니다. (아직 테스트 못해봤네요)

2. 시놀로지 LDAP Server 패키지 설치 및 세팅

패키지 설치 및 기본 세팅

  • 공유기의 포트포워딩 : 389, 636(SSL지원)
  • 패키지 센터 > LDAP Server 설치
  • LDAP Server 세팅
    • 기본세팅 FQDN : 도메인 입력
    • 패스워드 : 서버연결에 필요한 패스워드 입력
    • Base DN / Bind DN 은 별도로 복사
  • LDAP Server 사용자 관리 > 신규 계정 추가
    • 사용자 이름 및 비밀번호 입력

3. Redmine LDAP 인증 공급자 추가

시놀로지 LDAP서버에서 생성된 신규 계정을 조회하여 Redmine의 신규회원으로 등록하는 인증방식입니다.

 

설정

1. 관리 > LDAP 인증 > 새 인증 공급자 추가 클릭

2. 인증 공급자 정보 입력

  • 호스트 : www.도메인.net
  • 포트 : 389, 636(SSL/LDAPS 선택)
  • 계정 : Bind DN 정보 입력 (NAS/LDAP Server 하단 인증정보 참고)
  • 비밀번호 : 서버연결에 필요한 패스워드 입력
  • 기본 DN : Base DN 정보 입력(NAS/LDAP Server 하단 인증정보 참고)

3. LDAP 계정으로 로그인 > Redmine 계정 등록 진행

Synology LDAP Server 상에서 계정 정보가 UI상에서 많은 내용의 필드를 구성하고있지 않기 때문에, 세세하게 설정하기에는 다소 아쉬운 부분이 있습니다. OpenLDAP등을 Docker로 운영하는 것이 어떤 부분에서는 나을 수도 있겠다는 생각이 드네요.

 

반응형
반응형

Slack의 API 지원 페이지

Slack이나 텔레그램을 보면 외부 API를 이용해 다양한 외부 서비스를 연동하고 있습니다.

대부분은 목적 중심의 상황(트리거)이 발생했을때 Notification을 채팅 창으로 전송해주는 서비스 입니다.

회사에서 Chat을 주로 활용하도록 하고 있다보니, Synology에서도 이런 기능이 제공 되지 않을까?라는 아주 막연한 기대를 갖고 관련 자료를 찾다 보니, 가능성이 보였습니다. 해당 포스팅은 막연한, 목적을 두고 차근차근 접근하는 과정을 정리한 내용이며, 비 개발자이기 때문에 차근차근 접근해보는 과정을 기록하였습니다.

 

본 포스팅은 비 전문가의 포스팅으로, 기초적인 사전 지식이 없이 목표에 맞추어 탐구하고 문제를 해결하는 것에 집중하는 것을 목표로 하고 있습니다. 야매이기 때문에 본래의 사전적 이해, 활용 방법이 다를 수 있는 점 참고해 주시고 봐 주시길 당부드립니다. 오류에 대한 지적은 감사합니다. 

 

1. 무엇을 하고 싶은가?

  • 서버가 장애시에 알림을 받고 싶다.
  • 외국인 직원과 대화가 힘들다...번역기, 번역기를 넣어 달라.

 

2. 제품 설명서 보기

기본적인 사양으로 Synology 사이트에서 제공하는 인터그레이션 관련한 내용은 알사람만 알법한 내용을 위주로 설명하였습니다. (저는 이해가 안되는 부분이 많군요.)

 

https://www.synology.com/ko-kr/knowledgebase/DSM/help/Chat/chat_integration

 

DiskStation Manager - Knowledge Base | Synology Inc.

 

www.synology.com

Webhook 기반으로 외부와 연동되는 서비스를 구현할 수 있다. 내용입니다.

 

3. 제품 설명서 더 자세히 보기

Webhook 기반 기능을 활용해 4개의 외부와 연동해 메시지를 보내거나 받는 등의 명령을 처리할 수 다고 합니다.

 

  • 들어오는 Webhook
    외부에서 메시지를 수신받을 수 있도록 하는 기능이라고 하네요.
  • 나가는 Webhook
    트리거가 되는 단어를 입력 시 POST 통신으로 URL을 호출한다고 하네요.
  • 슬래시 명령
    '나가는 Webhook'보다 좀 더 편리하게 /를 입력해 목록상에서 호출하고 실행할 수 있다고 하네요. 
    '나가는 Webhook'과 차이는 트리거 내용을 다른 사람이 볼 수 없다는 데 있다고 합니다.

  • 봇은 외부 소스에게 메시지를 보내고 게시해서 사용자 대신 응답할 수 있게끔 하는 거라고 하네요.
    봇은 dialogflow 에서 만들 수 있을 듯하네요.

(Chat의 오른쪽 상단의 '프로필'을 클릭하고 '통합'을 클릭하면, 기본적인 내용을 확인할 수 있습니다.)

 

4. 이해하고, 테스트 해보기

외부 입출력 관점에서 보자면, 기본적인 구조는 아래와 같아 보입니다.

 

 

그렇다면, Chat이 지원하는 Webhook의 기본 사양은 어떻게 되어있는지 자세히 들여보도록 하겠습니다.

 

[들어오는 Webhook]

기본적인 Webhook URL 정보는 복사해서 활용하기 쉽도록 제공합니다.

들어오는 Webhook

 

Webhook URL 실제 구현 TEST

브라우저의 URL 입력창에 아래와 같이 입력해 봅니다.

 

텍스트와 이미지 전송

http://도메인:5001/chat/webapi/entry.cgi?api=SYNO.Chat.External&method=incoming&version=2&token=토큰&payload={"text": "테스트입니다.",  "file_url": "https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_92x30dp.png"}

텍스트만 전송

http://도메인:5001/chat/webapi/entry.cgi?api=SYNO.Chat.External&method=incoming&version=2&token=토큰&payload={"text":테스트입니다."}

브라우저 본문에 아래와 같이 표시되면 전송 성공입니다.

{"success":true}

 

Chat 창에서 출력 결과 확인

출력 결과 확인

 

[나가는 Webhook]

나가는 Webhook은 외부에서 수용 가능한 서비스가 준비되어야 합니다. (서비스가 없다면, 개발해야 한다는 이야기지요..)

정상적으로 외부로 전송이 되는지 테스트해 볼 수 있는 https://webhook.site 서비스를 이용해서 확인합니다.

 

Webhook 테스트 URL 복사

서비스에 접속하면, Webhook이 수신받을 수 있는 URL이 생성됩니다. URL을 복사합니다.

https://webhook.site

 

나가는 Webhook 생성

트리거 단어(채팅창에다 입력 시 실행)와 위에서 복사한 URL을 붙여 넣고 확인해줍니다.

나가는 Webhook 생성 화면

채팅창에 트리거 단어 입력

해당 채널의 채팅창에 트리거 단어와 메시지를 함께 입력해 봅니다.

 

Webhook 테스트 사이트 확인

POST로 해당되는 메시지와 상세 내용을 확인할 수 있습니다.

특히 Form values 안에 token, text , username 등을 활용하면 디테일하게 더 활용할 수 있으리라 생각됩니다.

Webhook 테스트 사이트 결과 확인

 

Webhook 활용 방안

나가는 Webhook의 경우에는 Chat의 정보가 외부로 나가는 부분이고 이를 알기 위해서는 POST 통신에 대한 개념을 이해야 할 것으로 보여집니다. 위의 테스트 사이트에서 표기된 Form values 안에 token, text , username 등을 활용할 수 있으리라 생각되네요. 

API를 하나 만들어 POST 된 내용에 따라서 명령을 처리하는 방식으로 개발 할 수 있을 듯 합니다.

이를 테면 '/서버 상태확인'라는 명령어를 입력하면 개발을 통해 웹API가 '상태확인' 이라는 text를 인식하여 결과를 확인한뒤, '들어오는 webhook'을 '서버 상태 정상' 등과 같은 메시지를 chat에 전달해 주는 것이죠.

php에서 $_POST['text'], $_POST['username'] 등으로 key value를 가져올 수 있다고 하네요.

 

 

반응형

+ Recent posts