Hydrafiles

The headless storage network.

Donate Monero:
83BGShZv9hU9P9SRLjhRGJYQ4WatMNazKVFG6eKyHc6HguBzu1vH54R7mQJaZzeXhx4jDxnkNJMizLXrFFN4ARffEwFj82y

🚀 Join the Hydrafiles Movement!

🌐 Open Source!
🔗 Clone the GitHub repository!
🖥️ Run your own node and contribute to a free and open network!
🛠️ Be part of the solution against censorship!

Get Started

What is this site?

This site is part of the Hydrafiles network. It may be a mirror, a cdn, a storage server, just a gui, or all of the above.

What is Hydrafiles?

Hydrafiles is the headless storage network. Anyone can be a part of the network. Hydrafiles allows for anyone to host & serve files anonymously via HTTP.

Why Hydrafiles?

In a world where information is freedom. We believe that the people have a right to access the world's information. We believe the people of Russia, China, Iran, America, North Korea, and the rest of the world, all deserve access to the same information. Most people don't use anti-censorship tools when they're inconvenient. We can't control the people. I personally wish the whole internet ran on I2P. But that's never going to happen because it's slow and inconvenient for users. Torrents died off because streaming is more convenient. Piracy is back because subscriptions have gotten inconvenient. Hydrafiles realises that the people don't want to trade their convenience for freedom. Unfortunately, not all hosts have the luxury. With global censorship of whistleblowing and propaganda at an all time high, it is, now more than ever, crucial for people to be able to anonymously serve files to the masses.

P.s. Censored hosts that need Hydrafiles level security are likely also being censored in other ways. Please consider donating Monero to make this possible:

83BGShZv9hU9P9SRLjhRGJYQ4WatMNazKVFG6eKyHc6HguBzu1vH54R7mQJaZzeXhx4jDxnkNJMizLXrFFN4ARffEwFj82y

How does it work?

TLDR: This scene ^
P.s. This gif was served by Hydrafiles

When someone tries to download a file, nodes with the file will serve it directly. Nodes without the file will then ask other nodes for the file, once they find another node with a file, they will respond to all requests saying they have it, each of them forwarding it on, saying they have it, etc. until the original node is reached, with a message from all nodes they connected to, saying they have it. If no one has it, all nodes will end up giving a no response, telling the user that it isn't hosted anywhere. This design allows for better than TOR level security, for serving static files via HTTP. A core improvement over TOR is that all hosts and relays look identical, which they don't when using TOR.

What Hydrafiles isn't.

The Hydrafiles network does NOT provide privacy to the end user. The node you initially connected to, can see exactly what you're doing. If you need to download files discretely, use TOR when accessing Hydrafiles. Hydrafiles itself does not protect files. All data on the Hydrafiles network can be seen by all nodes. Sensitive files MUST be encrypted before submission to the network.

Who's in charge of Hydrafiles?

No one, anyone, everyone. Hydrafiles doesn't have a head. It's simply an API specification. Anyone can setup a domain, server, or S3 bucket, and add it to the network. The more people that decide to do this, the stronger the network.

How can I tell where a file is being hosted?

You can't. If a server in the network is hosting a file, it will look like everyone is hosting that file.

How can I take a file off of Hydrafiles?

You can contact the site that is hosting your file.

How does Hydrafiles obscure where a file is being hosted?

When you call a Hydrafiles site, if it's not hosting the requested file, it will check with other Hydrafiles sites and pull the file from them. This means no matter what Hydrafiles API you call, as long as one Hydrafiles site is serving a file, they all are.

Where is Hydrafiles?

Hydrafiles is everywhere. With the goal of being cross-border, we ask people like you to contribute to the movement, by setting up cross-border domains and servers.

Contribute to Hydrafiles

Because of Hydrafiles' layered approach, it is impossible to prove someones level of involvement in Hydrafiles. Domain providers may either be hosting their own servers, or pointing to other servers. Server providers may be hosting files, or may only be mirroring another providers files.

To ensure resiliance, it is crucial to the protocol that servers and domains are evenly distributed between "unfriendly" states. This includes; China, Russia, America, and Iran. As well as politically neutral countries such as Sweden. Ensure you aren't violating local laws when deciding on a region.

1. Get a Domain

If you don't own a domain, you can use TLD List to find the sellers with the best price. If you'd like to buy the domain anonymously use Njalla. If you already have a domain, you can use it's subdomain for free

