스튜디오 엘

시놀로지 나스에 SFTPgo 설치하기 - 강력한 통합 파일 전송 서버 구축 가이드

Authors

시놀로지 나스(Synology NAS)의 DSM은 별도의 앱 설치 없이도 GUI 환경에서 쉽게 SFTP 서버를 활성화하고 사용할 수 있습니다. 하지만 여러 기업이나 조직 환경에서 사용하다 보면 몇 가지 아쉬운 점이 생깁니다. 예를 들어, 나스의 DSM 사용자 계정과 분리된 전용 계정 관리가 필요하거나, S3/Azure 같은 클라우드 스토리지를 SFTP로 중계하고 싶을 때, 혹은 더 세밀한 사용자 별 사용 한도(Quota) 설정이 필요할 때가 바로 그 시점입니다.

이러한 갈증을 한 번에 해결해 주는 오픈소스 솔루션이 SFTPgo입니다. 오늘은 시놀로지 컨테이너 매니저(Container Manager)를 활용해 SFTPgo를 설치하고, 실무에서 바로 사용할 수 있는 세팅법을 공유하겠습니다.


SFTPgo를 시놀로지 DSM 기본 SFTP 기능 대신에 쓰는 이유

SFTPgo 웹 UI 로그인 화면

SFTPgo는 단순히 파일 전송만 하는 서버 역할을 하는 것이 아닙니다. 매우 가벼우면서도 엔터프라이즈급 기능을 갖춘 풀스택 파일 전송 솔루션입니다.

  • 멀티 프로토콜 지원: 앱 이름은 SFTPgo이지만, 실제로는 SFTP뿐만 아니라 FTP, HTTP/HTTPS, WebDAV까지 지원합니다.
  • 다양한 백엔드: 나스의 로컬 저장소는 물론, AWS S3, Google Cloud Storage, Azure Blob 등을 마치 로컬 폴더처럼 연결할 수 있습니다.
  • 강력한 관리 UI: 텍스트 설정 파일을 수정할 필요 없이 웹 대시보드에서 모든 계정과 권한을 관리하게 해줍니다.
  • 보안 및 이벤트: 계정별 IP 화이트/블랙리스트, 이벤트 액션(파일 업로드 시 스크립트 실행 등)을 지원하여 개발자 입장에서 생각보다 다양한 일들을 할 수 있습니다.

TIP

이런 분들께 추천합니다

  • 외부 업체와 파일을 공유해야 하는데, 나스의 메인 계정 체계에 노출시키고 싶지 않은 경우
  • 클라우드 스토리지(S3 등)에 있는 데이터를 SFTP 프로토콜로 클라이언트에게 제공해야 하는 경우
  • 시놀로지 DSM에서 제공하는 기본 권한 설정보다 더 복잡하고 정교한 제어가 필요한 경우
  • 외부 사용자에게 웹 UI 형태로 파일/폴더 전송이나 수정 등의 권한을 주고싶은 경우

설치 전 준비 사항

본격적인 설치에 앞서 하드웨어와 네트워크 환경을 점검하세요.

DS925+ thumbnail
Synology 4베이 타워형 NAS

소규모 사무실부터 대기업까지 다양한 환경에서 사용 가능한 다재다능한 NAS

CPU
AMD Ryzen V1500B(4코어 2.2GHz)
기본 메모리
4GB DDR4 ECC SODIMM
드라이브 베이
4개(SATA 3.5", 2.5" 호환)
  • NVMe 캐시 지원
  • 듀얼 2.5GbE 랜 포트
  • Btrfs 스냅샷 기능 지원

하드웨어의 경우 도커 앱들을 올려서 사용하기에는 DS925+ 이상의 성능을 가진 나스를 사용하고 메모리 용량은 4GB 이상 확보할 것을 권장합니다.

또한 현재 나스가 연결된 네트워크가 완전히 통제 가능한 네트워크 인프라 위에 있는지 확인해야 합니다. 포트포워딩 기능을 통해 서비스 포트를 개방할 수 있는 환경이어야 하며, 본인이 제어하지 못하는 물리 방화벽 장비나 소프트웨어 방화벽 뒤에 나스가 있다면 해당 권한이 있는 담당자에게 요청을 해야할 수 있습니다.


