為您的剪輯提供可自行託管的 TikTok feed
用您自己的影片製作 TikTok feed
Erin 是一項簡單且可自行託管的服務,可讓您使用 TikTok 著名的垂直滑動提要來查看自己的剪輯。 Reddit 上有人請求開發一款可自行託管的應用程序,該應用程式可以使用 TikTok 的介面顯示過濾後的視頻,所以我做到了。
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 在幕後操作的意外插值和類型轉換而崩潰。
為了幫助您快速入門,「examples/」目錄中提供了一些範例docker-compose
檔案。
以下是每個範例的描述:
docker-compose.simple.yml
:在連接埠 443 上將 Erin 作為前端服務運行,並直接在docker-compose
檔案中提供環境變數。
docker-compose.proxy.yml
:Erin 在連接埠 80 上運行的設置,在監聽連接埠 443 的代理後面。
當您的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://本地主機 |
AUTH_ENABLED | string | 是否應啟用基本身份驗證。 (此參數區分大小寫)(可能值:true、false) | 真的 |
AUTH_SECRET | string | 用於保護您的 Erin 執行個體的密碼的安全雜湊值。 | secure-password 的雜湊值 |
APP_TITLE | string | 您希望在瀏覽器標籤中顯示的自訂標題。 (提示:如果您希望 Erin 動態顯示目前影片的標題,可以在此處使用[VIDEO_TITLE] 。) | Erin - 為您自己的剪輯提供 TikTok feed |
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 Web 伺服器之上。
因此 :
除此之外,請確保滿足以下要求:
如果 Erin 在沒有代理的情況下作為獨立應用程式運行:
A erin XXX.XXX.XXX.XXX
for https://erin.your-server-tld
).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 會自動將您的檔案名稱翻譯成標題以顯示在介面上。
轉換操作如下:
-
變成
__
變為-
以下是一些幫助您命名文件的範例:
Vegas-trip__Clip-1.mp4
變成Vegas trip - Clip 1
Spanish-language__Lesson-1.mp4
變成Spanish language - Lesson 1
Spiderman-1.ogg
成為Spiderman 1
艾琳會在每次瀏覽器刷新時隨機打亂您的影片檔。
因此,您的影片沒有特定的顯示順序。
目前,Erin 將僅嘗試檢索具有受支援擴展名的影片。
支援的副檔名是: .webm
、 .mp4
和.ogg
。
但請注意,Safari 似乎不支援.ogg
,因此 Safari 用戶將忽略這些影片。
如果您有任何建議或想法來支援更多擴充功能(尤其是 Safari 用戶),請隨時提出問題。
將 Docker / Docker Compose 與 Caddy 產生的密碼雜湊一起使用時,似乎有一些注意事項。
這些是您應該遵循的規則:
docker run ... --env-file .env ...
部署了 Erin,那麼您的AUTH_SECRET
應該根本沒有引號,並且所有美元符號都應該保持原樣而不會轉義或加倍docker-compose.yml
檔案部署 Erin,那麼您的AUTH_SECRET
的美元符號應該會加倍。範例: i$am$groot
變成i$$am$$groot
。也就是說,請記住您的密碼雜湊必須使用以下命令產生:
docker run caddy caddy hash-password --plaintext " your-new-password "
請隨意提出問題,解釋發生的情況並描述您的環境。
嘿嘿!說謝謝並提及幫助我們前進的人和專案總是一個好主意。
非常感謝這些項目背後的個人/團隊:
如果您喜歡或它對您有任何幫助,請不要忘記提及 Erin!