Docker(도커)와 Tinfoil Web Server(틴포일 웹서버)를 이용한 개인용 커스텀 샵의 구축 가이드

이러한 커스텀 샵의 경우 주변에 공유하게 되면 굉장히 위험할 수 있습니다. 반드시 이를 숙지하고 사용에 있어서도 각별히 주의하시길 바랍니다.
Docker(도커)와 Tinfoil Web Server(틴포일 웹서버)를 이용한 개인용 커스텀 샵의 구축 가이드

목차

과거 한번 따로 다루었기도 하지만 실제로 개인용으로 사용하고 있는 스위치의 틴포일 기반의 커스텀 샵Ownfoil은 참으로 간단하고 훌륭한 프로젝트입니다.

그러나 개발자의 로드맵과는 달리 최근 의미있는 업데이트가 전혀 진행되질 않고 있어 굉장히 아쉬운 상황이라 할 수 있습니다.

스위치의 틴포일 커스텀 샵은 기기에 연동하는 경우 상당히 편리한 구성으로 무선으로 사용하기도 편하지만 별도의 장비만 있다면 굳이 프리샵등을 사용하지 않아도 된다는 장점이 있습니다.

이번엔 구독자 중 한분이 댓글로 알려주신 또다른 프로젝트가 있어 잠시 살펴보았던 틴포일 웹서버라는 프로젝트입니다.

잠시 스펙을 살펴보니 기존의 nut 서버Ownfoil 보다 기능이 상당히 괜찮아 보였기에 저 역시 관심이 생겼습니다.

도커 이미지는 다소 오래되었으나 최근까지 업데이트도 꾸준하기에 한번 테스트를 삼아 설치할겸 설치 가이드를 작성해보겠습니다.

Ownfoilnut서버의 경우 경우 지인들과 함께 사용할 때에 사용자를 관리하는 기능이 없다보니 안전한 공유가 쉽지 않고 외부에서 비밀번호를 뚫기 위한 공격을 시도하는 경우 별도의 알림이나 앞딴 웹서버가 없다면 아무래도 막아내기 어려운 구조입니다.

따라서 기본적인 보안 대책을 조금이라도 더 가진 tinfoilwebserver 틴포일 웹 서버를 소개하겠습니다.

Docker와 Ownfoil을 이용한 나만의 틴포일 커스텀 상점 구축 후기
개인이 직접 틴포일의 커스텀 상점을 만들기 위해선 여러가지 방법들이 있겠으나 Ownfoil이란 프로젝트는 a1ex4 라는 개발자가 유지보수하고 있는 상당히 간편한 방식의 웹 서버입니다.

​이제는 Ownfoil과 헤어질때가 온 것 같습니다.

GitHub - Myster-Tee/TinfoilWebServer: Install your packages from your own server
Install your packages from your own server. Contribute to Myster-Tee/TinfoilWebServer development by creating an account on GitHub.

danifunker 라는 개발자가 유지보수하고 있는 tinfoilwebserver는 기존 닷넷 기반의 exe 타입의 프로젝트를 그대로 도커로 옮긴 것으로 보입니다.

기본 구성만 보아도 상당히 매력적인데 기존 틴포일 커스텀 샵의 기능은 모두 갖추고 있으며 추가적인 주요 설정만 한번 살펴 보겠습니다.

{
-------중략--------
  "Authentication": {
    "Enabled": false, // 인증을 활성화하려면 «true», 그렇지 않으면 «false»
    "WebBrowserAuthEnabled": false, // 인증되지 않은 경우 기본 웹 브라우저 로그인 프롬프트를 활성화하려면 «true» (인증이 비활성화된 경우 효과 없음)
    "Users": [ // 허용된 사용자 목록 (여러 사용자를 선언하려면 쉼표를 구분자로 사용)
      {
        "Name": "", // 사용자 이름
        "Pwd": "", // 암호
        "MessageOfTheDay": "" // 사용자를 위한 사용자 정의 메시지
      }
    ]
  },
  "Blacklist": {
    "Enabled": false, // IP 블랙리스트 기능을 활성화하거나 비활성화하려면 «true», 그렇지 않으면 «false»
    "FilePath": "", // 블랙리스트 IP를 저장할 파일 경로
    "MaxConsecutiveFailedAuth": 0, // IP를 블랙리스트에 추가하기 위한 연속된 인증되지 않은 요청 횟수
    "IsBehindProxy": false // true로 설정하면 들어오는 IP 주소는 "X-Forwarded-For" 헤더에서 가져올 것이며, 그렇지 않으면 TCP/IP 프로토콜에서 가져올 것입니다
  },
  -----중략--------
}

먼저 눈에 띄는 것은 Authentication 항목입니다.

사용자를 JSON 형식으로 쉽게 추가가 가능한데 안타깝게도 자동 갱신은 아니다 보니 수정이 조금 번거롭긴합니다.

그러나 컨테이너를 잠시 중지하고 추가후 재기동하면 적용이 될테니 비교적 어렵지 않게 운용이 가능할 것으로 보입니다.

다음은 blacklist 기능으로 지속적으로 실패하는 IP를 차단해버리는 기능입니다.

느낌은 리눅스의 Fail to ban 과 유사한 방식으로 로그인 실패가 특정 횟수 이상일때 해당 IP를 차단하는 식으로 동작하리라 생각되는군요.

이처럼 설정 파일 하나로 쉽게 구성이 가능한 방법이기 때문에 꽤나 유용하게 사용이 가능하겠습니다.

자 그럼 어떻게 구축해야할지 실전으로 들어가보겠습니다.

현재 포스트 는 구독자 전용 컨텐츠입니다

비정기로 발행되는 추천 포스트를 이메일로 받아 보실 수 있습니다.

특별한 추천 포스트를 바로 이메일로 받아보세요. 물론 무료입니다!
좋아요! 받은 편지함을 확인하고 구독을 확인하려면 링크를 클릭하십시오.
오류! 유효한 이메일 주소를 입력하십시오!