시놀로지 컨테이너 매니저로 SFTPgo 설치하기

시놀로지 나스의 DSM에서 패키지 형태로 제공하는 컨테이너 매니저(Container Manager)를 사용해 SFTPgo를 설치해 보겠습니다. 컨테이너 매니저는 도커(Docker) 기반 앱이나 도커 컴포즈(Docker Compose) 기반의 프로젝트를 GUI 환경에서 쉽게 설치하고 사용할 수 있게 돕는 패키지입니다.

먼저 컨테이너 매니저 패키지가 준비되어 있지 않다면, 컨테이너 매니저를 먼저 설치해 줍니다.

시놀로지 나스에서 컨테이너 매니저 설치 및 실행

기준:
Synology DSM 7.3
패키지 매니저
패키지 매니저

시놀로지 나스에 컨테이너 매니저를 설치하려면 먼저 패키지 센터 앱을 켜 주어야 합니다. 해당 앱의 검색창에 Container Manager를 키워드로 검색합니다.

Container Manager
Container Manager

결과로 Container Manager(Docker Inc. 개발, Synology Inc. 게시)가 나올텐데, 설치를 누른 후, 설치가 완료되어 열기 버튼이 활성화되면 눌러서 열어줍니다.

컨테이너 매니저를 처음 실행하면 좌측에 여러 메뉴 탭이 보이는데요, 주요 메뉴는 다음과 같습니다.

  • 개요: 현재 실행중인 컨테이너들과 프로젝트 상태 요약
  • 프로젝트: 도커 컴포즈 기반 앱 관리
  • 컨테이너: 단일 도커 컨테이너 앱 관리
  • 이미지: 각 도커 이미지 상태 및 업데이트 관리
  • 레지스트리: 도커 허브(Docker Hub) 등 외부 이미지 저장소 검색
  • 네트워크: 각 컨테이너나 프로젝트에서 사용하는 네트워크 설정
  • 로그: 컨테이너 매니저의 동작 로그(이 앱의 GUI를 통한 활동만 기록합니다)

다른 메뉴는 사실 잘 만질 일이 없고, 프로젝트 메뉴가 아마 저희가 가장 많이 사용할 메뉴가 될 겁니다. 대부분의 셀프호스트 서비스들은 도커 컴포즈를 기반으로 배포되기 때문입니다.

1. 프로젝트 생성 및 설치

컨테이너 매니저의 프로젝트 메뉴에서 [생성] 버튼을 누릅니다.

일반 설정

프로젝트 생성 창에서 SFTPgo 관련 설정을 입력한 모습

컨테이너 생성 창이 나타나면 프로젝트 이름은 sftpgo 와 같이 원하는 이름으로 설정하고(영소문자와 숫자, 언더바, 하이픈만 사용 가능), 경로는 SFTPgo의 데이터가 저장될 별도의 경로를 새로 만들어서 지정해 줍니다.

원본docker-compose.yml 만들기를 선택해 줍니다. 그러면 텍스트를 직접 입력할 수 있는 필드가 다시 나타납니다. 거기에 아래 코드를 붙여넣어 줍니다.

services:
  sftpgo:
    image: drakkan/sftpgo:latest
    container_name: sftpgo
    restart: unless-stopped
    ports:
      - "2022:2022"    # SFTP 서비스 포트
      - "8080:8080"    # 웹 관리 대시보드
      - "10080:10080"    # WebDAV 서비스 포트(해당 서비스를 사용하지 않으면 이 줄은 빼 줍니다)
    volumes:
      - ./data:/var/lib/sftpgo      # 설정 폴더
      - ./home:/srv/sftpgo       # 기본 데이터 홈 폴더
    environment:
      - SFTPGO_WEBDAVD__BINDINGS__0__ADDRESS=0.0.0.0  # WebDAV 주소
      - SFTPGO_WEBDAVD__BINDINGS__0__PORT=10080  # WebDAV 서비스 포트(마찬가지로 사용하지 않을 경우 빼 줍니다)
      # 그 외 필요한 환경 변수는 이곳에 추가로 입력

