Installation of common software

Last change on 2022-04-05 • Created on 2020-01-20

You, the customer, install and use the following programs at your own risk. We at Hetzner do not provide technical support for these third party programs. But if you have questions about konsoleH or about your server's configuration, we will be happy to assist you.

Software Installer

You can install your own software on a managed server via SSH using the "software" program.

Some software requires the Debian package "hos-dev". You can request this by writing a support request via konsoleH.

 Usage:
   software install [PACKAGE]
   software upgrade [PACKAGE]
   software uninstall [PACKAGE]
 List tested packages:
   software list
 List all available packages:
   software list all
 List all installed packages:
   software list installed

General information and tips

Process release

If you want to permanently run a process on a managed server, you need to request a process release from the support team. You also need a release if the program requires a lot of RAM. Most of the time, you also realize that a process release is necessary if your process is terminated with "KILLED".

Please write us a support request on konsoleH and tell us the process or the program.

  • Process "java": glassfish, tomcat, apache solr
  • Process "rslsync": Resilio Sync
  • Process "wkhtmltopdf": wkhtmltopdf
  • Process "ruby": Ruby
  • Process "nginx": Nginx
  • Process "varnishd": Varnish
  • Process "mongo / mongod": MongoDB

Port releases

Important note: Opening additional ports is generally not necessary and is a considerable safety risk.

See the Open ports article for more information.


Apache Solr

Apache Solr is a search platform written in Java.

This software requires the Debian package "hos-dev". To get this, please write a support request on konsoleH.

Installation

software install solr

Use Solr

Start Apache Solr using the following command:

solr start

The monitor output should look like this:

 Waiting up to 30 seconds to see Solr running on port 8983 [/]
 Started Solr server on port 8983 (pid=19302). Happy searching!

You can now access the Solr admin using your browser via http://IhreDomain.tld:8983. Important note: The port you use must be opened in advance.

@reboot cronjob

You will need to set up a cronjob so that you will not need to manually restart the daemon after the server has been restarted. To do this, go to konsoleH and select the correct account domain. Then in the menu, go to "Services; Cronjob manager; Advanced view". Then insert the following lines at the end and, finally, click on "Save":

@reboot /usr/home/<USERNAME>/.linuxbrew/bin/solr start

If necessary, adjust the path to match yours.

Additional configuration (optional)

If you want Solr to sit behind an Apache proxy, you will need to adjust the .htaccess file. You need to edit/add the following in the .htaccess file in the document root for the account:

RewriteEngine on
RewriteRule   ^(.*)  http://localhost:8983/$1 [P]

Warning: Please secure Solr accordingly (e.g. via a password); otherwise, third parties may access your data.

https://lucene.apache.org/solr/ https://www.solrtutorial.com/solr-in-5-minutes.html https://yonik.com/solr-4-tutorial/


Apache Tomcat

Apache Tomcat is an open source web server and web container that implements the specification for Jakarta Servlets and Jakarta Server Pages and thus allows web applications written in Java to be executed on a servlet or JSP basis. (Java Servlets and JavaServer Pages are the old names for Jakarta Servlets and Jakarta Server Pages.)

For Tomcat, you need the hos-dev package. Please request it by writing a support request via konsoleH.

Installation

software install tomcat

Start Tomcat

catalina run

To test whether Tomcat is running, you just need to go to the website of the account via the selected port. For example: http://ihre-domain.de:8080/ Tomcat also deploys a "Hello world" project that you can go to: http://ihre-domain.de:8080/examples/servlets/servlet/HelloWorldExample

@reboot cronjob

You will need to set up a cronjob so that you will not need to manually restart the daemon after the server has been restarted. To do this, go to konsoleH and select the correct account domain. Then in the menu, go to "Services; Cronjob manager; Advanced view". Then insert the following lines at the end and, finally, click on "Save":

@reboot /usr/home/<USERNAME>/.linuxbrew/bin/catalina run

If necessary, adjust the path to match yours.

Additional configuration (optional)

If you want Tomcat to be reachable from the internet, you will need to adjust the .htaccess and server.xml files. You need to edit/insert the following in the .htaccess file in the document root for the account:

