https://github.com/OpenSIPS/opensips/blob/1.10/INSTALL
| Id$ | |
| =========================================== | |
| OpenSIPS Installation Notes | |
| http://www.opensips.org/ | |
| =========================================== | |
| This memo gives you hints how to set up OpenSIPS quickly. To | |
| understand how OpenSIPS works and how to configure it properly, | |
| read admin's guide available from OpenSIPS website. We also | |
| urge you to read latest ISSUES (available from OpenSIPS website | |
| too) and check for potential problems in this release. | |
| Users of previous releases are encouraged to read NEWS to | |
| learn how to move to this new OpenSIPS version. | |
| TOC | |
| 1. Supported Architectures and Requirements | |
| 2. Howto Build opensips From Source Distribution | |
| 3. Quick-Start Installation Guide | |
| A) Getting Help | |
| B) Disclaimers | |
| C) Quick Start | |
| D) opensips with Persistent Data Storage | |
| E) osipsconsole installation | |
| F) menuconfig installation | |
| 4. Troubleshooting | |
| 1. Supported Architectures and Requirements | |
| ------------------------------------------- | |
| Supported architectures: Linux/i386, Linux/armv4l, FreeBSD/i386, OpenBSD/i386 | |
| Solaris/sparc64, NetBSD/sparc64 | |
| (for other architectures the Makefiles might need to be edited) | |
| There are various configuration options defined in the Makefile. | |
| Requirements: | |
| - gcc / suncc / icc : gcc >= 2.9x; 4.[012] recommended (it will work with | |
| older version but it might require some options tweaking for best | |
| performance) | |
| - bison or yacc (Berkley yacc) | |
| - flex | |
| - GNU make (on Linux this is the standard "make", on FreeBSD and Solaris is | |
| called "gmake") version >= 3.79. | |
| - sed and tr (used in the makefiles) | |
| - GNU tar ("gtar" on Solaris) and gzip if you want "make tar" to work | |
| - GNU install or BSD install (on Solaris "ginstall") if you want "make | |
| install", "make bin", "make sunpkg" to work | |
| - openssl if you want to compile the TLS support | |
| - libsctp if you want to compile the SCTP support | |
| - libmysqlclient & libz (zlib) -libs and devel headers- if you want mysql DB | |
| support (the db_mysql module) | |
| - libpq / postgresql -libs and devel headers- if you want postgres DB | |
| support (the db_postgres module) | |
| - unixodbc -libs and devel headers- if you want unixodbc DB | |
| support (the db_unixodbc module) | |
| - libexpat if you want the jabber gateway support (the jabber module) or the | |
| XMPP gateway support | |
| - libxml2 if you want to use the cpl-c (Call Processing Language) or | |
| the presence modules (presence and pua*) | |
| - libradius-ng -libs and devel headers- if you want to use functionalities | |
| with radius support - authentication, accounting, group support, etc | |
| - unixodbc - libs and devel headers - if you want UNIXODBC support as | |
| DB underlayer | |
| - libxmlrpc-c3 - libs and devel headers - if you want to have XML-RPC support | |
| for the Management interface (MI) | |
| - libperl - libs and devel headers - if you want PERL connector to support | |
| perl scripting from you config file (perl module) | |
| - libsnmp9 - libs and devel headers - if you want SNMP client functionality | |
| (SNMP AgentX subagent) for opensips | |
| - libldap libs and devel headers v2.1 or greater - if you want LDAP support | |
| - libconfuse and devel headers - if you want to compile the carrierroute | |
| module | |
| - libncurses5-dev and m4 - if you want to use the menuconfig graphical user interface | |
| for configuring OpenSIPS compilation & cfg file options | |
| OS Notes: | |
| - FreeBSD/OpenBSD/NetBSD: make sure gmake, bison or yacc & flex are installed | |
| - Solaris: as above; you can use Solaris's yacc instead of bison. You might | |
| need also gtar and ginstall. | |
| 2. Howto Build opensips From Source Distribution | |
| ------------------------------------------- | |
| (NOTE: if make doesn't work try gmake instead) | |
| - compile with default options (TLS support is enabled by "TLS=1"; SCTP | |
| support is enabled by "SCTP=1"): | |
| make #builds only opensips core, equivalent to make opensips | |
| make modules | |
| or make all #builds everything | |
| -compile debug mode version | |
| make mode=debug all | |
| -compile only the textops module | |
| make modules=modules/textops modules | |
| -compile all the "default" modules except textops and db_mysql | |
| make skip_modules="textops db_mysql" modules | |
| -compile all default modules and include uri_radius (not compiled by default): | |
| make include_modules="uri_radius" modules | |
| -compile all the modules from the modules subdirectory (even the one excluded | |
| by default): | |
| make exclude_modules="" modules | |
| -compile all the modules from the modules subdirectory excluding exec: | |
| make exclude_modules=exec modules | |
| or | |
| make exclude_modules="" skip_modules=exec modules | |
| -generate README file for textops module | |
| make modules=modules/textops modules-readme | |
| -compile with gcc-3.2 instead of gcc | |
| make CC=gcc-3.2 all | |
| or | |
| CC=gcc-3.2 make all | |
| Make targets: | |
| Clean: | |
| make clean (clean the modules too) | |
| make proper (clean also the dependencies) | |
| make distclean (the same as proper) | |
| make mantainer-clean (clean everything, including auto generated files, | |
| tags, *.dbg a.s.o) | |
| Compile: | |
| make proper | |
| make | |
| (or gmake on non-Linux systems) | |
| make modules | |
| or make modules exclude_modules="exec" etc. | |
| Make tags: | |
| make TAGS | |
| Create a tar.gz with the sources (in ../): | |
| make tar | |
| Create a tar.gz with the binary distribution (in ../): | |
| make bin | |
| Create a gzipped solaris package (in ../): | |
| make sunpkg | |
| Create debian packages (in ../): | |
| make deb | |
| or | |
| dpkg-buildpackage | |
| Install: | |
| make prefix=/usr/local install | |
| Note: If you use prefix parameter in make install then you also need | |
| to use this parameter in previous make commands, i.e. make, make modules, | |
| or make all. If you fail to do this then OpenSIPS will look for the default | |
| configuration file in a wrong directory, because the directory of the | |
| default configuration file is hard coded into opensips during compile time. | |
| When you use a different prefix parameter when installing then the | |
| directory hard coded in opensips and the directory in which the file will be | |
| installed by make install will not match. (You can specify exact location | |
| of the configuration file using -f parameter of opensips). | |
| For example, if you do the following: | |
| make all | |
| make prefix=/ install | |
| Then the installation will put the default configuration file into | |
| /etc/opensips/opensips.cfg (because prefix is /), but opensips will look for the | |
| file in /usr/local/etc/opensips/opensips.cfg (because there was no prefix | |
| parameter in make all and /usr/local is the default value of prefix). | |
| Workaround is trivial, use the same parameters in all make commands: | |
| make prefix=/ all | |
| make prefix=/ install | |
| That applies to other make parameters as well (for example parameters | |
| "modules" or "excluded_modules"). | |
| Start graphical user interface: | |
| make menuconfig | |
| 3. Quick-Start Installation Guide | |
| ---------------------------------------------- | |
| A) Getting Help | |
| This guide gives you instructions on how to quickly set up OpenSIPS | |
| on your box. In case the default configuration does not fly, check | |
| documentation at opensips site | |
| http://www.opensips.org/ | |
| to learn how to configure OpenSIPS for your site. | |
| If the documentation does not resolve your problem you may try contacting | |
| our user forum by E-mail at users@opensips.org -- that is the mailing list | |
| of opensips community. To participate in the mailing list, subscribe at the | |
| following web address: | |
| http://www.opensips.org/cgi-bin/mailman/listinfo/users | |
| B) Disclaimers | |
| Note well the default "quick-start" configuration is very simple in order | |
| to be easily installable. It provides minimum features. Particularly, | |
| authentication is by default disabled, which means anyone can register using | |
| any name with the server. (This is on purpose to avoid installation | |
| dependencies on MySQL which is needed for storing user credentials.) | |
| C) Quick Start | |
| The following step-by step guide gives you instructions how to install the | |
| sql-free distribution of opensips. If you need persistence and authentication, | |
| then you have to install additional MySql support -- proceed to section D) | |
| after you are finished with C). | |
| 1) Download an RPM or debian package from our site | |
| http://opensips.org/pub/opensips/latest/packages/ | |
| If you don't use an rpm or debian based distribution, see if corresponding | |
| packages are available or try our tar.gz'ed binaries. | |
| If you use Gentoo Linux you do not have to download a package. | |
| For debian, packages are available via the Debian official repositories for | |
| testing and unstable. For stable, use the project's repository at: | |
| deb http://www.opensips.org/debian stable main | |
| 2) install the package | |
| RPM: | |
| rpm -i <package_name> | |
| debian: | |
| dpkg -i <package_name> | |
| or if APT repository is used: | |
| apt-get install <package_name> | |
| gentoo: | |
| emerge opensips | |
| (or if use only stable packets: ACCEPT_KEYWORDS="~x86" emerge opensips) | |
| tar.gz: | |
| cd /; tar zxvf <package_name>_os_arch.tar.gz | |
| (it will install in /usr/local/, and the configuration file in | |
| /usr/local/etc/opensips/opensips.cfg) | |
| Solaris: | |
| gunzip <package_name>.gz ; pkgadd -d <package_name> | |
| *BSD: | |
| pkg_add package_name | |
| Note that the OpenSIPS package is in the FreeBSD package tree included, | |
| but is not present in the OpenBSD and NetBSD repository. You'll probably | |
| have more luck trying to build directly from the source with the tar.gz, | |
| as the package files for this systems are somewhat out of date at the | |
| moment. | |
| 3) start the server | |
| RPM + gentoo: | |
| /etc/init.d/opensips start | |
| debian: | |
| opensips is started automatically after the install | |
| (in case something fails you can start it with /etc/init.d/opensips start) | |
| tar.gz: | |
| the tar.gz does not include an init.d script, you'll have to create one of | |
| your own or adapt one from the source distribution (debian/init.d, | |
| rpm/opensips.init.*, gentoo/opensips.init) | |
| You can start opensips directly with /usr/local/sbin/opensips. | |
| Solaris: | |
| see tar.gz. | |
| 4) optionally, watch server's health using the opensipsctl utility | |
| - to do so, first set the environment variable SIP_DOMAIN to your domain | |
| name, e.g., in Bourne shell, call | |
| export SIP_DOMAIN="myserver.foobar.com" | |
| - if you are using other than 'localhost' mysql server for maintaining | |
| subscriber database, change the variable 'SQL_HOST' to the proper | |
| host name in the opensipsctl script | |
| - run the opensipsctl utility | |
| /usr/sbin/opensipsctl moni | |
| or | |
| /usr/local/sbin/opensipsserctl moni (if you installed from a tar.gz | |
| or solaris package) | |
| - you can create a resource file for opensipsctl, name it .opensipsctlrc | |
| and place it in your home directory. You can set there the values for | |
| opensipsctl variables (e.g., SIP_DOMAIN, SQL_HOST, SQL_USER, SQL_DB ...) | |
| 5) Register with the server using your favourite SIP User Agent. | |
| For example, users of Windows Messenger need to set | |
| in Tools->Options->Accounts the following values: | |
| Sign-in Name: <username>@<your_server_address> | |
| Advanced->Configure Settings (on) | |
| Advanced->Server: <your_server_address> | |
| Connect Using: UDP | |
| D) opensips with Persistent Data Storage | |
| The default configuration is very simple and features many simplifications. | |
| In particular, it does not authenticate users and loses User Location database | |
| on reboot. To provide persistence, keep user credentials and remember users' | |
| locations across reboots, opensips can be configured to use MySQL. Before you | |
| proceed, you need to make sure MySQL is installed on your box. | |
| 1) Download the package containing mysql support for opensips from: | |
| http://www.opensips.org/pub/opensips/ | |
| (rpm and deb provided, most of the binary tar.gz distributions and the | |
| solaris package include it; if it is not present you'll have to rebuild | |
| from the source). | |
| For gentoo please include 'mysql' to your USE variable in /etc/make.conf | |
| or give it as variable to the emerge command. | |
| 2) install the package | |
| RPM based: | |
| rpm -i <package_name> | |
| DEB based: | |
| dpkg -i <package_name> | |
| or if APT repository is used | |
| apt-get install <package_name> | |
| Gentoo Linux: | |
| emerge opensips | |
| (if do not want to put 'mysql' into your USE variable you can type: | |
| USE="mysql" emerge opensips) | |
| 3) create SQL tables | |
| You must specify your database type in the /etc/opensipsctlrc file, e.g. | |
| MySQL. See section 7 for an explanation of further possible parameters. | |
| - if you have a previously installed OpenSIPS on your system, use | |
| /usr/sbin/opensipsdbctl migrate | |
| to convert your OpenSIPS database into new structures | |
| NOTE: "migrate" is available only for mysql DBs | |
| - otherwise, if this is your very first installation, use | |
| /usr/sbin/opensipsdbctl create | |
| to create OpenSIPS database structures | |
| (you will be prompted for password of MySQL "root" user) | |
| 4) configure opensips to use SQL | |
| uncomment all lines in configuration file opensips.cfg which are related to | |
| authentication: | |
| - loadmodule "/usr/lib/opensips/modules/db_mysql.so" | |
| - loadmodule "/usr/lib/opensips/modules/auth.so" | |
| - loadmodule "/usr/lib/opensips/modules/auth_db.so" | |
| - modparam("usrloc", "db_mode", 2) | |
| - modparam("auth", "calculate_ha1", yes) | |
| - modparam("auth_db", "password_column", "password") | |
| - if (!www_authorize("sip.org", "subscriber")) { | |
| www_challenge("sip.org", "0"); | |
| break; | |
| }; | |
| 5) be sure to replace realm, the first parameter in www_* actions, | |
| with name of your server; some broken UAC implementations don't | |
| authenticate otherwise; the authentication command in your | |
| configuration script should look then like this: | |
| if (!www_authorize("myserver.foobar.com", "subscriber")) { | |
| www_challenge("myserver.foobar.com", "0"); | |
| break; | |
| } | |
| 6) restart the server | |
| /etc/init.d/opensips restart | |
| 7) you can now start managing the server using the opensipsctl utility; | |
| you need to first set the environment variable SIP_DOMAIN to your | |
| local SIP realm, e.g., | |
| export SIP_DOMAIN="myserver.foobar.com" | |
| or you can configure via the resource file for opensipsctlrc. The default | |
| file is installed in the etc/ directory of your installation (along with the | |
| OpenSIPS config file). For per user configuration, create .opensipsctlrc | |
| in your home directory. | |
| You can set there the values for opensipsctl variables like: | |
| SIP_DOMAIN - your SIP domain | |
| DBENGINE - database type: MYSQL, PGSQL or DBTEXT by default none is loaded | |
| DBHOST - database host | |
| DBNAME - database name | |
| DBRWUSER - database read/write user | |
| DBROUSER - database read only user | |
| DBROPW - password for database read only user | |
| DBROOTUSER - database super user | |
| ALIASES_TYPE - type of aliases used: | |
| DB - database aliases | |
| UL - usrloc aliases | |
| default none | |
| CTLENGINE - control engine: FIFO or UNIXSOCK | |
| OSIPS_FIFO - path to FIFO file | |
| VERBOSE - verbose - debug purposes - default '0' | |
| a) watch the server status using 'opensipsctl moni' | |
| b) try to login with your SIP client as user 'admin' with | |
| password 'opensipsrw' | |
| c) try adding new users using | |
| 'opensipsctl add <name> <password> <email>' | |
| 8) default values (database url, users and passwords) are: | |
| - db_default_url="mysql://opensips:opensipsrw@localhost/opensips" | |
| - r/w user: opensips ; passwd: opensipsrw | |
| - r/o user: opensipsro ; passwd: opensipsro | |
| VERY IMPORTANT NOTE: for security reasons, do change the values of | |
| passwords after installation | |
| E) osipsconsole installation | |
| 1) Perl requirements | |
| For the osipsconsole tool the following perl modules are needed: | |
| DBI | |
| DBD::mysql | |
| DBD::Pg | |
| DBD::Oracle | |
| BerkeleyDB | |
| Frontier::RPC2 | |
| 2) Debian/Ubuntu Installation | |
| In order for the script to work, there are listed bellow the modules | |
| needed and their debian package correspondent, a brief description of each | |
| package and whether it is mandatory to install it or not. ( To be mentioned | |
| the fact that these packages have been tested in Debian and Ubuntu | |
| distros. ) | |
| Perl module | Debian Package | Description | Use | |
| --------------------------------------------------------------------------- | |
| perl |perl |Practical Extraction | mandatory | |
| | |and Report Language | | |
| DBI |libdbi-perl |Perl database interface| mandatory | |
| DBD::mysql |libdbd-mysql-perl |MySQL driver for the |*optional | |
| | |Perl5 DBI | | |
| DBD::Pg |libdbd-pg-perl |PostgreSQL database |*optional | |
| | |driver for DBI module | | |
| **DBD::Oracle | ------ |Oracle database driver |*optional | |
| | |for the DBI module | | |
| Frontier::RPC2 |libfrontier-rpc-perl |encode/decode RPC2 | mandatory | |
| | |format XML | | |
| Term::ReadLine::Gnu|libterm-readline-gnu-per|Perl extension for the | mandatory | |
| | |GNU Readline/History Lib| | |
| BerkeleyDB |libberkeleydb-perl |Perl extension for | mandatory | |
| | |Berkeley database | | |
| | |version 2, 3 or 4 | | |
| Install these packages using apt-get: | |
| apt-get install perl libdbi-perl libdbd-mysql-perl libdbd-pg-perl | |
| libfrontier-rpc-perl libterm-readline-gnu-perl | |
| libberkeleydb-perl | |
| NOTE: * packages are at the user's choice. At least one of them is | |
| mandatory, depending on the DB type used by OpenSIPS. The other | |
| ones have no need of being installed. | |
| ** For the DBD::Oracle module there is no debian package. This | |
| will be installed as follows: | |
| - Download the .tar.gz archive from: | |
| http://search.cpan.org/~pythian/DBD-Oracle-1.22/Oracle.pm | |
| - Decompress and unpack it | |
| - cd DBD-Oracle-1.22 | |
| - perl Makefile.PL | |
| - make | |
| - make test | |
| - make install | |
| F) menuconfig installation | |
| The Interface allows the user to do the following : | |
| 1. Configure OpenSIPS compilation related options such as : | |
| - Compilation Flags. For example, the user can now easily compile in TCP | |
| support from within the GUI, or enable memory allocation debugging, etc. | |
| Each compilation flag functionality is explained in short in the GUI. | |
| - Module Compilation Selection. The user can now easily select to compile | |
| modules that have external dependencies, and that are not compiled in | |
| by default. For example, the user can choose to also enable the MySQL | |
| support by enabling the db_mysql module. The interface will also notify | |
| the user about the dependencies that must be installed based on the modules | |
| that the user has selected. | |
| - Installation Prefix. The user can use the GUI to configure the OpenSIPS | |
| installation path to be used | |
| 2. Install OpenSIPS and Cleanup OpenSIPS sources | |
| - Upon configuring OpenSIPS related options from above, | |
| the user can choose to install OpenSIPS directly from the GUI. | |
| 3. Generate OpenSIPS config files | |
| - The tool can also generate OpenSIPS configuration files based on the | |
| user's preferences. So far, we have defined three main classes of OpenSIPS | |
| configuration files : | |
| - Residential | |
| - Trunking | |
| - Load-balancer | |
| For each type of configuration file, the user can choose to enable/disable | |
| certain options. For example, for the Residential script, the user can choose | |
| to enable presence support, to handle NAT, and many more. After the user has | |
| properly configured it's desired OpenSIPS script in the GUI, it will have the | |
| option to generate and obtain the final OpenSIPS cfg. | |
| If you have installed OpenSIPS from packages ( debs, rpms, etc ) and not from sources, | |
| you will still be able to use the graphical interface for generating configuration files, | |
| by running | |
| osipsconfig | |
| 4. Troubleshooting | |
| ------------------ | |
| Q: SIP requests are replied by opensips with "483 Too Many Hops" or | |
| "513 Message Too Large" | |
| A: In both cases, the reason is probably an error in request routing script | |
| which caused an infinite loop. You can easily verify whether this happens | |
| by watching SIP traffic on loopback interface. A typical reason for | |
| misrouting is a failure to match local domain correctly. If a server fails | |
| to recognize a request for itself, it will try to forward it to current URI | |
| in believe it would forward them to a foreign domain. Alas, it forwards the | |
| request to itself again. This continues to happen until value of | |
| max_forwards header field reaches zero or the request grows too big. | |
| Solutions is easy: make sure that domain matching | |
| is correctly configured. A quick way to achieve that is to introduce a config | |
| option to opensips.cfg: alias=domainname, where domainname shall be replaced | |
| with name of domain, which you wish to server and which appears in | |
| request-URIs. |