NOTE

SFTPgo는 많은 설정을 GUI 상에서 할 수 있게 개발되었지만, GUI에서 보이지 않는 수많은 설정들이 있습니다. 솔직히 말하면 일반적인 사용자가 필요한 기능을 설정하기에는 상당히 불친절하게 설계되어 있으나, 공식 문서를 잘 읽어보면 여러 힌트를 얻을 수 있습니다.
기본적으로는 Configuration의 각 설정을 JSON 형태로 저장하는데, 해당 JSON의 계층 구조를 __(언더바 2개)로 연결하여 환경 변수화합니다. 예를 들어 WebDAV의 포트를 설정하는 webdavd 섹션의 첫번째 바인딩 포트를 설정하려면 리스트 객체인 binding 중 첫번째 port 값을 설정해야 하므로 SFTPGO_WEBDAVD__BINDINGS__0__PORT라는 환경 변수의 값을 입력하는 방식입니다. 각 값들을 설정하지 않으면 가장 일반적으로 사용하는 형태로 서버가 시작되며, 이것만으로도 대부분의 사용자에게는 충분하지만, 세부 서버 설정을 튜닝하기 위해서는 각 환경 변수 값들을 설정해야 합니다. 정확한 내용 이해 없이 진행할 경우 문제가 생길 수 있으니, 관련하여 도움이 필요하신 분께서는 저희에게 지원 요청을 해 주셔도 됩니다. 프리미엄 매니지먼트 구독 고객사들의 경우 별도 비용 없이 해당 SFTPgo와 같은 서드파티 앱의 지원은 유지보수 계약에 포함되어 제공됩니다.

위 내용을 입력했다면 다음을 눌러 넘어갑니다.

웹 포털 설정

다음으로 웹 포털 설정 단계가 나타나는데, 우리는 역방향 프록시 기능을 사용해 웹서비스를 개방할 것이므로 여기서는 넘어갑니다.

요약

마지막으로 설정한 값들을 요약한 페이지를 보여줍니다. 맞게 설정했는지 다시 한 번 확인합니다.

그리고 위 설정에서 설정 폴더와 기본 데이터 홈 폴더로 ./(프로젝트 기준 폴더) 아래의 data, home 폴더를 지정했습니다. 따라서 File Station을 열어 해당 프로젝트 경로에 들어간 후 datahome이라는 이름의 폴더를 만들어 줍니다.

이 과정을 진행해서 ./data./home 폴더의 내용을 공유 폴더로 지정할 경우, 향후 앱을 재설치하거나 나스 환경을 마이그레이션하더라도 같은 폴더를 바인딩해주기만 하면 동일한 환경에서 SFTPgo를 실행할 수 있습니다.

폴더 생성을 마쳤다면 아래의 프로젝트가 생성되면 프로젝트 시작 을 체크하고 완료를 눌러 생성을 완료합니다.

여기까지 진행하면 터미널 빌드 창이 나타나고, SFTPgo의 원본 저장소에서 데이터를 가져오고 설치하는 과정을 진행합니다.

  ..
  Container sftpgo Started
Exit Code: 0

2. 초기 설정 및 관리자 생성

설치가 완료된 후, 웹 브라우저를 열어 http://[나스아이피]:8080에 접속합니다. 예를 들어 나스의 내부 아이피가 192.168.0.100이라면, http://192.168.0.100:8080 URL로 접속하면 됩니다.

SFTPgo 최초 실행 시 관리자 계정 설정 화면

접속하면 최초 관리자 계정을 설정할 수 있는 페이지가 나타납니다. 여기에서 원하는 관리자 아이디와 암호를 입력하여 진행합니다. 이 계정은 시놀로지 DSM의 계정과는 별개로 관리됩니다.

