Zipline

stack File Sharing

File sharing and screenshot host that works with ShareX, Flameshot and the like, with a link shortener, text pastes, folders, and files that can expire, need a password or delete themselves after so many views.

Install Zipline

It isn't in the main Portainer Templates list yet, so use this one. Portainer takes one URL at a time, so it swaps out whatever list you had before.

In Portainer, head to Settings --> App Templates, paste this in as the URL and save.

https://raw.githubusercontent.com/NotAFlightRisk/portainer-templates-extras/main/templates.json
  1. Open App Templates and pick Zipline.
  2. Fill in Secret and Database password. Everything else can stay as it is.
  3. Hit Deploy the stack, then open http://<your-server>:3200 in a browser.

Before you start

Set both secrets before you deploy (openssl rand -hex 32 makes good ones), since the stack won't start without them, and keep them the same when you redeploy. Then open http://<your-host>:3200 (or whichever port you picked) and create the first account, which becomes the super admin. There are no open sign-ups, so you add everyone else under Users. Settings, under your name in the top corner, makes ready-to-use ShareX and Flameshot configs. Links use whatever address you opened it on, and the rest of the settings (domains, HTTPS links, sign-ups, the 100 MB file limit) live in the dashboard under Server Settings. It checks GitHub for new versions, which you can switch off there under Features. Files and thumbnails live in the zipline-uploads volume, everything else in postgres-data. Docs: zipline.diced.sh

Settings

What the Portainer form asks for. With compose they go in the .env file instead.

VariableWhat it's forDefault
ZIPLINE_SECRETSecret (required) At least 32 characters. Generate one with: openssl rand -hex 32. Keep it the same when you redeploy, or every login and upload token stops working. Needs filling in
ZIPLINE_DB_PASSWORDDatabase password (required) Generate one with: openssl rand -hex 32. Keep it the same when you redeploy, or Zipline can't reach its database. Needs filling in
ZIPLINE_PORTHost port for the web UI 3200

Services

The containers this stack runs, with ports as they come out of the box.

ServiceImagePorts
ziplineghcr.io/diced/zipline:latest3200:3000
postgrespostgres:17-alpineInternal only

More apps