File0 is a temporary file storage application, written in Sinatra for Ruby. It
stores files in Redis and sets a finite
EXPIRY on them (default is 12 hours).
Depending on your configuration of Redis, this means it's possible for files to
have never touched the disk of the device.
Clone this repository and run
bundle exec in the directory (assuming
you have Bundler installed).
Install redis-server and make sure it's running.
# For debian/ubuntu sudo apt-get install redis-server # For Arch pacman -Sy redis sudo systemctl start redis-server # For OS X brew install redis # For everything else I don't know, please read your docs
In order to start the server, run the command
rackup. This will start a
server on (by default) localhost:9292.
Haha, it's all manual! I've included a unicorn.rb file if you want to run it that way. By default, it'll run it in a file socket that you can then point a real webserver (like NGINX) at.
You've got a couple of options. Included is a basic unicorn.rb example configuration file if you want to do things that way. Requires configuring your webserver to point at the file socket, and everything should work.
However, because it's $CURRENT_YEAR, it also supports being deployed with docker-compose. To run file0 with docker-compose, simply run the following commands:
docker-compose build docker-compose up
This will start the service in rackup on forwarded port 9292. To allow external access, you will need to configure your webserver to proxy traffic to there.
TempFile objects in Ruby get written to
/tmp. In order to guarantee that
these files don't hit the disk, you'll need to make sure it's a proper
(and probably disable swapping) or have it mounted as a RAM disk. As for Docker,
docker-compose.yml will make sure
/tmp is a proper
tmpfs. If you invoke
Docker on your own without
docker-compose, you will have to add
to your Docker run command.