File sharing for friends, like a mini-Soulseek. No port forwarding needed!
  • Go 61.8%
  • TypeScript 35%
  • CSS 2.3%
  • Makefile 0.5%
  • HTML 0.1%
  • Other 0.1%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-08-21 12:25:33 -04:00
.github try to fix donation link 2026-03-09 20:58:56 -04:00
.idea improve modularity of blacklist, create what's needed for writing tests 2026-07-27 07:17:12 -04:00
.vscode fix compile issues, add server launch config 2026-07-29 12:16:13 -04:00
.zed improved the blacklist to filter unicode, support matching modes, fixed CLI 2026-07-27 00:23:15 -04:00
adminui upgrade to Go 1.27.0 2026-08-21 11:30:53 -04:00
ahocorasick upgrade to Go 1.27.0 2026-08-21 11:30:53 -04:00
browser vendor github.com/pkg/browser 2026-08-21 12:06:31 -04:00
client upgrade modernc.org dependencies 2026-08-21 12:25:33 -04:00
common upgrade stun dependencies and upgrade hows-go 2026-08-21 11:51:17 -04:00
mkcert upgrade to Go 1.27.0 2026-08-21 11:30:53 -04:00
packaging use AppImage for Linux builds, fix some builds 2026-08-08 16:17:16 -04:00
protocol upgrade stun dependencies and upgrade hows-go 2026-08-21 11:51:17 -04:00
rpcclient upgrade stun dependencies and upgrade hows-go 2026-08-21 11:51:17 -04:00
server upgrade modernc.org dependencies 2026-08-21 12:25:33 -04:00
server-widget fixed bugs in search filtering implementation, added admin UI for it, added docs page 2026-08-04 09:16:17 -04:00
stun upgrade stun dependencies and upgrade hows-go 2026-08-21 11:51:17 -04:00
tool upgrade stun dependencies and upgrade hows-go 2026-08-21 11:51:17 -04:00
updater upgrade to Go 1.27.0 2026-08-21 11:30:53 -04:00
upnp upgrade to Go 1.27.0 2026-08-21 11:30:53 -04:00
website release update 2026-08-12 22:17:24 -04:00
webui upgrade to Go 1.27.0 2026-08-21 11:30:53 -04:00
.dockerignore use scratch Docker image for servers without Alpine 2026-08-16 04:28:18 -04:00
.editorconfig initial commit, untested QUIC protocol with protobuf 2026-01-27 17:26:20 -05:00
.gitignore improved the blacklist to filter unicode, support matching modes, fixed CLI 2026-07-27 00:24:52 -04:00
ACKNOWLEDGEMENTS.md vendor github.com/pkg/browser 2026-08-21 12:06:31 -04:00
DEVELOPMENT.md document development environment requirements 2026-08-19 10:36:57 -04:00
go.work vendor github.com/pkg/browser 2026-08-21 12:06:31 -04:00
go.work.sum upgrade stun dependencies and upgrade hows-go 2026-08-21 11:51:25 -04:00
LICENSE.md relicense most modules to MIT, use GPL-3.0 for client and keep AGPL-3.0 for server 2026-07-26 17:57:06 -04: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 remove global tools install script and manage tools with go 1.24's tool system 2026-08-19 10:03:27 -04:00
README.md document development environment requirements 2026-08-19 10:36:57 -04:00
RELEASING.md add JSON schema item to release checklist 2026-08-04 09:37:45 -04:00
server.compose.yml restart server Docker container unless stopped 2026-03-11 17:27:15 -04:00
server.Dockerfile reduce server image size by stripping debug symbols from production binaries 2026-08-16 04:44:34 -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.

License

All code in this repository is under a FOSS license, but some components use different FOSS licenses than others; see LICENSE.md.

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.

Development

See DEVELOPMENT.md.

Contact

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