리눅스에서 PicoShare로 대용량 파일을 호스팅하고 공유하는 방법

노트북 앞에 서 있는 사람의 사진, 손에 전화기를 들고 있습니다.

Picoshare는 리눅스를 위한 경량의 접근성이 높은 파일 공유 웹 앱입니다. 사용자가 자신의 서버에서 파일을 업로드하고 공유할 수 있는 사용하기 쉬운 인터페이스를 제공합니다. 이 문서에서는 Ubuntu 리눅스에서 Docker를 사용하여 Picoshare를 설치하고 파일을 온라인으로 공유하는 방법을 보여줍니다.

목차

  • Picoshare를 사용하여 온라인으로 파일을 공유하는 이유
  • PicoShare의 필수 구성 요소 설치
  • PicoShare 설치 및 실행
  • SSL 리버스 프록시로 PicoShare 보안
  • PicoShare 테스트 및 첫 번째 파일 업로드

Picoshare를 사용하여 온라인으로 파일을 공유하는 이유

PicoShare의 가장 큰 장점 중 하나는 모든 리눅스 기반 플랫폼에서 쉽게 배포할 수 있다는 것입니다. Docker의 도움으로, 리눅스 종속성과 프로그램 호환성에 대한 걱정 없이 PicoShare로 온라인에서 파일을 공유할 수 있습니다.

PicoShare의 또 다른 장점은 플랫폼에 업로드한 파일을 조작하지 않는다는 것입니다. 이는 사진과 비디오를 공유하는 데 유용하며, 서버가 업로드할 때 미디어를 다시 인코딩하지 않을 것이라는 확신을 줄 수 있습니다.

서버에서 작동 중인 PicoShare의 스크린샷.

마지막으로, PicoShare는 외부 객체 저장 솔루션에 파일 저장소를 복제할 수 있는 기능을 제공합니다. 예를 들어, Amazon S3 호환 버킷을 PicoShare 서버에 연결하고 서버 콘텐츠의 1:1 백업을 생성할 수 있습니다. 이를 통해 한 시스템에서 다른 시스템으로 마이그레이션할 때 데이터를 쉽게 복원할 수 있습니다.

PicoShare의 필수 구성 요소 설치

가정: 이 튜토리얼은 최소 2GB의 RAM과 50GB의 디스크 공간을 가진 Ubuntu 24.04 머신에서 수행됩니다. “A” 레코드를 생성할 수 있는 도메인 이름이 필요합니다. 마지막으로, 이 문서에서는 S3 호환 객체 저장 백엔드로 DigitalOcean Spaces를 사용할 것입니다.

참고: 여기의 지침은 Ubuntu에 대한 것이지만 대부분의 리눅스 배포판에서도 작동해야 합니다.

PicoShare를 설치하는 첫 번째 단계는 호스트 시스템에 Docker와 Nginx를 모두 설치하는 것입니다(다른 리눅스 배포판에 대한 Docker 설치 방법은 여기를 참조하세요). 시작하려면 Docker 프로젝트의 저장소에 대한 서명 키를 가져옵니다:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg |sudo gpg --dearmor-o/etc/apt/keyrings/docker.gpg  
sudochmod a+r /etc/apt/keyrings/docker.gpg

좋아하는 텍스트 편집기를 사용하여 새로운 apt 저장소 파일을 만듭니다:

sudonano/etc/apt/sources.list.d/docker.list

새로운 저장소 파일 안에 다음 코드 줄을 붙여넣습니다:

deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu noble stable

저장소 파일을 저장한 후 시스템의 저장소 목록과 현재 패키지를 업데이트합니다:

sudo apt update &&sudo apt upgrade

Ubuntu에서 apt를 사용하여 Docker, Docker Compose 및 Nginx를 설치합니다:

sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin docker-buildx-plugin nginx

PicoShare를 위한 클라우드 저장소 백업 생성

S3 호환 클라우드 저장소 제공업체로 이동한 다음 새로운 저장소 버킷을 생성합니다. 이 경우, 저는 DigitalOcean Spaces를 사용하고 있으므로 대시보드 화면에서 Create -> Spaces Object Storage를 클릭합니다.

DigitalOcean 대시보드에서

S3 호환 저장소를 위한 데이터 센터 위치를 선택한 후 Enable CDN 체크박스를 선택합니다.

버킷이 DigitalOcean의 CDN을 사용할지 여부를 구성하는 버튼을 보여주는 스크린샷.

새로운 Spaces 버킷의 이름을 제공한 후 Create a Spaces Bucket을 클릭하여 초기화합니다.

Spaces 이름을 위한 텍스트 박스 프롬프트와

