Awesome Open Source
Awesome Open Source


Image Uploader

An open source, self hosted image uploader
Explore the docs »

Dockerhub Frontend · Dockerhub Backend · Report Bug · Request Feature

Table of Contents
  1. About The Project
  2. Getting Started
  3. Roadmap
  4. Contributing
  5. License
  6. Contact

About The Project

Example Video

There are already a few image uploader out there in the internet, however, I didn't find any uploader which is fully open source, lightweight and made for self hosting. So I created one myself and hope you enjoy it.

You may also suggest changes by forking this repo and creating a pull request or opening an issue. Thanks to all the people have have contributed to expanding this project!

Built With

Here a list of the major frameworks I used for this project.

Getting Started

There are two ways on how to host this project. You can either use docker or host it with node. I would highly suggest hosting it with docker since it's more flexible.

Hosting it with Docker

Setting it up

In order to host the project you will need to create a docker-compose file. These files are combining multiple docker images to interact with each other.

The file needs to be called docker-compose.yml paste the following code in the file.

Insert in docker-compose.yml:

version: "3.8"
        image: vallezw/image-uploader-client
            - "80:80"
            - "API_URL=http://localhost:5000"
            - "CLIENT_URL=http://localhost"
        image: vallezw/image-uploader-backend 
            - "5000:5000"
            - .upload/:/usr/src/app/upload

Run the docker file

Once you finished setting up the file you can go ahead and run it with

  1. Building
    docker-compose build
  2. Hosting the project
    docker-compose up

Changing the URL

In case you want to host the project without Docker you can do that too.

    - "API_URL=http://your_api_url:your_port"
    - "CLIENT_URL=http://your_client_url:your_port"

After that you are good to go and host it on your custom domain

Hosting with Node

Running the project

This is the option for those who don't want to host it with docker.

  1. Go into the backend directory with a terminal/powershell
    cd backend/
  2. Install the npm serve package to host the project
    npm install -g serve
  3. Build and run it
    npm run build

Changing the URL

In case you want to change the URL you have to change the env variables.

  1. Go into the frontend directory and open the .env file
  2. Change the API_URL and the CLIENT_URL to your specific usecase

After that you are good to go and host it on your custom domain


See the open issues for a list of proposed features (and known issues).


Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are greatly appreciated.

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request


Distributed under the MIT License. See LICENSE for more information.


Valentin Zwerschke - @vallezw

Project Link:

Related Awesome Lists
Top Programming Languages
Top Projects

Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
Javascript (1,046,457
Reactjs (160,679
Docker (96,957
Express (29,834
Self Hosted (1,147
Image Uploader (172