Decentralized Websites

From VuzeWiki
Jump to: navigation, search

Vuze supports the ability to browse the contents of a download in a web browser. If the download contains an 'index.html' file then this will be shown in the browser, otherwise a directory listing of the top level files in the download will be displayed.

Browsing[edit]

There are two ways of browsing a download in this way:

  • Double clicking in a Library view - if the download contains an 'index.html' file then this becomes the default action for it
  • Right-clicking on the download - select the 'Open in Browser' menu item (under 'Content' tab in the new context menu)
WebSite Browse.png

The 'double click' action can be configured to always use a browser via Tools->Options->Interface->Tables: Library. Likewise the default action for downloads containing 'index.html' can be turned off and also the default browser type changed.

The 'Files View' also supports a right-click menu to browse specific files.

Two types of browser are supported:

  • Public - this is your default internet browser
  • Anonymous - when installed via the Tor Browser plugin this allows you to open the download in the Tor Browser

The download contents is made available to the browser via a local address - the browser will display

http://127.0.0.1:<port>/...

in the address area.

For both types of browser, if the website contained within the download access external resources (for example, java script) then the browser will fetch these as required. For the public browser these requests will be routed over your internet connection as usual. For the anonymous browser these will be routed via the Tor (or I2P) networks and thus offer the privacy features associated with these networks.

Supported Downloads[edit]

Any torrent can be browsed in this way - there are no requirements on torrent format or contents. If the download doesn't contain HTML it can still be useful to view it within the browser - for example some browsers will allow direct playback of audio/video files. If you have a Chromecast device then this will allow you to play the content on your devices directly.

Sequential Downloading[edit]

Open a browser to display the download as detailed above. When you click on a file in the browser either to play it back in the browser or to save it to disk (right-click menu, 'save target as...') then this will sequentially download the required file. Alternatively, copy the file's URL and paste it into an application such as VLC to play it.

Static Content[edit]

Place all of your web resources into a folder (and sub-folders as required), ensure that there is an appropriate 'index.html' and create a torrent as usual (either use the built in Vuze torrent creation wizard under File->New Torrent... or your favorite torrent creation software).

Ensure that all URL references within your content are relative URLs.

Publish the torrent and seed it.

Any external absolute references from your static content to other resources will be loaded by the browser as required when the browser opens the locally hosted pages.

If you have an existing website you may find that a 'website copier' such as HTTrack (http://www.httrack.com/) can make a copy of it for distribution.

Dynamic Content[edit]

Whilst efficient distribution of static website content is in itself a useful feature it is often the case that some kind of dynamic behavior is also needed.

A good example would be a search feature - consider the Vuze Wiki example covered at the end of this article. Whilst it is possible to encode the metadata required for searching into JavaScript, or other resources bundled with the distribution, and interpret this with JavaScript to produce the required results within the browser, this technique is rather limited. For example, when viewing the site anonymously with the Tor Browser, JavaScript is disabled by default.

Absolute URLs from the static content will however be handled by the browser as usual - so, following the search example, it is possible for the search operation to be carried out by an external website from the local pages. There are a few things to bear in mind with this though:

  • for efficiency the search results should link back to the static content in the torrent
  • the search results would need to be relative to the snapshot of the content at the time of capture for distribution (assuming that the content evolves over time)

Of course the usage scenario may make some of these concerns less significant. If the content consisted of a periodically updated catalog of items and the external linking from the static content were to a secure, anonymous payment system then it may well suffice to produce a new website snapshot each week and link off to a completely separate payment system.

Handling the evolution of website content more naturally is a separate area of investigation. One possible approach is to use a read-only chat channel to post periodic updates and to configure Vuze to use that channel as an RSS feed with auto-download enabled.

Incomplete Downloads[edit]

Vuze will dynamically prioritize the files being requested by the browser so it is possible to start browsing the download as soon as you have added it to Vuze. This includes playback of video content that may be contained within the download.

Website Subscriptions[edit]

Decentralized websites often change over time - each significant update will result in a new version of the website being generated. To automate the delivery of these updates the author may create a 'website subscription' - these operate in the same way as an RSS feed with new website versions being equivalent to new RSS items.

When you download an item that is associated with such a subscription Vuze will detect this and create a notification to inform you. The notification has an 'action' to allow you to subscribe - this does more than just subscribe to the updates, it also creates a Tag with which to organize the website versions and sets it up to automatically download and retain the most recent few versions of the website. Thus you can always get to the most recent version by going to the Tag and double clicking the most recent download.

Here is an example subscription: http://plugins.vuze.com/files/subs/WebsiteSubscription.vuze

Examples[edit]

Simple page with link to video content[edit]

This demonstrates how a piece of video content can be bundled with a web page to present details about the content and a link to allow in-browser streaming playback of the video.

magnet:?xt=urn:btih:YY4N5NWOEQSEMIEQCD652FG6LPOGLBIG

Static content with anonymous query service[edit]

The overall aim is a simple demonstration of how you could deploy an anonymous website with mainly static content (hence you avoid the need to run an anonymous service with sufficient bandwidth to distribute the content) while having the dynamic aspect of the site provided by an anonymous website (or probably better described as an anonymous web-service).

The service part can run over either I2P or Tor (or indeed both)

Vuze supports a simple way of providing such an anonymous service, based on the 'Tor Helper' (you need to enable support for services under the plugin options) and 'I2P Helper' (services enabled by default) plugins to provide network access, and a plugin API to provide a code framework for implementing the service.

This demonstration uses the 'Wiki Service Demo Plugin' to implement the search function for the static Vuze Wiki content that was crawled on 2015/3/31 using the 'HTTrack' website copier from http://www.httrack.com/. The anonymnous service addresses are available from the plugin configuration page (Tools->Options->Plugins->Wiki Service Demo). Note, you do not need to install this plugin - this is the backend part of the demo and already running on a Vuze server.

You can download the static content either publicly or anonymously (using I2P) via the links below. As always download speed will be lower via anonymous download so select the public download if you're in a hurry.

Public torrent - magnet:?xt=urn:btih:C62B5MOJBH5RMG3575QYR2HJ7SICOER6
I2P torrent - magnet:?xt=urn:btih:C62B5MOJBH5RMG3575QYR2HJ7SICOER6&net=I2P

Once you have started to download the content (you do not need to wait for the download to complete as it will dynamically prioritize the pages as required!) you need to open it in the Tor Browser to view the wiki - If you downloaded via I2P only then this can be done by double-clicking the download (as this will default to opening in the Tor Browser as the download was anonymous). If you grabbed the public version then right-click on the download and select 'Open in Browser->Anonymous' (under the 'Content' tab in the new right-click context menu)

The wiki will be shown running on a local (127.0.0.1) address with the content being loaded directly from the download. When you search the Wiki (search box top right) you will see the query being made to the anonymous service http://7bpp64gz27coxhjg.onion/. The search results (assuming there are any!) then refer back to the local static content.

Note that due to the partial spidering of the Vuze Wiki there are some references still in existence to http://wiki.vuze.com/ etc - if there was time to develop a more complete demo these would obviously be removed. These will be anonymously loaded using Tor.

Auto-generation from RSS Feeds[edit]

Since 5621 the RSS To Chat plugin has been able to automatically generate a simple decentralized website from an RSS feed (or Subscription) and publish these periodically to a chat channel. There are some examples there of both public and anonymous decentralized websites published by chat channels.