Origin Endpoint 텍스트 박스에서 Copy Icon을 클릭하고 별도의 텍스트 파일에 붙여넣습니다.

Spaces 대시보드에서 복사 아이콘의 위치를 강조하는 스크린샷.

DigitalOcean 대시보드의 왼쪽 사이드바를 스크롤한 후 API 카테고리를 클릭합니다.

Spaces Keys 탭을 클릭한 후 Generate New Key를 선택합니다.

새로운 키의 이름을 제공한 후 Create Access Key를 클릭합니다.

페이지에서 “Access Key”와 “Secret Key”를 복사하여 텍스트 파일에 붙여넣습니다.

Spaces 버킷의 Access Key와 Secret Key의 위치를 보여주는 스크린샷.

PicoShare 설치 및 실행

사용자의 홈 디렉토리 내에 PicoShare를 위한 새로운 폴더를 생성한 후 그 안으로 들어갑니다:

mkdir ~/picoshare &&cd ~/picoshare

좋아하는 텍스트 편집기를 사용하여 PicoShare를 위한 Compose 파일을 생성합니다:

nano ./docker-compose.yml

새로운 .yml 파일 안에 다음 코드 블록을 붙여넣습니다:

version: "3.2"  
services:  
  picoshare:  
    image: mtlynch/picoshare  
    environment:  
      - PORT=4001  
      - PS_SHARED_SECRET=RANDOM PASSWORD HERE  
      - LITESTREAM_BUCKET="YOUR BUCKET NAME"  
      - LITESTREAM_ENDPOINT="YOUR ORIGIN ENDPOINT HERE"  
      - LITESTREAM_ACCESS_KEY_ID="YOUR BUCKET ACCESS ID HERE"  
      - LITESTREAM_SECRET_ACCESS_KEY="YOUR BUCKET SECRET HERE"  
    ports:  
      - 4001:4001  
    command: -db /data/store.db  
    volumes:  
      - ./data:/data

“PS_SHARED_SECRET” 변수의 값을 충분히 길고 무작위의 비밀번호로 교체합니다. 이는 PicoShare의 웹 인터페이스 비밀번호로 사용됩니다.

PicoShare 인스턴스의 무작위로 생성된 공유 비밀번호를 보여주는 터미널.

참고: 별도의 터미널 세션에서 cat /dev/urandom | tr -dc 'A-Za-z0-9' | fold -w 32 | head -n 1을 실행하여 무작위 비밀번호를 생성할 수 있습니다.

“LITESTREAM_BUCKET” 변수의 값을 Spaces 버킷의 이름으로 변경합니다.

S3 호환 버킷에 대한 적절한 값을 보여주는 터미널.

엔드포인트의 지역 및 도메인 이름 부분을 복사한 후 “LITESTREAM_ENDPOINT” 변수의 값으로 붙여넣습니다.

S3 호환 엔드포인트 변수의 올바른 형식을 보여주는 스크린샷.

“LITESTREAM_ACCESS_KEY_ID”와 “LITESTREAM_SECRET_ACCESS_KEY_ID” 변수의 값을 DigitalOcean Spaces 버킷의 Access Key와 Secret Key로 교체합니다.

PicoShare 인스턴스의 Spaces Access Key와 Secret Key를 보여주는 스크린샷.

docker-compose.yml 파일을 저장한 후 다음 명령어를 실행하여 PicoShare 인스턴스를 빌드하고 실행합니다:

sudodocker compose up -d

참고: Docker와 Docker Compose를 사용하여 리눅스 머신에서 Minecraft 서버를 빠르게 호스팅할 수도 있습니다.

SSL 리버스 프록시로 PicoShare 보안

이 시점에서 PicoShare가 로컬 머신의 포트 4001에서 실행되고 있습니다. 인터넷에서 안전하게 액세스하려면 모든 연결이 SSL을 통해 암호화되어야 합니다.

먼저 도메인 이름에 대한 새로운 “A” 레코드를 생성하여 PicoShare 서버의 IPv4 주소를 가리키도록 합니다. 제 경우에는 “picoshare”라는 “A” 레코드를 생성할 것입니다.

Ubuntu 시스템에 “core” 스냅 패키지를 설치합니다:

sudo snap install core

Electronic Frontier Foundation(EFF)에서 certbot 스냅 패키지를 가져옵니다:

sudo snap install certbot --classic

좋아하는 텍스트 편집기를 사용하여 새로운 Nginx 사이트 구성 파일을 생성합니다:

sudonano/etc/nginx/sites-available/picoshare

사이트 구성 파일 안에 다음 코드 블록을 붙여넣습니다:

server{  

server_name SUBDOMAIN.YOUR-ROOT.DOMAIN;  

location / {  
proxy_passhttp://127.0.0.1:4001;  
proxy_http_version 1.1;  
proxy_redirect off;  
proxy_set_header Upgrade $http_upgrade;  
proxy_set_header Connection "upgrade";  
proxy_set_header X-Forwarded-Proto https;  
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  
proxy_set_header Host $host;  
client_max_body_size 0m;  
}  
}

사이트 구성 파일을 저장한 후 “/etc/nginx/sites-available/” 디렉토리에서 “/etc/nginx/sites-enabled/” 폴더로 심볼릭 링크를 생성합니다:

sudoln-s/etc/nginx/sites-available/picoshare /etc/nginx/sites-enabled/

Nginx 구성 파일에 오류가 없는지 다시 확인한 후 systemctl을 사용하여 Nginx 웹 서버 데몬을 시작합니다:

ginx -t  
sudo systemctl enable--now nginx.service

Nginx 구성 검증 및 Nginx 웹 서버 시작을 위한 systemctl 명령을 보여주는 터미널.

EFF의 certbot 유틸리티를 사용하여 PicoShare 서버를 등록합니다:

sudo certbot register --agree-tos-m [email protected]

서버의 도메인 이름을 가리키는 새로운 SSL 인증서를 생성합니다:

sudo certbot --nginx-d SUBDOMAIN.YOUR-ROOT.DOMAIN

알아두면 좋은 점: OpenSSL로 자신의 SSL 인증서를 생성하여 HTTPS가 온라인에서 데이터를 보호하는 방법을 알아보세요.

PicoShare 테스트 및 첫 번째 파일 업로드

웹 브라우저를 열고 서브도메인으로 이동하여 PicoShare 랜딩 페이지를 로드합니다.

VPS에서 실행 중인 PicoShare의 랜딩 페이지를 보여주는 스크린샷.

페이지의 오른쪽 상단 모서리에 있는 Log In 버튼을 클릭합니다.

Passphrase 텍스트 박스에 “PS_SHARED_SECRET”의 값을 제공한 후 Authenticate를 클릭하여 로그인합니다.

PicoShare의 로그인 프롬프트를 보여주는 스크린샷.

Upload 버튼을 클릭하여 PicoShare 서버에 데이터를 저장할 수 있는지 확인한 후, 선택 메뉴를 통해 샘플 파일을 선택합니다.

내부 대시보드에서 Upload 버튼의 위치를 강조하는 스크린샷.

서버가 사용자에게 반환하는 첫 번째 링크를 복사하여 파일을 공유할 사람에게 보냅니다.

PicoShare 인스턴스에서 첫 번째 공유 가능한 링크의 위치를 강조하는 스크린샷.

PicoShare에서 임시 게스트 업로드 활성화

사용자 제출 업로드 외에도 익명 사용자가 서버에 단일 파일을 업로드할 수 있는 임시 링크를 생성할 수 있습니다. 이는 누군가가 파일을 공유해야 하지만 일반 클라우드 서비스에 파일을 업로드할 수 없는 경우 유용할 수 있습니다.

PicoShare의 홈페이지에서 Guest Links 카테고리를 클릭하여 시작합니다.

PicoShare 대시보드에서

빈 링크 개요 테이블 바로 위에 있는 Create New 버튼을 클릭합니다.

게스트 업로드 링크에 대한 기본 세부정보를 제공합니다. 제 경우에는 “MakeTechEasier”로 레이블을 지정하고 만료를 Never로 설정하며 파일 크기 제한을 100MB, 전체 제한을 10개 업로드로 설정합니다.

완료된 Guest Link 양식을 보여주는 스크린샷.

Create를 클릭하여 PicoShare 인스턴스를 위한 임시 게스트 링크를 생성합니다.

오른쪽에 있는 Copy Icon을 클릭한 후 클립보드의 내용을 의도한 수신자에게 보냅니다.

Guest Links 화면에서 Copy Icon의 위치를 보여주는 스크린샷.

리눅스를 사용하여 온라인으로 파일을 공유하기 위해 PicoShare를 배포하고 보안하는 것은 디지털 프라이버시를 회복하는 첫 번째 단계일 뿐입니다. SimpleLogin을 사용하여 자신의 이메일 별칭 서버를 호스팅하여 자신을 더 보호하는 방법을 알아보세요.

이미지 출처: Alejandro Escamilla via Unsplash 및 PicoShare Github. 모든 수정 및 스크린샷은 Ramces Red에 의해 작성되었습니다.