git clone https://github.com/TannerReynolds/ShareX-Upload-Server.git
cd ShareX-Upload-Server
chmod +x install.sh
./install.shdocker build -t sharex-upload-server .
docker run --name " sharex-upload-server " -d
-v $( pwd ) /src/config.json:/usr/src/app/config.json
-v $( pwd ) /src/db.json:/usr/src/app/db.json
-v $( pwd ) /src/server/uploads/:/usr/src/app/server/uploads/
-p 8000:80 -p 8443:443
sharex-upload-server
docker logs -f sharex-upload-server /src/config.json sera le fichier de configuration utilisé si vous avez utilisé la commande ci-dessus pour démarrer le serveur. L'interface utilisateur Web sera disponible sur https://server-ip:8443 si https est activé, et http://server-ip:8000 si ce n'est pas le cas.
Dans les fichiers que vous avez téléchargés à partir de ce référentiel, vous verrez un fichier appelé config.json , vous devez le remplir pour que le serveur Web fonctionne correctement. Ci-dessous explique le fichier de configuration et ce que fait chaque partie
{
"key" : [ "" ] , // Password(s) for private uploading
"domain" : "*.example.com" , // Domain server will use. Will error if domain not used in request. Place "*" as the subdomain to enable wildcard subdomains for the webserver.
"puploadKeyGenLength" : 64 , // Amount of characters server should use for pupload files
"public" : false , // Disables auth and does not render a password field for /upload
"maxUploadSize" : 50 , // max upload size for non-admins using regular key in MB
"markdown" : true , // enables markdown rendering (upload whole .md file for render)
"port" : 80 , // port to listen on
"secure" : true , // Whether or not you want https. (make sure key and cert.pem are in src directory)
"fileNameLength" : 4 , // File name length
"shortUrlLength" : 3 , // File name length for short URLs
"securePort" : 443 , // Port to use when secure is true
"ratelimit" : 1000 , // Ratelimit for POSTing in milliseconds
"dateURLPath" : false , // Set to true to prefix uploads with the date (Ex: https://domain.com/2020/04/22/ghNa.pdf)
"allowed" : [
"png" , "jpg" , "gif" , "mp4" , "mp3" , "jpeg" , "tiff" , "bmp" , "ico" , "psd" , "eps" , "raw" , "cr2" , "nef" , "sr2" , "orf" , "svg" , "wav" , "webm" , "aac" , "flac" , "ogg" , "wma" , "m4a" , "gifv"
] , // Allowed file types for non-admins
"admin" : {
"key" : [ "" ] , // Admin password(s) for uploading & for gallery access
"maxUploadSize" : 1024 , // Max upload size for admin in MB
"allowed" : [
"png" , "jpg" , "gif" , "mp4" , "mp3" , "jpeg" , "tiff" , "bmp" , "ico" , "psd" , "eps" , "raw" , "cr2" , "nef" , "sr2" , "orf" , "svg" , "wav" , "webm" , "aac" , "flac" , "ogg" , "wma" , "m4a" , "gifv" , "html"
] // Allowed file types for admins
} ,
"paste" : {
"maxUploadSize" : 20 // allowed paste upload size in MB
} ,
"discordToken" : "" , // Discord bot token
"discordAdminIDs" : [ "discord IDs of people who can run commands go here" , "Like this" ] , // User IDs in an array
"discordChannelID" : "" , // Channel ID for monitoring uploads to
"prefix" : "" // Bot Prefix
} Une fois que vous avez correctement configuré votre serveur, vous pouvez exécuter node index.js dans le dossier SRC pour démarrer le serveur. Vous pouvez garder votre serveur en cours d'exécution pour toujours si vous utilisez un gestionnaire de processus, comme PM2. PM2 installe avec votre serveur si vous avez utilisé le script install.sh pour installer votre serveur. Sinon, vous pouvez exécuter npm i -g pm2 pour installer PM2. Ensuite, vous pouvez exécuter votre serveur en exécutant pm2 start index.js , et surveiller les journaux et tels en utilisant pm2 monit
Si vous configurez ce serveur Web pour exécuter un proxy inversé Nginx, assurez-vous d'ajouter ces lignes à votre configuration proxy inverse
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
Ce sont généralement certaines choses que vous souhaitez ajouter à votre configuration, et c'est ce qui est réellement requis pour que les partages fonctionnent correctement. En effet, les partages renvoient des téléchargements comme [http/https]://[requested url]/[filename] et comme vous exécutez des partages via un proxy inversé, à moins que vous passiez le long des en-têtes d'origine , les partages sont probablement simplement en train de vous envoyer quelque chose comme http://[server's real ip address]/[filename]
Si vous avez plusieurs domaines indiqués vers ce serveur Web, un seul (peut inclure le sous-domaine générique) peut être utilisé, à moins que le paramètre de domaine ne soit défini sur un seul * comme ainsi: "domain": "*", Cela signifie que tout domaine sera accepté comme un domaine valide par le serveur, quel que soit le sous-domaine.
Si vous souhaitez enregistrer l'activité de votre serveur Web dans un canal Discord pour une raison quelconque, vous le pouvez. Voici des informations sur la façon de configurer un compte BOT et d'obtenir les informations nécessaires à la journalisation Discord
Destinations -> Custom Uploader SettingsDestination Locationpupload , puis faites la valeur tout ce que vous voulez que le mot de passe soit En plus de pouvoir utiliser tout mot de passe que vous souhaitez pour les puploads, si vous tapez *random* comme champ de bassonnerie, le serveur générera automatiquement un mot de passe pour vous. Ce mot de passe comprendra des lettres, des numéros et des caractères spéciaux. Il générera une clé basée sur la longueur que vous spécifiez dans votre configuration (PuploadKeGenLength). Lorsque vous faites des demandes, le serveur renvoie l'URL de l'image avec la clé comme URL: https://qoilo.com/lhHr | KEY: Np$[CBk>X[c^YY{MDlCHH0|Qfm1uK0*lld^Mi$f4d62R5x6C2>~yaL}3*QYnziuZ
showCase , puis rendre la valeur trueAfin d'utiliser des partages avec Flameshot, vous devrez utiliser un script simple, voici un exemple:
key= " YourPassword "
# Only needed for multi-domain support, if you only have one simply set the url
# 2 lines below to url="https://your.domain/api/files"
urls=( " https://example.com/api/files " " https://example.org/api/files " )
url= ${urls[$RANDOM % ${#urls[@]} ]}
temp_file= " /tmp/screenshot.png "
# Run flameshot --help for options
flameshot gui -r > $temp_file
# For some reason flameshot always seems to exit with 0 even when aborting the process
# so we had to find a way around that.
if [[ $( file --mime-type -b $temp_file ) != " image/png " ]] ; then
rm $temp_file
notify-send " Screenshot aborted " -a " Flameshot " && exit 1
fi
image_url= $( curl -X POST -F " fdata=@ " $temp_file -F " key= " $key -v " $url " 2> /dev/null )
echo -n $image_url | xclip -sel c
notify-send " Image URL copied to clipboard " " $image_url " -a " Flameshot " -i $temp_file
rm $temp_fileLors de l'exécution de ce script, appuyez simplement sur Entrée lorsque vous êtes satisfait de votre image, Flameshot enregistrera ensuite l'image dans votre presse-papiers qui sera ensuite remplacé par l'URL de l'image une fois qu'il sera téléchargé. Pour les meilleurs résultats, je suggère de désactiver les notifications dans l'application Flameshot.
4.5.6 , assurez-vous de modifier le bouclier dans le fichier ReadMe et Package.json pour dire la version 4.5.7 . Si la version est 4.5.10 , mettez-la à mettre à jour vers 4.5.11 . Mettez à jour uniquement le dernier chiffre. Les mises à jour / PRS qui ne sont pas du code (readme.md, install.sh, les fichiers sxcu, pack