PicoShare - A Minimalist, Easy-To-Host Service for Sharing Files

PicoShare is a self hosted file sharing solution with the option to use duplication from Litestream. Control guest uploading and downloading. πŸ“

PicoShare - A Minimalist, Easy-To-Host Service for Sharing Files

I'm always intrigued by the different file upload applications and how they differ from one another. Why is one better than the other or what makes it different from the other available options? I think the answer to that question is completely subjective to your own use case scenario and what you are looking to use it for.

I want to take a look at PicoShare and see what it offers. So let's dive in, install it and take a look at what it's all about!

What is PicoShare?

PicoShare is a service for sharing images, videos, and other files.

On PicoShare, only you can upload files. You can share links to those files with anyone, and they never have to sign up for an account.

PicoShare Features

  • Direct download links: PicoShare gives you a direct download link you can share with anyone. They can view or download the file with no ads or signups.
  • No file restrictions: Unlike sites like imgur, Vimeo, or SoundCloud that only allow you to share specific types of files, PicoShare lets you share any file of any size.
  • No resizing/re-encoding: If you upload media like images, video, or audio, PicoShare never forces you to wait on re-encoding. You get a direct download link as soon as you upload the file, and PicoShare never resizes or re-encodes your file.

Is it Easy to Install or Deploy?

That's a question that was answered by the developer himself. Michael Lynch states:

One of the things I’m trying to preserve with PicoShare is making it easy to deploy

PicoShare can be installed from source, Docker or Docker with cloud data replication through Litestream.

Where do The Uploaded Files Go?!

When asked about the the file data architecture, here's what he had to say:

PicoShare’s wacky architectural decision is that it stores all file data in the SQLite database as blob data, whereas other apps store files directly on the filesystem. Storing everything in SQLite has its downsides, but the big upside is that you effectively get replication for free by hooking PicoShare up to Litestream. You can kill the container and start it later, and PicoShare will restore your data from the cloud storage location and continue as if there was no interruption.

I chose to install PicoShare using the standard Docker install with the provided Docker run command. This does not have the data duplication feature options baked in. I installed it purely for testing the application.

docker run \
  --env "PORT=3001" \
  --env "PS_SHARED_SECRET=somesecretpass" \
  --publish 3001:3001/tcp \
  --volume "${PWD}/data:/data" \
  --name picoshare \
  mtlynch/picoshare

The "PS_SHARED_SECRET" variable is your admin password so be sure to choose something secure. And like I mentioned above, all the files are stored in the db file so don't expect to map the data volume and find all of your uploaded files. You will only find the PicoShare db file there.

Installation went quick and smooth as expected with most Docker installs. PicoShare was up and running within seconds. I was immediately able to begin uploading images and text from my clipboard with the ability to choose an expiration time from 1 day to... well, never.

The files page list is clean and easy to read with options to delete or copy the link to share. You can see clearly the file size, when it was uploaded and how many days are left until the file will expire.

Guest links allow other users to upload files to this PicoShare server without signing in.

Share a guest link with someone if you want an easy way for them to share a file with you.

Final Notes and Thoughts

If you need a file sharing option with guest uploading options and automated file deletion, PicoShare is a fantastic option. The option to use Litestream as duplication can come in handy if your server has an issue. It allows you to just spin up another instance of PicoShare on another machine with all the files still in tact.

One thing I did notice when using PicoShare is the text uploading feature could use a little polishing. For example, if you copy text from a website that has a link or HTML formatting, it will also upload the HTML code to the snippet. And there is no syntax highlighting for text uploads but that doesn't speak to the focus of PicoShare.

I realized this is the file sharing solution I always wanted! Now I just need to talk Michael into implementing ShareX support πŸ˜‰

If you find PicoShare useful, be sure to star the project on Github! You can also check out the PicoShare demo.

GitHub - mtlynch/picoshare: A minimalist, easy-to-host service for sharing images and other files
A minimalist, easy-to-host service for sharing images and other files - GitHub - mtlynch/picoshare: A minimalist, easy-to-host service for sharing images and other files