Flux TikTok auto-hébergé pour vos clips
Créez un flux TikTok avec vos propres vidéos
Erin est un service simple et auto-hébergé qui vous permet de visualiser vos propres clips à l'aide du célèbre flux à balayage vertical de TikTok. Une demande a été faite sur Reddit pour une application auto-hébergable capable d'afficher des vidéos filtrées à l'aide de l'interface de TikTok, alors je l'ai faite.
Erin a toutes ces fonctionnalités implémentées :
En plus de cela, veuillez noter qu'Erin n'est qu'une application React entièrement optimisée par Caddy. Caddy s'occupe de l'authentification, de la diffusion des fichiers statiques et de l'application React en même temps.
* : Vous pouvez masquer des vidéos pour les masquer de votre flux. Si vous souhaitez voir quelles vidéos ont été masquées, et même les démasquer, vous pouvez appuyer longuement sur le bouton
Mask
et le gestionnaire s'ouvrira.
** : Par défaut, Erin créera un flux aléatoire à partir de toutes les vidéos de votre dossier et de ses sous-répertoires. Cependant, si vous souhaitez créer des flux personnalisés (playlists), vous pouvez créer des sous-répertoires et organiser vos vidéos en conséquence. Par exemple :
https://my-server.tld/directory-a
créera un flux à partir des vidéos situées dans le/directory-a
, et il fonctionnera avec n'importe quel chemin (les dossiers imbriqués sont donc pris en charge).
*** : Vous pouvez afficher une chaîne (avec un avatar et un nom), une légende et un lien pour toutes vos vidéos à l'aide d'un fichier de métadonnées. Le fichier de métadonnées peut se trouver n'importe où dans votre dossier de vidéos et doit correspondre au nom de fichier de la vidéo associée, tout en remplaçant l'extension par JSON. Par exemple :
my-video.mp4
peut avoir ses métadonnées dansmy-video.json
. Le format des métadonnées est affiché ici et notez que vous pouvez utiliser du HTML brut dans la légende pour un style et des effets personnalisés.
Pour plus d’informations, lisez la section Configuration.
Avant de continuer, qu'il s'agisse de Docker, Docker Compose ou d'un déploiement autonome, assurez-vous d'avoir créé un répertoire videos
contenant tous vos fichiers vidéo. Plus tard, ce répertoire sera mis à disposition de votre instance d'Erin (en liant un volume à votre conteneur Docker, ou en plaçant le répertoire à côté de votre Caddyfile).
Vous pouvez exécuter Erin avec Docker sur la ligne de commande très rapidement.
Vous pouvez utiliser les commandes suivantes :
# 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
Remarque : Un fichier
sample.env
se trouve à la racine du référentiel pour vous aider à démarrer
Remarque : lorsque vous utilisez
docker run --env-file
, assurez-vous de supprimer les guillemets autourAUTH_ENABLED
etAUTH_SECRET
, sinon votre conteneur pourrait planter en raison d'une interpolation inattendue et de conversions de type opérées par Docker en arrière-plan.
Pour vous aider à démarrer rapidement, quelques exemples de fichiers docker-compose
se trouvent dans le répertoire « examples/ ».
Voici une description de chaque exemple :
docker-compose.simple.yml
: Exécutez Erin en tant que service frontal sur le port 443, avec les variables d'environnement fournies directement dans le fichier docker-compose
.
docker-compose.proxy.yml
: Une configuration avec Erin s'exécutant sur le port 80, derrière un proxy écoutant sur le port 443.
Lorsque votre fichier docker-compose
est au point, vous pouvez utiliser les commandes suivantes :
# 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 >
Pour exécuter Erin, vous devrez définir les variables d'environnement suivantes dans un fichier .env
:
Remarque : les variables d'environnement régulières fournies sur la ligne de commande fonctionnent également
Remarque : Un fichier
sample.env
se trouve à la racine du référentiel pour vous aider à démarrer
Paramètre | Taper | Description | Défaut |
---|---|---|---|
PUBLIC_URL | boolean | L'URL publique utilisée pour accéder à distance à votre instance d'Erin. (Veuillez inclure HTTP / HTTPS et le port s'il n'est pas standard 80 ou 443. N'incluez pas de barre oblique finale) (Lire la documentation officielle de Caddy) | https://localhost |
AUTH_ENABLED | string | Indique si l'authentification de base doit être activée. (Ce paramètre est sensible à la casse) (Valeurs possibles : vrai, faux) | vrai |
AUTH_SECRET | string | Le hachage sécurisé du mot de passe utilisé pour protéger votre instance d'Erin. | Hachage du secure-password |
APP_TITLE | string | Le titre personnalisé que vous souhaitez afficher dans l'onglet du navigateur. (Conseil : vous pouvez utiliser [VIDEO_TITLE] ici si vous souhaitez qu'Erin affiche dynamiquement le titre de la vidéo actuelle.) | Erin - Flux TikTok pour vos propres clips |
AUTOPLAY_ENABLED | boolean | Si la lecture automatique doit être activée. (Ce paramètre est sensible à la casse) (Valeurs possibles : vrai, faux) | FAUX |
PROGRESS_BAR_POSITION | string | Où la barre de progression doit être située sur l'écran. (Ce paramètre est sensible à la casse) (Valeurs possibles : bottom, top) | bas |
Astuce : Pour générer un hash sécurisé pour votre instance, utilisez la commande suivante :
docker run caddy caddy hash-password --plaintext " your-new-password "
Remarque : lorsque vous utilisez les variables d'environnement
docker-compose.yml
, si le hachage de votre mot de passe contient des signes dollar : doublez-les tous, sinon l'application plantera. Par exemple :$ab$cd$efxyz
devient$$ab$$cd$$efxyz
. Cela est dû à des mises en garde concernant le système d'interpolation de chaînesdocker-compose
.
Si vous rencontrez un problème lors de l'exécution d'Erin, veuillez vous référer aux problèmes courants suivants qui peuvent survenir.
Si aucun de ces éléments ne correspond à votre cas, n'hésitez pas à ouvrir un ticket.
Erin est assise au sommet d'un serveur Web Caddy.
Par conséquent :
En dehors de cela, veuillez vous assurer que les conditions suivantes sont remplies :
Si Erin s'exécute en tant qu'application autonome sans proxy :
A erin XXX.XXX.XXX.XXX
pour https://erin.your-server-tld
).env
est bien configuré selon la section Configuration.Si Erin s'exécute dans Docker / derrière un proxy :
PUBLIC_URL
est bien défini dans .env
.Dans tous les cas, la partie cruciale est la configuration et la lecture de la documentation officielle de Caddy.
Pour qu'Erin puisse servir vos fichiers vidéo, ceux-ci doivent respecter les exigences suivantes :
.mp4
, .ogg
, .webm
. (Il existe les seules extensions prises en charge par les navigateurs Web.)/srv/videos
sur votre conteneur Docker à l'aide d'un volume.Pour vous assurer que vos vidéos se trouvent dans votre conteneur Docker et au bon endroit, vous pouvez :
docker exec -it <NAME-OF-YOUR-CONTAINER> sh
ls /srv/videos
Si Erin ne parvient toujours pas à trouver vos vidéos alors que tout est bien configuré, veuillez ouvrir un problème incluant la sortie de la console Javascript et de l'onglet réseau de votre navigateur lorsque la requête est adressée à /media/
. Cela peut être dû à la mise en cache du navigateur, à une configuration non valide ou à des informations d'identification non valides.
Pour l'instant, vous devez simplement placer vos nouveaux fichiers vidéo dans votre répertoire de vidéos monté avec Docker. Erin récupérera automatiquement ces nouveaux fichiers et lorsque vous actualiserez votre navigateur, vous les verrez.
Erin traduira automatiquement le nom de votre fichier en un titre à afficher sur l'interface.
La conversion opérée est la suivante :
-
devient
__
devient -
Voici quelques exemples pour vous aider à nommer vos fichiers :
Vegas-trip__Clip-1.mp4
devient Vegas trip - Clip 1
Spanish-language__Lesson-1.mp4
devient Spanish language - Lesson 1
Spiderman-1.ogg
devient Spiderman 1
Erin mélange aléatoirement vos fichiers vidéo à chaque actualisation du navigateur.
Par conséquent, il n’y a pas d’ordre précis pour que vos vidéos apparaissent.
Pour l'instant, Erin tentera uniquement de récupérer les vidéos dont l'extension est prise en charge.
Les extensions prises en charge sont : .webm
, .mp4
et .ogg
.
Cependant, veuillez noter que Safari ne semble pas prendre en charge .ogg
, ces vidéos seront donc ignorées pour les utilisateurs de Safari.
Si vous avez des conseils ou des idées pour prendre en charge davantage d'extensions (en particulier pour les utilisateurs de Safari), n'hésitez pas à ouvrir un ticket.
Il semble y avoir quelques mises en garde lors de l'utilisation de Docker / Docker Compose avec des hachages de mot de passe générés par Caddy.
Voici les règles que vous devez suivre :
docker run ... --env-file .env ...
, alors votre AUTH_SECRET
ne devrait avoir aucun guillemet et tous les signes dollar doivent rester tels quels sans échappement. ou doublerdocker-compose.yml
, alors votre AUTH_SECRET
devrait voir ses signes dollar doublés. Exemple : i$am$groot
devient i$$am$$groot
.Cela dit, rappelez-vous que votre hash de mot de passe doit être généré avec la commande suivante :
docker run caddy caddy hash-password --plaintext " your-new-password "
N'hésitez pas à ouvrir un numéro, en expliquant ce qui se passe et en décrivant votre environnement.
Hé hé ! C'est toujours une bonne idée de dire merci et de mentionner les personnes et les projets qui nous aident à avancer.
Un grand merci aux individus/équipes derrière ces projets :
Et n'oubliez pas de mentionner Erin si vous l'aimez ou si cela vous aide d'une manière ou d'une autre !