RewriteEngine on
RewriteRule   ^(.*)  http://localhost:8080/$1 [P]

You need to extend the pre-built "connector" by a few lines in the Tomcat file server.xml (tomcat/conf/server.xml):

URIEncoding="UTF-8"
proxyPort="80"

The block should look like the one below in its entirety:

<Connector port="8080" protocol="HTTP/1.1"
              connectionTimeout="20000"
              URIEncoding="UTF-8"
              proxyPort="80"
              redirectPort="8443" />

Warning: Please secure your installation accordingly (e.g. via a password); otherwise, third parties may access your data.

Sources

https://tomcat.apache.org/
https://tomcat.apache.org/download-90.cgi


Composer

Composer is an application-oriented package manager for the PHP programming language. Composer is executed from the command line and installs dependencies of a PHP program.

Installation (managed servers)

software install composer

Installation (web hosting accounts with SSH support)

php -d allow_url_fopen=On -r "readfile('https://getcomposer.org/installer');" > composer-setup.php
php -d allow_url_fopen=On composer-setup.php
php -r "unlink('composer-setup.php');"
echo alias composer=\"/usr/bin/php -d allow_url_fopen=On /usr/home/$USER/composer.phar\" >> ~/.bashrc
source ~/.bashrc

Usage

composer install [PACKET]
composer uninstall [PACKET]

More commands:

composer list

Sources

https://getcomposer.org/
https://getcomposer.org/download/


Elasticsearch

Elasticsearch is a search engine written in Java. The program stores documents in a NoSQL format.

To install Elasticsearch, you will need more compilers, and you need to request a process release for elasticsearch. Please write a support request and ask for the package "hos-dev" and for the process release.

Installation

software install elasticsearch

Start Elasticsearch in the background and decouple it from terminal

nohup elasticsearch &

Test Elasticsearch

curl 'localhost:9200/_cat/indices?v'

If Elasticsearch is successfully running, then it will output the following:

health status index pri rep docs.count docs.deleted store.size pri.store.size

This output means that we don't have any indexes in this cluster yet.

@reboot cronjob

You will need to set up a cronjob so that you will not need to manually start the daemon after the server has been restarted. To do this, go to konsoleH and select the correct account domain. Then in the menu, go to "Services; Cronjob manager; Advanced view". Then insert the following lines at the end and, finally, click on "Save":

@reboot /usr/home/<USERNAME>/.linuxbrew/bin/elasticsearch

If necessary, adjust the path to match yours.

Additional configuration (optional)

If you want your Elasticsearch to be reachable from the internet, you will need to adjust the .htaccess file. You need to edit/add following in the .htaccess file in the document root for the account:

RewriteEngine on
RewriteRule   ^(.*)  http://localhost:9200/$1 [P]

Warning: Please secure your installation accordingly (e.g. via password); otherwise third parties may access your data.

Sources

https://www.elastic.co
https://www.elastic.co/guide/en/elasticsearch/reference/


FFmpeg

FFmpeg consists of a number of free computer programs and program libraries that can record, convert, send, and package digital video and audio material in various container formats.

Installation (managed servers)

software install ffmpeg

Installation (web hosting accounts with SSH support)

wget https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-amd64-static.tar.xz
tar xJf ffmpeg-release-64bit-static.tar.xz
mv $(ls | grep ffmpeg-[1-9]*) ffmpeg

Installation (web hosting accounts without SSH support)

Start downloading the static builds from https://www.johnvansickle.com/ffmpeg/ (64-bit Linux) onto your local computer. You need to extract the downloaded file before you do the upload. To extract the .tar.xz file, we recommend that you use the program at [https://www.7-zip.org/ 7-Zip]. Using WebFTP (konsoleH) or another FTP program (for example, [https://filezilla-project.org/ FileZilla]), upload the necessary binaries (for example, FFmpeg) onto the server. You need to set the permissions for the uploaded files to "755" using Filezilla or WebFTP, for example. You can now include the downloaded scripts in your programming.

Use FFmpeg

Examples of command lines/commands:

./ffmpeg/ffmpeg -i MeinLied.mp3 MeinLied.wav
./ffmpeg/ffmpeg -i MeinVideo.avi MeinVideo.mp4

