Zipline - That next generation File Upload Server

By Darren Nathanael on Wed, Dec 27, 2023 / Updated at Tue, Jan 2, 2024

Introduction

“For God so loved the world that He gave . . .”

John 3:16

Wait… wrong introduction.

There is no doubt that sometimes you needed an image host to temporarily or permanently share some images to your friends, family, acquaintances’, or even strangers on the internet.

While sites like imgur, and other image sharing exist, there is no guarantee that it will stay online all the time, or that your image will be kept on their platform forever. :(

Especially with big player like imgur, banning / removing / purging image; Self Hosting your own image sharing platform just make sense.

Familiar with this, broken image link? yeah me too buddy.

Or this?

Lets self host our own then, our server’ our rules.

Chapter 1

Are there alternative to Zipline? Absolutely, take a look at Ass and many more.

ass is a self-hosted ShareX upload server written in Node.js. I initially started this project purely out of spite. ass aims to be as unopinionated as possible, giving users & hosts alike the ability to modify nearly everything.

Not joking, Ass does exist.

The reason you might want to use Zipline rather than the alternative is management, zipline is very easy to manage and bonus point for being resource friendly.

You can even run zipline on your router*[^1]

[^1] If your router is a modern one, like a MikroTik hAP AX3

Chapter 2

Installing Zipline is a 3 steps process,

1git clone https://github.com/diced/zipline
2cd zipline
3docker compose up -d

And there you go, zipline is installed. :D

Well assuming you already have Git & Docker that command should run without an issue. However installing Docker is very simple too, for a quick install of Docker CE, you can run the command below:

1curl -sSL https://get.docker.com/ | CHANNEL=stable bash

Chapter 3

Configuring Zipline.

After setting up Zipline for the first time, you may login to the dashboard with the username administrator and the password password.

Once logged in, change your damn password; Once that steps is completed, the next steps would be to configure your web server. In this blog I chose NGINX on Debian, as Debian has been my choice for stability since 1993.

“For with much wisdom comes much sorrow; the more knowledge, the more grief.”

Ecclesiastes 1:18

See if you would just run apt-get install nginx on a Debian base system you would not get the latest stable version of NGINX. Instead you would get horribly outdated version of NGINX. To solve that follow the following of the followers the followi~….

Step 1: Import NGINX GPG Key

1curl -fSsL https://nginx.org/keys/nginx_signing.key | gpg --dearmor | tee /usr/share/keyrings/nginx-archive-keyring.gpg > /dev/null

Step 2: Import NGINX APT Repository

1echo "deb [arch=amd64,arm64 signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] http://nginx.org/packages/debian `lsb_release -cs` nginx" | tee /etc/apt/sources.list.d/nginx.list

This will import NGINX stable version of NGINX. whew who would have guessed. This is fine for what we are doing, if you want to host something else other than Zipline and would need a mainline version of NGINX, run the following:

1echo "deb [arch=amd64,arm64 signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] http://nginx.org/packages/mainline/debian `lsb_release -cs` nginx" | tee /etc/apt/sources.list.d/nginx.list

Next steps would be to pin NGINX o_O

1echo -e "Package: *\nPin: origin nginx.org\nPin: release o=nginx\nPin-Priority: 900\n" | tee /etc/apt/preferences.d/99nginx

By doing that, we are forcing APT to use our NGINX repo instead of the default.

After that you run, apt-get update then install NGINX

1apt-get install nginx

If all things goes well, you should have the latest version of NGINX

Then follow the Zipline Guide for NGINX Configuration. https://zipline.diced.sh/docs/guides/nginx/nginx-no-ssl or https://zipline.diced.sh/docs/guides/nginx/nginx-ssl

No need for me to lay it out for you sweetie.

Chapter 4

ZIPLINE!!!! WE HAVE IT!!!! NOW WE CAN SHARE SCREENSHOTS AND STUFF ONLINE WITHOUT COMPRESSION!!!

I made this blog out of pure boredom.

Connect With Me: connect.darrennathanael.com
^ be sure to follow me or else I will steal your pizza.

Copyright © 2023 Darren Nathanael, All rights reserved.

Thumbnail image & Header image; Copyright © 2024 Gateway Publishing® [^2]

[^2] With some modification applied. All rights belong to their respective copyright owner.