A ShareX/file upload server that is easy to use, packed with features, and with an easy setup!
Find a file
2022-10-28 20:53:13 -07:00
.github/workflows feat: upgrade docker actions 2022-10-28 20:53:13 -07:00
.vscode feat: prettier run (#200) 2022-10-19 19:43:01 -07:00
.yarn chore: update deps & tsx -> esbuild 2022-10-22 14:23:23 -07:00
prisma feat: new file serving method & max views for files 2022-10-27 19:34:20 -07:00
public refactor(assets): update assets to v3 2021-09-04 14:42:38 -07:00
src feat: even more for URLs 2022-10-28 17:41:46 -07:00
.dockerignore feat: use yarn v3 (#136) 2022-06-06 16:38:15 -07:00
.env.local.example feat: add S3 SSL as an env variable (#188) 2022-10-15 12:33:37 -07:00
.eslintrc.json feat: prettier run (#200) 2022-10-19 19:43:01 -07:00
.gitattributes fix: Follow proper linebreak style. (#191) 2022-10-16 20:10:52 -07:00
.gitignore feat(3.4.8): fix bug where you can crash zipline 2022-07-08 02:52:19 +00:00
.nvmrc feat: overhaul a lot of stuff (#171) 2022-09-23 18:19:27 -07:00
.prettierrc.json feat: prettier run (#200) 2022-10-19 19:43:01 -07:00
.yarnrc.yml chore: update deps & tsx -> esbuild 2022-10-22 14:23:23 -07:00
CONTRIBUTING.md feat: prettier run (#200) 2022-10-19 19:43:01 -07:00
docker-compose.dev.yml chore: update deps & tsx -> esbuild 2022-10-22 14:23:23 -07:00
docker-compose.yml feat: prettier run (#200) 2022-10-19 19:43:01 -07:00
Dockerfile chore: update deps & tsx -> esbuild 2022-10-22 14:23:23 -07:00
esbuild.config.js fix: recurse for entryPoints 2022-10-23 12:16:59 -07:00
LICENSE feat(v3.4.1): datasource api, for S3 functionality 2022-03-02 22:04:56 -08:00
mimes.json feat: prettier run (#200) 2022-10-19 19:43:01 -07:00
next-env.d.ts feat(v3.3): ctrl+v to upload image 2022-01-03 19:00:20 -08:00
next.config.js feat: prettier run (#200) 2022-10-19 19:43:01 -07:00
package.json feat(3.6.0-rc3): version & bump deps 2022-10-27 21:09:14 -07:00
README.md feat: add screenshots to readme 2022-10-27 21:53:12 -07:00
SECURITY.md feat: prettier run (#200) 2022-10-19 19:43:01 -07:00
tsconfig.json feat: prettier run (#200) 2022-10-19 19:43:01 -07:00
yarn.lock feat(3.6.0-rc3): version & bump deps 2022-10-27 21:09:14 -07:00
zip-env.d.ts refactor: clean up datasource stuff 2022-06-20 10:25:22 -07:00

A ShareX/file upload server that is easy to use, packed with features, and with an easy setup!

Stars Version GitHub last commit (branch) Discord

Build Docker Image (trunk) Docker Image (release)

Features

  • Configurable
  • Fast
  • Built with Next.js & React
  • Token protected uploading
  • Image uploading
  • Image compression
  • Password Protected Uploads
  • URL shortening
  • Text uploading
  • URL Formats (uuid, dates, random alphanumeric, original name, zws)
  • Discord embeds (OG metadata)
  • Gallery viewer, and multiple file format support
  • Code highlighting
  • Fully customizable Discord webhook notifications
  • OAuth2 registration (Discord and GitHub)
  • User invites
  • File Chunking (for large files)
  • File deletion once it reaches a certain amount of views
  • Easy setup instructions on docs (One command install docker-compose up -d)

Screenshots (click)

View full album at imgur

Login Page Dashboard Files Page

Usage

Install & run with Docker

This section requires Docker and docker-compose.

git clone https://github.com/diced/zipline
cd zipline

docker-compose up -d

After installing

After installing, please edit the docker-compose.yml file and find the line that says SECRET=changethis and replace changethis with a random string. Ways you could generate the string could be from a password managers generator, or you could just slam your keyboard and hope for the best.

Building & running from source

This section requires nodejs, yarn or npm.

git clone https://github.com/diced/zipline
cd zipline

# npm install
yarn install
# npm run build
yarn build
# npm start
yarn start

NGINX Proxy

This section requires NGINX.

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;
  }
}

Website

The default port is 3000, once you have accessed it you can see a login screen. The default credentials are "administrator" and "password". Once you login please immediately change the details to something more secure. You can do this by clicking on the top right corner where it says "administrator" with a gear icon and clicking Manage Account.

ShareX (Windows)

This section requires ShareX.

After navigating to Zipline, click on the top right corner where it says your username and click Manage Account. Scroll down to see "ShareX Config", select the one you would prefer using. After this you can import the .sxcu into sharex. More information here

Flameshot (Linux)

This section requires Flameshot, jq, and xsel.

You can either use the script below, or generate one directly from Zipline (just like how you can generate a ShareX config). To upload files using flameshot we will use a script. Replace $TOKEN and $HOST with your own values, you probably know how to do this if you use linux.

DATE=$(date '+%h_%Y_%d_%I_%m_%S.png');
flameshot gui -r > ~/Pictures/$DATE;

curl -H "Content-Type: multipart/form-data" -H "authorization: $TOKEN" -F file=@$1 $HOST/api/upload | jq -r 'files[0].url' | xsel -ib

Contributing

Bug reports

Create an issue on GitHub, please include the following (if one of them is not applicable to the issue then it's not needed):

  • The steps to reproduce the bug
  • Logs of Zipline
  • The version of Zipline
  • Your OS & Browser including server OS
  • What you were expecting to see

Feature requests

Create an issue on GitHub, please include the following:

  • Breif explanation of the feature in the title (very breif please)
  • How it would work (detailed, but optional)

Pull Requests (contributions to the codebase)

Create a pull request on GitHub. If your PR does not pass the action checks, then please fix the errors. If your PR was submitted before a release, and I have pushed a new release, please make sure to update your PR to reflect any changes, usually this is handled by GitHub.