Source

https://www.johnvansickle.com/ffmpeg/


GlassFish

GlassFish is the reference implementation of Java EE.

Installation

software install glassfish

Start GlassFish

asadmin start-domain

Test GlassFish

asadmin deploy ../hello.war

You should see the following output:

Application deployed with name hello.
Command deploy executed successfully.

Alternatively, you can access "<your-domain.tdl>:8080" in your browser, and you will receive a reply when the process is running.

@reboot cronjob

You will need to set up a cronjob so that you will not need to manually restart the daemon after the server has been restarted. To do this, go to konsoleH and select the correct account domain. Then in the menu, go to "Services; Cronjob manager; Advanced view". Then insert the following lines at the end and, finally, click on "Save":

@reboot /usr/home/<USERNAME>/.linuxbrew/bin/asadmin deploy hello.war

If necessary, adjust the path to match yours.

Administrator web interface

The web interface administrator is optional. It is deactivated by default due to security concerns. If you need it, you need to activate it. To do this, you must first create a password (and a user):

asadmin change-admin-password

The standard user is "admin", and no password is provided. After the last command, a password is provided, and with that, you can access the web interface:

asadmin enable-secure-admin

You will be asked to enter the user and password that you have just finished creating. Then you will be able to use the web interface administrator.

Source

https://glassfish.java.net/


MongoDB

MongoDB is a document-oriented database. Since the database is document-oriented, it can manage collections of JSON-like documents.

To install MongoDB, you will need more compilers. Please write a support request and ask for the package "hos-dev".

Installation

software install mongodb

Start MongoDB

You can start MongoDB as a daemon (which will run in the background) using the following command. You can omit the parameter "--port" if you only want to use the database locally.

mongod --dbpath /usr/home/<USERNAME>/mongodb/data/db/ --port 27017 --fork --logpath /usr/home/<USERNAME>/mongodb/log.txt

(The command must be all one line.)

Alternative:

mongod --dbpath /usr/home/<USERNAME>/mongodb/data/db/

Test MongoDB

mongo

If you can successfully start MongoDB, then the installation was also performed successfully. You shoul now have a shell similar to what is available with database systems like MySQL. You can use the command "exit" to leave this program.

@reboot Crontab

To run MongoDB automatically when the server is restarted, you can generate the @reboot cronjob with the following command, for example:

crontab -l | { cat; echo "@reboot $HOME/.linuxbrew/bin/mongod --dbpath $HOME/mongodb/data/db/ --port 27017 --fork --logpath $HOME/mongodb/log.txt &"; } | crontab -

Sources

https://docs.mongodb.com/manual/tutorial/install-mongodb-on-linux/
https://docs.mongodb.com/manual/mongo/
https://www.mongodb.com/mongodb-security-best-practices
https://github.com/mongodb/mongo/blob/master/rpm/mongod.conf (Examples of configurations)


NGINX

Nginx is not just a web server software, but also a reverse proxy and email proxy.

To install nginx, you will need more compilers. Please write a support request via konsoleH and ask for the package "hos-dev".

Installation

software install nginx

Usage

Start nginx

nginx

Check that it's working by opening your domain on the port you chose with a web browser. (Example: example.com:8080)

@reboot cronjob

You will need to set up a cronjob so that you will not need to manually restart the daemon after the server has been restarted. To do this, go to konsoleH and select the correct account domain. Then in the menu, go to "Services; Cronjob manager; Advanced view". Then insert the following lines at the end and, finally, click on "Save":

@reboot /usr/home/<USERNAME>/.linuxbrew/bin/nginx

If necessary, adjust the path to match yours.

Additional configuration (optional)

If you want your nginx webserver to be reachable from the internet, you will need to adjust the .htaccess file. You need to edit/add the following in the .htaccess file in the document root for the account:

RewriteEngine on
RewriteRule   ^(.*)  http://localhost:<port>/$1 [P]

node.js

Node.js is a server-side plattform you can use to operate network applications for software development. It is often used to host web servers.

Installation

software install node

Use node.js

node "YourScript.js"

