Merci à wheezy/virtutux pour l'idée du tutoriel! 🤝
Bordayl de maydre, il faudrait arrêter de changer de pseudo mon ami! 🤣
Je vous avais déjà parlé de XBackBone, et bien son fonctionnement est similaire.
Aujourd'hui on va parler de Zipline, qui non seulement fait office de cloud mais il prend aussi en charge ShareX & Flameshot et permet également de raccourcir les URL's.
belginux vous propose deux solutions, Cosmos Cloud & NPM, libre à vous, bien entendu, d'utiliser votre méthode habituelle.
Ziplin est plus soigné que XBackBone niveau design, c'est vraiment classe, je trouve.
⚡Caractéristiques
- Configurable.
- Rapide.
- Construit avec Next.js & React.
- Téléchargement protégé par un jeton.
- Téléchargement d'images.
- Compression d'images.
- Téléchargements protégés par mot de passe.
- Raccourcissement d'URL.
- Téléchargement de texte.
- Formats d'URL (uuid, dates, alphanumérique aléatoire, nom d'origine, zws, gfycat -> adjectifs d'animaux).
- Incorporation dans Discord (métadonnées OG).
- Visionneuse de galerie et prise en charge de plusieurs formats de fichiers.
- Mise en évidence du code.
- Notifications webhook Discord entièrement personnalisables.
- Enregistrement OAuth2 (Discord et GitHub).
- Authentification à deux facteurs avec Google Authenticator, Authy, etc (services totp).
- Invitations d'utilisateurs.
- Chunking de fichiers (pour les gros fichiers).
- Suppression des fichiers lorsqu'ils atteignent un certain nombre de vues.
- Génération automatique de vignettes vidéo.
- Instructions d'installation faciles.
L'installation
- Placez-vous dans le dossier ou vous avez vos applications d'installées et faites cette commande:
sudo git clone https://github.com/diced/zipline
- Rendez-vous dans le dossier:
cd zipline
- Maintenant on va éditer le fichier docker-compose.yml:
sudo nano docker-compose.yml
- Vous allez remplacer changethis par n'importe quel mot de passe. Vous pouvez aussi en profiter pour changer le port 3000 s'il est déjà utilisé par un autre service:
- CORE_SECRET=changethis
- On peut maintenant déployer l'application:
docker-compose up -d
ou avec docker-compose V2:
docker compose up -d
- Rendez-vous sur l'ip:port, suivant l'IP de votre serveur local et du port choisi, 3000 par défaut:
http://ip:3000/
ou votre domaine:
https://mondomaine.com
Première connexion
Lorsque vous lancez l'application pour la première fois, il vous sera demandé d'entre le compte administrateur:
- Username => administrator
- Password => password
Validez en cliquant sur Login:
Modifier le compte administrateur par défaut
Il est préférable de ne pas conserver le compte administrateur par défaut, cliquez en haut à droite sur administrator et ensuite sur Manage Account:
Modifiez Username et Password, quand c'est terminé, cliquez sur Save:
Créer un utilisateur
Dans la colonne de gauche, cliquez sur Administration, Users:
Cliquez sur l'icône + pour ajouter un utilisateur:
Complétez les informations:
- Username => Choisissez un nom d'utilisateur.
- Password => Choisissez un mot de passe fort.
- Administrator => Cochez cette option si le compte utilisateur doit avoir des droits d'administrateur.
L'utilisateur est bien créé:
Remarquez en bout de ligne les 3 options: Supprimer, éditer, "ouvrir l'utilisateur".
Onglet Files
Sous cet onglet, retrouvez l'ensemble de vos fichiers:
Folders
Sous l'onglet Folders, vous avez la possibilité de créer des dossiers. Vous avez deux icônes, l'une permet d'ajouter un dossier et l'autre, d'afficher différemment les dossiers:
Pour créer un dossier, cliquez sur l'icône +, nommez votre dossier et cliquez sur Create:
Ce qui donne:
Ou si vous cliquez sur l'autre icône, celle pour changer l'apparence d'affichage:
Les options disponibles:
- View files in folder => Cela va ouvrir une fenêtre dans laquelle seront repris tous les fichiers étant présents dans le dossier.
- Make folder public => Rendre un dossier public.
- Open folder in new tab => Ouvrir le dossier dans un nouvel onglet.
- Copy folder links => Copier le lien du dossier.
- Delete folder => Supprimer le dossier.
URLs
Dans cette partie, vous pourrez créer des URLs personnalisées, raccourcies.
Cliquez sur l'icône pour ajouter un lien:
Replissez les informations demandées:
- URL => Indiquez l'URL de base.
- Vanity => Indiquez le nom personnalisé de l'URL.
- Max Views => Nombre de vues maximale, après quoi l'URL se détruira.
Vous avez bien entendu l'autre icône pour définir la façon dont les URLs sont affichées:
Upload
Quand vous cliquez sur Upload, vous avez le choix entre envoyer un fichier ou un texte:
Envoyer un fichier
Comme bien souvent, soit vous cliquez dans la zone d'upload pour sélectionner le(s) fichier(s) ou vous pouvez "drag and drop" le(s) fichier(s):
Je vais envoyer un lot de fichiers, cliquez sur Upload:
Dans l'onglet Files, on peut retrouver ses fichiers:
Quand vous cliquez sur un fichier vous avez différents options:
- Add to folder => Envoyer le fichier vers un dossier créé au préalable.
- Delete file => Supprimer le fichier.
- Favorite => Mettre en favoris.
- Open in new tab => Ouvrir le fichier dans un nouvel onglet.
- Copy URL => Copier l'URL.
- Download => Télécharger le fichier.
Envoyer un texte
Cliquez sur Text dans le menu d'Upload:
Quand vous descendez en bas à droite, vous avez la possibilité de choisir le formatage du texte:
Je vais choisir de partager un docker-compose.yml, donc je choisis le formatage YAML:
Je vais envoyer le texte en cliquant sur Upload:
Voici le résultat quand vous partagez un lien, c'est propre!
Et vous avez dans le coin supérieur gauche, le bouton pour copier:
Options
Que ce soit pour les fichiers ou le texte, vous avez des Options:
Découvrons quelques options pratiques:
- Max Views => Nombre de vues maximales.
- Expires => Choisissez dans combien de temps expire le fichier.
- Compression => Vous pouvez compresser le fichier, vous avez 4 niveaux de compression.
- Format => Le format de nom de fichier à utiliser lors du téléchargement de ce fichier.
- Password => Protégez le fichier par un mot de passe.
ShareX & Flameshot
Vous avez la possibilité de générer un fichier config nécessaire aux applications ShareX & Flameshot.
Cliquez en haut à droite sur votre pseudo et choisissez Manage Account:
Dans le fond de la page, il suffira de cliquez sur l'application que vous utilisez pour générer un fichier de configuration:
Thème
Ziplin propose différents thèmes. Cliquez en haut à droite sur votre pseudo et choisissez à cote du pinceau, votre thème préféré:
NGINX Proxy
server {
listen 80 default_server;
client_max_body_size 100M;
server_name <your domain (optional)>;
location / {
proxy_pass http://localhost:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Pour aller plus loin
Vous avez la possibilité d'ajouter des options d'environnement dans votre docker-compose.yml, dans cette partie:
Vous pourrez choisir de la taille des chunks, de la taille maximale des fichiers qui peuvent être envoyés, la 2FA,...
Retrouvez la liste des options possible ici:
Vous pouvez également créer un fichier .env, dans ce cas supprimez le bloc environnement dans votre docker-compose.
sudo nano .env
Voici un exemple d'environnement:
# every field in here is optional except, CORE_SECRET and CORE_DATABASE_URL.
# if CORE_SECRET is still "changethis" then zipline will exit and tell you to change it.
# if using s3/supabase make sure to uncomment or comment out the correct lines needed.
CORE_RETURN_HTTPS=true
CORE_SECRET="changethis"
CORE_HOST=0.0.0.0
CORE_PORT=3000
CORE_DATABASE_URL="postgres://postgres:postgres@localhost/zip10"
CORE_LOGGER=false
CORE_STATS_INTERVAL=1800
CORE_INVITES_INTERVAL=1800
CORE_THUMBNAILS_INTERVAL=600
# default
DATASOURCE_TYPE=local
DATASOURCE_LOCAL_DIRECTORY=./uploads
# or you can choose to use s3
# DATASOURCE_TYPE=s3
# DATASOURCE_S3_ACCESS_KEY_ID=key
# DATASOURCE_S3_SECRET_ACCESS_KEY=secret
# DATASOURCE_S3_BUCKET=bucket
# DATASOURCE_S3_ENDPOINT=s3.amazonaws.com
# DATASOURCE_S3_REGION=us-west-2
# DATASOURCE_S3_FORCE_S3_PATH=false
# DATASOURCE_S3_USE_SSL=false
# or supabase
# DATASOURCE_TYPE=supabase
# DATASOURCE_SUPABASE_KEY=xxx
# remember: no leading slash
# DATASOURCE_SUPABASE_URL=https://something.supabase.co
# DATASOURCE_SUPABASE_BUCKET=zipline
UPLOADER_DEFAULT_FORMAT=RANDOM
UPLOADER_ROUTE=/u
UPLOADER_LENGTH=6
UPLOADER_ADMIN_LIMIT=104900000
UPLOADER_USER_LIMIT=104900000
UPLOADER_DISABLED_EXTENSIONS=someext,anotherext
URLS_ROUTE=/go
URLS_LENGTH=6
RATELIMIT_USER=5
RATELIMIT_ADMIN=3
# for more variables checkout the docs