All Projects → RTradeLtd → go-ipfs-plugin-i2p-gateway

RTradeLtd / go-ipfs-plugin-i2p-gateway

Licence: MIT license
A plugin for presenting an IPFS gateway over i2p

Programming Languages

go
31211 projects - #10 most used programming language
Makefile
30231 projects

Projects that are alternatives of or similar to go-ipfs-plugin-i2p-gateway

denarius
Denarius [$D] is a PoW/PoS Hybrid Cryptocurrency with Tribus a new PoW Hashing Algo built specifically for D, one of a kind hybrid masternodes called Fortuna Stakes, atomic swaps, staking, mining, IPFS, optional Native Tor and I2P, and much more!
Stars: ✭ 105 (+650%)
Mutual labels:  ipfs, i2p
good-karma-kit
😇 A Docker Compose bundle to run on servers with spare CPU, RAM, disk, and bandwidth to help the world. Includes Tor, ArchiveWarrior, BOINC, and more...
Stars: ✭ 238 (+1600%)
Mutual labels:  ipfs, i2p
ipfs-companion
Browser extension that simplifies access to IPFS resources on the web
Stars: ✭ 1,745 (+12364.29%)
Mutual labels:  ipfs, ipfs-gateway
Cid
Self-describing content-addressed identifiers for distributed systems
Stars: ✭ 197 (+1307.14%)
Mutual labels:  ipfs
Temporal
☄️ Temporal is an easy-to-use, enterprise-grade interface into distributed and decentralized storage
Stars: ✭ 202 (+1342.86%)
Mutual labels:  ipfs
Dweb.page
Your Gateway to the Distributed Web
Stars: ✭ 239 (+1607.14%)
Mutual labels:  ipfs
txi2p
I2P bindings for Twisted.
Stars: ✭ 12 (-14.29%)
Mutual labels:  i2p
Ipfs Internals
IPFS 从入门到精通
Stars: ✭ 192 (+1271.43%)
Mutual labels:  ipfs
metabin
Advanced data sharing ecosystem - main repo
Stars: ✭ 15 (+7.14%)
Mutual labels:  ipfs
Agregore Browser
A minimal browser for the distributed web
Stars: ✭ 229 (+1535.71%)
Mutual labels:  ipfs
Ipfs Pubsub Room
IPFS Pubsub room
Stars: ✭ 229 (+1535.71%)
Mutual labels:  ipfs
Prototype Cjdns Pi
Prototype system for mesh networks on single board computers
Stars: ✭ 205 (+1364.29%)
Mutual labels:  ipfs
Pathephone Desktop
Distributed audio player
Stars: ✭ 240 (+1614.29%)
Mutual labels:  ipfs
Filecoin
CoinSummer实验室Filecoin资源分享。
Stars: ✭ 191 (+1264.29%)
Mutual labels:  ipfs
go-ipfs
Ungx-ed fork of go-ipfs
Stars: ✭ 31 (+121.43%)
Mutual labels:  ipfs
Node
The core of Po.et
Stars: ✭ 192 (+1271.43%)
Mutual labels:  ipfs
trystero
🤝 Serverless WebRTC matchmaking for painless P2P — Make any site multiplayer in a few lines — Use BitTorrent, IPFS, or Firebase
Stars: ✭ 512 (+3557.14%)
Mutual labels:  ipfs
Orbit Web
Orbit Web Application
Stars: ✭ 215 (+1435.71%)
Mutual labels:  ipfs
Mustekala
MetaMask Light Client Development
Stars: ✭ 213 (+1421.43%)
Mutual labels:  ipfs
Photos
[DEPRECATED] Encrypted, secure, decentralized personal data wallet -- technology behind textile.photos
Stars: ✭ 236 (+1585.71%)
Mutual labels:  ipfs

go-ipfs-plugin-i2p-gateway

Plugin for presenting an IPFS gateway over i2p.

WARNING: This is only the gateway part, A.K.A. the easy part. It will make your IPFS gateway accessible via i2p clients, but it will not route communication between IPFS nodes over i2p(1). This means that it doesn't make your IPFS instance anonymous, it just makes it accssible to clients anonymously(2). As such, it's probably not that useful to people in general yet. It's also emphatically not a product of the i2p Project and doesn't carry a guarantee from them. File an issue here, I'm happy to help.

Also, even if your IP address and/or location are obfuscated, your IPFS identity is unique. You can serve information to anonymous users, but you have an identity which corresponds to the IPFS node that you are using(No different to the key fingerprint of an SSH server). If it isn't possible to associate it to a real-life identity or organization, and can't be correlated with a real physical location, then it could be regarded as "pseudonymous."

Todo: For right now the plugin exposes the HTTP and RPC API's only. It's possible to talk directly to the coreAPI now, and soon, it will do so.

How it works

It simply takes advantage of the plugin system to set up some hidden services when the IPFS plugin is initialized. It does this by reading the IPFS config file to find the ports that have been configured by the admin running IPFS, then using the SAM API to forward those ports to I2P. Once they are forwarded, a config file is generated containing the i2p configuration and it's base32 and base64 addresses. This is stored in a file called "i2pconfig." Finally, it simply forwards the IPFS gateway to I2P.

Installation And Setup

The gotcha to the IPFS plugin system is that you'll need to run an IPFS node, that is using the same version of IPFS which was used to build the plugin. Due to gx being extensively used by the IPFS project, and it being hard to work with, you will not be able to use it with any IPFS daemon that wasn't built from the code within the vendor/github.com/ipfs/go-ipfs folder of this repository. This is somewhat undesirable, but it is the only way to reliably run this plugin. At the time of this commit, the go-ipfs commit we use is df373ca3876ed4f706d8635c200c973f4189fcc6. Over time hopefully we can imrpove this system, and make it usable with released versions of IPFS. As such, all dependencies are vendored with this repository.

To build the IPFS version needed to use this plugin run make ipfs which will copy the built ipfs binary to $GOPATH/bin. After that, the usual IPFS setup is needed which won't be covered here.

Running the deps target pulls in the dependencies, and the build target profile builds the plugin. Since there's no "main" function you can't "go get" the plugin package, you have to clone it.

    git clone https://github.com/RTradeLTd/go-ipfs-plugin-i2p-gateway
    make deps build

Installing and Using it

Assuming you have IPFS_PATH set, you can simply:

    make install

Again, this plugin only shows the IPFS gateway, it does not make you anonymous. Once you have it in your plugin directory, restart the IPFS daemon and the plugin should load. Retrieve the base32 address from the config file and visit the page in ~5-30 minutes.

Notes:

(1) I'm going to do that too, but that's the hard part(the plan is to adapt BiglyBT-style bridging, with a pure-clearnet peers, clearnet-to-i2p peers, and pure-i2p peers. That may be less straightforward than the simple description made it sound).

(2) Of course, that leaves the matter of i2p-compatible IPFS applications but those are almost as simple as the gateway.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].