Feed TikTok auto-hospedado para seus clipes
Crie um feed do TikTok com seus próprios vídeos
Erin é um serviço simples e auto-hospedado que permite que você visualize seus próprios clipes usando o conhecido feed de deslizamento vertical do TikTok. Foi feito um pedido no Reddit para um aplicativo auto-hospedável que pudesse mostrar vídeos filtrados usando a interface do TikTok, então eu fiz isso.
Erin tem todos esses recursos implementados:
Além disso, observe que Erin é apenas um aplicativo React desenvolvido inteiramente pela Caddy. Caddy cuida da autenticação, servindo arquivos estáticos e servindo o aplicativo React, tudo de uma vez.
*: Você pode mascarar vídeos para ocultá-los do seu feed. Caso queira ver quais vídeos foram mascarados, e até mesmo desmascará-los, você pode manter pressionado o botão
Mask
e o gerenciador será aberto.
**: Por padrão, Erin criará um feed aleatório de todos os vídeos da sua pasta e seus subdiretórios. No entanto, se desejar criar feeds personalizados (listas de reprodução), você pode criar subdiretórios e organizar seus vídeos de acordo. Por exemplo:
https://my-server.tld/directory-a
criará um feed a partir dos vídeos localizados no/directory-a
e funcionará com qualquer caminho (portanto, pastas aninhadas são suportadas).
***: Você pode mostrar um canal (com avatar e nome), uma legenda e um link para todos os seus vídeos usando um arquivo de metadados. O arquivo de metadados pode estar localizado em qualquer lugar dentro da pasta de vídeos e deve corresponder ao nome do arquivo do vídeo associado, substituindo a extensão por JSON. Por exemplo:
my-video.mp4
pode ter seus metadados emmy-video.json
. O formato dos metadados é mostrado aqui e observe que você pode usar HTML bruto na legenda para estilos e efeitos personalizados.
Para obter mais informações, leia sobre Configuração.
Antes de continuar, independentemente do Docker, do Docker Compose ou de uma implantação autônoma, certifique-se de ter criado um diretório videos
contendo todos os seus arquivos de vídeo. Posteriormente, este diretório será disponibilizado para sua instância de Erin (vinculando um volume ao seu contêiner Docker ou colocando o diretório próximo ao seu Caddyfile).
Você pode executar Erin com Docker na linha de comando muito rapidamente.
Você pode usar os seguintes 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: Um arquivo
sample.env
está localizado na raiz do repositório para ajudá-lo a começar
Nota: Ao usar
docker run --env-file
, certifique-se de remover as aspas em torno deAUTH_ENABLED
eAUTH_SECRET
, caso contrário seu contêiner poderá travar devido à interpolação inesperada e conversões de tipo operadas pelo Docker nos bastidores.
Para ajudá-lo a começar rapidamente, alguns exemplos de arquivos docker-compose
estão localizados no diretório "examples/".
Aqui está uma descrição de cada exemplo:
docker-compose.simple.yml
: Execute Erin como um serviço frontal na porta 443, com variáveis de ambiente fornecidas diretamente no arquivo docker-compose
.
docker-compose.proxy.yml
: Uma configuração com Erin rodando na porta 80, atrás de um proxy escutando na porta 443.
Quando seu arquivo docker-compose
estiver correto, você pode usar os seguintes 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 executar Erin, você precisará definir as seguintes variáveis de ambiente em um arquivo .env
:
Nota: variáveis de ambiente regulares fornecidas na linha de comando também funcionam
Nota: Um arquivo
sample.env
está localizado na raiz do repositório para ajudá-lo a começar
Parâmetro | Tipo | Descrição | Padrão |
---|---|---|---|
PUBLIC_URL | boolean | A URL pública usada para acessar remotamente sua instância de Erin. (Inclua HTTP/HTTPS e a porta se não for o padrão 80 ou 443. Não inclua uma barra final) (Leia a documentação oficial do Caddy) | https://localhost |
AUTH_ENABLED | string | Se a autenticação básica deve ser habilitada. (Este parâmetro diferencia maiúsculas de minúsculas) (Valores possíveis: verdadeiro, falso) | verdadeiro |
AUTH_SECRET | string | O hash seguro da senha usada para proteger sua instância de Erin. | Hash de secure-password |
APP_TITLE | string | O título personalizado que você gostaria de exibir na guia do navegador. (Dica: você pode usar [VIDEO_TITLE] aqui se quiser que Erin exiba dinamicamente o título do vídeo atual.) | Erin - feed do TikTok para seus próprios clipes |
AUTOPLAY_ENABLED | boolean | Se a reprodução automática deve ser ativada. (Este parâmetro diferencia maiúsculas de minúsculas) (Valores possíveis: verdadeiro, falso) | falso |
PROGRESS_BAR_POSITION | string | Onde a barra de progresso deve estar localizada na tela. (Este parâmetro diferencia maiúsculas de minúsculas) (Valores possíveis: inferior, superior) | fundo |
Dica: Para gerar um hash seguro para sua instância, use o seguinte comando:
docker run caddy caddy hash-password --plaintext " your-new-password "
Nota: Ao usar variáveis de ambiente
docker-compose.yml
, se o hash da sua senha contiver cifrões: dobre todos eles, caso contrário o aplicativo irá travar. Por exemplo:$ab$cd$efxyz
torna-se$$ab$$cd$$efxyz
. Isso se deve a advertências com o sistema de interpolação de stringsdocker-compose
.
Se você encontrar algum problema ao executar o Erin, consulte os seguintes problemas comuns que podem ocorrer.
Se nada disso corresponder ao seu caso, sinta-se à vontade para abrir um problema.
Erin fica no topo de um servidor web Caddy.
Como resultado :
Fora isso, certifique-se de que os seguintes requisitos sejam atendidos:
Se Erin for executado como um aplicativo independente sem proxy:
A erin XXX.XXX.XXX.XXX
para https://erin.your-server-tld
).env
esteja bem configurado de acordo com a seção Configuração.Se Erin for executado dentro do Docker/atrás de um proxy:
PUBLIC_URL
esteja bem definido em .env
.Em qualquer caso, a parte crucial é a configuração e a leitura da documentação oficial do Caddy.
Para que Erin forneça seus arquivos de vídeo, eles devem respeitar os seguintes requisitos:
.mp4
, .ogg
, .webm
. (Existem as únicas extensões suportadas por navegadores da web.)/srv/videos
no seu contêiner Docker usando um volume.Para ter certeza de que seus vídeos estão dentro do contêiner Docker e no lugar certo, você pode:
docker exec -it <NAME-OF-YOUR-CONTAINER> sh
ls /srv/videos
Se Erin ainda não conseguir encontrar seus vídeos apesar de tudo estar bem configurado, abra um problema incluindo a saída do console Javascript do seu navegador e da guia de rede quando a solicitação for para /media/
. Pode ter a ver com cache do navegador, configuração inválida ou credenciais inválidas.
Por enquanto, você deve apenas colocar seus novos arquivos de vídeo no diretório de vídeos montado com Docker. Erin coletará automaticamente esses novos arquivos e, quando você atualizar o navegador, você os verá.
Erin traduzirá automaticamente o nome do seu arquivo em um título para exibir na interface.
A conversão operada é a seguinte:
-
torna-se
__
se torna -
Aqui estão alguns exemplos para ajudá-lo a nomear seus arquivos:
Vegas-trip__Clip-1.mp4
torna-se Vegas trip - Clip 1
Spanish-language__Lesson-1.mp4
torna-se Spanish language - Lesson 1
Spiderman-1.ogg
torna-se Spiderman 1
Erin embaralha aleatoriamente seus arquivos de vídeo a cada atualização do navegador.
Como resultado, não há uma ordem específica para seus vídeos aparecerem.
Por enquanto, Erin tentará apenas recuperar os vídeos que possuem uma extensão compatível.
As extensões suportadas são: .webm
, .mp4
e .ogg
.
No entanto, observe que o Safari não parece suportar .ogg
, portanto, esses vídeos serão ignorados para usuários do Safari.
Se você tiver algum conselho ou ideia para oferecer suporte a mais extensões (especialmente para usuários do Safari), sinta-se à vontade para abrir um problema.
Parece haver algumas ressalvas ao usar o Docker/Docker Compose com hashes de senha gerados pelo Caddy.
Estas são as regras que você deve seguir:
docker run ... --env-file .env ...
, então seu AUTH_SECRET
não deverá ter nenhuma cotação e todos os cifrões deverão permanecer como estão, sem escape ou duplicandodocker-compose.yml
, seu AUTH_SECRET
deverá ter seus cifrões duplicados. Exemplo: i$am$groot
torna-se i$$am$$groot
.Dito isto, lembre-se que o hash da sua senha deve ser gerado com o seguinte comando:
docker run caddy caddy hash-password --plaintext " your-new-password "
Sinta-se à vontade para abrir um problema, explicando o que acontece e descrevendo seu ambiente.
Ei, ei! É sempre uma boa ideia agradecer e mencionar as pessoas e projetos que nos ajudam a seguir em frente.
Muito obrigado aos indivíduos/equipes por trás desses projetos:
E não esqueça de mencionar a Erin se você gostou ou se isso te ajuda de alguma forma!