그 다음에는 Two-factor authentication using Authenticator apps 라는 단계가 나오는데, 보안을 위해 2단계 인증을 설정하라는 권장 안내입니다. default 값을 선택하고 [Enable] 버튼을 누릅니다.

그렇게 하면 QR코드가 나타나고, 표준 OTP 앱을 사용해 OTP 코드 등록을 할 수 있습니다. 혹시 OTP 등록 방법을 모르신다면 아래 내용을 참고하여 앱 설치 후 진행하시면 됩니다.

OTP 앱 설치 및 사용 가이드
lab.stdl.kr
OTP 앱 설치 및 사용 가이드
Proton Authenticator를 사용하여 OTP 사용하기

여기까지 진행하면 관리자 계정의 설정이 완료된 것입니다.

3. 웹 개방하기

SFTPgo는 외부와의 통신을 위한 것이므로 일반적으로는 웹에 개방하여 사용합니다. 이를 위해 시놀로지 DSM에서 기본 제공하는 역방향 프록시 기능을 사용하면 좋습니다.

시놀로지 DSM에서 역방향 프록시 설정하기

기준:
Synology DSM 7.3

역방향 프록시를 설정하기 위해서는 먼저 DSM에 관리자 계정으로 접속한 다음, 제어판에 접속해야 합니다.

제어판
제어판

제어판의 메뉴를 클릭하면 로그인 포털이라는 메뉴가 보입니다.

로그인 포털
로그인 포털

로그인 포털 메뉴를 클릭한 뒤, 고급 탭으로 이동합니다.

그러면 역방향 프록시라는 항목과 버튼이 보일텐데, 이것을 눌러줍니다.

역방향 프록시 창의 [생성] 버튼을 누르면 새로운 역방향 프록시 규칙을 지정할 수 있게 됩니다.

일반 탭에는 다음과 같은 항목들이 있습니다.

구분항목설명
역방향 프록시 이름관리용 식별 이름 (외부에 노출되지 않습니다)
소스프로토콜HTTP(암호화 없음), HTTPS(암호화) 프로토콜 중 선택
소스호스트 이름외부에서 접속할 도메인 주소
소스포트외부에서 접속할 포트(HTTPS 기본 포트는 443)
소스HSTS 활성화HTTPS 강제 적용(보안을 위해 활성화)
대상프로토콜서비스에서 사용중인 프로토콜
대상호스트 이름서비스를 제공하는 주소(도메인 혹은 아이피, localhost 등)
대상포트해당 서비스가 실제로 사용하는 포트 번호

NOTE

여기에서 소스 호스트 이름으로 사용하는 도메인 주소는 A Record 값이 나스의 외부 IP 주소로 향해있거나, CNAME 값을 나스에 연결된 도메인으로 연결해 두어야 합니다.
[제어판] - [보안] - [인증서] 탭에 해당 도메인을 포함하는 인증서가 존재해야 하며, 인증서 페이지의 [설정] 버튼을 눌러 해당 서비스에 연결되는 인증서가 올바르게 설정되었는지 확인해야 합니다.

일반 탭의 내용을 아래와 같이 채워넣습니다.

항목
역방향 프록시 이름SFTPgo와 같이 식별용 이름 입력
소스 프로토콜HTTPS
소스 호스트 이름SFTPgo 연결을 원하는 도메인 주소(예: sftp.nasid.synology.me)
소스 포트외부에서 접속 가능한 포트 입력.
소스 HSTS 활성화✅(안전한 연결을 위해 활성화를 권장)
대상 프로토콜HTTP
대상 호스트 이름localhost
대상 포트8080(만약 .yml 파일 입력 시 다른 포트를 지정했다면 해당 포트를 입력합니다.)

만약 사용 중 웹소켓 관련 문제가 생긴다면 향후 해당 설정 편집에서 사용자 지정 머리글 탭으로 이동하여 [생성] 버튼을 누른 뒤 [WebSocket]을 누릅니다. 그렇게 하면 자동으로 UpgradeConnection 항목이 생성될텐데, 이렇게 설정된 것을 확인하고 저장을 눌러 적용할 수 있습니다.