2. Configure Domain (Set DNS Record)

Once you have a domain or subdomain, find a reliable IP here. Then set the following DNS record, replacing xxxx with the IP:

A or AAAA = xxxx

2. Use CDN (Optional & Free)

We recommend using a CDN such as Cloudflare.

CDNs cache files which makes download times faster and lowers server load. CDNs also add a layer between the Hydrafiles node you use and the public internet, forcing organisations to send requests to the CDN to find the IP.

If using Cloudflare, be sure to enable the "Cache Everything" rule.

1. Get a Server

Option A: Rent a server, we recommend SporeStack or Njalla as they don't ask for information.

Option B: Running your own server requires more maintenance, but improves decentralisation. To do this, get an old Mac, Windows, or Linux machine, even an RPI.

2. Connect to Hydrafiles

Option A: Running a Node improves availability as your node talks to all nodes in the network instead of relying on just one. Your node also verifies that files haven't been tampered with before forwarding it.

To run a full node, go to the GitHub Repo and follow the deploy instructions.

Option B: Running a Reverse Proxy is cheaper, but less safe as file integrity can't be verified. It is not recommended to rely on a reverse proxied node as exit points.

To setup the reverse proxy, first choose a Hydrafiles IP. Then configure Nginx, Caddy, or a similar software to point port 80 to the IP.

3. Announce Node (Optional)

When your node first starts, it attempts to announce your node to all known nodes. A few hours after the node first starts, check with other nodes to ensure your node is known. If your node isn't known by other nodes (or this one), you can announce your node here.

Donate Storage

To donate storage, you must first run a full node (see Donate Bandwidth). This is crucial so storage providers and proxies can't be differentiated.

1. Local Caching (Optional)

When local caching is enabled, your node automatically stores a copy of the most popular files.

In your config.json file, set the amount of storage you would like to donate. Whenever this limit is reached, unpopular files will be deleted.

2. S3 Bucket (Optional)

You can optionally configure an S3 bucket with your chosen S3 (compatible) provider.

In your config.json file, set your S3 credentials. Ensure your S3 bucket is only accessible by your server for additional privacy.

I received a takedown notice, what do I do?

Follow the procedure:

  1. Remove the file if you are hosting it and aren't legally allowed to host it.
  2. Forward the takedown notice to the Hydrafiles operator you received the file from.
  3. Respond to the requesting party with the following template:
Dear Sir/Madam, I hope this message finds you well. We are not hosting any files. We are also unsure who is hosting your file(s). We have forwarded your message to related parties, but are unable to investigate any further. For more information, check example.com. Thanks, your fellow Hydra operator.

Documentation

This API is cross-compatible with all hostnames listed here with HTTP enabled.

For this example, we will be using a random hostname (https://hydrafiles.com).

Download

Because of the distributed nature of Hydrafiles, it is crucial that you validate the sha256 checksum of the file you download.

Upload

Only storage donators can upload files to the network. To do so, run this source code, and add your file to the "files" directory with the filename being the sha256 checksum of the file.

Method: GET
Endpoint: https://hydrafiles.com/download/sha256_checksum

Signal-Strength Header

The Signal-Strength HTTP header is used to approximate number of hops without breaking privacy. This is used to approximate network other statistics such as redudancy.

It works by simulating radio-wave interference. Nodes directly serving the file return a signal strength of 90%-100%. Each node after returns a signal strength 0-10% lower than the previous hop. If a node receives a signal strength of 95% or higher, it defaults to returning a signal strength of 90-100% to further obfuscate the origin.

A simulation with 100k runs provides the following signal strengths:

Hop # Minimum Average Median Maximum
1 90 95 95 100
2 81 92 92 100
3 73 88 88 100
4 66 85 84 100
5 61 81 80 100
6 56 78 77 100
7 51 74 73 100
8 49 71 70 100
9 45 68 67 100
10 43 65 64 100

Based on these averages, we can correlate signal strength with number of hops.

Hydrafiles Directory

Host Name HTTP Mirror DNS Mirror Requires Cloudflare

Announce Domain or IP

Donating a domain/subdomain? Donating bandwidth? Donating storage? Enter your domain/ip here, to be added to the network.

Check the directory an hour after announcing to ensure other nodes have accepted your hostname.

Free information for the people, by the people.
They can't stop us all.