@reboot cronjob

You will need to set up a cronjob so that you will not have to manually restart the daemon after the server has been restarted. To do this, go to konsoleH and select the correct account domain. Then in the menu, go to "Services; Cronjob manager; Advanced view". Then insert the following lines at the end and, finally, click on "Save":

@reboot /usr/home/<USERNAME>/.linuxbrew/bin/node script.js

If necessary, adjust the path to match yours.

Additional configuration (optional)

If you want your node webserver to be reachable from the internet, you will need to adjust the .htaccess file. You need to edit/add the following in the .htaccess file in the document root for the account:

RewriteEngine on
RewriteRule   ^(.*)  http://localhost:<port>/$1 [P]

Warning: Please secure your installation accordingly (e.g. via password); otherwise, third parties may access your data.

Source

https://nodejs.org/


PEAR

Having your own version of PEAR is sometimes necessary, for example, if you would like to install your own PEAR packages without any fuss or if you would like to use a version of PHP which is does not support the PEAR version on the server.

Installation

wget https://pear.php.net/go-pear.phar
php go-pear.phar

Change the following entries for the installation (LOGIN = FTP login for the account):

2. Temporary directory for processing            : /usr/home/LOGIN/.tmp
3. Temporary directory for downloads             : /usr/home/LOGIN/.tmp

After you're done editing, please press "Enter". When you are asked if the php.ini should be changed, choose [n].

Set the PATH variable so you can use the local PEAR:

echo 'export PATH="~/pear/bin:$PATH"' >> ~/.bashrc
echo 'export PHP_PEAR_PHP_BIN="/usr/bin/php"' >> ~/.bashrc
source ~/.bashrc

(Note: The path /usr/bin/php always points to the newest version of PHP available on the server. If you would like to use a specific version of PHP, edit the path, for example PHP 5.5 => /usr/bin/php55 )

Use PEAR

pear

List packages

pear list-all

Install new packages

pear install <package>

Using your own version of PEAR in PHP scripts

Annotate the .htaccess file:

php_value include_path /usr/home/LOGIN/pear/share/pear/:.:/usr/local/lib/php/

Redis

Redis is an in-memory database. For example, you can use Redis as an alternative to "memcached".
To install Redis, you will need more compilers. Please ask write a support request and ask for the package "hos-dev".

Installation

software install redis

Start Redis

redis-server

You can start this in a screen session, or you can start the command in the background:

redis-server &

Check if Redis is running

redis-cli

The output of the prompt has now changed to "redis 127.0.0.1:6379>". If you enter a "ping", you should receive a "pong" in return if Redis is running properly.

Redis-CLI: Example for how to manually set a key

redis 127.0.0.1:6379> set mykey somevalue
OK
redis 127.0.0.1:6379> get mykey
"somevalue"

@reboot cronjob

You will need to set up a cronjob so that you will not have to manually start the daemon after the server has been restarted. To do this, go to konsoleH and select the desired account domain. Then in the menu go to "Services; Cronjob manager; Advanced view". Then insert the following lines at the end and, finally, click on "Save":

@reboot /usr/home/<USERNAME>/.linuxbrew/bin/redis-server

If necessary, adjust the path to match yours.

Hint

As a key value database (NoSQL), which is used to store data in RAM, Redis can be a good alternative to using "Memcached".


Resilio Sync (BTSync)

Installation

software install rslsync

Start Resilio Sync / BTSync

Using the following command, set the IP address for the managed server and then execute it.

rslsync --webui.listen <server_ip>:8888

Once the port has been opened, you can then access the administration interface via http://<"SERVER-IP">:8888/gui With the following command, you can access Help for all BTSync functions:

rslsync --help

Normally you need to create a configuration file and one folder in which to save the data.

@reboot cronjob

You will need to set up a cronjob so that you will not need to manually restart the daemon after the server has been restarted. To do this, go to konsoleH and select the correct account domain. Then in the menu, go to "Services; Cronjob manager; Advanced view". Then insert the following lines at the end and, finally, click on "Save":

@reboot /usr/home/<USERNAME>/rslsync --webui.listen <server_ip>:8888

