Skip to content

Packaging

Zlatin Balevsky edited this page Sep 29, 2020 · 4 revisions

Windows installers, MacOS bundles and Linux AppImages can be built using the muwire-pkg project. This document describes how to package MuWire for your Linux distribution of choice.

Disabling language selection

The first time it starts, MuWire will prompt the user to select a language. If you want to disable that prompt or hardcode a language of your choice, do:

echo "locale=en" > $HOME/.MuWire/gui.properties

Change en to whatever language code you want MuWire to display in.

Disabling updates

Since your distribution most likely has a package manager that manages updates, you want to disable the in-app update functionality. Pass the following switch to the java runtime (not as an argument to MuWire):

-DdisableUpdates=true

Customizing the setup wizard

The first time MuWire runs it will launch a setup wizard. You can customize the default values of this wizard or disable it completely.

To disable the setup wizard, touch $HOME/.MuWire/MuWire.properties

To customize the wizard, you need to create a file with default wizard properties, then pass the following switch to the java virtual machine:

-Dwizard.defaults=/absolute/path/to/wizard_defaults.properties

The following property defaults can be customized in this manner:

# default location for downloaded files
downloadLocation=/some/absolute/path

# default location where to store incomplete files
incompleteLocation=/another/absolute/path

# I2P tunnel length and quantity
tunnelLength=3
tunnelQuantity=4

## Settings for external router

# Host where the I2P or I2Pd router is running
i2cpHost=127.0.0.1

# I2CP port of the router
i2cpPort=7654

## Settings for embedded router

# incoming and outgoing bandwidth in KB
inBw=512
outBw=256

# TCP & UDP router port
i2npTcpPort=<random integer>
i2npUdpPort=<random integer>

Embedded or external router?

If the I2P or I2Pd router is already packaged for your distribution, you should go with an external router. To my knowledge Debian and Arch do that.

Otherwise you can opt to use MuWire's embedded router. Packaging that is a more involved process:

  1. Enable the external router by passing the following property to the Java Virtual Machine:

-DembeddedRouter=true

  1. Copy the reseed certificates into $HOME/.MuWire/certificates/reseed
  2. From here copy the following files into $HOME/.MuWire/geoip :
countries.txt
continents.txt
GeoLite2-Country.mmdb.gz
  1. gunzip the GeoLite2-Country.mmdb.gz file in that same directory.

To verify that you have packaged everything correctly, launch MuWire as a user that does not have a $HOME/.MuWire folder. If it connects at all then the reseed certificates are deployed ok. To see if the GeoIP database is deployed ok, click on Status->I2P, it should show your country correctly.

Clone this wiki locally