tinystash icon indicating copy to clipboard operation
tinystash copied to clipboard

A storage-less database-less file sharing service powered by OpenResty

ᵗⁱⁿʸ[stash]

version license Docker pulls

A storage-less database-less file sharing service.

Written in Lua. Powered by LuaJIT and OpenResty.

Introduction

tiny[stash] is a website and a Telegram bot for file sharing. A key feature of the service is the fact that it does not actually store anything — all files are stored on Telegram file servers and proxied by the service. You might be familiar with this idea — there is a plenty of file sharing services that work this way. But tiny[stash] is going even further. In addition, it does not use any kind of database, all required information is encoded, encrypted and stored directly in a URL.

It is also undemanding in terms of machine resources. If it is possible to run the nginx server on some hardware, it'll probably be possible to run tiny[stash] too. It also does not require a lot of RAM or disk storage because all data are processed in a streaming fashion.

Installing

OpenResty

See instructions on OpenResty website.

Lua packages

$ while read dep; do opm --cwd get "$dep"; done < requirements.opm

Configuring

$ cp config.example.lua config.lua
$ vi config.lua

Setting up Telegram bot webhook

$ ./tinysta.sh webhook set

Running

$ ./tinysta.sh run

Quick deployment with Docker

  1. Prepare config.lua as described above.

  2. Set up Telegram bot webhook :

$ docker run --rm -it \
    -v /path/to/config.lua:/opt/tinystash/config.lua \
    un1def/tinystash webhook set
  1. Run Docker container:
$ docker run -d \
    --restart unless-stopped \
    -v /path/to/config.lua:/opt/tinystash/config.lua \
    -p 80:80 \
    --name tinystash \
    un1def/tinystash

License

Source code is licensed under the MIT License.

Source Sans Pro font is licensed under the SIL Open Font License, Version 1.1.

Source Code Pro font is licensed under the SIL Open Font License, Version 1.1.