If necessary, adjust the path to match yours.

Sources

https://getsync.com/
https://wiki.archlinux.org/index.php/BitTorrent_Sync#Configuration
https://wiki.ubuntuusers.de/Archiv/BitTorrent_Sync/#Manuell


Ruby

Requirements

Pre-installation

*[REQUIRED] SSH access (for managed servers)

Post-installation

  • [OPTIONAL] Request that we set the memory limit for "gem" to 500 MB for Rails (Ruby On Rails). Please do this by writing a support ticket via konsoleH.
  • [OPTIONAL] If you would like to use Ruby with FCGI, please request the Debian software package "libfcgi-dev". Please do this by writing a support ticket via konsoleH.

How to use package management RubyGems (or "Gems")

You will not be able to globally install additional Gems for Ruby. However, you can install them in a local environment. For this method, you do not need root permissions. You need to use the package management "gem" like in this example:

gem install --user-install <gem-name>

Ruby over FCGI

If you would like to run Ruby with FCGI, you need to install the Gem "fcgi".

gem install --user-install fcgi

You need a FCGI script and settings in your .htaccess file. It is recommended that you store your own Ruby application in a sub-directory of "public_html" and define this one as document root.

FCGI script: You need to store this script in a directory which is accessible by Apache (e.g.: publichtml). That is why you should store your application in a sub-directory. Create the file **"rubyhandler.fcgi"** and insert the following lines into it.

#!/bin/dash
export GEM_HOME="$HOME/.gem/ruby/2.3.0/"
export GEM_PATH="$GEM_HOME:/var/lib/ruby/gems/1.8"
exec /usr/bin/ruby /usr/www/users/<FTP-USER>/<PROJECT-DIRECTORY>/index.rb

With the two "export" settings, define the directory which Ruby should search when looking for Gems. In this example it is the default directory for Gems which you have installed with the parameter "--user-install". It allows you to install Gems. In the line "exec" you need to set the path to an executable script.

.htaccess settings:

FcgidWrapper /usr/www/users/<FTP-USER>/ruby_handler.fcgi .rb
  SetHandler fcgid-script

In this example it shows you the settings if your FCGI script is stored in "public_html".

Sources

https://rubygems.org/
https://guides.rubygems.org/faqs/#i-installed-gems-with---user-install-and-their-commands-are-not-available
https://www.binarytides.com/quick-tip-installing-ruby-gems-in-the-users-home-directory/


SabreDAV (WebDAV)

To manage files on a web hosting or managed server via WebDAV, you can install SabreDAV.

Installation

SabreDAV is installed via composer. Therefore you need to install composer first.

composer require sabre/dav

Setup SabreDAV

An interface is required to access the server via WebDAV. You can find the official manual at https://sabre.io/dav/gettingstarted/.

mkdir /usr/home/<USERNAME>/sabredata
mkdir /usr/www/users/<USERNAME>/sabredav

Copy the file server.php from https://sabre.io/dav/gettingstarted/ to /usr/www/users/<USERNAME>/sabredav/server.php
Required changes:
require 'vendor/autoload.php'; -> require '/usr/home/<USERNAME>/vendor/autoload.php';
rootDirectory: here you configure the shared folder (for example, /usr/home/<USERNAME>)
setBaseUri: the path to the SabreDAV server, in this example /sabredav/server.php
lockBackend: the path to the lockfile, in this example /usr/home/<USERNAME>/sabredata/locks

Test SabreDAV

By default, SabreDAV is accessible via HTTP without a password: http://example.com/sabredav/server.php

Warning: Please secure your installation accordingly (e.g. via a password); otherwise, third parties may access your data.
https://sabre.io/dav/authentication/


Subversion (SVN)

This guide describes an approach that uses SSH access and assumes that you already are connected via SSH with your access details.

SVN is already installed, and therefore, you only need to set it up and start using it. You can operate SVN with multiple users, but you cannot use it with multiple SSH users.

Preparation

First, create a main folder for the repositories to help you manage your data in the correct way. Do not locate this folder in the "public_html" directory for security reasons. Create a main folder in the home directory:

mkdir ~/subversion

Create a repository

