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 será o arquivo de configuração usado se você usou o comando acima para iniciar o servidor. A interface do usuário da web estará disponível em https://server-ip:8443 se https estiver ativado e http://server-ip:8000 se não for.
Nos arquivos que você baixou deste repositório, você verá um arquivo chamado config.json , você deve preencher isso para que o servidor da web funcione corretamente. Abaixo explica o arquivo de configuração e o que cada parte faz
{
"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
} Depois de configurar corretamente seu servidor, você pode executar node index.js na pasta SRC para iniciar o servidor. Você pode manter seu servidor funcionando para sempre se usar um gerenciador de processos, como o PM2. O PM2 instala junto com o seu servidor se você usou o script install.sh para instalar o servidor. Caso contrário, você pode executar npm i -g pm2 para instalar o PM2. Em seguida, você pode executar seu servidor executando pm2 start index.js , e monitorar logs e tal usando pm2 monit
Se você estiver configurando esse servidor da web para executar um proxy reverso do Nginx, adicione essas linhas à sua configuração de proxy reversa
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
Geralmente, são algumas coisas que você deseja adicionar à sua configuração e é o que é realmente necessário para que as ações funcionem corretamente. Isso ocorre porque as ações retornam uploads como [http/https]://[requested url]/[filename] e como você está executando as ações por meio de um proxy reverso, a menos que você esteja passando pelos cabeçalhos originais , as ações provavelmente enviam algo como http://[server's real ip address]/[filename]
Se você tiver vários domínios apontados para este servidor da web, apenas um (pode incluir subdomínio curinga) pode ser usado, a menos que a configuração do domínio esteja definida como apenas um único * como assim: "domain": "*", . Isso significa que qualquer domínio será aceito como um domínio válido pelo servidor, independentemente do subdomínio.
Se você deseja registrar a atividade do seu servidor na web em um canal Discord por qualquer motivo, você pode. Aqui estão as informações sobre como configurar uma conta de bot e obter as informações necessárias para o registro da discórdia
Destinations -> Custom Uploader SettingsDestination Locationpupload e, em seguida, faça o valor que quiser que a senha seja Além de poder usar qualquer senha desejada para pupla, se você digitar *random* como seu campo de pupla, o servidor gerará automaticamente uma senha para você. Essa senha incluirá cartas, números e caracteres especiais. Ele gerará uma chave com base no comprimento que você especificará em sua configuração (puploadkeygenlenngth). Ao fazer solicitações, o servidor retornará o URL da imagem com a chave como So URL: https://qoilo.com/lhHr | KEY: Np$[CBk>X[c^YY{MDlCHH0|Qfm1uK0*lld^Mi$f4d62R5x6C2>~yaL}3*QYnziuZ
showCase e, em seguida, torne o valor truePara usar as ações com o Flameshot, você precisará usar um script simples, aqui está um exemplo:
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_fileAo executar esse script, basta pressionar Enter quando estiver satisfeito com sua imagem, o Flameshot salvará a imagem na sua área de transferência, que será substituída pelo URL da imagem assim que for carregado. Para os melhores resultados, sugiro desativar notificações no aplicativo Flameshot.
4.5.6 , altere o escudo no arquivo ReadMe e Package.json para dizer a versão 4.5.7 . Se a versão for 4.5.10 , atualize -a para 4.5.11 . Atualize apenas o último dígito. Atualizações/PRs que não são código (readme.md, install.sh, arquivos sxcu, package.json etc.) não devem constituir um número de versão atualizado para o projeto; portanto, os PRs para esses arquivos específicos não incrementarão o número da versão