Offsite is a simple downloader that can be hosted on the cloud. It can then be used to download files or torrents easily and can also stream supported video formats directly on your browser.
Sometimes even when we have a good internet connection certain downloads are extremely slow this often happens due to the geographical location of the server from which the files are being downloaded or due to some other reason.
This is where offsite can help, it downloads the files for you and since the app can be hosted on some cloud server it often downloads files faster than your internet connection.
Once offsite downloads the file(s) it can then directly serve the file(s) to you. So now instead of downloading the file(s) slowly from that server you let offsite download it at higher speeds and then you can download the same file(s) from offsite at the maximum speeds that your ISP provides.
A certain file with a size of 5 GB was taking a long time to download on your computer and only gave speeds up to 500 kB/s. You decided to download this file using offsite and found that offsite was able to download it at speeds around 4 MB/s
After the offsite download was complete you started to download the file from offsite's server and was able to do so at a much higher speed say 3 MB/s.
So the original download would have taken you ~2.778 hours when downloading at 500 kB/s
Now with offsite, it would take only ~49 minutes to download the same file, here's how...
Offsite downloads the file in 21 minutes @ 4 MB/s. You download the file from offsite in 28 minutes @ 3 MB/s.
But wait, that's not all...
Say a certain video is buffering even after you have a stable internet connection. Offsite might help, just paste the video link and offsite will download it for you.
If the file is in a compatible playable format like mp4, WebM and Ogg then you can directly stream it without having to download it, you can even try to stream it while offsite is still downloading the file.
(Try firefox while streaming videos from offsite if you face issues with chrome or any other chromium based browsers)
Some other features that offsite offers are...
- Resumable/partial download - Downloads can be paused and resumed.
- Streaming - Both normal downloads, as well as torrent downloads with mp4, WebM or Ogg files, can be streamed directly on the browser
- Customizable torrent downloads - Offsite uses the transmission torrent client under the hood so you can easily control your torrent downloads for example choose which files you want to download in a torrent.
- Simple UI with real-time updates - Offsite has a very simple UI but shows real-time updates about your downloads like download speed, ETA, status, etc.
To use this app read the instructions in the installation section.
Download/Stream individual torrent files
Control torrent downloads through the transmission torrent client web UI
Offsite uses the opensource bitTorrent client transmission for torrent downloads.
(You can find a script ./install_deps.sh
in this repository that can be used to install the client and additional required dependencies.)
After the torrent has been downloaded Offsite automatically zips the entire downloaded contents so that it can be downloaded as a single file. You can also stream or download individual files in the torrent.
Offsite exposes the transmission web UI for finer control of torrent downloads. Using the web UI you can pause torrent downloads, selectively choose files that you want to download, etc.
DISCLAIMER: If you choose to use this software do it at your own risk. In no event shall the authors be liable for any claim, damages, data loss, or other liability, whether in an action of contract, tort, or otherwise, arising from, out of, or in connection with the software or the use or other dealings in the software.
If you just want to try it locally I recommend using the Docker file included in the repository,
Install docker and docker-compose
Then just run docker-compose up
in the project root.
In order to benefit from Offsite, you must deploy your own copy of the server on some cloud environment.
If you face any issues during deployment please create an issue with the details and I will try to help you out and update this read me if required. Prerequisites
- Install elixir, refer to this guide
- Install Phoenix, refer to this guide
- Install Node js, refer to this page
Deploying your own server is easy and free of cost, keep reading to know how...
To host our backend server you can use any service you like, in the guide we will use Gigalixir which makes it super easy to host elixir web apps for free.
This repository also contains a docker file if you want to use docker for deployment Our app does not need any database so that makes things simpler for us.
-
First clone this repository using:
git clone https://github.com/Arp-G/offsite.git
-
Next install the gigalixir client, refer to this page for installation details.
-
Make sure you create a free account in gigalixir.com (Note: One gigalixir account can host only one free app)
-
Create a gigalixir app
APP_NAME=$(gigalixir create)
-
Add a the gigalixir git remote by using the git:remote command
gigalixir git:remote $APP_NAME
-
Create the following configuration variables Configurations:
- SECRET_KEY_BASE - A secret key base for the backend server. You can easily generate such a key using the command
mix phx.gen.secret
To protect the offsite client we are using simple HTTP basic auth. The following credentials will be required by anyone who tries to use the website.
- AUTH_USERNAME - Username for HTTP basic auth
- AUTH_PASSWORD - Passowrd for HTTP basic auth.
- SECRET_KEY_BASE - A secret key base for the backend server. You can easily generate such a key using the command
The above configuration can be set using commands like
gigalixir config:set SECRET_KEY_BASE=secretkeybase
gigalixir config:set AUTH_USERNAME=Jhon
gigalixir config:set AUTH_PASSWORD=secretpassword
The default values for the above configuration are...
AUTH_USERNAME=offsite
AUTH_PASSWORD=offsite
If you don't configure the above 2 environment variables then these defaults will be used.
- Now we need to install some additional dependencies for torrent download to work.
- SSH into your running server by using the command:
gigalixir ps:ssh
(Learn more here) - Run the following script
./install_deps.sh
- SSH into your running server by using the command:
Note this script installs the transmission-torrent client and package for zipping files. It must be run every time after deployment or incase your server gets restarted
- Now open your application using
gigalixir open
.
That's all we need!
Want to contribute? Great! Feel free to pick up an existing issue or some new feature and I will be happy to review PRs and merge them.
Have questions? Feel free to create an issue here.
MIT