A very simple web application written in Python using Cherrypy web framework to upload files to web and to share them with others.

bsimjoo 2fc5a8fe2a به روزرسانی DOC/TODO.md 3 years ago
DOC 2fc5a8fe2a به روزرسانی DOC/TODO.md 3 years ago
webInterface c6552adfc7 fix #65 3 years ago
.gitignore 524364e17c new ignore 3 years ago
README.md aebbe1ab1b Alpha v0.3 3 years ago
icons-config.json 14b7b86ed3 icon handler bugs fixed 3 years ago
requirements.txt e85d14ccea urllib -> urllib3 3 years ago
server.py c6552adfc7 fix #65 3 years ago
server_config.ini.example 4f6867f455 works! fix #47 #44 #41 3 years ago
storage.py 6908a7b56c fix #71 3 years ago


potato egg header

PotatoEgg (🥔 + 🍆)

Build status

Run your own personal storage on the net!

A very simple web application written in Python using Cherrypy web framework to upload files to web and to share them with others.

:smiley: Guests can:

  • Browse files
  • See description and size of each file
  • Download files (they should provide a password if file had any)

:sunglasses: Admin:

  • Download and see hidden files(those starting with a dot)
  • See download counts for all files(experimental: /counter)
  • Can do whatever guests can including the ones below:
  • Change name, description or password of each file
  • See password of each file
  • Upload files from disk to storage
  • Upload files from web(by supplying a URL) to storage
  • Delete files
  • See SHA1 hashsum of files

As this web app has been designed for a single user and for personal use, there is only one admin to log into system. I mean there is only one pair of username and password. You may change the code a little to accept more pairs but all of those pairs will grant the one who wants to log into system the same permission and access level.


Just clone or download the repo and in repo's directory, run this:

python3 server.py -c server_config.ini.example

Now go to in your browser. Default password and username is admin/admin.

After that you might want to change config according to the comments in its file.


These are questions one might ask.

- Does PotatoEgg support HTTPS?

After realizing there is a secure property in the config file you might be asking yourself this question. Here's the answer:

Short answer: No unless you reverse-proxy PotatoEgg(using nginx for example)

Long answer: PotatoEgg uses CherryPy web framework and it does support SSL thus you can add SSL support yourself with no big effort. Otherwise you can serve your content securely(including files, their password and credentials of admin) just by reverse-proxying. You can ask PotatoEgg to bind to a UN*X socket and then some webserver(e.g. nginx) surf it.

- I don't have a server to host it!

That's bad but there is nothing we can do for you about it. You should get yourself a server otherwise this software won't get you anywhere. You can try one of these:

  • Ask a friend to give you access to their server if they have one.
  • Find a (free) shell server. The disk quota they give you is however very limited usually. These two links might be useful for you:

  • If you have a home internet connection and you can get a valid public IP address or you already have it, you can host it on your home computer. For decreasing power usage and increasing effecitveness you might want to get a cheap mini computer(Single board computers I mean) with a microSD with capacity of your choice on host PotatoEgg on that. It is not a good option for you if you live in countries like Iran where home internet connection like ADSL is so poor.

  • Get a cheap virtual Linux(or any other UN*X like) machine(e.g. VPS) and host it there. CPU and RAM(especially CPU) are less important and bandwidth and maximum monthly data traffic and storage size are much more important factors. You want to serve files not calculate millions of digits of PI or discover new prime numbers and such these.

  • Developer of backend of PotatoEgg, Farooq, uses a free shell server named hashbang for hosting and using PotatoEgg. the address is hashbang.sh but the way to sign up is a mystery and a puzzle and I don't think someone will solve it for you.


Authors = {Farooq Karimi Zadeh, Behnam Simjoo(BSimjoo)}

As you see it is a set and does not have order at all :smile:.

Farooq started the project and has written the backend and part of the frontend which is dealing directly with backend(Javascript).

On the other hand, Behnam has written the rest and most of the frontend which you see with your eye. He actually "beautified" the project. Thank you Behnam!


The project's code and templates are under GNU LGPL 3 or at your option any later version.

Icons used in this project are from Bootstrap Icons v1.0.0 under MIT/X11 License

Related docs: