Skip to content

Configuration

Johan le stickman edited this page Sep 9, 2023 · 2 revisions

Liste des éléments de la configuration

La configuration peut être trouvé dans le fichier config.jsonc, si ce fichier n'existe pas, vous devrez renommer le fichier config.example.jsonc en config.jsonc.

port

Valeur par défaut : 80
Type : number
Choix : port entre 0 et 65535

Le port utilisé par le serveur web. Si la variable d'environnement PORT est défini, la valeur définie dans la configuration sera ignorée. Si aucune de ces valeurs ne peut s'appliquer, le port 4907 sera utilisé.

baseUrl

Valeur par défaut : /
Type : string
Choix : peut-importe, doit commencer par un "/"

Permet de modifier l'URL de base utilisé par le serveur web, utile si le serveur n'utilise pas la racine du chemin.

Exemple : si l'URL "https://johan-stickman.is-a.dev/storage" permet d'accéder à StickStorage, la valeur baseUrl de la configuration devrait être défini sur /storage.

Autre exemple : si l'URL "https://storage.johanstick.fr" permet d'accéder à StickStorage, la valeur baseUrl de la configuration devrait être défini sur /.

showReadme

Valeur par défaut : true
Type : boolean
Choix : true, false

Permet de choisir si les fichiers README(.md et .txt) devrait être prévisualisé automatiquement depuis l'interface web de StickStorage.

homePage

Valeur par défaut : index.html
Type : string
Choix :

  • none : Aucune, page d'erreur 404
  • index.html : Affiche le fichier index.html, se situant dans le dossier web
  • rootFolder : Affiche le dossier principal contenant la liste des fichiers et dossiers

Permet de personnaliser la page d'accueil de votre instance StickStorage.

errorPage

Valeur par défaut : 404.html
Type : string
Choix :

  • none : N'envoie aucune réponse, suspectible de crée un timeout sur la plupart des hébergeurs
  • 404.html : Affiche le fichier 404.html, se situant dans le dossier web
  • redirection:<url> : Redirige vers une autre URL (assurez-vous d'ajouter le protocole au début, exemple https://)

Permet de personnaliser le résultat d'une erreur 404 sur votre instance StickStorage.

blockedIp

Valeur par défaut : []
Type : array
Choix : liste d'IPv4

Permet de bloquer une ou plusieurs IP, celle-ci n'aura accès à aucun éléments du site mais peut toujours accéder aux fichiers hébergés sur Firebase ou Supabase s'il en connait son URL.

allowedIp

Valeur par défaut : []
Type : array
Choix : liste d'IPv4

Permet d'autoriser une ou plusieurs adresses IP. Dans le cas où un élément fait partie de la liste, toutes les adresses qui ne sont pas dans cette même liste seront automatiquement bloqués.

Pour obtenir votre propre IP, vous pouvez accéder à l'endpoint /ip, exemple : storage.johanstick.fr/ip

downloadFolder

Valeur par défaut : true
Type : boolean
Choix : true, false

Permet d'activer ou désactiver la possibilité de télécharger tous les fichiers d'un dossier en faisant le raccourci CTRL+S depuis l'interface web.

archives

Type : array
Choix : liste d'objet avec les valeurs name et url

Permet d'ajouter une liste de liens considérée comme "archive", qui seront accessibles en allant vers /archive. Ceci ne modifie en aucun cas la liste des fichiers/dossiers. Exemple.

Valeur par défaut :

[
	{
		"name": "Ancien Twitterminal",
		"url": "https://storage-bf183.firebaseapp.com/archive/twitterminal/index.html"
	},
	{
		"name": "OsNul.html",
		"url": "https://storage-bf183.firebaseapp.com/archive/osnul/index.html"
	}
]

protectedFolder

Type : array
Choix : liste d'objet avec les valeurs name et password

Permet de protéger une liste de dossiers (et fichiers s'ils sont hébergés localement) par un mot de passe. Exemple, mot de passe : ErkLesNyanCats.

Valeur par défaut :

[
	{
		"name": "mon-chat",
		"password": "ErkLesNyanCats"
	},
	{
		"name": "photo-famille",
		"password": "Aucun rapport mais erk les nyan cats"
	}
]

inaccessibleFolder

Type : array
Choix : liste de noms de dossier (marche à peu près bien sur les fichiers hébergés localement)

Permet de rendre un dossier inaccessible, celui-ci ne figurera pas dans la liste des dossiers et ne sera pas visionnable à partir de son lien.

Valeur par défaut :

[
	"projet-secret",
	"trailer-secret"
]

rateLimit

Type : object

Permet de limiter l'accès à certaines ressources après un certain nombre de requêtes en une minute.

Exemple :

{
	// 50 requêtes par minute maximum pour un dossier
	"folder": 50,
	// 400 requête par minute maximum pour un fichier hébergé localement
	"file": 400
}

customization

Type : object

Permet de modifier quelques éléments de l'interface web. Noter que pour l'icône et la bannière, la variable baseUrl n'est pas appliquée.

Exemple :

{
	// Nom du site
	"name": "Storage",
	
	// Description du site
	"description": "Hébergeur de fichiers",
	
	// Icône du site
	"icon": "",
	
	// Bannière du site
	"banner": ""
}

globalAuthentication

Type : object

Permet d'ajouter un mot de passe requis afin d'accéder à l'ensemble du site.

Exemple :

{
	"enabled": false,
	"password": "p@ssw0rd"
}

fileStorage

Type : object

Permet de choisir où sont hébergés les fichiers, de définir le nom du dossier racine et d'autoriser si on peut accéder à la liste des fichiers/dossiers de ce dossier.

Exemple :

{
	// "local", "firebase" ou "supabase" : voir les méthodes d'hébergement des fichiers dans le wiki.
	"type": "local",
	// Permet de modifier le nom du dossier root
	"rootFolder": "servedFiles",
	// Autorise ou non l'accès aux élements du dossier racine (n'opère pas sur les sous-élements de ce dernier)
	"accessRootFolder": true
}

Vérification de la configuration

À chaque modification du fichier config.jsonc, il est conseillé d'utiliser l'assistant de vérification de la configuration avec la commande node cli.js. Cet assistant va vérifier l'ensemble du fichier de config afin de trouver de potentiels problèmes.

Informations supplémentaires

Après chaque modification des fichiers .env ou config.jsonc, un redémarrage du serveur web est requis pour actualiser les modifications.