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