• Stars
    star
    107
  • Rank 322,321 (Top 7 %)
  • Language
    C#
  • Created over 8 years ago
  • Updated 4 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Free file hosting website

Void.cat

Free, simple file hosting

Features

  • Profiles
  • File bandwidth statistics
  • Administration features
  • File download paywall

Running

Use the docker image to run void.cat:

docker run --rm -it -p 8080:80 git.v0l.io/kieran/void-cat:latest

Then open your browser at http://localhost:8080.

The first registration will be set as admin, so make sure to create your own account

Deploying

Docker compose is the best option for most as this sets up postgres / redis / clamav.

Run the following commands to get going:

git clone https://git.v0l.io/Kieran/void.cat
cd void.cat/
docker compose up -d

You should now be able to access void.cat on http://localhost.

If you already have something running on port 80 you may have problems, you can modify the docker-compose.yml file to change the port.

You can modify the site config in ./VoidCat/appsettings.compose.json, this is recommended for anything other than a simple test

Usage

Simply drag and drop your files into the dropzone, or paste your screenshots or files into the browser window.

From cli you can upload with curl:

export FILE=memes.jpg
curl -X POST \
  -H "V-Content-Type: $(file --mime-type -b $FILE)" \
  -H "V-Full-Digest: $(sha256sum -bz $FILE | cut -d' ' -f1)" \
  -H "V-Filename: $FILE" \
  --data-binary @$FILE \
  "https://void.cat/upload?cli=true"

Or you can create an alias function in ~/bash_aliases like so:

vcu() {
  echo "Uploading $1"
  curl -X POST \
    -H "V-Content-Type: $(file --mime-type -b $1)" \
    -H "V-Full-Digest: $(sha256sum -bz $1 | cut -d' ' -f1)" \
    -H "V-Filename: $1" \
    --data-binary @$1 \
    "https://void.cat/upload?cli=true"
  echo -e ""
}

Uploading from cli will simply become vcu memes.jpg

You can also upload files to your user account by specifying an API key in the curl command:

  -H "Authorization: Bearer MY_API_KEY"

This command will return the direct download URL only. To get the json output simply remove the ?cli=true from the url.

Development

To run postgres in local use:

docker run --rm -it -p 5432:5432 -e POSTGRES_DB=void -e POSTGRES_PASSWORD=postgres postgres -d postgres

To run MinIO in local use:

docker run --rm -it -p 9000:9000 -p 9001:9001 minio/minio -- server /data --console-address ":9001"