클립을 위한 자체 호스팅 가능한 TikTok 피드
자신의 동영상으로 TikTok 피드 만들기
Erin은 TikTok의 잘 알려진 수직 스와이프 피드를 사용하여 자신의 클립을 볼 수 있는 간단하고 자체 호스팅 가능한 서비스입니다. TikTok의 인터페이스를 사용하여 필터링된 비디오를 표시할 수 있는 자체 호스팅 가능 앱에 대한 요청이 Reddit에 있어서 만들어졌습니다.
Erin은 다음과 같은 모든 기능을 구현했습니다.
게다가 Erin은 전적으로 Caddy가 제공하는 React 앱일 뿐이라는 점에 유의하세요. Caddy는 인증, 정적 파일 제공, React 앱 제공을 모두 한 번에 처리합니다.
*: 비디오를 마스크하여 피드에서 숨길 수 있습니다. 마스크된 동영상을 확인하고 마스크를 해제하려면
Mask
버튼을 길게 누르면 관리자가 열립니다.
**: 기본적으로 Erin은 폴더와 하위 디렉터리에 있는 모든 비디오에서 무작위 피드를 생성합니다. 하지만 맞춤 피드(재생목록)를 만들고 싶다면 하위 디렉터리를 만들고 이에 따라 동영상을 구성할 수 있습니다. 예:
https://my-server.tld/directory-a
/directory-a
디렉터리에 있는 비디오에서 피드를 생성하고 모든 경로에서 작동합니다(따라서 중첩 폴더가 지원됨).
***: 메타데이터 파일을 사용하여 모든 동영상에 대한 채널(아바타 및 이름 포함), 캡션 및 링크를 표시할 수 있습니다. 메타데이터 파일은 비디오 폴더 내의 어느 위치에나 위치할 수 있으며 확장자를 JSON으로 바꾸는 동시에 관련 비디오의 파일 이름과 일치해야 합니다. 예:
my-video.mp4
my-video.json
에 메타데이터를 가질 수 있습니다. 메타데이터 형식이 여기에 표시되며 사용자 정의 스타일 및 효과를 위해 캡션에 원시 HTML을 사용할 수 있습니다.
자세한 내용은 구성을 읽어보세요.
계속하기 전에 Docker, Docker Compose 또는 독립 실행형 배포에 관계없이 모든 비디오 파일이 포함된 videos
디렉터리를 생성했는지 확인하세요. 나중에 이 디렉터리는 Erin 인스턴스에서 사용할 수 있게 됩니다(Docker 컨테이너에 볼륨을 바인딩하거나 Caddyfile 옆에 디렉터리를 배치하여).
명령줄에서 Docker를 사용하여 Erin을 매우 빠르게 실행할 수 있습니다.
다음 명령을 사용할 수 있습니다.
# Create a .env file
touch .env
# Edit .env file ...
# Option 1 : Run Erin attached to the terminal (useful for debugging)
docker run --env-file .env -p < YOUR-PORT-MAPPING > -v ./videos:/srv/videos:ro mosswill/erin
# Option 2 : Run Erin as a daemon
docker run -d --env-file .env -p < YOUR-PORT-MAPPING > -v ./videos:/srv/videos:ro mosswill/erin
참고: 시작하는 데 도움이 되는
sample.env
파일은 저장소 루트에 있습니다.
참고:
docker run --env-file
사용할 때AUTH_ENABLED
및AUTH_SECRET
주위의 따옴표를 제거해야 합니다. 그렇지 않으면 Docker가 뒤에서 작동하는 예기치 않은 보간 및 유형 변환으로 인해 컨테이너가 충돌할 수 있습니다.
빠르게 시작하는 데 도움이 되도록 몇 가지 예제 docker-compose
파일이 "examples/" 디렉터리에 있습니다.
모든 예에 대한 설명은 다음과 같습니다.
docker-compose.simple.yml
: docker-compose
파일에 직접 제공된 환경 변수를 사용하여 Erin을 포트 443에서 전면 서비스로 실행합니다.
docker-compose.proxy.yml
: 포트 443에서 수신 대기하는 프록시 뒤에서 포트 80에서 실행되는 Erin을 사용한 설정입니다.
docker-compose
파일이 준비되면 다음 명령을 사용할 수 있습니다.
# Run Erin in the current terminal (useful for debugging)
docker-compose up
# Run Erin in a detached terminal (most common)
docker-compose up -d
# Show the logs written by Erin (useful for debugging)
docker logs < NAME-OF-YOUR-CONTAINER >
Erin을 실행하려면 .env
파일에 다음 환경 변수를 설정해야 합니다.
참고: 명령줄에서 제공되는 일반 환경 변수도 작동합니다.
참고: 시작하는 데 도움이 되는
sample.env
파일은 저장소 루트에 있습니다.
매개변수 | 유형 | 설명 | 기본 |
---|---|---|---|
PUBLIC_URL | boolean | Erin 인스턴스에 원격으로 액세스하는 데 사용되는 공개 URL입니다. (표준 80 또는 443이 아닌 경우 HTTP/HTTPS 및 포트를 포함하십시오. 후행 슬래시를 포함하지 마십시오) (공식 Caddy 문서 읽기) | https://localhost |
AUTH_ENABLED | string | 기본 인증을 활성화해야 하는지 여부입니다. (이 매개변수는 대소문자를 구분합니다.) (가능한 값: true, false) | 진실 |
AUTH_SECRET | string | Erin 인스턴스를 보호하는 데 사용되는 비밀번호의 보안 해시입니다. | secure-password 해시 |
APP_TITLE | string | 브라우저 탭에 표시하려는 사용자 정의 제목입니다. (팁: Erin이 현재 동영상의 제목을 동적으로 표시하도록 하려면 여기에서 [VIDEO_TITLE] 사용할 수 있습니다.) | Erin - 나만의 클립을 위한 TikTok 피드 |
AUTOPLAY_ENABLED | boolean | 자동재생을 활성화해야 하는지 여부입니다. (이 매개변수는 대소문자를 구분합니다.) (가능한 값: true, false) | 거짓 |
PROGRESS_BAR_POSITION | string | 진행률 표시줄이 화면에서 위치해야 하는 위치입니다. (이 매개변수는 대소문자를 구분합니다.) (가능한 값: 하단, 상단) | 맨 아래 |
팁: 인스턴스에 대한 보안 해시를 생성하려면 다음 명령을 사용하십시오.
docker run caddy caddy hash-password --plaintext " your-new-password "
참고:
docker-compose.yml
환경 변수를 사용할 때 비밀번호 해시에 달러 기호가 포함되어 있으면 모두 두 배로 늘리세요. 그렇지 않으면 앱이 충돌합니다. 예를 들어$ab$cd$efxyz
$$ab$$cd$$efxyz
가 됩니다. 이는docker-compose
문자열 보간 시스템의 주의 사항 때문입니다.
Erin을 실행하는 데 문제가 발생하면 발생할 수 있는 다음과 같은 일반적인 문제를 참조하세요.
이들 중 귀하의 사례와 일치하는 것이 없으면 언제든지 문제를 열어주세요.
Erin은 Caddy 웹 서버 위에 앉아 있습니다.
결과적으로 :
그 외에 다음 요구사항이 충족되는지 확인하세요.
Erin이 프록시 없이 독립형 애플리케이션으로 실행되는 경우:
https://erin.your-server-tld
의 경우 A erin XXX.XXX.XXX.XXX
).env
파일이 제대로 구성되어 있는지 확인하세요.Erin이 Docker 내부/프록시 뒤에서 실행되는 경우:
PUBLIC_URL
.env
에 제대로 설정되어 있는지 확인하세요.어쨌든 중요한 부분은 구성과 공식 Caddy 문서를 읽는 것입니다.
Erin이 비디오 파일을 제공하려면 다음 요구 사항을 준수해야 합니다.
.mp4
, .ogg
, .webm
중 하나입니다. (웹브라우저에서 지원하는 확장기능만 있습니다.)/srv/videos
에 있습니다.비디오가 Docker 컨테이너 내부의 올바른 위치에 있는지 확인하려면 다음을 수행하세요.
docker exec -it <NAME-OF-YOUR-CONTAINER> sh
실행ls /srv/videos
모든 것이 잘 구성되었음에도 불구하고 Erin이 여전히 동영상을 찾을 수 없는 경우 요청이 /media/
로 이동할 때 브라우저의 Javascript 콘솔 및 네트워크 탭의 출력을 포함한 문제를 열어주세요. 브라우저 캐싱, 잘못된 구성 또는 잘못된 자격 증명과 관련이 있을 수 있습니다.
지금은 Docker로 마운트된 비디오 디렉터리에 새 비디오 파일을 넣어야 합니다. Erin은 이러한 새 파일을 자동으로 선택하고 브라우저를 새로 고치면 해당 파일을 볼 수 있습니다.
Erin은 파일 이름을 제목으로 자동 변환하여 인터페이스에 표시합니다.
변환 작업은 다음과 같습니다.
-
된다
__
-
됩니다다음은 파일 이름을 지정하는 데 도움이 되는 몇 가지 예입니다.
Vegas-trip__Clip-1.mp4
는 Vegas trip - Clip 1
Spanish-language__Lesson-1.mp4
Spanish language - Lesson 1
Spiderman-1.ogg
Spiderman 1
됩니다. Erin은 브라우저를 새로 고칠 때마다 비디오 파일을 무작위로 섞습니다.
따라서 동영상이 표시되는 특별한 순서는 없습니다.
현재 Erin은 지원되는 확장자가 있는 비디오만 검색하려고 시도합니다.
지원되는 확장자는 .webm
, .mp4
및 .ogg
입니다.
그러나 Safari는 .ogg
지원하지 않는 것 같으므로 이러한 비디오는 Safari 사용자에게 무시됩니다.
더 많은 확장 기능(특히 Safari 사용자의 경우)을 지원하기 위한 조언이나 아이디어가 있으면 언제든지 이슈를 열어주세요.
Caddy가 생성한 비밀번호 해시와 함께 Docker/Docker Compose를 사용할 때 몇 가지 주의 사항이 있는 것 같습니다.
따라야 할 규칙은 다음과 같습니다.
docker run ... --env-file .env ...
명령을 통해 Docker CLI를 사용하여 Erin을 배포한 경우 AUTH_SECRET
따옴표가 전혀 없어야 하며 모든 달러 기호는 이스케이프 없이 그대로 유지되어야 합니다. 또는 두 배로docker-compose.yml
파일을 통해 Docker Compose를 사용하여 Erin을 배포한 경우 AUTH_SECRET
의 달러 기호가 두 배가 되어야 합니다. 예: i$am$groot
는 i$$am$$groot
가 됩니다.즉, 다음 명령을 사용하여 비밀번호 해시를 생성해야 한다는 점을 기억하세요.
docker run caddy caddy hash-password --plaintext " your-new-password "
자유롭게 문제를 열고, 무슨 일이 일어나는지 설명하고, 환경을 설명해주세요.
이봐 이봐! 감사 인사를 전하고 앞으로 나아갈 수 있도록 도와준 사람들과 프로젝트를 언급하는 것은 항상 좋은 생각입니다.
이 프로젝트를 지원하는 개인/팀에게 큰 감사를 드립니다.
그리고 마음에 들거나 어떤 식으로든 도움이 된다면 Erin을 언급하는 것도 잊지 마세요!