It is recommendable to create a new repository for every new project.

mkdir ~/subversion/testprojekt
svnadmin create ~/subversion/testprojekt

(Optional) create a user

To do this, open the configuration folder with the editor of your choice:

nano ~/subversion/testprojekt/conf/svnserve.conf

Write the following lines in this file:

anon-access = none
auth-access = write
password-db = passwd

Now you need to define the user. This user must match the SSH user (FTP main user); the password should also match. For this, you can open the password file with the editor of your choice:

nano ~/subversion/testprojekt/conf/passwd

In the following format, insert your username and password:

 <"USERNAME"> = <"PASSWORT">

Start Subversion as a daemon

svnserve -d

@reboot cronjob

You will need to set up a cronjob so that you will not need to manually restart the daemon after the server has been restarted. To do this, go to konsoleH and select the correct account domain. Then in the menu, go to "Services; Cronjob manager; Advanced view". Then insert the following lines at the end and, finally, click on "Save":

@reboot /usr/bin/svnserve -d

If necessary, adjust the path to match yours.

Use SVN

Now you can use SVN as usual via SSH.

svn co svn+ssh://sshhosteintrag/usr/home/<"FTP-USERNAME">/subversion/testprojekt

Sources

https://civicactions.com/blog/how-to-set-up-an-svn-repository-in-7-simple-steps/
https://subversion.apache.org/


Varnish

Varnish is a cache for dynamic websites with a lot of content. Unlike other reverse proxies, which often originate from client-side proxies or servers, Varnish was designed from the ground up as a reverse proxy.

To install Varnish, you will need more compilers. Please write a support request via konsoleH and ask for the package "hos-dev".

Installation

software install varnish

Test Varnish:

varnishd -V
varnishd -a localhost:6081 -T localhost:6082 -b localhost:8080

@reboot cronjob

You will need to set up a cronjob so that you will not need to manually restart the daemon after the server has been restarted. To do this, go to konsoleH and select the correct account domain. Then in the menu, go to "Services; Cronjob manager; Advanced view". Then insert the following lines at the end and, finally, click on "Save":

@reboot /usr/home/<USERNAME>/.linuxbrew/sbin/varnishd -a localhost:6081 -T localhost:6082 -b localhost:8080

If necessary, adjust the path to match yours.

Additional configuration (optional)

If you want your Varnish installation to be reachable from the internet, you will need to adjust the .htaccess file. You will need to edit/add the following in the .htaccess file in the document root for the account:

RewriteEngine on
RewriteRule   ^(.*)  http://localhost:6081/$1 [P]

Warning: Please secure your installation accordingly (e.g. via a password); otherwise, third parties may access your data.


wkhtmltopdf

Installation without SSH access

Download onto your PC the appropriate package (Debian 10 (buster) amd64) from the developer's website.
Extract the file using the tool of your choice (for example 7-Zip.
Within the archives, or in extraction folder, you will find the necessary program in the path wkhtmltox/bin/.
Transfer this file (wkhtmltopdf) to the server via FTP.
You will be able to execute the file by assigning it the permission "755". You can change the permission of the file via the FTP program that you used, or you can use the WebFTP interface on konsoleH.
Now you can open the tool directly from the application by entering the complete path.

Installation with SSH access on a web hosting product

Please replace the download link with the one from the newest version.

wget https://downloads.wkhtmltopdf.org/0.12/0.12.4/wkhtmltox-0.12.4_linux-generic-amd64.tar.xz
tar xJvf wkhtmltox-0.12.4_linux-generic-amd64.tar.xz

Installation with SSH access on a managed server

software install wkhtmltopdf

Source

https://wkhtmltopdf.org


wp-cli

WP-CLI is the command-line interface for WordPress. You can update plugins, configure multisite installations and much more, without using a web browser

Installation (managed servers)

software install wp-cli

Installation (web hosting account with SSH support)

curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
chmod +x wp-cli.phar
echo alias wp-cli=\"/usr/bin/php -d allow_url_fopen=On /usr/home/$USER/wp-cli.phar\" >> ~/.bashrc
source ~/.bashhrc

Sources

https://wp-cli.org/


Table of Contents