마지막으로 SFTP 포트를 개방해 주어야 합니다. 우리가 설정한 포트는 기본 포트인 2022번 포트입니다. 사용중인 공유기에서 이 설정을 해야하는데요, 외부에서 2022번 포트로 접속할 경우 나스 내부 아이피의 2022번 포트로 전달되도록 설정을 합니다. 이 설정은 공유기 제조사마다 방법이 다르기 때문에, 자세한 설정 방법은 공유기 제조사에 문의하시기 바랍니다.

NOTE

만약 프로젝트 생성 시 YAML의 환경 변수에서 WebDAV 포트를 활성화해 주었다면 해당 포트와 다른 외부 WebDAV용 포트를 마찬가지로 나스의 대상 포트로 연결해 주어야 합니다. 해당 외부 WebDAV용 포트는 공유기에서 포트포워딩을 통해 나스 쪽으로 개방해 줍니다.

아이피타임 공유기에서 SFTPgo를 위한 2022번 포트를 개방하는 모습

위는 ipTIME 공유기 최신 UI인 iUX 기준 설정 예시입니다. [NAT/라우터 관리] - [포트포워드 설정] 메뉴에서 위와 같이 새 포트포워드 규칙을 설정하면 됩니다.


SFTPgo 계정 생성 및 사용하기

위 가이드를 따라 설치를 마쳤다면, 이제 사용을 위해 계정을 생성해 주어야 합니다.

실제 파일 전송 서비스 사용을 위한 계정은 관리자 계정과는 별도로 생성 및 관리하게 됩니다.

