Skip to content
Aleksandr Zenkov edited this page Jan 22, 2023 · 8 revisions

How-to

User Limits

The ulimit command provides control over the resources available to the shell and/or to processes started by it, on systems that allow such control. If you have a hub with thousands of users, they can be disconnected from the hub because of ulimit.

If you run the hub as root you can't set the ulimit to an unlimited value:

ulimit -n <users>

should be a number and if you set it to 20000, Linux will limit the max number of open connections to 20000.

If you are running the hub as normal user, you must tell the system to allow a soft and hard limit for that user. In this case you need to edit the file /etc/security/limits.conf and adding the following lines:

username soft nofile 20480 
username hard nofile 20480 

where username is the name of the user with whom you are running the hub. Then next time you login with that user and type ulimit -n command, you will see the new limit.

Updating Lua

If you have installed Lua 5.0.x library from source, current Makefile does not support uninstall target; that means you can't uninstall it automactly by typing:

make uninstall

Suppose Lua library is installed in default location (/usr/local), the following files are installed:

./bin/lua (the interpreter)

./bin/luac (the compiler)

liblua.a and liblualib.a in ./lib (the libraries)

lua.h and lualib.h in ./include. (include files)

To remove them type (as root):

cd /usr/local

rm bin/lua bin/luac lib/liblua.a lib/liblualib.a include/lua.h include/lualib.h

And it's done. Now you can upgrade to Lua 5.1.x library if you want.

GeoIP

This guide will help you to update GeoIP table automatically. Maxmind's GeoIP database is usually updated at the begining of each month. With crontab you can schedule automatic updates periodically using vh script.

Open crontab file with your favorite editor using:

crontab -e

Now append at the end of the file this line:

0 0 1 * * /usr/local/vh --geoip >/dev/null

or

@monthly /usr/local/vh --geoip >/dev/null

Change path to script based on you installation folder. Now crontab will update table every month. To disable it just remove or comment the added line.

Debug

Here a guide how to debug Verlihub in case it crashes.

First of all install the debugger tool gdb. Then start verlihub with:

gdb verlihub 2>&1 | tee ~/gdb-verlihub.txt

It will prompt you in gdb console something like this:

netcelli@amd ~ $ gdb verlihub 2>&1 | tee ~/gdb-verlihub.txt

GNU gdb 6.8
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-pc-linux-gnu"...
(gdb)

Now start the process by typing "run" and press enter. GDB will start Verlihub in debug mode, that means you can see Verlihub logs in your console. Wait for a crash and in gdb console type:

(gdb) backtrace full
(gdb) info registers
(gdb) x/16i $pc
(gdb) thread apply all backtrace
(gdb) quit

This will save a lot of debug info in gdb-verlihub.txt file to understand why the process just crashed. Send that file to Git hub issues page.

Also since version 1.0.0 hub will attempt to send crash backtrace to Verlihub Crash Server via HTTP protocol, or in case of failure write it to error log file.

Translations

To begin with, you need to make sure that there is a translation available and complete for your language. You can see the whole list of available languages and their status on Transifex website. In case your language is missing or is incomplete, or even badly translated, you can always contribute to the project, by registering on that website and sending a request to join a specific translation team. Once your request is accepted, you can start working immediately.

In order to apply an existing translation to your hub, which is actually called a locale in computer software, you need to put following line into dbconfig file:

locale=ru_RU.CP1251

This specific example means that we are using Russian language ru in Russia country RU with CP1251 as character encoding. Please read more about locales on Wikipedia.

Then you need to generate required locale in your OS, in case it doesn't already exist. To see the list of available locales on you OS, execute locale -a command in your console. Following example command can be used on Debian and Ubuntu as super user to generate a new locale:

locale-gen ru_RU.CP1251

Please enter correct character encoding for each language used, else you will have character display issues on your hub. Here you can find a list of available languages together with corresponding character encodings: LANGS

Once you are all set up with above instructions, you need to !restart your hub. Please make sure that your language is displayed correctly in your hub, for example by executing +myinfo hub command.

Clone this wiki locally