File sharing for friends, like a mini-Soulseek. No port forwarding needed!
  • Go 62.4%
  • TypeScript 34.7%
  • CSS 2.3%
  • Dockerfile 0.3%
  • HTML 0.1%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-09-18 00:29:36 -04:00
.github try to fix donation link 2026-03-09 20:58:56 -04:00
.idea add JSON schema for FUNDING.yml 2026-09-18 00:29:36 -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 For some reason, go:generate is ignoring "&&". Fixed with two go:generate lines. 2026-09-18 00:04:15 -04:00
ahocorasick I rewrote things to use go-task, but I'm going to try out Mage and see if it fits. Mage has no external dependencies, and go-task has tons. 2026-08-27 15:50:09 -04:00
browser remove go-task in favor of a simple local Go-based build system 2026-08-27 21:31:59 -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 remove go-task in favor of a simple local Go-based build system 2026-08-27 21:31:59 -04:00
protocol remove go-task in favor of a simple local Go-based build system 2026-08-27 21:31:59 -04:00
rpcclient fix server Docker build 2026-08-27 13:18:03 -04:00
server upgrade modernc.org dependencies 2026-08-21 12:25:33 -04:00
server-widget remove go-task in favor of a simple local Go-based build system 2026-08-27 21:31:59 -04:00
stun upgrade stun dependencies and upgrade hows-go 2026-08-21 11:51:17 -04:00
tool remove go-task in favor of a simple local Go-based build system 2026-08-27 21:31:59 -04:00
updater I rewrote things to use go-task, but I'm going to try out Mage and see if it fits. Mage has no external dependencies, and go-task has tons. 2026-08-27 15:50:09 -04:00
upnp I rewrote things to use go-task, but I'm going to try out Mage and see if it fits. Mage has no external dependencies, and go-task has tons. 2026-08-27 15:50:09 -04:00
website remove references to GNU Make in documentation 2026-08-27 21:37:03 -04:00
webui For some reason, go:generate is ignoring "&&". Fixed with two go:generate lines. 2026-09-18 00:04:15 -04:00
.dockerignore ignore .git in docker builds 2026-08-27 15:50:39 -04:00
.editorconfig initial commit, untested QUIC protocol with protobuf 2026-01-27 17:26:20 -05:00
.gitignore remove go-task in favor of a simple local Go-based build system 2026-08-27 21:31:59 -04:00
ACKNOWLEDGEMENTS.md vendor github.com/pkg/browser 2026-08-21 12:06:31 -04:00
build remove go-task in favor of a simple local Go-based build system 2026-08-27 21:31:59 -04:00
build.bat remove go-task in favor of a simple local Go-based build system 2026-08-27 21:31:59 -04:00
build.go Add client Docker build 2026-09-18 00:25:23 -04:00
client.Dockerfile Add client Docker build 2026-09-18 00:25:23 -04:00
DEVELOPMENT.md remove references to GNU Make in documentation 2026-08-27 21:35:17 -04:00
go.work vendor github.com/pkg/browser 2026-08-21 12:06:31 -04:00
go.work.sum remove go-task in favor of a simple local Go-based build system 2026-08-27 21:31:59 -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
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 simplify server Dockerfile 2026-09-14 22:24:54 -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.