File sharing for friends, like a mini-Soulseek. No port forwarding needed!
  • Go 61.4%
  • TypeScript 35.2%
  • CSS 2.5%
  • Makefile 0.5%
  • HTML 0.2%
  • Other 0.1%
2026-06-09 18:09:03 -04:00
.github try to fix donation link 2026-03-09 20:58:56 -04:00
.idea add admin UI run configuration 2026-04-08 20:15:37 -04:00
adminui fix adminui README 2026-04-09 16:39:18 -04:00
client Make FriendNet compile on FreeBSD and other minor platforms 2026-05-07 23:10:00 -04:00
common update Go version to 1.26.2 2026-04-09 03:09:32 -04:00
mkcert Make FriendNet compile on FreeBSD and other minor platforms 2026-05-07 23:10:00 -04:00
packaging raise UDP buffer sizes in debian post-install script as recommended by quic-go wiki (persisted) 2026-04-04 17:50:40 -04:00
protocol document intended NAT hole punching process 2026-04-14 02:53:59 -04:00
rpcclient update Go version to 1.26.2 2026-04-09 03:09:32 -04:00
server fix not properly handling broadcast errors 2026-06-09 18:09:03 -04:00
server-widget return INVALID_ARGUMENT on server RPC CreateAccount if password does not meet minimum requirements 2026-04-09 02:02:29 -04:00
updater update to 1.1.3 2026-04-09 03:31:39 -04:00
upnp update Go version to 1.26.2 2026-04-09 03:09:32 -04:00
website Fix accidentally labeling retroshare as "centralized" (it's the furthest from that possible lol) 2026-05-19 14:02:26 -04:00
webui oops 2026-04-29 22:26:28 +03:00
.dockerignore create server dockerfile 2026-03-10 15:54:10 -04:00
.editorconfig initial commit, untested QUIC protocol with protobuf 2026-01-27 17:26:20 -05:00
.gitignore Unignore go.work 2026-01-28 10:31:51 -05:00
ACKNOWLEDGEMENTS.md untested UPnP code adapted from Syncthing's lib/upnp 2026-02-27 19:20:35 -05:00
go.work update Go version to 1.26.2 2026-04-09 03:09:32 -04:00
go.work.sum Client direct connection code is partially done. 2026-02-24 20:00:12 -05:00
LICENSE Initial commit 2026-01-26 18:27:03 -05:00
logo-smaller.png use smaller logo in README 2026-03-28 14:34:36 -04:00
logo-wall-smaller.png use new wall logo 2026-04-13 20:50:47 -04:00
logo-wall.png use new wall logo 2026-04-13 20:50:47 -04:00
logo.png add WIP logo and reorganize docs 2026-03-07 17:45:20 -05:00
Makefile Add FreeBSD build script 2026-05-07 23:12:04 -04:00
README.md make README layout look a little nicer 2026-05-19 14:05:05 -04:00
RELEASING.md add RELEASING.md as documentation for publishing releases 2026-04-04 21:22:35 -04:00
server.compose.yml restart server Docker container unless stopped 2026-03-11 17:27:15 -04:00
server.Dockerfile fix Docker build 2026-04-09 03:19:09 -04:00
TODO.md remove complete TODO 2026-03-12 02:09:04 -05:00

FriendNet

File sharing for friends, like a mini-Soulseek. No port forwarding needed!

logo

Official Website / Screenshots

GitHub / Forgejo Mirror

About

Oldschool file sharing systems like Soulseek use a central server to facilitate file search and peer discovery, making search across the entire network convenient, while keeping file downloads strictly peer-to-peer. It's a great system, and works really well for public networks.

FriendNet aims to provide a similar system, but with a self-hostable server and optional proxied downloads. Providing proxied downloads allows users without the ability to open ports on their router, or those behind VPNs and restrictive firewalls to share files and participate in the network.

The intention is not to replace public networks like Soulseek, but to provide an easy-to-use p2p-style file sharing system for small groups of people without the hassle that normally comes with such systems.

Download

Head over to the download page on the website to download the client.

Documentation

Documentation can be found on the website.

Protocol

See the protocol directory.

Building From Source

Client

Compilation guide

Server

Compilation guide

Support

I would appreciate it if you considered supporting the project. If you would like, I'll add your name and link to the website.

Contact

If you have any questions or feedback, open an issue or email me at the email on my GitHub profile.