INSTALL Various updates
[sip-router] / INSTALL
1
2      ==================================================
3
4           Kamailio SIP Server Installation Notes
5
6                  http://www.kamailio.org
7
8      ==================================================
9
10   Welcome! This is an amazingly flexible, robust and secure SIP server
11   built on years of experience in several Open Source projects. It's a merge
12   of the SIP Express Router (SER) and the Kamailio (OpenSER) products produced
13   by a joint development team. 
14
15   This memo gives you hints on how to set up the Kamailio quickly.
16   
17   You can find a similar tutorial and many more on project's web site:
18     - http://www.kamailio.org/w/documentation/
19     - http://www.kamailio.org/wiki/
20   
21
22 Table of Contents
23 =================
24
25 1. Supported Architectures And Requirements
26 2. How-To Build Kamailio From The Source Code Distribution
27    2.1 Kamailio Fast Track Installation
28    2.2 Details Installing From Source Code
29      A) Build Commands
30 3. Quick-Start Installation Guide
31    A) Getting Help
32    B) Disclaimers
33    C) Quick Start
34    D) Kamailio With Persistent Data Storage
35 4. Troubleshooting
36
37
38 1. Supported Architectures And Requirements
39 -------------------------------------------
40
41 Supported operating systems:
42  - Linux (Debian, Ubuntu, Fedora, RedHat, CentOS, OpenSUSE, Gentoo, a.s.o.)
43  - FreeBSD, NetBSD, OpenBSD, Dragonfly BSD
44  - Solaris
45  - OS/X, Darwin
46
47 Note that some modules have dependencies on the Linux operating system.
48 This is clearly noted in the README files.
49
50 Partially supported
51  - Windows+Cygwin (core + static modules only, no IPv6, no
52    TCP, no dynamic modules)
53
54 Supported architectures
55  - i386, x86_64 (amd64), armv4l, sparc64, powerpc, powerpc64
56
57 Experimental architectures:
58  - mips1, mips2, sparc32, alpha
59
60 (for other architectures the Makefiles might need to be edited)
61
62 There are various configuration options defined in the Makefile.
63
64 Requirements:
65
66 - gcc or icc : gcc >= 2.9x; 3.[12] recommended (it will work with older version
67   but it might require some options tweaking for best performance)
68 - bison or yacc (Berkley Yacc)
69 - flex
70 - GNU make (on Linux this is the standard "make", on *BSD and Solaris it is
71   called "gmake") version >= 3.80 (recommended 3.81).
72 - sed and tr (used in the makefiles)
73 - GNU tar ("gtar" on Solaris) and gzip if you want "make tar" to work
74 - GNU install, BSD install or Solaris install if you want "make
75   install", "make bin", "make sunpkg" to work
76 - libmysqlclient & libz (zlib) if you want MySQL support (the db_mysql module)
77 - libxml2 if you want to compile the cpl-c (CPL support) or pa (presence) 
78    modules
79 - freeradius or libradiusclient-ng (> 5.0) if you need RADIUS support (the auth_radius,
80   group_radius, uri_radius and avp_radius modules)
81 - libpq if you need PostgreSQL support (the db_postgres module)
82 - libexpat if you want the jabber gateway support (the jabber module) or the
83   XMPP gateway support
84 - libxml2 if you want to use the cpl-c (Call Processing Language) or
85   the presence modules (presence and pua*)
86 - libradius-ng -libs and devel headers- if you want to use functionalities
87   with radius support - authentication, accounting, group support, etc
88 - unixodbc - libs and devel headers - if you want UNIXODBC support as
89   DB underlayer
90 - libperl - libs and devel headers - if you want the perl connector to support
91   perl scripting from your config file (perl module)
92 - libsnmp9 - libs and devel headers - if you want SNMP client functionality 
93   (SNMP AgentX subagent) for Kamailio
94 - libldap libs and devel headers v2.1 or greater - if you want LDAP support
95 - libpcre libs and devel headers - if you want to compile the lcr and dialplan
96   modules
97 - libsctp devel headers - if you want to compile the SCTP transport in the core
98 - libssl devel headers (openssl project) - if you want to compile the TLS module
99 - libunistring - for the WebSocket module
100 - python and devel headers for the Python module
101 - jdk and gcj for Java module
102 - the jansson library for the jansson module used for JSON document handling
103
104 Some modules have other requirements on third-party libraries. This is documented
105 in the README for the specific module.
106
107 OS Notes:
108
109  FreeBSD/OpenBSD/NetBSD: make sure gmake, bison or yacc & flex are installed.
110   
111   FreeBSD 5.4:
112   ------------
113   If you want to compile all the modules, you will need the following packages:
114   - mysql-client-* (any version, install one of the mysql*-client ports) for
115     libmysqlclient
116   - postgresql-libpqxx-2.4.2_1 (/usr/ports/databases/postgresql-libpqxx) for
117     libpq
118   - expat-1.95.8 (/usr/ports/textproc/expat2) for libexpat
119   - libxml2-2.6.18 (/usr/ports/textproc/libxml2) for libxml2
120   - radiusclient-0.4.7 (/usr/ports/net/radiusclient) for libradiusclient-ng 
121   NOTE: you'll need to add radiusclient_ng=4 to the gmake command line if you
122   use the 0.4.* version.
123   
124   Compile example (all the modules and SIP server core in a tar.gz):
125      gmake bin radiusclient_ng=4 include_modules="mysql jabber cpl-c auth_radius group_radius uri_radius postgres pa"
126
127   OpenBSD 3.7
128   -----------
129   - mysql-client-4.0.23 (/usr/ports/databases/mysql) for libmysqlclient
130   - expat-1.95.6 (/usr/ports/textproc/expat) for libexpat
131   - libxml-2.6.16p0 (/usr/ports/textproc/libxml) for libxml2
132   - radiusclient-ng-0.5.1 from 
133    http://download.berlios.de/radiusclient-ng/radiusclient-ng-0.5.1.tar.gz
134    (you need to download and install it, since there is no "official" 
135    openbsd port for it) for libradiusclient-ng 
136
137   Compile example (all the modules and SIP server core in a tar.gz):
138      gmake bin include_modules="mysql jabber cpl-c auth_radius group_radius uri_radius pa"
139
140   NetBSD 2.0
141   ----------
142   - mysql-client-4.1.12 (/usr/pkgsrc/databases/mysql4-client) for libmysqlclient
143   - expat-1.95.8nb2 (/usr/pkgsrc/textproc/expat) for libexpat
144   - libxml2-2.6.19 (/usr/pkgsrc/textproc/libxml2) for libxml2
145   - radiusclient-ng-0.5.1 (see OpenBSD)
146   
147   Compile example (all the modules and SIP server in a tar.gz):
148      gmake bin include_modules="mysql jabber cpl-c auth_radius group_radius uri_radius pa"
149
150   Solaris 10
151   ----------
152   As above; you can use Solaris's yacc instead of bison. You might also
153   need gtar and ginstall. If you don't have ginstall you can use Solaris
154   install, just make sure it's in the PATH (it's usually in /usr/sbin) and
155   add INSTALL=install either to the environment or to the make command line
156   (e.g.: gmake INSTALL=install all).
157   
158   Compile example (all the modules and SIP server in a tar.gz):
159      gmake bin INSTALL=install include_modules="mysql jabber cpl-c auth_radius group_radius uri_radius postgres pa"
160
161   Linux
162   -----
163   Kamailio is part of the official Debian distribution. You can download binary modules
164   directly using normal packet management.
165
166   Needed packages for compiling all the modules:
167   * Debian:
168       - libmysqlclient-dev for libmysqlclient
169       - libpq-dev for libpq
170       - libexpat1-dev for libexpat
171       - libxml2-dev for libxml2
172       - libradiusclient-ng-dev for libradiusclient
173           - other libraries are needed for some other modules,
174             see README of the module you want to use
175     Kamailio have APT deb repositories that allow you to
176         install the binaries easily - see the web site for more details:
177           - http://kamailio.org
178
179
180  Cygwin  (alpha state, partial support)
181  --------------------------------------
182  make sure make, bison, flex, minires and minires-devel (needed for the
183  resolver functions) are installed.
184  
185  Only building Kamailio's core and some static modules is supported for now.
186  Stuff known not to work:
187            - IPv6 (cygwin doesn't support it yet)
188            - TCP (the tcp code heavily depends on file descriptor passing 
189              between processes, which is not yet supported by cygwin)
190            - dynamic modules (non statically linked -- not supported because
191              backlinking doesn't work in windows by design)
192
193
194   Compile example (all the modules and Kamailio in a tar.gz):
195      make bin include_modules="mysql jabber cpl-c auth_radius group_radius uri_radius postgres pa"
196
197
198 2. Howto Build Kamailio From Source Code Distribution
199 -------------------------------------------------------
200
201 (NOTE: if make doesn't work try gmake instead)
202
203 2.1 Kamailio Fast Track Installation
204 ....................................
205
206
207 If you are familiar with Unix/Linux build tools aready and you installed
208 the required dependencies, then you can just follow this section, otherwise
209 skip over it.
210
211 To get Kamailio installed, in the folder with source code run:
212
213   make cfg
214   make all
215   make install
216
217 If you want to install with additional modules, for example with mysql and
218 tls, run:
219
220   make include_modules="db_mysql tls" cfg
221   make all
222   make install
223
224 2.2 Details - Installing From Source Code
225 .......................................
226
227 Build Commands
228
229   Kamailio is split in four main parts: The core, the modules, the
230   utilities, and the various scripts/examples.  When you build, you can decide to build
231   only the core, the modules, both, or all.
232
233 * Compile Kamailio core only:
234         make
235
236 Compile modules except some explicitly excepted (see below)
237         make modules  - all modules in the modules/ directory 
238         make modules-all or make every-module  - all the modules 
239
240 * Compile all:
241         make all
242
243 * Explicitly excepted modules:
244   By default make all will not build modules that require external libraries or
245   that are considered to be "experimental". For example, modules that have external
246   dependencies are: db_mysql, jabber, cpl-c, auth_radius, group_radius, uri_radius,
247   avp_radius, db_postgres, db_berkeley, carrierroute, ...
248
249 Including groups of modules:
250   Instead of compiling the default modules only, you can specify groups of
251   modules to include, according to their status:
252   - standard - Modules in this group are considered a standard part of Kamailio
253     (due to widespread usage) but they have no dependencies (note that some of
254     these interplay with external systems. However, they don't have compile
255     or link dependencies).
256
257   - db - Modules in this group use databases and need a database driver to run.
258     Included are drivers for the text mode db (dbtext) and for dumping
259     large amount of data to files (db_flatstore). See also the mysql or
260     postgres groups.
261
262   - standard_dep -  Modules in this group are considered a standard part of Kamailio
263     (due to widespread usage) but they have dependencies that must be satisfied
264     for compilation.
265     NOTE! All presence modules (dialog, pa, presence_b2b, rls, xcap) have been
266         included in this group due to interdependencies
267
268   - stable - Modules in this group satisfy specific or niche applications,
269     and are considered stable for production use. They may or may not have dependencies
270
271   - experimental - Modules in this group are either not complete, untested, or
272     without enough reports of usage to allow the module into the stable group.
273         They may or may not have dependencies.
274
275 There is another set of groups mainly used by Kamailio, where modules
276 are grouped based on Debian packaging rules. For example:
277    - kstandard - Kamailio standard modules
278
279    - kpresence - Kamailio SIMPLE presence server modules
280
281 * To compile core with standard modules:
282         make group_include="standard" all
283
284 * To compile all modules (provided you have all the required libraries installed) use:
285         make group_include="standard standard-dep stable experimental" all
286
287   There are also in addition some "convenience" groups:
288
289         mysql           - Include all the db modules dependent and the MySQL db driver
290         postgres        - Include all the db modules and the PostgreSQL db driver
291         radius          - Include all modules on radiusclient
292         presence        - Include all the presence modules
293
294   Ex. to make a standard installation with MySQL, use:
295         make group_include="standard mysql" all
296
297   In addition to group_include (or instead), you can use 
298         include_modules="modA modB"
299   to specify exactly the modules you want to include, ex.
300         make include_modules="mymodule" modules
301
302   You can also explicitly skip modules using skip_modules. Let's say you want all
303   the standard and standard-dep modules except domain:
304         make group_include="standard standard-dep" skip_modules="domain" all
305
306   NOTE!!! As this mechanism is very powerful, you may be uncertain which
307   modules that will be included. Just replace all (or modules) with print-modules
308   and you will see which modules will be included and excluded, ex:
309         make print-modules
310   will show which modules are excluded by default.
311
312   If you want to install or to build a binary package (a tar.gz with
313   Kamailio core and the modules), substitute "all" in the above command with
314   "install" or "bin".
315
316
317 * More compile examples:
318
319   - compile with profiling
320         make PROFILE=-pg all
321   - compile debug mode version
322         make mode=debug all
323   - compile debug version with profiling
324         make mode=debug PROFILE=-pg all
325   - compile only the print module
326         make modules=modules/print modules
327   - compile by default only the print module, in debuging mode and with 
328     profiling:
329         make cfg modules=modules/print mode=debug PROFILE=-pg
330         make all
331   - change & save the  modules list without rebuilding the whole config
332     (so that already compiled modules won't be re-compiled by 
333     make all/make modules):
334         make modules-cfg include_modules="mysql postgress"
335   - change only the compile/build options, without changing the modules list:
336         make cfg-defs CPU=ultrasparc PROFILE=-pg
337   - compile by default all the usual modules + mysql and postgres, optimized 
338      for pentium-m and for space (saves both the build options and the module 
339      list)
340         make cfg include_modules="mysql postgres" CPU=pentium-m CC_EXTRA_OPTS=-Os
341         make all
342    - compile all the "default" modules except textops and vm
343         make skip_modules="textops vm" modules
344    - save the above option in the make config, so that all make commands
345      will use it by default:
346         make cfg skip_modules="textops vm"
347    - compile all default modules and include uri_radius (not compiled by default):
348         make include_modules="uri_radius" modules
349    - compile all the modules from the modules subdirectory (even the one excluded
350      by default):
351         make exclude_modules="" modules
352    - compile all the modules from the modules subdirectory excluding vm:
353         make exclude_modules=vm modules
354      or
355         make exclude_modules="" skip_modules=vm modules
356    - compile with the "tm" module statically linked and with profiling
357         make static_modules=tm PROFILE=-pg all
358    - compile with gcc-3.2 instead of gcc
359         make CC=gcc-3.2 all
360      or
361         CC=gcc-3.2 make all
362
363 Make targets:
364 =============
365
366 Make Local Build Config:
367 ------------------------
368
369   * make cfg or make config - force config and module list regeneration
370
371   Example: 
372         make cfg include_modules=mysql mode=debug
373
374   All future make invocations will include the mysql module and will build in debug mode
375
376   Note: If config.mak doesn't exist (e.g. initial checkout or after a make 
377   proper) or if Makefile.defs was changed, the config will be re-generated
378   automatically by the first make command. For example:
379         make cfg  include_modules=db_mysql; make all
380   is equivalent to 
381         rm config.mak modules.lst; make include_modules=db_mysql.
382
383   * make cfg-defs  (force config regeneration, but don't touch the module list)
384
385   Example:
386         make cfg-defs CPU=ultrasparc CC_EXTRA_OPTS=-Os PROFILE=-pg
387
388         make modules-cfg
389   or
390         make modules-list
391   saves the module list, without regenerating the build config
392   Example:
393         make modules-list include_modules="tls" skip_modules="print"
394
395 Clean:
396 ------
397
398   * make clean          - clean the base and modules too
399   * make proper         - clean also the dependencies and the config, but not the module list
400   * make distclean      - the same as proper
401   * make maintainer-clean - clean everything, including make's config, saved 
402                           module list, auto generated files, tags, *.dbg a.s.o
403   * make clean-all      - clean all the modules in modules/*
404   * make proper-all     - like make proper but for all the  modules in modules/*
405
406   Config clean:
407
408   * make clean-cfg       - cleans the compile config
409   * make clean-modules-cfg  - cleans the modules list
410
411   Reduced clean:
412
413   * make local-clean    - cleans only the core, no libs, utils or modules
414   * make clean-modules  - like make clean, but cleans only the modules
415   * make clean-libs     - like make clean, but cleans only the libs
416   * make clean-utils    - like make clean, but cleans only the utils
417
418
419 Compile:
420 --------
421   * make proper
422      optional: make cfg  <various cfg. options that should be saved>
423   * make proper-modules - like make proper, but only for modules
424   * make proper-libs    - like make proper, but only for libs
425   * make proper-utils   - like make proper, but only for utils
426   * make
427      or gmake on non-Linux systems
428   * make modules 
429      or make modules exclude_modules="CVS print" etc.
430
431 Other Make Targets:
432 -------------------
433   Make tags:
434         make TAGS
435
436   Create a tar.gz with the sources (in ../):
437         make tar
438
439   Create a tar.gz with the binary distribution (in ../):
440         make bin
441
442   Create a gzipped solaris package (in ../):
443         make sunpkg
444
445   Create debian packages (in ../):
446         make deb
447
448   or
449         dpkg-buildpackage
450
451 Documentation:
452 --------------
453
454   Regenerate the README for all the "default" modules (include_modules,
455   skip_modules a.s.o can be used to alter the module list).
456         make README
457
458   Generates a manpage for all the modules that support it (.xml file in the
459   module directory).
460         make man
461
462   Generates README file for modules/foo.
463         make modules=modules/foo modules-readme
464
465 Install:
466 --------
467
468         make prefix=/usr/local  install
469
470   Note: If you use prefix parameter in make install then you also need
471   to use this parameter in previous make commands, i.e. make, make modules,
472   or make all. If you fail to do this then Kamailio will look for the default
473   configuration file in a wrong directory, because the directory of the
474   default configuration file is hardcoded into Kamailio during compile time. 
475   When you use a different prefix parameter when installing then the 
476   directory hard coded in Kamailio and the directory in which the file will be 
477   installed by make install will not match. (You can specify exact location
478   of the configuration file using -f parameter of Kamailio).
479
480   For example, if you do the following:
481         make all
482         make prefix=/ install
483
484   Then the installation will put the default configuration file into
485   /etc/kamailio/kamailio.cfg (because prefix is /),
486   but Kamailio will look for the file in /usr/local/etc/kamailio/kamailio.cfg
487   (because there was no prefix parameter make all and /usr/local is the default value of prefix).
488
489   The workaround is trivial, use the same parameters in all make commands:
490         make prefix=/ all
491         make prefix=/ install
492   or save the desired prefix in the make config (e.g.: make cfg prefix=/).
493
494   That applies to other make parameters as well (for example parameters
495   "modules" or "excluded_modules").
496
497
498 3. Quick-Start Installation Guide
499 ---------------------------------
500
501 A) Getting Help
502
503   This guide gives you instructions on how to set up the Kamailio
504   on your box quickly. In case the default configuration does not fly, please
505   check the documentation at the Kamailio web site
506   http://www.kamailio.org to learn how to configure Kamailio for your site.
507
508   If the documentation does not resolve your problem you may try contacting 
509   our user forum by E-mail at sr-users@lists.sip-router.org -- that is the
510   mailing list of the Kamailio community. To participate in the mailing list,
511   please subscribe at the following web address:
512
513   https://lists.sip-router.org/cgi-bin/mailman/listinfo
514
515 B) Disclaimers
516  
517   Note well the default "quick-start" configuration is very simple in order 
518   to be easily installable. It provides minimum features. Particularly, 
519   authentication is by default disabled, which means anyone can register using
520   any name with the server. (This is on purpose to avoid installation 
521   dependencies on a database, which is needed for storing user credentials.)
522
523 C) Quick Start
524
525   The following step-by step guide gives you instructions how to install the 
526   SQL-free distribution of Kamailio. If you need persistence and
527   authentication, then you have to install additional database support --
528   proceed to section D) after you are finished with C).
529
530   1) Download an RPM or Debian package from the links on the wiki
531
532     https://www.kamailio.org/wiki/
533
534   If you don't use an rpm or debian based distribution, try our tar.gz'ed
535   binaries
536     https://www.kamailio.org/pub/kamailio/latest/src/
537
538   If you use Solaris 8 you can try our solaris package.
539   If you use Gentoo Linux you do not have to download a package.
540
541   2) Install the package
542         RPM:
543                 rpm -i <package_name>
544         debian:
545                 dpkg -i <package_name>
546         gentoo:
547                 emerge kamailio
548                 (or if use only stable packets: 
549                 ACCEPT_KEYWORDS="~x86" emerge kamailio )
550         tar.gz:
551                 cd /; tar zxvf <package_name>_os_arch.tar.gz
552                 (it will install in /usr/local/, and the configuration file in
553                 /usr/local/etc/kamailio/kamailio.cfg)
554         Solaris:
555                 gunzip <package_name>.gz ; pkgadd -d <package_name>
556         *BSD:
557                 pkg_add package_name
558     
559   3) Start the server
560
561         RPM + gentoo:
562                 /etc/init.d/kamailio start
563         debian:
564                 Kamailio is started automatically after the install
565                 (in case something fails you can start it with '/etc/init.d/kamailio start')
566         tar.gz:
567         Solaris:
568                 the tar.gz does not include an init.d script, you'll have to create one of
569                 your own or adapt one from the source distribution (pkg/debian/init.d,
570                 pkg/kamailio/rpm/kamailio.init, pkg/kamailio/deb/debian/kamailio.init, a.s.o.)
571                 You can start Kamailio directly with
572                         /usr/local/sbin/kamailio.
573     
574   4) Optionally, watch server's health using the kamctl utility
575
576     - to do so, first set the environment variable SIP_DOMAIN to your domain 
577       name, e.g., in Bourne shell, call
578         export SIP_DOMAIN="myserver.foobar.com"
579         - if you are using other than 'localhost' mysql server for maintaining
580           subscriber database, change the variable 'SQL_HOST' to the proper
581           host name in the kamctl script
582     - run the kamctl utility
583         /usr/sbin/kamctl moni
584       or
585         /usr/local/sbin/kamctl moni (if you installed Kamailio from a
586                 tar.gz or solaris package)
587
588   5) Connect SIP phones
589
590   Register with the server using your favorite SIP User Agent (phone). 
591
592   In most cases, you need to set the following options:
593
594         Proxy server:   host name of your server
595         Domain:         the sip domain your server is configured to handle
596         User name:      the account name for your device
597         Auth user:      the ID used for authentication
598         Secret/Password:        The configured authentication password
599
600 D) Kamailio With Persistent Data Storage
601 ------------------------------------------
602
603   The default configuration is very simple and features many simplifications. 
604   In particular, it does not authenticate users and loses User Location database 
605   on reboot. To provide persistence, keep user credentials and remember users' 
606   locations across reboots, Kamailio can be configured to use a database, like MySQL. 
607
608   Before you proceed, you need to make sure MySQL is installed on your box. Your
609   MySQL server must be configured to deal with a large number of
610   connection. To increase it, set the following line in [mysqld] section
611   of your my.ini configuration file:
612
613    set-variable    = max_connections=500
614
615   1) Download the package containing mysql support for Kamailio from the links
616      you find on: 
617         https://www.kamailio.org/wiki/
618
619     (rpm and deb provided, most of the binary tar.gz distributions and the 
620      solaris package include it; if it is not present you'll have to rebuild
621      from the source).
622         For gentoo please include 'mysql' to your USE variable in /etc/make.conf
623         or give it as variable to the emerge command.
624
625   2) install the package
626     rpm -i <package_name>
627     or
628     dpkg -i <package_name>
629         or
630         emerge kamailio
631         (if do not want to put 'mysql' into your USE variable you can type:
632          USE="mysql" emerge kamailio)
633
634   3) create MySQL tables for Kamailio 
635         - if you have a previously installed Kamailio on your system, use
636         /usr/local/sbin/kamdbctl reinstall 
637           to convert your Kamailio database into new structures
638         - otherwise, if this is your very first installation, use
639         /usr/local/sbin/kamdbctl create
640           to create Kamailio database structures
641      (you will be prompted for password of MySql "root" user)
642
643   4) configure Kamailio to use SQL
644     uncomment all lines in configuration file kamailio.cfg which are related to authentication:
645     - loadmodule "db_mysql.so"
646     - loadmodule "auth.so"
647     - loadmodule "auth_db.so"
648     - modparam("usrloc", "db_mode", 2)
649     - modparam("auth", "calculate_ha1", yes)
650     - modparam("auth_db", "password_column", "password")
651     - if (!www_authorize("example.com", "subscriber")) {
652         www_challenge("example.com", "0"); 
653         break;
654       }
655
656   5) be sure to replace realm, the first parameter in www_* actions, 
657      with name of your server; some broken UAC implementations don't 
658      authenticate otherwise; the authentication command in your
659      configuration script should look then like this:
660         if (!www_authorize("myserver.foobar.com", "subscriber")) {
661             www_challenge("myserver.foobar.com", "0"); 
662             break;
663         }
664
665   6) restart the server
666
667       /etc/init.d/kamailio restart
668
669   7) you can now start managing the server using the kamctl utility; 
670      you need to first set the environment variable SIP_DOMAIN to your 
671      local SIP realm, e.g.,
672        export SIP_DOMAIN="myserver.example.com"
673
674         a) watch the server status using 'kamctl moni'
675         b) try to login with your SIP client as user 'admin' with password 'heslo'
676         c) try adding new users using 
677                 'kamctl add <username> <password>'
678
679
680 4. Troubleshooting
681 ------------------
682
683 Q: SIP requests are replied by Kamailio with "483 Too Many Hops" or 
684    "513 Message Too Large"
685
686 A: In both cases, the reason is probably an error in request routing script 
687    which caused an infinite loop. You can easily verify whether this happens 
688    by watching SIP traffic on loopback interface. A typical reason for
689    misrouting is a failure to match local domain correctly. If a server
690    fails to recognize a request for itself, it will try to forward it to
691    current URI in believe it would forward them to a foreign
692    domain. Alas, it forwards the request to itself again. This continues
693    to happen until value of max_forwards header field reaches zero or
694    the request grows too big. Solutions is easy: make sure that domain
695    matching is correctly configured. A quick way to achieve that is to
696    introduce a config option to ser.cfg or kamailio.cfg: alias=domainname,
697    where domainname shall be replaced with name of domain, which you wish to
698    server and which appears in request-URIs.
699
700 Q: Where to report issues?
701
702 A: Use bug tracker at: https://github.com/kamailio/kamailio/issues
703
704 Q: Any F.A.Q. that could be helpful to check before reporting an issue?
705
706 A: See: https://www.kamailio.org/wiki/tutorials/faq/main