fast and modern decentralized web proxy network, utilizing transport over WebRTC https://adrift-6c1f6.web.app/
Find a file
CoolElectronics ac3a135fff
edit readme
2023-08-24 14:11:43 -04:00
bare-client-custom@9f86dcd073 bump UV, implement arraybufferimpl 2023-08-15 13:14:44 -04:00
client get shortcut button 2023-08-21 14:50:26 -04:00
corium@7142db7c8a simple rtc demo 2023-08-10 12:19:13 -04:00
Dynamic@46f8b0c321 switch to my fork of dynamic (bcc support) 2023-08-15 19:44:33 -04:00
frontend edit readme, bump protocol version 2023-08-22 21:33:16 -04:00
protocol edit readme, bump protocol version 2023-08-22 21:33:16 -04:00
server recursive dirs 2023-08-23 04:17:49 +00:00
tracker display swarm members 2023-08-22 16:04:35 -04:00
tracker-list pkg fixes 2023-08-22 21:14:41 -04:00
Ultraviolet@47dd8a4f7a add ultraviolet support (bare-client-custom) 2023-08-11 14:47:59 -04:00
vite-plugin-singlefile@0d528cf28b fix single-file bundle 2023-08-12 17:06:11 -04:00
.firebaserc switch to my fork of dynamic (bcc support) 2023-08-15 19:44:33 -04:00
.gitignore small tracker improvements 2023-08-21 14:07:45 -04:00
.gitmodules switch to my fork of dynamic (bcc support) 2023-08-15 19:44:33 -04:00
firebase.json switch to my fork of dynamic (bcc support) 2023-08-15 19:44:33 -04:00
package-lock.json add back dev WS transport 2023-08-12 16:02:25 -04:00
package.json add back dev WS transport 2023-08-12 16:02:25 -04:00
pnpm-workspace.yaml firebase-config -> tracker-list 2023-08-15 20:00:18 -04:00
README.md edit readme 2023-08-24 14:10:31 -04:00

surf_the_web_adrift_fix --------- "ce why do you keep making stupid proxies with zero use case"

Adrift

Adrift is a fast and modern decentralized web proxy network, utilizing transport over WebRTC.

Clients will invisibly connect to one of several tracking servers to exchange an "offer". From there, it uses NAT traversal to link up with a random exit node also running adrift, without the need to port forward. This lightens the load on individial server hosters and makes the network difficult to effectively block. If you're familiar with tor snowflake, you can think of this as tor for the web

See a functional demo here. There is also a limited standalone HTML file build in releases

For users:

If you want to contribute to the project and share your connection the best way is to host your own exit node. This does not require port forwarding and is very simple to setup.

Head over to releases and download the autoupdating binary corresponding to your platform. On windows, download adrift-server-windows-x64.exe, move it to C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp and launch it. On Linux, use systemd or cron.

For frontend creators:

For contributors:

Before everything..

install dependencies and build bare-client-custom

pnpm install
cd bare-client-custom
pnpm install
pnpm build
cd ..

Getting started with the server

inside the server/ directory, run pnpm install, followed by pnpm start

Getting started with the client

Inside the frontend/ directory, run pnpm install and then VITE_ADRIFT_DEV=1 VITE_ADRIFT_SINGLEFILE= pnpm dev

Quick server setup (linux)

git submodule update --init --recursive
pnpm install
cd bare-client-custom
pnpm install
pnpm build
cd ..
cd server/
pnpm install
pnpm dev

Quick client setup (linux)

git submodule update --init --recursive
pnpm install
cd bare-client-custom
pnpm install
pnpm build
cd ..
cd frontend/
pnpm install
VITE_ADRIFT_DEV=1 VITE_ADRIFT_SINGLEFILE= pnpm dev

To host a tracker...

As of now, the project relies on at least one central tracking server to keep offers forwarded smoothly. If you have the infrastructure to keep a tracker of your own running 24/7 and want to host one yourself, here's how to.

Create a new firebase project. Enable authentication and a realtime DB. Set these rules in the realtime DB

{
  "rules": {
    "peers":{
    	"$uid": {
        ".read": "$uid === auth.uid",
        ".write": "$uid === auth.uid"
      }
    },
    "swarm": {
      "$id": {
        ".read": true,
        ".write":true,
      }
    }
  }
}

Next, create a service account with all permissions. Download the authentication file and save it to tracker/src/admin-creds.json cd into tracker/, pnpm start, and make sure to choose a port with the PORT environment variable that's accessible from the internet.

Open tracker-list/index.ts, and add a new entry. Name your entry accordingly, copying in the client-side firebase tokens for the firebase field, and putting the domain where your tracker is available in the tracker field. After testing, submit a PR and if we trust you, it will be merged and your tracker will show as an option.