Git Product home page Git Product logo

i2p-zero's Introduction

Zero dependency, small footprint, cross-platform I2P Java Router with GUI, simple tunnel/socks controller and SAM interface

Note that I2P-zero is not a re-implementation of I2P. It uses the exact I2P source code from the official I2P GitHub repository.

I2P-zero is a build script that produces a zero-dependency installation of the official I2P release, and includes a simplified front end interface.

This project will run under Linux, and build native launchers for Linux, MacOS and Windows. The launchers will include the I2P router, a SAM listener, simple tunnel and socks tunnel functionality and a minimal JVM.

Downloads

Download the latest binary releases for Mac/Windows/Linux here: https://github.com/i2p-zero/i2p-zero/releases

GUI Screenshots



Footprint

The zero-dependency distribution sizes are as follows:

OS Uncompressed size (MB) Compressed size (MB) v1.20 Reproducible build SHA-256
Mac 38.5 26.5 9d35c9d31e7c8c820736f7437e02d928f325f4197cf19c7720196c1e586ce1a1
Windows 47.8 32.4 37c38e66a1f4935a21c2514eb4692827834ec8bd9c2dfc11d6871f7a07dbdd16
Linux 61.3 36.6 7e7216b281624ec464b55217284017576d109eaba7b35f7e4994ae2a78634de7
Mac GUI 61.2 45.9 9278fce1196555fd9823d74b716cb0370bac26b964a50b4e9a11eae0f2107eb4
Windows GUI 70.3 50.7 20723da50684c6a6581b36f8c7a90e9d63baf0e4848e0b781a343ad1791ab2a0
Linux GUI 87.4 56.9 1852ecf426d87c6931b163964fa55ddc09da60ede217da1f033a6f78acce2ad1

Note: Reproducible builds are currently experimental. Due to JDK differences, Builds on Mac will consistently have different hashes than builds on Linux. Official releases will always be built using Docker.

Building the launchers

All binary releases for Windows, Mac and Linux can be built from either Linux or Mac.

Use the Docker build method for reproducible builds.

To build using Docker on Mac:

First install docker from https://hub.docker.com/editions/community/docker-ce-desktop-mac

containerId=$(docker run -td --rm ubuntu)
docker exec -ti $containerId bash -c  '\
  apt-get update \
  && apt-get -y install git wget zip unzip \
  && git clone https://github.com/i2p-zero/i2p-zero.git --depth 1 \
  && cd i2p-zero && bash bin/build-all-and-zip.sh'
docker cp $containerId:/i2p-zero/dist-zip ./
docker container stop $containerId

To build using Docker on Ubuntu:

sudo apt -y install docker docker.io
systemctl start docker

containerId=$(sudo docker run -td --rm ubuntu)
sudo docker exec -ti $containerId bash -c  '\
  apt-get update \
  && apt-get -y install git wget zip unzip \
  && git clone https://github.com/i2p-zero/i2p-zero.git --depth 1 \
  && cd i2p-zero && bash bin/build-all-and-zip.sh'
sudo docker cp $containerId:/i2p-zero/dist-zip ./
sudo docker container stop $containerId

This will result in a dist-zip directory being copied into the current directory. The dist-zip directory will contain the builds for all platforms.

To build without Docker on Ubuntu:

To build without Docker on a freshly installed Ubuntu system, first ensure git is installed:

sudo apt install git

Then, retrieve this project from git:

git clone https://github.com/i2p-zero/i2p-zero.git

Also note that JDKs for Linux, MacOS and Windows will be downloaded, which will total several hundred megabytes. You may need to ensure your system has zip, unzip and bzip2 installed to run the build script.

