Skip to content
/ Xeres Public

A Peer-to-Peer (Friend-to-Friend), decentralized, encrypted and secure application designed for communication and sharing.

License

Notifications You must be signed in to change notification settings

zapek/Xeres

Main site

GitHub release License CodeQL Quality Gate Status

Xeres is a decentralized and secure application designed for communication and sharing.


Xeres Desktop

Table of Contents

Features

Xeres is an application that allows to connect to other peers to exchange information.

  • 🤝 Peer-to-Peer (Friend-to-Friend), fully decentralized
  • 🚫 No censorship. Cannot be censored
  • 👋 Compatible with Retroshare 0.6.6 or higher
  • 🛠️ Hardware accelerated encryption
  • 🖥️ Desktop User Interface
  • 📶 Remote access
  • 🚀 Asynchronous design
  • ✈️ High concurrency
  • 📖 Free software (GPL)

Supported Platforms

  • Windows (x86_64)
  • Linux (x86_64)
  • MacOS (x86_64)

Releases

Latest release always available here.

Getting Help

Documentation

Development

Build Requirements

  • Java 21

If you want to quickly try the current development version without installing anything else, see the command line section below.

How to run

IntelliJ IDEA Ultimate

Run the XeresApplication Spring Boot configuration.

  • Active Profile: dev
  • VM Options: -ea -Djava.net.preferIPv4Stack=true -Dfile.encoding=UTF-8
  • CLI arguments: --fast-shutdown
IntelliJ Community Edition

Run the Gradle bootRun target. It's in the top right Gradle panel, Tasks / application. It's already preconfigured.

(This way also works with IntelliJ IDEA Ultimate, but you'll miss some extras like colored debug output and faster launch)

Command Line
Windows
gradlew.bat bootRun
Linux
./gradlew bootRun

To pass arguments to Xeres, just use the args feature, for example:

./gradlew bootRun --args="--no-gui --fast-shutdown"

(Use --help to know all arguments)

Database Debugging

Online

When running Xeres with the dev profile, there's a built-in H2 Console available, accessible through the Debug menu.

Offline

With IntelliJ Ultimate, create the following Database connection with the built-in Datagrip client (aka the Database tool window)

  • Connection type: Embedded
  • Driver: H2
  • Path: select ./data/userdata.mv.db. If the file is not there, run Xeres once.
  • Authentication: User & Password
  • User: sa
  • There's no password

You can also download the H2 installer (version to use: 2.1.214). Then run the H2 console with the following settings:

  • Saved Settings: Generic H2 (Embedded)
  • Driver Class: org.h2.Driver
  • JDBC URL: hdbc:h2:file:~/workspace/Xeres/data/userdata (put your path, and no file extension at the end!)
  • User Name: sa
  • The password is empty

Useful Gradle Tasks

Running Tests Locally

run the test task

Cleaning the Build Directory

run the clean task

Upgrading Gradle
  • change the version in build.gradle in the wrapper section
  • run the wrapper task

Useful Links

Pick a FontAwesome Icon

https://kordamp.org/ikonli/cheat-sheet-fontawesome5.html

Replace all '-' by '_' in their names for use in JavaFX.

Git Branching Model

master always contains the current and runnable code. Use a feature branch to work on a feature (for example, feature/165-the-feature (165 would be the ticket number, if any)). Once it's ready, have someone review it then merge to master.

Releases use tags and might use a release branches if urgent fixes are needed.

More information: Git process that works - say no to GitFlow.

Manual Testing

Using Multiple Configs

Pass the following arguments to run multiple instances.

Location A:

--data-dir=./data2

Location B:

--data-dir=./data3

Monitoring

When running Xeres with the dev profile, JMX monitoring is available either using JConsole or VisualVM. Simply run them and connect to the Xeres session.

Donations

Please consider a donation to help with the project's development. Contact me if you want to get listed in the application's about window. The more donations, the more time is allocated on the project.

Method Address
GitHub https://github.com/sponsors/zapek
PayPal https://www.paypal.me/zapek666
Coffee https://www.buymeacoffee.com/zapek
BTC bc1qn57zvp8s3h6renf805fan53kt7q4j963g7prvt
XMR 84czz4Vg44GaGmQF8Lst3uWEMyXLSahBffhrDd77jdVJEoKCtUJF96mGQ4XzcYrLG1JGaj2hr2sMoDoihQ52MT1jMBnucyu
GOST GM72AdtcAKLT8DGHSgDGeTA8Zsub23wL4K
ZEN znePxvhiUQLp7arEEVvuC1rkofgJf3LZ2uw
BAT https://github.com/zapek/Xeres/commits?author=zapek (use tip button in Brave browser)

Thank you!