Feed de TikTok autohospedable para tus clips
Crea un feed de TikTok con tus propios vídeos
Erin es un servicio simple y autohospedable que le permite ver sus propios clips utilizando el conocido feed de deslizamiento vertical de TikTok. Se realizó una solicitud en Reddit para una aplicación autohospedable que pueda mostrar videos filtrados usando la interfaz de TikTok, así que la hice.
Erin tiene todas estas características implementadas:
Además de esto, tenga en cuenta que Erin es solo una aplicación React impulsada completamente por Caddy. Caddy se encarga de la autenticación, entrega archivos estáticos y entrega la aplicación React, todo al mismo tiempo.
*: Puedes enmascarar videos para ocultarlos de tu feed. Si desea ver qué vídeos estaban enmascarados e incluso desenmascararlos, puede mantener presionado el botón
Mask
y se abrirá el administrador.
**: De forma predeterminada, Erin creará una fuente aleatoria de todos los videos en su carpeta y sus subdirectorios. Sin embargo, si desea crear feeds personalizados (listas de reproducción), puede crear subdirectorios y organizar sus videos en consecuencia. Por ejemplo:
https://my-server.tld/directory-a
creará un feed a partir de los videos ubicados en el/directory-a
y funciona con cualquier ruta (por lo tanto, se admiten carpetas anidadas).
***: Puedes mostrar un canal (con un avatar y nombre), un título y un enlace para todos tus videos usando un archivo de metadatos. El archivo de metadatos puede ubicarse en cualquier lugar dentro de su carpeta de videos y debe coincidir con el nombre de archivo de su video asociado, mientras reemplaza la extensión con JSON. Por ejemplo:
my-video.mp4
puede tener sus metadatos enmy-video.json
. El formato de metadatos se muestra aquí y tenga en cuenta que puede utilizar HTML sin formato en el título para personalizar estilos y efectos.
Para obtener más información, lea sobre Configuración.
Antes de continuar, independientemente de Docker, Docker Compose o una implementación independiente, asegúrese de haber creado un directorio videos
que contenga todos sus archivos de video. Más adelante, este directorio estará disponible para su instancia de Erin (vinculando un volumen a su contenedor Docker o colocando el directorio al lado de su Caddyfile).
Puede ejecutar Erin con Docker en la línea de comando muy rápidamente.
Puede utilizar los siguientes comandos:
# 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
Nota: hay un archivo
sample.env
ubicado en la raíz del repositorio para ayudarlo a comenzar.
Nota: Cuando utilice
docker run --env-file
, asegúrese de eliminar las comillas alrededor deAUTH_ENABLED
yAUTH_SECRET
; de lo contrario, su contenedor podría fallar debido a una interpolación inesperada y conversiones de tipos operadas por Docker detrás de escena.
Para ayudarle a comenzar rápidamente, se encuentran algunos archivos de ejemplo docker-compose
en el directorio "examples/".
Aquí hay una descripción de cada ejemplo:
docker-compose.simple.yml
: ejecute Erin como un servicio frontal en el puerto 443, con variables de entorno proporcionadas directamente en el archivo docker-compose
.
docker-compose.proxy.yml
: una configuración con Erin ejecutándose en el puerto 80, detrás de un proxy escuchando en el puerto 443.
Cuando su archivo docker-compose
esté correcto, puede usar los siguientes comandos:
# 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 >
Para ejecutar Erin, deberá configurar las siguientes variables de entorno en un archivo .env
:
Nota: Las variables de entorno habituales proporcionadas en la línea de comandos también funcionan
Nota: hay un archivo
sample.env
ubicado en la raíz del repositorio para ayudarlo a comenzar.
Parámetro | Tipo | Descripción | Por defecto |
---|---|---|---|
PUBLIC_URL | boolean | La URL pública utilizada para acceder de forma remota a su instancia de Erin. (Incluya HTTP/HTTPS y el puerto si no es el estándar 80 o 443. No incluya una barra diagonal final) (Lea la documentación oficial de Caddy) | https://localhost |
AUTH_ENABLED | string | Si se debe habilitar la autenticación básica. (Este parámetro distingue entre mayúsculas y minúsculas) (Valores posibles: verdadero, falso) | verdadero |
AUTH_SECRET | string | El hash seguro de la contraseña utilizada para proteger su instancia de Erin. | Hash de secure-password |
APP_TITLE | string | El título personalizado que le gustaría mostrar en la pestaña del navegador. (Consejo: puedes usar [VIDEO_TITLE] aquí si quieres que Erin muestre dinámicamente el título del video actual). | Erin: feed de TikTok para tus propios clips |
AUTOPLAY_ENABLED | boolean | Si la reproducción automática debe estar habilitada. (Este parámetro distingue entre mayúsculas y minúsculas) (Valores posibles: verdadero, falso) | FALSO |
PROGRESS_BAR_POSITION | string | Dónde debe ubicarse la barra de progreso en la pantalla. (Este parámetro distingue entre mayúsculas y minúsculas) (Valores posibles: abajo, arriba) | abajo |
Consejo: para generar un hash seguro para su instancia, utilice el siguiente comando:
docker run caddy caddy hash-password --plaintext " your-new-password "
Nota: cuando utilice las variables de entorno
docker-compose.yml
, si el hash de su contraseña contiene signos de dólar: duplíquelos todos o, de lo contrario, la aplicación fallará. Por ejemplo:$ab$cd$efxyz
se convierte en$$ab$$cd$$efxyz
. Esto se debe a advertencias con el sistema de interpolación de cadenasdocker-compose
.
Si encuentra algún problema al ejecutar Erin, consulte los siguientes problemas comunes que pueden ocurrir.
Si ninguno de estos coincide con su caso, no dude en abrir un problema.
Erin se sienta encima de un servidor web Caddy.
Como resultado :
Aparte de eso, asegúrese de que se cumplan los siguientes requisitos:
Si Erin se ejecuta como una aplicación independiente sin proxy:
A erin XXX.XXX.XXX.XXX
para https://erin.your-server-tld
).env
esté bien configurado de acuerdo con la sección Configuración.Si Erin se ejecuta dentro de Docker/detrás de un proxy:
PUBLIC_URL
esté bien configurado en .env
.En cualquier caso, la parte crucial es la Configuración y la lectura de la documentación oficial de Caddy.
Para que Erin entregue sus archivos de video, estos deben respetar los siguientes requisitos:
.mp4
, .ogg
, .webm
. (Existen las únicas extensiones compatibles con los navegadores web)./srv/videos
en su contenedor Docker usando un volumen.Para asegurarse de que sus videos estén dentro de su contenedor Docker y en el lugar correcto, puede:
docker exec -it <NAME-OF-YOUR-CONTAINER> sh
ls /srv/videos
Si Erin aún no puede encontrar sus videos a pesar de que todo está bien configurado, abra un problema que incluya la salida de la consola Javascript de su navegador y la pestaña de red cuando la solicitud vaya a /media/
. Puede que tenga que ver con el almacenamiento en caché del navegador, una configuración no válida o credenciales no válidas.
Por ahora, solo debes colocar tus nuevos archivos de video en el directorio de videos que está montado con Docker. Erin recogerá automáticamente estos archivos nuevos y cuando actualice su navegador los verá.
Erin traducirá automáticamente el nombre de su archivo a un título para mostrarlo en la interfaz.
La conversión operada es la siguiente:
-
se convierte
__
se convierte en -
A continuación se muestran algunos ejemplos que le ayudarán a nombrar sus archivos:
Vegas-trip__Clip-1.mp4
se convierte Vegas trip - Clip 1
Spanish-language__Lesson-1.mp4
se convierte en Spanish language - Lesson 1
Spiderman-1.ogg
se convierte en Spiderman 1
Erin mezcla aleatoriamente sus archivos de video en cada actualización del navegador.
Como resultado, no existe un orden específico para que aparezcan tus videos.
Por ahora, Erin sólo intentará recuperar los vídeos que tengan una extensión compatible.
Las extensiones admitidas son: .webm
, .mp4
y .ogg
.
Sin embargo, tenga en cuenta que Safari no parece admitir .ogg
, por lo que estos videos serán ignorados por los usuarios de Safari.
Si tiene algún consejo o idea para admitir más extensiones (especialmente para usuarios de Safari), no dude en abrir un problema.
Parece haber algunas advertencias al usar Docker/Docker Compose con hashes de contraseña generados por Caddy.
Estas son las reglas que debes seguir:
docker run ... --env-file .env ...
, entonces su AUTH_SECRET
no debería tener ninguna comilla y todos los signos de dólar deberían permanecer como están sin escape. o duplicardocker-compose.yml
, entonces su AUTH_SECRET
debería tener el signo de dólar duplicado. Ejemplo: i$am$groot
se convierte i$$am$$groot
.Dicho esto, recuerda que el hash de tu contraseña debe generarse con el siguiente comando:
docker run caddy caddy hash-password --plaintext " your-new-password "
No dude en abrir un problema, explicar lo que sucede y describir su entorno.
¡Oye, oye! Siempre es buena idea dar las gracias y mencionar a las personas y proyectos que nos ayudan a seguir adelante.
Muchas gracias a las personas/equipos detrás de estos proyectos:
¡Y no olvides mencionar a Erin si te gusta o si te ayuda de alguna manera!