Run the bin/build-all-and-zip.sh script, which will in turn call the following scripts:

  1. bin/import-packages.sh to retrieve the I2P Java sources, OpenJDK and the Ant build tool

  2. bin/build-original-i2p.sh to build the I2P project retrieved from the I2P repository

  3. bin/build-launcher.sh to convert the I2P JARs to modules, compile the Java source code in this project, and then use the jlink tool to build zero-dependency platform-specific launchers.

  4. bin/zip-all.sh to produce the distribution zip files and display their SHA-256 hashes. Note that reproducible builds are currently a work in progress, and that only builds on Linux will show the same hashes as the official releases.

Running the GUI

To run the Linux router, double-click the app located at dist/linux-gui/router/bin/i2p-zero

To run the MacOS router, double-click the app located at dist/mac-gui/router/i2p-zero.app

For Windows, double-click the app located at dist/win-gui/router/i2p-zero.exe

Running the command line version

To run the Linux router, type:

dist/linux/router/bin/i2p-zero

To run the MacOS router, type:

dist/mac/router/bin/launch.sh

For Windows, run: (note that the Windows build will run in the background and not show a success message)

dist/win/router/i2p-zero.exe

If it launches successfully, you'll see the message:

I2P router launched.
Press Ctrl-C to gracefully shut down the router (or send the SIGINT signal to the process).

Tunnel control

Note that it may take a short while for new tunnels to be set up.

Call the dist/linux/router/bin/tunnel-control.sh script as follows to create and destroy tunnels:

Get the router reachability status. Returns a string such as "Testing", "Firewalled", "Running", "Error"

tunnel-control.sh router.reachability

Find out if the router is running (where "running" means it has warmed up and is allowing I2P connections to be created). Returns "true" or "false"

tunnel-control.sh router.isRunning

Listen for I2P connections and forward them to the specified host and port. Returns the I2P base 32 destination address for the server tunnel created.

Optionally, specify a directory for storing/reading the server key file. If the directory doesn't exist with a file named *.b32.i2p.keys in it, returns a newly created destination address and writes the secret key for the new address to a file called .keys in the specified directory. Otherwise, read the existing secret key from that directory. The server tunnel will listen for I2P connections and forward them to the specified host and port. Note that the base 32 I2P destination address deterministically depends on the contents of the .keys file).

tunnel-control.sh server.create <host> <port> <(optional) directory>

or, if you would like a vanity b32 address for your server tunnel that begins with a 3 character (alphanumeric) prefix, type:

tunnel-control.sh server.create.vanity <host> <port> <directory> <prefix>

If you do not want to specify the directory parameter above, specify none as the directory. Note that this command may take several minutes to complete.

Check the state of a tunnel. Returns "opening" or "open"

tunnel-control.sh server.state <base 32 I2P address> tunnel-control.sh client.state <local port> tunnel-control.sh http.state <local port> tunnel-control.sh socks.state <local port>

Close the tunnel listening for connections on the specified I2P destination address. Returns "OK".

tunnel-control.sh server.destroy <base 32 I2P address>

Create a tunnel that listens for connections on localhost on the specified port and forwards connections over I2P to the specified destination public key.

tunnel-control.sh client.create <I2P destination> <local port>

Close the tunnel listening for connections on the specified port. Returns "OK".

tunnel-control.sh client.destroy <local port>

Create an http proxy (for accessing .i2p web sites), listening on the specified port

tunnel-control.sh http.create <local port>

Destroy the http proxy listening on the specified port

tunnel-control.sh http.destroy <local port>

Create a socks tunnel, listening on the specified port

tunnel-control.sh socks.create <local port>

Destroy the socks tunnel listening on the specified port

tunnel-control.sh socks.destroy <local port>

Destroy all tunnels. Returns "OK"

tunnel-control.sh all.destroy

List all tunnels. Returns JSON string containing information about all tunnels currently in existence

tunnel-control.sh all.list

Start a SAM listener on port 7656. Returns "OK"

tunnel-control.sh sam.create

Get the external port randomly assigned to this router when first run, which the firewall should allow incoming UDP and TCP connections on. Returns the port number.