방금 전 역방향 프록시 설정을 통해 설정한 관리 UI(예: https://sftp.nasid.synology.me)로 접속하고 Go to WebAdmin를 눌러 관리자 계정으로 로그인한 후 [Users] 메뉴를 선택합니다.

해당 화면에서 [+ Add] 버튼을 누르면 새 사용자 생성이 가능합니다.

Username(아이디)과 Password(암호)를 입력하고, 만약 본인이 직접 쓰지 않는 타인의 계정이라면 Require password change 항목도 활성화해 줍니다.

그 외에 설정할 수 있는 항목들이 좀 많은 편인데요, 모두 하지는 않아도 되고 일부만 해도 됩니다.

상세 계정 설정 관련 가이드 접기/펼치기

1. Profile & Status (기본 정보 및 상태)

사용자의 가장 기초적인 정보와 계정의 유효 기간, 보안 정책을 설정하는 곳입니다.

Status (상태)

  • 계정 활성화 여부입니다. 기본적으로 Active로 설정되어 있을텐데, Inactive로 변경 시 즉시 해당 아이디 사용이 불가능해집니다.

Expiration (만료일)

계정 만료일입니다. 외부 업체에 임시로 계정을 줄 때 유용합니다. 만약 특정 일자로 설정해 둔다면 해당 일자까지만 계정 사용이 가능합니다.

Password Policy (비밀번호 정책)

  • Password strength: 비밀번호 복잡도 점수(0 - 100)입니다. 50 - 70 정도를 권장하며, 0으로 두면 아무 비밀번호나 허용되므로 주의가 필요합니다.
  • Password expiration: 비밀번호 변경 주기(일 단위)입니다. (기본값: 0 - 만료 없음)

Additional info

  • Email: 알림 등을 위한 이메일 주소입니다. (선택 사항)
  • Description: 관리자가 사용자를 식별하기 위한 메모입니다. 업체명이나 담당자 이름을 적어두면 좋습니다.

2. ACLs (액세스 제어 리스트)

SFTPgo의 핵심입니다. 사용자가 어떤 파일을 올리고 지울 수 있는지, 어디서 접속할 수 있는지 결정합니다.

Permissions (권한)

가장 중요한 설정입니다. list, download, upload 등 필요한 권한만 체크하세요.

TIP

단순 파일 전달용이라면 deleteoverwrite는 빼는 것이 안전합니다.

Per-directory permissions (디렉토리별 개별 권한)

특정 하위 폴더만 읽기 전용으로 만드는 등 세밀한 제어가 필요할 때 사용합니다. (일반적인 경우 비워둡니다.)

Access Restrictions (접속 제한)

  • Access time restrictions: 특정 요일이나 시간에만 접속하게 제한합니다. (예: 평일 업무시간만 허용)
  • Max sessions: 동시 접속 수입니다. (기본값: 0 - 무제한)
  • Denied protocols: 특정 프로토콜(FTP, WebDAV 등) 접속을 막습니다. SFTP만 쓸 거라면 나머지는 모두 체크하세요.
  • Allowed/Denied IP/Mask: 특정 IP 대역에서만 접속하게 할 때 사용합니다. 보안이 중요한 기업 환경에서 필수적입니다.

CAUTION

IP 제한 설정 시 주의: 본인의 현재 IP까지 Denied에 포함하지 않도록 주의하세요. 설정 오류 시 관리 대시보드 접근 자체가 막힐 수 있습니다.


3. Disk Quota and Bandwidth (용량 및 대역폭 제한)

나스의 저장 공간을 독점하지 않도록 제한하는 설정입니다.

Quota (할당량)

  • Quota size: UI에서 MB/GB 등 단위로 설정할 수 있는데(버전에 따라 표기 차이 가능), 내부적으로는 바이트 기준으로 관리됩니다. (기본값: 0 - 제한 없음)
  • Quota files: 생성 가능한 파일 개수 제한입니다. (기본값: 0 - 제한 없음)

Bandwidth (속도 제한)

  • Bandwidth UL/DL: 업로드 및 다운로드 속도 제한(KB/s)입니다. 기가비트 회선이라도 한 사용자에게 과도한 부하가 걸리는 걸 막으려면 적절히 설정하는 것이 좋습니다.

4. Advanced Settings (고급 설정)

특수한 환경에서만 사용하는 옵션들입니다. 대부분 기본값으로 두어도 무방합니다.

Initial directory

  • 사용자가 로그인했을 때 처음 보이는 폴더입니다. /가 아닌 특정 하위 폴더로 바로 보내고 싶을 때 사용합니다.

Initial settings (Hooks / Anonymous)

  • Hooks: 외부 스크립트 연동입니다. (기본값: 모두 체크 해제)
  • Anonymous user: 익명 접속 허용 여부입니다. 보안상 권장하지 않습니다. (기본값: 체크 해제)

API key authentication

  • REST API를 통해 사용자를 대행(Impersonate)할 수 있게 합니다. 개발자가 아니라면 건드릴 필요 없습니다. (기본값: 체크 해제)

전문가의 추천 설정 요약

대부분의 SMB 환경(소규모 사무실)에서는 아래 세 가지만 챙기셔도 충분합니다.

  1. Password strength: 60 이상 설정 (보안 강화)
  2. Permissions: list, download, upload, create_dirs 위주로 부여 (삭제 권한 주의)
  3. Quota size: 나스의 남은 용량에 맞춰 적절히 배분

실무 운영 팁: 구축 시 꼭 챙겨야 할 포인트

1. 포트 충돌 주의 (SSH vs SFTPgo)

시놀로지의 시스템 SSH 포트가 이미 22번을 사용중일 것입니다. SFTPgo 설정에서 외부 포트를 그대로 22번으로 연결하면 컨테이너가 시작되지 않거나 시스템 SSH 접근이 막힐 수 있기 때문에, 위의 설명대로 2022 등 다른 포트로 설정하시기 바랍니다.

WARNING

가급적 SFTPgo의 외부 포트는 2022 또는 10022와 같은 비표준 포트로 설정하세요.

2. 데이터 영속성 확보

컨테이너를 삭제하거나 업데이트할 때 설정값이 날아가지 않도록 반드시 ./data./home 볼륨 매핑을 확인하세요. 위 YAML 설정대로라면 /docker/sftpgo 폴더 안에 모든 데이터가 안전하게 보관됩니다.

3. 클라우드 스토리지 연동 (S3)

SFTPgo의 진가는 여기서 나옵니다. Users 메뉴에서 사용자를 생성할 때, Storage 섹션에서 S3 Compatible을 선택해 보세요. AWS Access Key와 Secret Key를 입력하면, 사용자는 SFTP/WebDAV 혹은 웹 UI로 접속하지만 실제 데이터는 S3에 저장되는 하이브리드 클라우드 환경을 구축할 수 있습니다.


웹 UI나 파일 전송 클라이언트로 실제 사용하기

모든 설정을 마치고 사용자도 생성했다면 이제 원하는 방식으로 SFTPgo 사용이 가능합니다.

웹 UI를 통한 사용

우선 웹 UI를 통해 접속하여 사용해 보겠습니다.

SFTPgo 웹 UI 로그인 화면

최초로 로그인하면 위처럼 빈 디렉토리가 나타납니다. 이 디렉토리는 프로젝트 생성 시 바인딩한 경로 중 홈 폴더 내에 있고, 구체적으로는 [프로젝트 폴더]/home/data/[로그인 계정]에 위치해 있습니다.

이곳에 파일이나 폴더를 드래그하는 것으로 쉽게 업로드할 수 있고, 좌측 체크박스를 눌러 파일이나 폴더 등을 선택한 뒤 [Actions] 버튼을 누르면 다운로드, 공유, 삭제, 이동, 복사 등의 작업을 할 수 있습니다. 여러 파일이나 폴더를 선택하여 다운로드할 경우 자동으로 .zip 파일로 압축되어 다운로드됩니다.

좌측의 메뉴 중 Shares 메뉴에서는 공유된 목록을 확인하거나 새 공유를 생성할 수 있습니다. 공유 시에는 공유 이름을 설정하고 해당 공유 링크를 통해 접근했을 때의 권한 범위(읽기, 쓰기 혹은 읽기/쓰기 모두)를 설정할 수 있고, 공유를 원하는 디렉토리를 설정할 수 있습니다.

또한 암호를 설정하여 해당 암호를 아는 사용자만 업로드하도록 할 수 있고, 만료일을 설정할 경우 해당 공유 링크가 작동하는 기간을 특정할 수 있습니다.

최대 토큰 수를 설정하면 해당 공유 링크에 접근할 수 있는 횟수를 제한할 수 있는데, 토큰 제한은 공유 정책에 따라 동작합니다.

또한 보안에 굉장히 신경 쓴 부분을 확인할 수 있는데, 바로 허용 IP/마스크 설정이 가능합니다. CIDR 포맷으로 IP나 범위를 입력하면 해당 IP 주소에서만 사용이 가능하도록 하는 것 역시 가능합니다.

예를 들어 / 경로(해당 사용자의 루트 경로)를 읽기/쓰기 권한으로 공유하고 비밀번호를 걸면, 해당 비밀번호를 입력하여 접속한 사용자는 루트 폴더에 원하는대로 파일이나 폴더를 업로드하고, 또 다운로드도 가능합니다. 단 기존의 파일 이동이나 삭제는 불가합니다.

파일 전송 클라이언트를 통한 사용

파일 전송 클라이언트에서 사용 시에는 FileZilla와 같은 FTP 클라이언트를 사용할 수 있습니다. 대부분의 현대 FTP 클라이언트는 SFTP 접속 역시 지원하기 때문에 접속 유형을 SFTP로, 호스트 주소를 나스로 향하는 도메인 주소로 입력한 후 본인의 아이디, 암호로 로그인할 수 있습니다.

NOTE

SFTPgo는 키 기반 인증을 사용하기 때문에 최초로 연결 시에는 알 수 없는 호스트 키가 감지되었다면서 확인을 요구할 수 있습니다.
그냥 확인을 누르셔도 되지만, 더 안전하게 진행을 원하신다면 설정 페이지의 서버 상태에서 정확한 키를 확인할 수 있으므로 해당 키와 대조하여 접속하셔도 됩니다.

SFTPgo에 연결한 파일질라 클라이언트 화면

SFTP 뿐만 아니라 WebDAV 등 활성화한 프로토콜을 통해서 연결이 가능하며, 여기에서 원하는 파일을 본인의 권한에 맞게 확인하고 업로드, 다운로드하거나 삭제, 이동하는 등의 작업을 할 수 있습니다.


사용 사례를 살펴보겠습니다.

웹 드라마 제작 업체 A사는 여러 촬영팀으로부터 촬영 소스를 넘겨받아야 하는데, 하나의 공유 폴더를 공유할 경우 각 촬영팀이 서로의 파일을 확인하고 내려받을 수 있는 문제가 생깁니다.
이를 해결하기 위해 SFTPgo의 웹 UI에서 공유 링크를 생성한 후 권한을 쓰기로 제한하고 여러 팀에게 공유했고, 해당 링크는 촬영 기간 만료일에 함께 만료되도록 하여 추가적인 유출로 인한 위험을 막을 수 있습니다.

솔루션 업체 B사는 각 영업 사원의 통화나 녹음 내용을 앱을 통해 실시간으로 WebDAV 프로토콜으로 서버에 업로드받아 정리합니다. 스마트폰 기종 별로 녹음 파일명의 이름 구조가 다르기 때문에, 기존에는 Python 기반 앱을 만들어 1분마다 업로드 폴더를 순회하며 패턴이 일치하는 파일을 찾아 적절한 폴더에 옮기도록 구현해 두었습니다.
SFTPgo를 구축하여 동일하게 WebDAV를 통해 업로드받은 뒤 이벤트 트리거를 통해 해당 파일의 이름을 자동으로 변경하고 적절한 폴더로 이동되도록 설정하여 최소한의 리소스를 사용해 최적화를 할 수 있습니다.

각 사용처 별로 굉장히 다양한 사용 사례가 있을 수 있습니다만, 아무래도 서버 설정이나 이벤트 설정을 워낙 입맛대로 만들 수 있으니 원하는 대부분의 작업을 안전하게 만들거나 자동화할 수 있는 것이 장점입니다.

보안 및 유지보수

SFTPgo의 구축이 완료되었다면 아래 체크리스트를 확인하세요.

  • Brute Force 방어: SFTPgo 설정 내 Defender 옵션을 활성화하여 반복적인 로그인 실패 IP를 자동으로 차단하세요.
  • SSL 적용: 관리 대시보드와 WebDAV 등의 기능을 안전하게 사용하려면 앞서 적용한 역방향 프록시로 연결한 도메인에 TLS 암호화가 제대로 적용되어 있는지 다시 한 번 확인해 보는 것이 좋습니다.

더불어 SFTPgo는 현재 다국어 지원을 목표로 여러 사용자들에게 자원을 받고있습니다만, 향후 프로젝트 진행에 따라 해당 번역이 적용될 수도 있고, 그렇지 않을 수도 있습니다. 복잡도에 따라 다르게 가려고 하는 것으로 보입니다.

기술적인 용어들이 많은 만큼 개발자 측에서는 해당 번역문이 의도를 왜곡하거나 잘못 전달할 가능성이 있다는 점으로 인해 조심스러운 것으로 보입니다. 다만 시간이 지나면 한국어로도 지원이 될 가능성은 충분히 있으니 기다리면 좋은 소식이 있지 않을까 싶네요.


마무리하며

SFTPgo는 시놀로지 나스를 단순한 저장소를 넘어 전문적인 파일 전송 게이트웨이로 바꿔줍니다. 설정이 다소 복잡해 보일 수 있지만, 한 번 구축해 두면 운영 편의성과 보안성 측면에서 비교할 수 없는 이점을 제공합니다.

특히 대부분의 작업을 REST API로 할 수 있는 만큼, 이를 통한 확장성이 굉장히 많습니다.

기업용 대용량 스토리지 구축이나 외부 협업을 위한 전용 파일 서버 환경 설정에 어려움을 겪고 계신다면, 스튜디오 엘의 전문가들이 도와드리겠습니다.


관련 링크

github.com
SFTPgo 공식 GitHub 저장소
SFTPgo의 상세 기능과 최신 업데이트 소식을 확인할 수 있습니다.