스토리지 및 미디어 전송
로컬 스토리지, 외부 스토리지 서버(S3, FTP, WebDAV) 및 보안 미디어 프록시를 다룹니다.
TubePress는 업로드된 모든 동영상, 트랜스코딩된 렌디션 및 미리보기 에셋을 디스크에 저장하며, 이를 하나 이상의 외부 스토리지 서버로 투명하게 오프로드할 수 있습니다. 이 페이지에서는 파일이 저장되는 위치, 미디어 스토리지 시스템이 파일을 백엔드 전반에 분산하는 방법, 그리고 미디어가 원본 파일을 노출하지 않고 시청자에게 전달되는 방법을 설명합니다.
스토리지는 /admin/settings?tab=storage에서 구성합니다. 로컬 디스크만으로 운영하거나, FTP, S3 호환 및 WebDAV 백엔드를 추가하여 TubePress가 순서대로 채우도록 할 수 있습니다.
TubePress의 미디어 저장 방식
업로드된 파일은 public/uploads/ 아래에 저장됩니다. 모든 동영상은 자체 폴더를 가지며 — 동영상의 video_folder — 이 폴더에는 원본 소스와 트랜스코더가 생성한 각 렌디션, 그리고 플레이어에 필요한 소형 에셋이 함께 저장됩니다:
public/uploads/
videos/
a1b2c3d4.../ one folder per video (video_folder)
video.mp4 original upload (source)
video_1080p.mp4 processed source rendition
video_720p.mp4 transcoded rendition
video_480p.mp4 transcoded rendition
timeline.vtt scrub-preview sprite map
preview.mp4 hover-preview clip
thumbnails/ poster images
watermark/ watermark PNG
intros/ pre-roll / post-roll clips
branding/ logo, favicon, background트랜스코더는 가장 높은 해상도의 video_<height>p.mp4 파일을 스캔하여 소스를 찾고, 없으면 원본 video.mp4, .webm 또는 .ogg 파일로 폴백합니다. 하위 렌디션도 동일한 폴더에 저장되므로, 하나의 디렉터리에 동영상에 필요한 모든 것이 담깁니다. 렌디션 생성 방법은 트랜스코딩을 참조하십시오.
videos/ 디렉터리에는 아직 업로드 중이거나 트랜스코딩 중인 항목만 존재합니다.외부 스토리지 서버
미디어 스토리지 시스템을 사용하면 백엔드를 원하는 만큼 등록할 수 있습니다. 새 동영상은 항상 기본 스토리지로 저장되며, 스토리지가 디스크 임계값을 초과하면 TubePress가 자동으로 새 업로드를 다음 사용 가능한 스토리지로 전환합니다. 각 동영상이 자체 storage_id를 기록하므로 기존 동영상은 저장된 위치에서 계속 제공됩니다.
지원되는 백엔드 유형은 네 가지입니다 — 이 외에는 없습니다:
| 유형 | 용도 | 연결 필드 |
|---|---|---|
| Local | 단일 서버 또는 시작 단계 | 없음 — public/uploads에서 제공 |
| FTP | 저렴한 스토리지 VPS 또는 시드박스 | 호스트, 포트(21), 사용자, 비밀번호, 원격 경로, SSL/TLS, 패시브 |
| S3 | AWS S3, DigitalOcean Spaces, Backblaze, MinIO | 액세스 키, 시크릿, 버킷, 리전, 엔드포인트, 접두사 |
| WebDAV | Nextcloud 및 기타 WebDAV 호스트 | WebDAV URL, 사용자, 비밀번호 |
모든 원격 스토리지에는 몇 가지 운영 설정도 있습니다:
스토리지 백엔드 추가
- 스토리지 편집기를 엽니다.
/admin/settings?tab=storage로 이동하여 스토리지 추가를 클릭합니다. - 유형을 선택하고 이름을 지정합니다. Local, FTP, S3 또는 WebDAV를 선택합니다. 양식이 해당 유형에 필요한 필드만 표시하도록 전환됩니다.
- 미디어 URL과 자격 증명을 입력합니다. 공개 미디어 URL을 설정한 다음 백엔드의 호스트/키/경로를 입력합니다. 편집 시 저장된 비밀번호를 유지하려면 비밀번호 필드를 비워 두십시오.
- 운영 옵션을 설정합니다. 상태, 최대 디스크 사용량 임계값, URL 서명 여부를 선택합니다.
- 테스트 후 저장합니다. 저장 시 먼저 연결 테스트(모니터 스크립트를 제공한 경우 해당 스크립트 확인도 포함)가 실행됩니다. 실패한 확인 사항을 수정한 후 저장합니다. 선택적으로 기본값으로 설정하면 새 업로드가 해당 스토리지로 저장됩니다.
https://cdn.example.com). FTP/S3 엔드포인트가 아닙니다 — 이 둘을 혼동하는 것이 스위치 후 재생 오류의 가장 흔한 원인입니다.스토리지 모니터
원격 백엔드의 경우, TubePress는 스토리지 서버에 설치하는 소형 PHP 스크립트를 사용하여 디스크 공간과 상태를 추적할 수 있습니다. 스토리지 편집기의 디스크 모니터링 패널에서 모니터 스크립트 다운로드(/api/storage-monitor-download에서 제공)를 클릭하고, 원격 서버에 업로드한 후 공개 URL을 모니터 스크립트 URL 필드에 붙여넣으십시오.
연결되면 편집기에서 실시간 디스크 사용량과 마지막 확인 시간이 표시되며, 자동 전환 임계값은 해당 수치를 사용하여 백엔드가 가득 찼을 때를 파악합니다. 스크립트는 키가 설정되어 있어 귀하의 CMS만 쿼리할 수 있습니다.
보안 미디어 전송
스토리지에 대해 보안 URL이 켜진 경우, TubePress는 직접 파일 경로를 제공하지 않습니다. 대신 /media/를 통해 라우팅되는 짧은 시간 제한 링크에 서명합니다:
/media/{token}/{expires}/{path}403을 반환합니다. 기본 유효 기간은 6시간입니다.uploads/videos/… 아래의 파일입니다.토큰은 모든 요청 시 서버 측에서 재계산되어 확인됩니다. 로컬 스토리지의 경우 TubePress는 HTTP 범위 지원을 사용하여 파일 자체를 스트리밍합니다(탐색 기능 작동). 원격 스토리지의 경우 토큰을 확인한 후 CDN의 파일로 302 리디렉션을 발행합니다. 원본 동영상은 또한 웹 서버 레이어에서 속도 제한이 적용됩니다: 스토리지 편집기는 처음 몇 메가바이트 이후 스트리밍을 제한하는 즉시 붙여넣기 가능한 Nginx 스니펫을 생성하면서, 트랜스코드 워커는 키를 사용하여 최대 속도로 가져올 수 있습니다.
CDN & Cloudflare
TubePress는 Cloudflare 뒤에서 원활하게 작동하도록 설계되었습니다. 두 가지 사항이 중요합니다:
- 청크 업로드가 100 MB 제한을 우회합니다. 트랜스코드 결과는
/api/transcode-upload-chunk를 통해 조각으로 CMS로 다시 스트리밍되므로, 렌디션 크기에 관계없이 개별 요청은 Cloudflare 무료 티어의 100 MB 한도 이내에 유지됩니다. - 장기 캐시, 캐시 버스팅 에셋. 정적 에셋은 길고 불변하는 캐시 헤더와 함께 제공되며 각 릴리스의 버전 쿼리로 버스팅됩니다. 따라서 프록시는 오래된 파일을 제공하지 않고 적극적으로 캐시할 수 있습니다.
스토리지별 Nginx 스니펫은 동영상에 적절한 expires 헤더를 추가하고 보안 로컬 전송에 사용되는 선택적 /media/ 내부 위치를 추가하므로, 사이트 구성에 바로 삽입할 수 있습니다.