tunnel-control.sh router.externalPort

Set the bandwidth limit, measured in KBps. Returns "OK".

tunnel-control.sh router.setBandwidthLimitKBps <KBps>

Get the bandwidth limit, measured in KBps

tunnel-control.sh router.getBandwidthLimitKBps

Get bandwidth statistics. Returns a comma separated list of statistics

tunnel-control.sh router.getBandwidthStats

example response:

1sRateInKBps=12.34,1sRateOutKBps=12.34,5mRateInKBps=12.34,5mRateOutKBps=12.34,avgRateInKBps=12.34,avgRateOutKBps=12.34,totalInMB=12.34,totalOutMB=12.34

or, for pleasant viewing on the command line, automatically updating every 2 seconds:

watch "tunnel-control.sh router.getBandwidthStats | tr ',' '\n' | sort"

Get the I2P-zero version

tunnel-control.sh version

example response:

i2p-zero 1.8

Watch the I2P log for messages

tail -f dist/linux/router/i2p.config/wrapper.log

Note on bundled windows launcher.exe executable

There is a bundled resources/launcher.exe file in the source tree. This allows the windows distributable to be built even on a non-windows platform.

#This file can be deterministically recreated by following these steps on a Windows machine:

  1. Download AdoptOpenJDK14 from https://github.com/AdoptOpenJDK/openjdk14-binaries/releases/download/jdk14-2020-03-09-04-56/OpenJDK14-jdk_x64_windows_hotspot_2020-03-09-04-56.zip
  2. Create a new folder, and place inside the resources/icons.ico file and the router folder from an I2P-zero for Windows GUI build
  3. Run `\bin\jpackage.exe --type app-image --icon icons.ico --name i2p-zero -m org.getmonero.i2p.zero.gui/org.getmonero.i2p.zero.gui.Gui --runtime-image router\runtime
  4. Run certUtil -hashfile i2p-zero/i2p-zero.exe SHA256 to get the SHA256 hash.
  5. This hash should exactly match the SHA256 hash of the resources/launcher.exe file, which should be 3d5d00eeff5cb9d63ea415c593d67f201a7d024b6378d22d702b001e6693a93a

i2p-zero's People

Contributors

dginovker avatar eyedeekay avatar jtgrassie avatar knaccc avatar malinero avatar nurviro avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

i2p-zero's Issues

Which router config settings are supported? Is it possible to use router families?

I am interested in deploying i2p-zero routers which all share the same router family. I don't see anything for it in the GUI. Is it possible to use router.config style options to use families in i2p-zero? In general, it's not quite clear to me to what extent the I2P configuration from the Java reference implementation applies to i2p-zero, knowing that would be very helpful for some people.

Swap toggle order

This is a small visual gripe in the GUI.

Most apps toggle to the right when on. This app toggles to the left when on. I think this should be switched for consistency.

Example in the Windows setting menu:

image

http.destroy fails

A couple of days ago, I ran launch.sh, but all.list wouldn't show the tunnels I had previously defined. I executed the create commands and ended up with multiple tunnels for the same port, none of which can now be deleted.

# ./tunnel-control.sh all.list | jq '.tunnels[]'
{
  "port": "4444",
  "state": "open",
  "type": "http"
}
{
  "port": "4444",
  "state": "open",
  "type": "http"
}
...
# ./tunnel-control.sh http.destroy 4444
# ./tunnel-control.sh client.destroy 4444
OK

... but all.list still shows all. Nothing was actually deleted.

i2cp config and tunnels info are missing

Noticed that theres no easy obvious way for users to be able to change the i2cp config.
Docker images are listening on 172.17.0.1 Need to be able to config i2cp in i2p-zero.
I cant find my tunnels info. A list of our active tunnels would be nice to have.
Also Cant find how to exclude slow peers. theres no: router.excludePeers=
How to exclude slow peers with i2p-zero?
Thanks!

Pretty print JSON output

Perhaps pretty print JSON output from ./tunnel-control.sh. I seem to always pipe it into python -m json.tool or jq anyway. Similar behavior can be seen over at ElasticSearch.

Just an idea ^_^

Build to adhere to Linux's FHS - how to?

Hi.
Build to adhere to Linux's FHS - how to?

And it would be fantastic if here at the source this topic was included, covered.

Seems that copying binaries to relevant FHS paths is pointless as some things are static and 'i2p-zero' fails at start if run from a different location.

Many thanks, L.

Allow copying of information in the tunnels screen

On Windows, I would like to be able to copy important information, especially the i2p address, in the tunnels interface. Additionally, it would be nice to provide an edit option to review and other information, such as the port number.

Any way to specify the location of the config/data folder?

Checking out i2p-zero and I can't seem to find any way to specify the location of the data/config directory, which seems to default to ~/.i2p-zero

If there is a way to change it, how? If there is not a way to change it, can this be added? Maybe a simple --data ./some/path/i2pzero or something.

Thank you.

GUI i2p-zero.exe does not open on Windows 10

Hi.

First time I extracted i2p-zero-win-gui.v1.20.zip for a quick test and ran i2p-zero.exe, it opened successfully and also connected. However, after I removed it and re-extracted it days later into another directory, i2p-zero.exe no longer opened. I cannot still get it to open. I run a Windows 10 Enterprise LTSC 10.0.17763 Build 17763 (latest available version).

I do not now what other information I should include since I cannot find any log files and do not know what running processes are possibly related. If there is any, please tell me.

Cheers.

Route out through a socks server?

Can i2p-zero be configured to use a third party socks server to get out into the Internet?

(not talking about i2p-zero providing one)

Feedback

Hello
Im a non-technical noob that been around i2p for a few months now.
I just saw i2p-zero. Heres my feedback
Really light, simple non-technical version of i2p, I love it alot.
Although, since this version is obviously toward non-technical users Its lacking a bit about instruction/info around tunnel and eepsite.
However, best user-friendly version of i2p that I've seeing for so far, congrats!
Note: IRC channel?

Checksum

Could you please provide checksum for release?

Disallow creation of multiple socks on same port

  1. Run socks.create 31338 multiple times.
  2. Run all.list.
        {
            "port": "31338",
            "state": "opening",
            "type": "socks"
        },
        {
            "port": "31338",
            "state": "opening",
            "type": "socks"
        },
        {
            "port": "31338",
            "state": "opening",
            "type": "socks"
        }

Error: Unable to load main class org.getmonero.i2p.zero.Main in module org.getmonero.i2p.zero

I get an error when starting the Linux v1.18 release:

Error: Unable to load main class org.getmonero.i2p.zero.Main in module org.getmonero.i2p.zero java.lang.UnsupportedClassVersionError: Preview features are not enabled for org/getmonero/i2p/zero/Main (class file version 58.65535). Try running with '--enable-preview'

Running with "--enable-preview" gives the same error.

I was previously running v1.17 with no issues. After reverting back to v1.17 everything works again.

OS is Ubuntu 20.04

backup & restore

How to backup server key and restore it, i did not found any dat file in root and appdata dir?
Just backup the whole appdata dir? how could i use an existed key to creat the same b32 address server tunnel?

client.create appears to have no effect

Maybe I got the syntax wrong, but I cannot create a client-tunnel. The command doesn't generate any output.

(Whereas http-tunnel works, and returns "OK".)

# ./tunnel-control.sh router.reachability
Firewalled

# ./tunnel-control.sh all.list | jq
{
  "tunnels": []
}

# ./tunnel-control.sh http.create 4444
OK
# ./tunnel-control.sh all.list | jq
{
  "tunnels": [
    {
      "port": "4444",
      "state": "opening",
      "type": "http"
    }
  ]
}

# ./tunnel-control.sh client.create 7662 pop.postman.i2p
# ./tunnel-control.sh all.list | jq
{
  "tunnels": [
    {
      "port": "4444",
      "state": "opening",
      "type": "http"
    }
  ]
}

Possible to have one identity per connected client?

Copying over from IRC:

I was thinking about creating a Dockerfile in order to deploy it as a stand-alone router (interest?), but there's an issue:

Any instance has its unique identifier (the destination public key). So if more than one user routes through that instance, we know that all of them are coming from that same router.

Say a household shares the i2p-router. If one of the users would compromise his identity, all the others would have theirs compromised too.

For comparison: Tor automatically creates a new route for every connected client. Additionally, it has an option to get a new route per connection explicitly (e.g. through the --isolate switch to the torsocks-command).

Do you see how i2p-zero could do that too?

Maybe one i2p instance is meant to represent one user, but it would allow for some interesting setups if it were possible.

Can't build on armv7

Hi,

I'm having a problem buildin i2p-zero on armv7:

root@cubietruck:/srv/i2p-zero# ./bin/build-all.sh                                                            [145/5630]
HEAD is now at 16d2bdc1d... 0.9.40
/srv/i2p-zero/import/apache-ant-1.10.5/bin/ant: 1: exec: /srv/i2p-zero/import/jdks/linux/jdk-12+33/bin/java: Exec forma
t error
cp: cannot stat '/srv/i2p-zero/import/i2p.i2p/build/i2ptunnel.jar': No such file or directory
cp: cannot stat '/srv/i2p-zero/import/i2p.i2p/build/i2p.jar': No such file or directory
cp: cannot stat '/srv/i2p-zero/import/i2p.i2p/build/mstreaming.jar': No such file or directory
cp: cannot stat '/srv/i2p-zero/import/i2p.i2p/build/router.jar': No such file or directory
cp: cannot stat '/srv/i2p-zero/import/i2p.i2p/build/sam.jar': No such file or directory
cp: cannot stat '/srv/i2p-zero/import/i2p.i2p/build/streaming.jar': No such file or directory
cp: cannot stat '/srv/i2p-zero/import/i2p.i2p/build/jbigi.jar': No such file or directory
/srv/i2p-zero/bin/convert-jars-to-modules.sh: line 21: /srv/i2p-zero/import/jdks/linux/jdk-12+33/bin/jar: cannot execut
e binary file: Exec format error
*** Determining dependencies for /srv/i2p-zero/target/lib-combined/combined.jar
/srv/i2p-zero/bin/convert-jars-to-modules.sh: line 29: /srv/i2p-zero/import/jdks/linux/jdk-12+33/bin/jdeps: cannot exec
ute binary file: Exec format error
sed: can't read /srv/i2p-zero/target/module-info/combined/module-info.java: No such file or directory
sed: can't read /srv/i2p-zero/target/module-info/combined/module-info.java: No such file or directory
sed: can't read /srv/i2p-zero/target/module-info/combined/module-info.java: No such file or directory
sed: can't read /srv/i2p-zero/target/module-info/combined/module-info.java: No such file or directory
sed: can't read /srv/i2p-zero/target/module-info/combined/module-info.java: No such file or directory
/srv/i2p-zero/bin/convert-jars-to-modules.sh: line 44: /srv/i2p-zero/target/module-info/combined/module-info.java: No s
uch file or directory
*** Creating new combined modular jar
/srv/i2p-zero/bin/convert-jars-to-modules.sh: line 48: /srv/i2p-zero/import/jdks/linux/jdk-12+33/bin/javac: cannot exec
ute binary file: Exec format error
cp: cannot stat '/srv/i2p-zero/target/lib-combined/combined.jar': No such file or directory
/srv/i2p-zero/bin/convert-jars-to-modules.sh: line 50: /srv/i2p-zero/import/jdks/linux/jdk-12+33/bin/jar: cannot execute binary file: Exec format error
*** Compiling CLI
/srv/i2p-zero/bin/build-launcher.sh: line 13: /srv/i2p-zero/import/jdks/linux/jdk-12+33/bin/javac: cannot execute binar
y file: Exec format error
cp: cannot create regular file 'target/classes/org.getmonero.i2p.zero/org/getmonero/i2p/zero/': No such file or directo
ry
*** Packaging CLI as a modular jar
/srv/i2p-zero/bin/build-launcher.sh: line 17: /srv/i2p-zero/import/jdks/linux/jdk-12+33/bin/jar: cannot execute binaryf
ile: Exec format error
*** Compiling GUI
/srv/i2p-zero/bin/build-launcher.sh: line 20: /srv/i2p-zero/import/jdks/linux/jdk-12+33/bin/javac: cannot execute binar
y file: Exec format error
cp: target 'target/classes/org.getmonero.i2p.zero.gui/org/getmonero/i2p/zero/gui/' is not a directory
*** Packaging GUI as a modular jar
/srv/i2p-zero/bin/build-launcher.sh: line 25: /srv/i2p-zero/import/jdks/linux/jdk-12+33/bin/jar: cannot execute binary file: Exec format error
*** Performing jlink (linux)
Using JAVA_HOME_VARIANT: /srv/i2p-zero/import/jdks/linux/jdk-12+33
/srv/i2p-zero/bin/build-launcher.sh: line 44: /srv/i2p-zero/import/jdks/linux/jdk-12+33/bin/jlink: cannot execute binar
y file: Exec format error
/srv/i2p-zero/bin/build-launcher.sh: line 45: /srv/i2p-zero/import/jdks/linux/jdk-12+33/bin/jlink: cannot execute binar
y file: Exec format error
*** Performing jlink (mac)
Using JAVA_HOME_VARIANT: /srv/i2p-zero/import/jdks/mac/jdk-12+33/Contents/Home
/srv/i2p-zero/bin/build-launcher.sh: line 44: /srv/i2p-zero/import/jdks/linux/jdk-12+33/bin/jlink: cannot execute binar
y file: Exec format error
/srv/i2p-zero/bin/build-launcher.sh: line 45: /srv/i2p-zero/import/jdks/linux/jdk-12+33/bin/jlink: cannot execute binar
y file: Exec format error
*** Performing jlink (win)
Using JAVA_HOME_VARIANT: /srv/i2p-zero/import/jdks/win/jdk-12+33
/srv/i2p-zero/bin/build-launcher.sh: line 44: /srv/i2p-zero/import/jdks/linux/jdk-12+33/bin/jlink: cannot execute binar
y file: Exec format error
/srv/i2p-zero/bin/build-launcher.sh: line 45: /srv/i2p-zero/import/jdks/linux/jdk-12+33/bin/jlink: cannot execute binar
y file: Exec format error
cp: cannot create regular file '/srv/i2p-zero/dist/linux/router/bin/': No such file or directory
cp: cannot create regular file '/srv/i2p-zero/dist/linux/router/bin/': No such file or directory
cp: cannot create regular file '/srv/i2p-zero/dist/mac/router/bin/': No such file or directory
cp: cannot create regular file '/srv/i2p-zero/dist/mac/router/bin/': No such file or directory
cp: cannot create regular file '/srv/i2p-zero/dist/linux-gui/router/bin/': No such file or directory
cp: cannot create regular file '/srv/i2p-zero/dist/linux-gui/router/bin/': No such file or directory
cp: cannot create regular file '/srv/i2p-zero/dist/mac-gui/router/bin/': No such file or directory
cp: cannot create regular file '/srv/i2p-zero/dist/mac-gui/router/bin/': No such file or directory
cp: cannot create regular file '/srv/i2p-zero/dist/win/router/bin/': No such file or directory
cp: cannot create regular file '/srv/i2p-zero/dist/linux-gui/router/bin/': No such file or directory
cp: cannot create regular file '/srv/i2p-zero/dist/mac-gui/router/bin/': No such file or directory
        zip warning: /srv/i2p-zero/dist/linux/router/i2p.base/jbigi.jar not found or empty
        zip warning: name not matched: *-freebsd-*

zip error: Nothing to do! (/srv/i2p-zero/dist/linux/router/i2p.base/jbigi.jar)
        zip warning: /srv/i2p-zero/dist/linux-gui/router/i2p.base/jbigi.jar not found or empty
        zip warning: name not matched: *-freebsd-*

zip error: Nothing to do! (/srv/i2p-zero/dist/linux-gui/router/i2p.base/jbigi.jar)
        zip warning: /srv/i2p-zero/dist/linux/router/i2p.base/jbigi.jar not found or empty
        zip warning: name not matched: *-osx-*

zip error: Nothing to do! (/srv/i2p-zero/dist/linux/router/i2p.base/jbigi.jar)
        zip warning: /srv/i2p-zero/dist/linux-gui/router/i2p.base/jbigi.jar not found or empty
        zip warning: name not matched: *-osx-*
zip error: Nothing to do! (/srv/i2p-zero/dist/linux-gui/router/i2p.base/jbigi.jar)                            [53/5625]
        zip warning: /srv/i2p-zero/dist/linux/router/i2p.base/jbigi.jar not found or empty
        zip warning: name not matched: *-windows-*

zip error: Nothing to do! (/srv/i2p-zero/dist/linux/router/i2p.base/jbigi.jar)
        zip warning: /srv/i2p-zero/dist/linux-gui/router/i2p.base/jbigi.jar not found or empty
        zip warning: name not matched: *-windows-*

zip error: Nothing to do! (/srv/i2p-zero/dist/linux-gui/router/i2p.base/jbigi.jar)
        zip warning: /srv/i2p-zero/dist/mac/router/i2p.base/jbigi.jar not found or empty
        zip warning: name not matched: *-freebsd-*

zip error: Nothing to do! (/srv/i2p-zero/dist/mac/router/i2p.base/jbigi.jar)
        zip warning: /srv/i2p-zero/dist/mac-gui/router/i2p.base/jbigi.jar not found or empty
        zip warning: name not matched: *-freebsd-*

zip error: Nothing to do! (/srv/i2p-zero/dist/mac-gui/router/i2p.base/jbigi.jar)
        zip warning: /srv/i2p-zero/dist/mac/router/i2p.base/jbigi.jar not found or empty
        zip warning: name not matched: *-linux-*

zip error: Nothing to do! (/srv/i2p-zero/dist/mac/router/i2p.base/jbigi.jar)
        zip warning: /srv/i2p-zero/dist/mac-gui/router/i2p.base/jbigi.jar not found or empty
        zip warning: name not matched: *-linux-*

zip error: Nothing to do! (/srv/i2p-zero/dist/mac-gui/router/i2p.base/jbigi.jar)
        zip warning: /srv/i2p-zero/dist/mac/router/i2p.base/jbigi.jar not found or empty
        zip warning: name not matched: *-windows-*

zip error: Nothing to do! (/srv/i2p-zero/dist/mac/router/i2p.base/jbigi.jar)
        zip warning: /srv/i2p-zero/dist/mac-gui/router/i2p.base/jbigi.jar not found or empty
        zip warning: name not matched: *-windows-*

...

Appears to require JVM when running the launcher?

Hello. After finishing a reproducible build using Ubuntu in Docker per the readme, I attempted running the launcher and got this error:

$ ./router/bin/i2p-zero 
Error: could not find libjava.so
Error: Could not find Java SE Runtime Environment.

I was under the impression from the readme that a minimal JVM gets bundled with the launcher, so am now confused. Is the user required to have their own JVM installed in order to run this?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.