{"id":13457148,"url":"https://github.com/diced/zipline","last_synced_at":"2026-04-07T07:03:24.828Z","repository":{"id":37049601,"uuid":"257791501","full_name":"diced/zipline","owner":"diced","description":"A ShareX/file upload server that is easy to use, packed with features, and with an easy setup!","archived":false,"fork":false,"pushed_at":"2026-04-06T05:55:55.000Z","size":12996,"stargazers_count":3042,"open_issues_count":3,"forks_count":234,"subscribers_count":14,"default_branch":"trunk","last_synced_at":"2026-04-06T08:14:08.102Z","etag":null,"topics":["docker","file-server","file-sharing","file-upload","file-uploader","gallery","mantine","reactjs","screenshot","sharex","sharex-server","sharex-uploader","zipline"],"latest_commit_sha":null,"homepage":"https://zipline.diced.sh","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/diced.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"diced"}},"created_at":"2020-04-22T04:29:56.000Z","updated_at":"2026-04-06T06:46:46.000Z","dependencies_parsed_at":"2026-01-07T23:03:37.596Z","dependency_job_id":null,"html_url":"https://github.com/diced/zipline","commit_stats":{"total_commits":613,"total_committers":38,"mean_commits":16.13157894736842,"dds":"0.19902120717781402","last_synced_commit":"aa9f0796ab08bfbe482c635b462701c9963cb541"},"previous_names":[],"tags_count":92,"template":false,"template_full_name":null,"purl":"pkg:github/diced/zipline","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/diced%2Fzipline","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/diced%2Fzipline/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/diced%2Fzipline/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/diced%2Fzipline/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/diced","download_url":"https://codeload.github.com/diced/zipline/tar.gz/refs/heads/trunk","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/diced%2Fzipline/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31503394,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T03:10:19.677Z","status":"ssl_error","status_checked_at":"2026-04-07T03:10:13.982Z","response_time":105,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","file-server","file-sharing","file-upload","file-uploader","gallery","mantine","reactjs","screenshot","sharex","sharex-server","sharex-uploader","zipline"],"created_at":"2024-07-31T08:01:34.196Z","updated_at":"2026-04-07T07:03:24.823Z","avatar_url":"https://github.com/diced.png","language":"TypeScript","funding_links":["https://github.com/sponsors/diced"],"categories":["TypeScript","Software","🙏 Credits","Table of Contents","Apps","Useful"],"sub_categories":["File Transfer - Single-click \u0026 Drag-n-drop Upload","🛡️ Proxy","File Sharing","FileSharing"],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/diced/zipline/trunk/public/zipline_small.png\"/\u003e\n\nThe next generation ShareX / File upload server\n\n![Stars](https://img.shields.io/github/stars/diced/zipline?logo=github\u0026style=for-the-badge)\n![Version](https://img.shields.io/github/package-json/v/diced/zipline?logo=git\u0026logoColor=white\u0026style=for-the-badge)\n![GitHub last commit (branch)](https://img.shields.io/github/last-commit/diced/zipline/trunk?logo=git\u0026logoColor=white\u0026style=for-the-badge)\n[![Discord](https://img.shields.io/discord/729771078196527176?color=%23777ed3\u0026label=discord\u0026logo=discord\u0026logoColor=white\u0026style=for-the-badge)](https://discord.gg/EAhCRfGxCF)\n\n![Build](https://img.shields.io/github/actions/workflow/status/diced/zipline/build.yml?logo=github\u0026style=for-the-badge\u0026branch=trunk)\n\nDocumentation: [zipline.diced.sh](https://zipline.diced.sh)\n\n\u003c/div\u003e\n\n## Features\n\n- Setup Quickly: [Get Started with Docker](https://zipline.diced.sh/docs/get-started/docker)\n- Configure\n- Upload any file\n- Folders\n- Tags\n- URL shortening\n- Embeds\n- Discord Webhooks\n- HTTP Webhooks\n- OAuth2\n- 2FA\n- Passkeys\n- Password Protection\n- Image Compression\n- Video Thumbnails\n- API\n- PWA\n- Partial Uploads\n- Invites\n- Quotas\n- Custom Themes\n- ... and more!\n\n# Usage\n\nVisit [the docs](https://zipline.diced.sh/docs/get-started/docker) for a more in-depth guide on how to get started.\n\n## Install and Run with Docker\n\nThis is the recommended way to run Zipline:\n\n```yaml\nservices:\n  postgresql:\n    image: postgres:16\n    restart: unless-stopped\n    env_file:\n      - .env\n    environment:\n      POSTGRES_USER: ${POSTGRESQL_USER:-zipline}\n      POSTGRES_PASSWORD: ${POSTGRESQL_PASSWORD:?POSTGRESSQL_PASSWORD is required}\n      POSTGRES_DB: ${POSTGRESQL_DB:-zipline}\n    volumes:\n      - pgdata:/var/lib/postgresql/data\n    healthcheck:\n      test: ['CMD', 'pg_isready', '-U', 'zipline']\n      interval: 10s\n      timeout: 5s\n      retries: 5\n\n  zipline:\n    image: ghcr.io/diced/zipline\n    ports:\n      - '3000:3000'\n    env_file:\n      - .env\n    environment:\n      - DATABASE_URL=postgres://${POSTGRESQL_USER:-zipline}:${POSTGRESQL_PASSWORD}@postgresql:5432/${POSTGRESQL_DB:-zipline}\n    depends_on:\n      postgresql:\n        condition: service_healthy\n    volumes:\n      - './uploads:/zipline/uploads'\n      - './public:/zipline/public'\n      - './themes:/zipline/themes'\n    healthcheck:\n      test: ['CMD', 'wget', '-q', '--spider', 'http://localhost:3000/api/healthcheck']\n      interval: 15s\n      timeout: 2s\n      retries: 2\n\nvolumes:\n  pgdata:\n```\n\n\u003e [!WARNING]\n\u003e Zipline requires a cpu with AVX support. We don't provide binaries or images that have support for non-AVX cpus\n\n### Volumes\n\n- `./uploads` - The folder where all the user uploads are stored (the default is `./uploads`)\n- `./public` - The folder where all the public assets are stored (must mount to `/zipline/public`)\n- `./themes` - The folder where all the custom themes are stored (must mount to `/zipline/themes`)\n\n### Generating Secrets\n\n```bash\necho \"POSTGRESQL_PASSWORD=$(openssl rand -base64 42 | tr -dc A-Za-z0-9 | cut -c -32 | tr -d '\\n')\" \u003e .env\necho \"CORE_SECRET=$(openssl rand -base64 42 | tr -dc A-Za-z0-9 | cut -c -32 | tr -d '\\n')\" \u003e\u003e .env\n```\n\nWithout the `CORE_SECRET` environment variable, Zipline will not start.\n\n### Changing where uploads are stored\n\nBy default, Zipline will default to the `./uploads` folder, which is also reflected in the `docker-compose.yml` above. If you want to change this, you can set the `DATASOURCE_LOCAL_DIRECTORY` environment variable to a different path.\n\n```bash\nDATASOURCE_LOCAL_DIRECTORY=/path/to/your/local/files\n# or relative to the working directory\nDATASOURCE_LOCAL_DIRECTORY=./relative/path/to/files\n```\n\n\u003e [!NOTE]  \n\u003e Remember to change volume mappings in the docker-compose.yml file if you change this.\n\n### Changing the port and hostname\n\nBy default, Zipline binds to `0.0.0.0:3000`, which is also reflected in the `docker-compose.yml` above. If you want to change this, you can set the `CORE_PORT` and `CORE_HOSTNAME` environment variables to a different port and hostname.\n\n```bash\nCORE_PORT=80\nCORE_HOSTNAME=localhost\n```\n\n\u003e [!NOTE]\n\u003e If you change the port, you will need to update the `ports` section in the `docker-compose.yml` file.\n\n### Using S3\n\nIf you want to use S3 instead of the local filesystem, you can set the following environment variables:\n\n```bash\nDATASOURCE_TYPE=s3\n\nDATASOURCE_S3_ACCESS_KEY_ID=access_key_id\nDATASOURCE_S3_SECRET_ACCESS_KEY=secret\nDATASOURCE_S3_BUCKET=zipline\nDATASOURCE_S3_REGION=us-west-2\n```\n\nFor more information, like other providers, see the [docs](https://zipline.diced.sh/docs/config/datasource#s3-datasource).\n\n### Starting Zipline\n\nSimply run the following command to start the server:\n\n```bash\ndocker compose up -d\n```\n\nYou should be able to access the website at `http://localhost:3000` or the port you specified.\n\n## Manual Install\n\nSee [docs](https://zipline.diced.sh/docs/get-started/source) for more information.\n\n# Migrating from v3\n\nZipline v4 was a complete rewrite, and as such, there is no upgrade path from v3 to v4. You will need to export your data from v3 and import it into v4. This process is made easier by the fact that v4 has a built-in importer to import data from v3.\n\nSee [migration](https://zipline.diced.sh/docs/migrate) for more information.\n\n# Contributing\n\nContributions of any kind are welcome, whether they are bug reports, pull requests, or feature requests.\n\n## Bug Reports\n\nCreate an issue on GitHub and use the template, please include the following (if one of them is not applicable to the issue then it's not needed):\n\n- The steps to reproduce the bug\n- Logs of Zipline\n- The version of Zipline, and whether or not you are using Docker (include the image digest/tag if possible)\n- Your OS \u0026 Browser including server OS\n- What you were expecting to see\n- How it can be fixed (if you know)\n\n## Feature Requests\n\nCreate a discussion on GitHub, and please include the following:\n\n- Brief explanation of your feature in the title (very brief)\n- How it would work (be detailed)\n\n## Pull Requests\n\nCreate 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.\n\n### Development\n\nHere's how to setup Zipline for development\n\n#### Nix\n\nIf you have [Nix](https://nixos.org) and [direnv](https://direnv.net/) installed, you can simply cd into the cloned directory and run the following command:\n\n```bash\ndirenv allow\n```\n\nAfter doing so, your shell will be setup for development.\n\nIf you aren't using direnv, you can run the following command to enter the nix shell:\n\n```bash\nnix develop --no-pure-eval\n```\n\nUseful commands regarding the postgres server:\n\n| Command         | Description                                   |\n| --------------- | --------------------------------------------- |\n| `pgup`          | Starts the postgres server in the background. |\n| `pg_ctl status` | See if the postgres server is running         |\n| `minioup`       | Start a Minio server for testing S3           |\n| `downall`       | Stops any running postgres or minio service.  |\n\nAfter familiarizing yourself with the environment, you can continue below (skipping the prerequisites since they are already installed).\n\n#### Prerequisites\n\n- nodejs (lts -\u003e 20.x, 22.x)\n- pnpm (10.x)\n- a postgresql server\n\n#### Setup\n\nYou should probably use a `.env` file to manage your environment variables, here is an example .env file with every available environment variable:\n\n```bash\nDEBUG=zipline\n\n# required\nCORE_SECRET=\"a secret that is 32 characters long\"\n\n# required\nDATABASE_URL=\"postgresql://postgres:postgres@localhost:5432/zipline?schema=public\"\n\n# these are optional\nCORE_PORT=3000\nCORE_HOSTNAME=0.0.0.0\n\n# one of these is required\nDATASOURCE_TYPE=\"local\"\n# DATASOURCE_TYPE=\"s3\"\n\n# if DATASOURCE_TYPE=local\nDATASOURCE_LOCAL_DIRECTORY=\"/path/to/your/local/files\"\n\n# if DATASOURCE_TYPE=s3\n# DATASOURCE_S3_ACCESS_KEY_ID=\"your-access-key-id\"\n# DATASOURCE_S3_SECRET_ACCESS_KEY=\"your-secret-access-key\"\n# DATASOURCE_S3_REGION=\"your-region\"\n# DATASOURCE_S3_BUCKET=\"your-bucket\"\n# DATASOURCE_S3_ENDPOINT=\"your-endpoint\"\n# ^ if using a custom endpoint other than aws s3\n```\n\nInstall dependencies:\n\n```bash\npnpm install\n```\n\nFinally you may start the development server:\n\n```bash\npnpm dev\n```\n\nIf you wish to build the production version of Zipline, you can run the following command:\n\n```bash\npnpm build\n```\n\nAnd to run the production version of Zipline:\n\n```bash\npnpm start\n```\n\n#### Making changes to the database schema\n\nZipline uses [prisma](https://www.prisma.io/) as its ORM, and as such, you will need to use the prisma CLI to facilitate any changes to the database schema.\n\nOnce you have made a change to `prisma.schema`, you can run the script `db:migrate` to generate a migration file. This script doesn't apply the migration, as Zipline handles applying migrations itself on startup.\n\n```bash\npnpm db:migrate\n```\n\nIf you wish to push changes to the database without generating a migration file, you can run the script `db:prototype`. This is only recommended for testing purposes, and should not be used in production.\n\n```bash\npnpm db:prototype\n```\n\n#### Linting and Formatting\n\nZipline will fail to build unless the code is properly formatted and linted. To format the code, you can run the following command:\n\n```bash\npnpm validate\n```\n\n#### Testing `zipline-ctl`\n\nTo build the ctl, you can run the following command:\n\n```bash\npnpm build:server\n```\n\nthen run any command you want\n\n```bash\npnpm ctl help\n```\n\n# Documentation\n\nDocumentation is located at [zipline.diced.sh](https://zipline.diced.sh) and the source is located at [github.com/diced/zipline-docs](https://github.com/diced/zipline-docs).\n\n# Security\n\nSecurity issues are taken seriously, and should be reported via [GitHub Advisories](https://github.com/diced/zipline/security/advisories). For more information see the [security policy](SECURITY.md).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdiced%2Fzipline","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdiced%2Fzipline","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdiced%2Fzipline/lists"}