Installation

This page contains detailed installation instructions. For a quick start, refer to this page.

Sharry is a REST Server that also provides the web application. The web application runs in the browser and talks to the server using the REST Api.

The download page provides pre-compiled packages and the development page contains build instructions.

Prerequisites

Java

Very often, Java is already installed. You can check this by opening a terminal and typing java -version. Otherwise install Java using your package manager or see this site for other options.

It is enough to install the JRE. The JDK is required, if you want to build sharry from source.

Sharry has been tested with Java version 17. The pre-build packages are also build using JDK 17. But a later version of Java should work as well.

Database

Sharry stores all its information (files, accounts etc) in a database. The following products are supported:

  • PostreSQL
  • MariaDB
  • H2

The H2 database is an interesting option for personal and mid-size setups, as it requires no additional work (i.e. no separate db server). It is integrated into sharry and works really well. It is also configured as the default database.

For large installations, PostgreSQL or MariaDB is recommended. Create a database and a user with enough privileges (read, write, create table) to that database.

When using H2, make sure to add the options ;MODE=PostgreSQL;DATABASE_TO_LOWER=TRUE at the end of the url. See the default config for an example.

Installing from ZIP files

After extracting the zip files, you’ll find a start script in the bin/ folder.

Installing from DEB packages

The DEB packages can be installed on Debian, or Debian based Distros:

$ sudo dpkg -i sharry*.deb

Then the start scripts are in your $PATH. Run sharry-restserver from a terminal window.

The packages come with a systemd unit file that will be installed to autostart the services.

Running

Run the start script (in the corresponding bin/ directory when using the zip files):

$ ./sharry-restserver*/bin/sharry-restserver

This will startup using the default configuration. The configuration should be adopted to your needs. For example, the database connection is configured to use a H2 database that is created in the /tmp directory. Please refer to the configuration page for how to create a custom config file. Once you have your config file, simply pass it as argument to the command:

$ ./sharry-restserver*/bin/sharry-restserver /path/to/server-config.conf

After starting the rest server, you can reach the web application at path /app, so using default values it would be http://localhost:9090/app. The root path, http://localhost:9090/, redirects to this url.

You should be able to create a new account and sign in.

Options

The start scripts support some options to configure the JVM. One often used setting is the maximum heap size of the JVM. By default, java determines it based on properties of the current machine. You can specify it by given java startup options to the command:

$ ./sharry-restserver*/bin/sharry-restserver -J-Xmx1G -- /path/to/server-config.conf

This would limit the maximum heap to 1GB. The double slash separates internal options and the arguments to the program. Another frequently used option is to change the default temp directory. Usually it is /tmp, but it may be desired to have a dedicated temp directory, which can be configured:

$ ./sharry-restserver*/bin/sharry-restserver -J-Xmx1G -Djava.io.tmpdir=/path/to/othertemp -- /path/to/server-config.conf

The command:

$ ./sharry-restserver*/bin/sharry-restserver -h

gives an overview of supported options.

System properties

All options that are given with -D are called system properties. These can be used to overwrite certain configuration values. System properties always take precedence over values defined in config files.

This can be handy to temporarily change some configuration, for example, enable the fixed admin account like this:

$  ./sharry-restserver*/bin/sharry-restserver -Dsharry.restserver.backend.auth.fixed.enabled=true -- /path/to/server-config.conf