Discussions

How to install opensips in a Red Hat Enterprise Linux 5 server with mysql

+
0 Votes
Locked

How to install opensips in a Red Hat Enterprise Linux 5 server with mysql

cesar.fiestas
How to install opensips 1.5 in a Red Hat Enterprise Linux 5
platform with Mysql Support.

The following document will guide you thru the installation
of the newly released opensips vesion 1.5 in Red Hat Enterprise
Linux 5.3 along with mysql. I will divide this process in 2 phases
1.- Installation of Red Hat Enterprise Linux 5.3
2.- Installation and configuration of Opensips, webmin and mysql

The following components and paramenters will be used for the purpose
of this installation guide, securing your opensips environment is
beyond this installation guide,

-Red Hat Enterprise Linux Server release 5.3 (Tikanga), 2.6.18-128.1.6.el5
-mysql-server-5.0.45-7.el5.i386
-An HP DL380 3.20 2gb of RAM
-Fully Qualified Domain Name of the server will be simulacro.sipcorner.com
-IP address of the server 10.10.10.101

1.-Installation of Red Hat Enterprise Linux 5 (Phase 1)

Let's Proceed to install Red Hat Enterprise Linux 5
-Proceed to Insert the RHEL 5 DVD in your server
At the RHEL boot screen "press enter"
The system will ask you to either test the media or skip the media test,
I personally choose to skip the media since I know the integrity of the DVD
is good, but if you have doubts about the integrity of your media I will
suggest you to continue with the media test.
-At the RED HAT ENTERPRISE LINUX 5 initial Install screen select NEXT
-Proceed to select the language, I selected English(English)
-Proceed to select the appropriate keyboard for the System, I selected
U.S. English
-Proceed to enter the Red Hat installation number and select OK
-Select to Install Red Hat Enterprise Linux Server, then select OK
-Because I have RHEL 5 currently installed in my Hard Drive, and I
want to install a new copy of RHEL 5, the system will now asked me if
I want to remove all linux partitions on the selected drives and create a default
layot, since I want to do this, I will simply select the NEXT button
-As a precaution, the system will asked me if I really want to remove all the
existing Linux partitions in the Hard Drive, Since i want to do this I select
the Yes button.
-The system will now asked to configure the ethernet0 interface, since I want
the system to have an static IP address, I select the eth0 interface and I
select EDIT.
-The EDIT Interface screen will open, and I will now proceed to enter my network
information manually, then select OK, next I proceed to enter the FQDN for this
server, for example simulacro.sipcorner.com, next I will proceed to continue
entering my network information, such as my gateway, primary DNS and Secondar
DNS servers, then I will proceed to select the NEXT button
-Proceed to select your timezone accordinally
-Proceed to enter a Password for the Root Account
-Red Hat Enterprise Linux 5 default installation includes a set of software
applicable for general internet usage, although you can choose to install
additional components, such as servers and others, for the purposes of this
document, I will proceed to check the Web Server option and also I will proceed
to check the Customize now option, then I will select NEXT.
-Because I checked the customize option, I am now being presented with an screen
where I can select different packages that I want the system to install for me
during this installation, hence I will select the following packages:

Servers>Mysql Database>Optional Packages>Default plus
mysql-devel-5.0.45-7.el5.i386
php-mysql-5.1.6-23.el5.i386
mod_auth_mysql-3.0.0-3.1.i386

Servers>Web Server>Optional Packages>Default plus
mod_nss-1.0.3-6.el5.i386

Servers>Mail Server>Default

-The RHEL 5 Installation is now ready to begin, proceed by selecting the NEXT button
-Once the system has finished the installation process the DVD will eject and
a new screen will appear congratulating you, at this point select the Reboot
button.
-After the firs Reboot, you will be presented with a Welcome screen, proceed and
select the Forward button, proceed to agree with the license agreement, proceed
to configure your firewall. I will personally select Secure WWWW (HTTPS) and
WWW (HTTP) ports, although under the Other Ports option, I will also proceed to add
port 5060 TCP/UDP to allow SIP dialogs/sessions, although 5060 UDP is enough, but
this is a test box so I decided to open both TCP and UDP, then I will also select
port 10000 TCP for webmin, why webmin?, because if you are not an expert with mysql
webmin can be useful to access mysql and other components via web, instead of the CLI
although webmin is useful when it comes to administer the RHEL box, servers and other
components,in the opensips environment it is highly likely that you will be using
the CLI for almost everything. Next proceed to select the Forward button.
-Proceed to configure SELinux accordinally, I will personally select the Enforcing
option, then proceed to select the Forward button.
-Proceed to configure Kdump accordinally, I personally like Kdump, although it may require
you to do another reboot and do some memory allocation in order to properly work.
-Proceed to configure the Date and Time accordinally, when configuring opensips, the time
can be critical, so i will suggest you to enable NTP, and I personally will add another ntp
server on top of the RHEL ntp servers, ncnoc.ncren.net (because I am in North Carolina), then
I will proceed to select the forward button.
-Proceed to Set up Software Updates at your discretion.
-Proceed to create a User accordinally, it is not really safe for you to use the root account
to login to the box, surf the internet, install software and others, although for the purposes
of this guide, I will be using the root account during the installation process of opensips and
webmin.
-Proceed to configure the Sound Card, if any
-If you would like to install additional software using CD's, you may do so at this time, otherwise
select the Finish button, the system will proceed to restart
-Once the server has rebooted Proceed to access the Red Hat Enterprise Linux 5 console
using your favorite console client, I personally use Secure CRT.

2.- Installation and configuration of Opensips, webmin and mysql (Phase 2)

Your system should have the following packages installed
zlib-1.2.3-3.i386
openssl-0.9.8e-7.el5.i686
mysql-server-5.0.45-7.el5.i386

If the above packages are not installed in your system you can install them by using yum, ie
yum install zlib openssl mysql-server

root@simulacro ~# yum install zlib openssl mysql-server

-Proceed to install the following packages using yum
gcc, bison, flex, zlib-devel, openssl-devel

root@simulacro ~# yum gcc bison flex zlib-devel openssl-devel

-Proceed to download opensips 1.5 but first I will suggest you to
go to the usr/src directory and download opensips 1.5 there.

root@simulacro src# wget http://opensips.org/pub/opensips/1.5.0/src/opensips-1.5.0-notls_src.tar.gz

-Proceed to untar opensips

root@simulacro src# tar -xzf opensips-1.5.0-notls_src.tar.gz

-Proceed to download and install webmin

root@simulacro src# wget http://prdownloads.sourceforge.net/webadmin/webmin-1.470-1.noarch.rpm
root@simulacro src# rpm -ivh webmin-1.470-1.noarch.rpm


-Proceed to rename opensips-1.5.0-notls to opensips

root@simulacro src# mv opensips-1.5.0-notls opensips

-Now lets proceed to EDIT the /usr/src/opensips/Makefile using nano, so
we use mysql

root@simulacro src# nano opensips/Makefile

-Once in the Makefile configuration parameters, proceed to modify the
following comment by removing the "db_mysql" module


if not set on the cmd. line or the env, exclude this modules:
exclude_modules?= jabber cpl-c xmpp rls mi_xmlrpc xcap_client \
db_mysql db_postgres db_unixodbc db_oracle db_berkeley \
avp_radius auth_radius group_radius uri_radius \
osp perl snmpstats perlvdb peering carrierroute mmgeoip \
presence presence_xml presence_mwi presence_dialoginfo \
pua pua_bla pua_mi pua_usrloc pua_xmpp pua_dialoginfo \
ldap h350 identity regex


-Your comment should now look like this


if not set on the cmd. line or the env, exclude this modules:
exclude_modules?= jabber cpl-c xmpp rls mi_xmlrpc xcap_client \
db_postgres db_unixodbc db_oracle db_berkeley \
avp_radius auth_radius group_radius uri_radius \
osp perl snmpstats perlvdb peering carrierroute mmgeoip \
presence presence_xml presence_mwi presence_dialoginfo \
pua pua_bla pua_mi pua_usrloc pua_xmpp pua_dialoginfo \
ldap h350 identity regex

-Proceed to save the configuration in nano by using ctrl + X then y

-Proceed to run the following commands, but first go to /usr/src/opensips

root@simulacro opensips#make clean
root@simulacro opensips#make all include_modules="mysql"
root@simulacro opensips#make prefix=/usr/local install include_module="mysql"

-Using nano proceed to edit /usr/local/etc/opensips/opensipsctlrc

root@simulacro opensips# nano /usr/local/etc/opensips/opensipsctlrc

and proceed to modify the following comment by removing the # sign


database type: MYSQL, PGSQL, ORACLE, DB_BERKELEY, or DBTEXT, by def$
If you want to setup a database with opensipsdbctl, you must at leas$
this parameter.
DBENGINE=MYSQL

-It should look like this


database type: MYSQL, PGSQL, ORACLE, DB_BERKELEY, or DBTEXT, by def$
If you want to setup a database with opensipsdbctl, you must at leas$
this parameter.
DBENGINE=MYSQL

-Proceed to save your file in nano using ctrl + X and Y

-Proceed to start mysql by typing the following command
service mysqld start

root@simulacro opensips# service mysqld start
Initializing MySQL database: Installing MySQL system tables...
OK
Filling help tables...
OK

To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system

PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:
/usr/bin/mysqladmin -u root password 'new-password'
/usr/bin/mysqladmin -u root -h simulacro.sipcorner.com password 'new-password'
See the manual for more instructions.
You can start the MySQL daemon with:
cd /usr ; /usr/bin/mysqld_safe &

You can test the MySQL daemon with mysql-test-run.pl
cd mysql-test ; perl mysql-test-run.pl

Please report any problems with the /usr/bin/mysqlbug script!

The latest information about MySQL is available on the web at
http://www.mysql.com
Support MySQL by buying support/licenses at http://shop.mysql.com
OK
Starting MySQL: OK
root@simulacro opensips#

-As stated above let's proceed to set up a password for the root user

root@simulacro opensips# /usr/bin/mysqladmin -u root password yourpassword
root@simulacro opensips# /usr/bin/mysqladmin -u root -h simulacro.sipcorner.com password 'yourpassword'

-Now lets proceed to create the database for opensips using the following command
/usr/local/sbin/opensipsdbctl create

root@simulacro opensips# /usr/local/sbin/opensipsdbctl create
MySQL password for root:
INFO: test server charset
INFO: creating database opensips ...
INFO: Core OpenSIPS tables succesfully created.
Install presence related tables? (y/n): y
INFO: creating presence tables into opensips ...
INFO: Presence tables succesfully created.
Install tables for imc cpl siptrace domainpolicy carrierroute userblacklist? (y/n): y
INFO: creating extra tables into opensips ...
INFO: Extra tables succesfully created.
root@simulacro opensips#

-Now proceed to edit the opensips.cfg file
root@simulacro opensips# nano /usr/local/etc/opensips/opensips.cfg

-Proceed to modify the following comment (remove the #)


/* uncomment next line for MySQL DB support */

loadmodule "db_mysql.so"

-It should now look like this

/* uncomment next line for MySQL DB support */
loadmodule "db_mysql.so"

-Proceed to also modify the following comment (remove couple #'s)

loadmodule "acc.so"
/* uncomment next lines for MySQL based authentication support
NOTE: a DB (like db_mysql) module must be also loaded */

loadmodule "auth.so"
loadmodule "auth_db.so

-It should now look like this

loadmodule "acc.so"
/* uncomment next lines for MySQL based authentication support
NOTE: a DB (like db_mysql) module must be also loaded */
loadmodule "auth.so"
loadmodule "auth_db.so"

-Proceed to also modify the following comment (remove the #)

/* uncomment the following lines if you want to enable DB persistency
for location entries */

modparam("usrloc", "db_mode", 2)

-It should now look like this

/* uncomment the following lines if you want to enable DB persistency
for location entries */
modparam("usrloc", "db_mode", 2)


-Proceed to also modify the following comment (remove couple #'s)


/* uncomment the following lines if you want to enable the DB based
authentication */

modparam("auth_db", "calculate_ha1", yes)
modparam("auth_db", "password_column", "password")


-It should now look like this


/* uncomment the following lines if you want to enable the DB based
authentication */
modparam("auth_db", "calculate_ha1", yes)
modparam("auth_db", "password_column", "password")

-Proceed to modify the following "empty spaces" with your domain, in my
case I will use the ip address of this box which is 10.10.10.101, the
comment is the following


authenticate the REGISTER requests (uncomment to ena$
##if (!www_authorize("", "subscriber"))
##{
## www_challenge("", "0");
## exit;

-It should now look like this


authenticate the REGISTER requests (uncomment to ena$
if (!www_authorize("10.10.10.101",
"subscriber"))
##{
www_challenge("10.10.10.101", "0");
## exit;

-Proceed to save the file in nano by using ctrl + X and Y

-Great!, now lets see if we can start opensips by typing opensipsctl start

root@simulacro opensips# opensipsctl start

INFO: Starting OpenSIPS :
INFO: started (pid: 5474)
root@simulacro opensips#

-And as we see above we can start succesfully opensips!

-Now lets proceed to copy /usr/src/opensips/packaging/fedora/opensips.init to
/etc/init.d/opensips by doing the following

root@simulacro opensips# cp /usr/src/opensips/packaging/fedora/opensips.init /etc/init.d/opensips
root@simulacro opensips#

-Now lets give the proper rights to opensips, by doing the following
chmod 755 /etc/init.d/opensips

root@simulacro opensips# chmod 755 /etc/init.d/opensips


-Now so that we can start opensips properly, we need to make some configuration
changes to /etc/init.d/opensips, using nano do the following

root@simulacro opensips# nano /etc/init.d/opensips

-Proceed to modify the following comment


Source function library.
. /etc/rc.d/init.d/functions

oser=/usr/sbin/opensips
prog=opensips
RETVAL=0

It should now look like this


Source function library.
. /etc/rc.d/init.d/functions

oser=/usr/local/sbin/opensips
prog=opensips
RETVAL=0

-Proceed to save the file using name ctrl + X and Y

-Now lets proceed to test service opensips start|status|stop


root@simulacro opensips# service opensips stop
Stopping opensips: OK
root@simulacro opensips# service opensips status
opensips is stopped
root@simulacro opensips# service opensips start
Starting opensips: OK
root@simulacro opensips# service opensips status
opensips (pid 5624 5623 5620 5618 5615 5613 5612 5610 5608 5605 5603 5602 5600 5598 5595 5594 5590) is running...
root@simulacro opensips#

-Using nano proceed to edit the startup script /etc/init.d/opensips, proceed
to make changes to the following comment


Startup script for OpenSIPS

chkconfig: - 85 15

It should now look like


Startup script for OpenSIPS

chkconfig: 345 96 15

-Proceed to save the file using nano ctrl + X and Y

-Proceed to also do the following from the CLI

root@simulacro opensips# chkconfig --add opensips
root@simulacro opensips# chkconfig mysqld on
root@simulacro ~# export SIP_DOMAIN=10.10.10.101

-Proceed to reboot the server to make sure opensips and mysqld starts automatically

root@simulacro opensips# reboot

Broadcast message from root (pts/1) (Sun Apr 12 01:41:56 2009):

The system is going down for reboot NOW!
root@simulacro opensips#


-Once the server have fully restarted we can proceed to add a new user,
when adding a new user, you will be asked for the opensips password,
the default opensips password is lowercase opensipsrw, I will suggest
you to look at the opensipsctlrc file, I will strongly suggest you to
change all the default values in this file, although becareful when
making changes, because it could cause opensips to stop working.

-To add a new user simply issue the following command
opensipsctl add newusername newuserpassword

root@simulacro src# opensipsctl add 2000 yourpassword
MySQL password for user 'opensips@localhost': <---enter opensipsrw
new user '2000' added
root@simulacro src#

-Using for example xlite you should now be able to register user 2000
with opensips

-Also you can use the command opensipsctl to access your cli
options.

This document was created by Cesar Fiestas
  • +
    0 Votes
    pukinsson

    Firstly I really thank you for your article, it is really detail and carefully. I based on your article to do my work, but I met a problem at the end step: checking result of that work with X-lite.
    My problem is that I can't not use x-lite to register sip account on opensips, error time out 408 although I think opensips was installed successfully. I only have a laptop and in this laptop, I use a Vmware computer running redhat 5 as a server. I installed opensips in it and use X-lite in the physical machine ? my latop. I'm sure those two machine can ping to each other and firewalls was stopped in the both.
    The machine I installed Opensips has static 192.168.10.5 IP address (I manually put this IP in) and IP of the physical machine is 192.168.10.20. None of these machines connected to Lan or Internet. The above ip addresses are manually put by myself and they are static Ip addresses. I used statement :
    #ifconfig eth0 192.168.10.5 netmask 255.255.255.0 to get the IP addresses.

    Mysql-server version is 5.0.22-2.1 (note : version in guide document is 5.0.45-7.el5)
    Opensips version 1.5.
    Redhat 5. My other necessary packages is older than your. Particularly, mysql-devel: 5.0.22-2.1, openssl-0.9.8b-8.3.el5,etc.
    During installing process, I met only an error with:
    root@localhost opensips#/usr/bin/mysqladmin ?u root ?h localhost password 123456
    error: Access denied for user ?root?@ ?localhost? (using password: NO).
    Other results is like yours guides.
    I'm very new to MYSQL and my configuration is followed guide documents. Do you have any suggestion for me? I thank you very much. If you know the configuration files for my case, can you attach those to your reply. To be successful with this installation is very meaning for me and my work. Thanks you very much.

    I also send to you configuration files. Please consider them and help me.

    +
    0 Votes
    pukinsson

    #
    # $Id: opensips.cfg 5503 2009-03-22 16:22:32Z bogdan_iancu $
    #
    # OpenSIPS basic configuration script
    # by Anca Vamanu <anca@voice-system.ro>
    #
    # Please refer to the Core CookBook at:
    # http://www.opensips.org/index.php?n=Resources.DocsCookbooks
    # for a explanation of possible statements, functions and parameters.
    #


    ####### Global Parameters #########

    debug=3
    log_stderror=no
    log_facility=LOG_LOCAL0

    fork=yes
    children=4

    /* uncomment the following lines to enable debugging */
    #debug=6
    #fork=no
    #log_stderror=yes

    /* uncomment the next line to disable TCP (default on) */
    #disable_tcp=yes

    /* uncomment the next line to enable the auto temporary blacklisting of
    not available destinations (default disabled) */
    #disable_dns_blacklist=no

    /* uncomment the next line to enable IPv6 lookup after IPv4 dns
    lookup failures (default disabled) */
    #dns_try_ipv6=yes

    /* uncomment the next line to disable the auto discovery of local aliases
    based on revers DNS on IPs (default on) */
    #auto_aliases=no

    /* uncomment the following lines to enable TLS support (default off) */
    #disable_tls = no
    #listen = tls:your_IP:5061
    #tls_verify_server = 1
    #tls_verify_client = 1
    #tls_require_client_certificate = 0
    #tls_method = TLSv1
    #tls_certificate = "/usr/local/etc/opensips/tls/user/user-cert.pem"
    #tls_private_key = "/usr/local/etc/opensips/tls/user/user-privkey.pem"
    #tls_ca_list = "/usr/local/etc/opensips/tls/user/user-calist.pem"


    port=5060

    /* uncomment and configure the following line if you want opensips to
    bind on a specific interface/port/proto (default bind on all available) */
    #listen=udp:192.168.1.2:5060


    ####### Modules Section ########

    #set module path
    mpath="/usr/local/lib/opensips/modules/"

    /* uncomment next line for MySQL DB support */
    loadmodule "db_mysql.so"
    loadmodule "signaling.so"
    loadmodule "sl.so"
    loadmodule "tm.so"
    loadmodule "rr.so"
    loadmodule "maxfwd.so"
    loadmodule "usrloc.so"
    loadmodule "registrar.so"
    loadmodule "textops.so"
    loadmodule "mi_fifo.so"
    loadmodule "uri_db.so"
    loadmodule "uri.so"
    loadmodule "xlog.so"
    loadmodule "acc.so"
    /* uncomment next lines for MySQL based authentication support
    NOTE: a DB (like db_mysql) module must be also loaded */
    loadmodule "auth.so"
    loadmodule "auth_db.so"
    /* uncomment next line for aliases support
    NOTE: a DB (like db_mysql) module must be also loaded */
    #loadmodule "alias_db.so"
    /* uncomment next line for multi-domain support
    NOTE: a DB (like db_mysql) module must be also loaded
    NOTE: be sure and enable multi-domain support in all used modules
    (see "multi-module params" section ) */
    #loadmodule "domain.so"
    /* uncomment the next two lines for presence server support
    NOTE: a DB (like db_mysql) module must be also loaded */
    #loadmodule "presence.so"
    #loadmodule "presence_xml.so"


    # ----------------- setting module-specific parameters ---------------


    # ----- mi_fifo params -----
    modparam("mi_fifo", "fifo_name", "/tmp/opensips_fifo")


    # ----- rr params -----
    # add value to ;lr param to cope with most of the UAs
    modparam("rr", "enable_full_lr", 1)
    # do not append from tag to the RR (no need for this script)
    modparam("rr", "append_fromtag", 0)


    # ----- registrar params -----
    modparam("registrar", "method_filtering", 1)
    /* uncomment the next line to disable parallel forking via location */
    # modparam("registrar", "append_branches", 0)
    /* uncomment the next line not to allow more than 10 contacts per AOR */
    #modparam("registrar", "max_contacts", 10)


    # ----- usrloc params -----
    modparam("usrloc", "db_mode", 0)
    /* uncomment the following lines if you want to enable DB persistency
    for location entries */
    modparam("usrloc", "db_mode", 2)
    #modparam("usrloc", "db_url",
    # "mysql://opensips:opensipsrw@localhost/opensips")


    # ----- uri_db params -----
    /* by default we disable the DB support in the module as we do not need it
    in this configuration */
    modparam("uri_db", "use_uri_table", 0)
    modparam("uri_db", "db_url", "")


    # ----- acc params -----
    /* what sepcial events should be accounted ? */
    modparam("acc", "early_media", 1)
    modparam("acc", "report_ack", 1)
    modparam("acc", "report_cancels", 1)
    /* by default ww do not adjust the direct of the sequential requests.
    if you enable this parameter, be sure the enable "append_fromtag"
    in "rr" module */
    modparam("acc", "detect_direction", 0)
    /* account triggers (flags) */
    modparam("acc", "failed_transaction_flag", 3)
    modparam("acc", "log_flag", 1)
    modparam("acc", "log_missed_flag", 2)
    /* uncomment the following lines to enable DB accounting also */
    modparam("acc", "db_flag", 1)
    modparam("acc", "db_missed_flag", 2)


    # ----- auth_db params -----
    /* uncomment the following lines if you want to enable the DB based
    authentication */
    modparam("auth_db", "calculate_ha1", yes)
    modparam("auth_db", "password_column", "password")
    #modparam("auth_db", "db_url",
    # "mysql://opensips:opensipsrw@localhost/opensips")
    #modparam("auth_db", "load_credentials", "")


    # ----- alias_db params -----
    /* uncomment the following lines if you want to enable the DB based
    aliases */
    #modparam("alias_db", "db_url",
    # "mysql://opensips:opensipsrw@localhost/opensips")


    # ----- domain params -----
    /* uncomment the following lines to enable multi-domain detection
    support */
    #modparam("domain", "db_url",
    # "mysql://opensips:opensipsrw@localhost/opensips")
    #modparam("domain", "db_mode", 1) # Use caching


    # ----- multi-module params -----
    /* uncomment the following line if you want to enable multi-domain support
    in the modules (dafault off) */
    #modparam("alias_db|auth_db|usrloc|uri_db", "use_domain", 1)


    # ----- presence params -----
    /* uncomment the following lines if you want to enable presence */
    #modparam("presence|presence_xml", "db_url",
    # "mysql://opensips:opensipsrw@localhost/opensips")
    #modparam("presence_xml", "force_active", 1)
    #modparam("presence", "server_address", "sip:192.168.1.2:5060")


    ####### Routing Logic ########


    # main request routing logic

    route{

    if (!mf_process_maxfwd_header("10")) {
    sl_send_reply("483","Too Many Hops");
    exit;
    }

    if (has_totag()) {
    # sequential request withing a dialog should
    # take the path determined by record-routing
    if (loose_route()) {
    if (is_method("BYE")) {
    setflag(1); # do accounting ...
    setflag(3); # ... even if the transaction fails
    } else if (is_method("INVITE")) {
    # even if in most of the cases is useless, do RR for
    # re-INVITEs alos, as some buggy clients do change route set
    # during the dialog.
    record_route();
    }
    # route it out to whatever destination was set by loose_route()
    # in $du (destination URI).
    route(1);
    } else {
    /* uncomment the following lines if you want to enable presence */
    ##if (is_method("SUBSCRIBE") && $rd == "your.server.ip.address") {
    ## # in-dialog subscribe requests
    ## route(2);
    ## exit;
    ##}
    if ( is_method("ACK") ) {
    if ( t_check_trans() ) {
    # non loose-route, but stateful ACK; must be an ACK after
    # a 487 or e.g. 404 from upstream server
    t_relay();
    exit;
    } else {
    # ACK without matching transaction ->
    # ignore and discard
    exit;
    }
    }
    sl_send_reply("404","Not here");
    }
    exit;
    }

    #initial requests

    # CANCEL processing
    if (is_method("CANCEL"))
    {
    if (t_check_trans())
    t_relay();
    exit;
    }

    t_check_trans();

    # authenticate if from local subscriber (uncomment to enable auth)
    # authenticate all initial non-REGISTER request that pretend to be
    # generated by local subscriber (domain from FROM URI is local)
    ##if (!(method=="REGISTER") && from_uri==myself) /*no multidomain version*/
    ##if (!(method=="REGISTER") && is_from_local()) /*multidomain version*/
    ##{
    ## if (!proxy_authorize("", "subscriber")) {
    ## proxy_challenge("", "0");
    ## exit;
    ## }
    ## if (!check_from()) {
    ## sl_send_reply("403","Forbidden auth ID");
    ## exit;
    ## }
    ##
    ## consume_credentials();
    ## # caller authenticated
    ##}

    # preloaded route checking
    if (loose_route()) {
    xlog("L_ERR",
    "Attempt to route with preloaded Route's [$fu/$tu/$ru/$ci]");
    if (!is_method("ACK"))
    sl_send_reply("403","Preload Route denied");
    exit;
    }

    # record routing
    if (!is_method("REGISTER|MESSAGE"))
    record_route();

    # account only INVITEs
    if (is_method("INVITE")) {
    setflag(1); # do accounting
    }
    if (!uri==myself)
    ## replace with following line if multi-domain support is used
    ##if (!is_uri_host_local())
    {
    append_hf("P-hint: outbound\r\n");
    # if you have some interdomain connections via TLS
    ##if($rd=="tls_domain1.net") {
    ## t_relay("tls:domain1.net");
    ## exit;
    ##} else if($rd=="tls_domain2.net") {
    ## t_relay("tls:domain2.net");
    ## exit;
    ##}
    route(1);
    }

    # requests for my domain

    ## uncomment this if you want to enable presence server
    ## and comment the next 'if' block
    ## NOTE: uncomment also the definition of route[2] from below
    ##if( is_method("PUBLISH|SUBSCRIBE"))
    ## route(2);

    if (is_method("PUBLISH"))
    {
    sl_send_reply("503", "Service Unavailable");
    exit;
    }


    if (is_method("REGISTER"))
    {
    # authenticate the REGISTER requests (uncomment to enable auth)
    ##if (!www_authorize("192.168.10.5", "subscriber"))
    ##{
    ## www_challenge("192.168.10.5", "0");
    ## exit;
    ##}
    ##
    ##if (!check_to())
    ##{
    ## sl_send_reply("403","Forbidden auth ID");
    ## exit;
    ##}

    if (!save("location"))
    sl_reply_error();

    exit;
    }

    if ($rU==NULL) {
    # request with no Username in RURI
    sl_send_reply("484","Address Incomplete");
    exit;
    }

    # apply DB based aliases (uncomment to enable)
    ##alias_db_lookup("dbaliases");

    if (!lookup("location")) {
    switch ($retcode) {
    case -1:
    case -3:
    t_newtran();
    t_reply("404", "Not Found");
    exit;
    case -2:
    sl_send_reply("405", "Method Not Allowed");
    exit;
    }
    }

    # when routing via usrloc, log the missed calls also
    setflag(2);

    route(1);
    }


    route[1] {
    # for INVITEs enable some additional helper routes
    if (is_method("INVITE")) {
    t_on_branch("2");
    t_on_reply("2");
    t_on_failure("1");
    }

    if (!t_relay()) {
    sl_reply_error();
    };
    exit;
    }


    # Presence route
    /* uncomment the whole following route for enabling presence
    NOTE: do not forget to enable the call of this route from the main
    route */
    ##route[2]
    ##{
    ## if (!t_newtran())
    ## {
    ## sl_reply_error();
    ## exit;
    ## };
    ##
    ## if(is_method("PUBLISH"))
    ## {
    ## handle_publish();
    ## t_release();
    ## }
    ## else
    ## if( is_method("SUBSCRIBE"))
    ## {
    ## handle_subscribe();
    ## t_release();
    ## }
    ##
    ## exit;
    ##}


    branch_route[2] {
    xlog("new branch at $ru\n");
    }


    onreply_route[2] {
    xlog("incoming reply\n");
    }


    failure_route[1] {
    if (t_was_cancelled()) {
    exit;
    }

    # uncomment the following lines if you want to block client
    # redirect based on 3xx replies.
    ##if (t_check_status("3[0-9][0-9]")) {
    ##t_reply("404","Not found");
    ## exit;
    ##}

    # uncomment the following lines if you want to redirect the failed
    # calls to a different new destination
    ##if (t_check_status("486|408")) {
    ## sethostport("192.168.2.100:5060");
    ## # do not set the missed call flag again
    ## t_relay();
    ##}
    }

    +
    0 Votes
    pukinsson

    # $Id: opensipsctlrc 4331 2008-06-06 14:36:01Z anca_vamanu $
    #
    # The OpenSIPS configuration file for the control tools.
    #
    # Here you can set variables used in the opensipsctl and opensipsdbctl setup
    # scripts. Per default all variables here are commented out, the control tools
    # will use their internal default values.

    ## your SIP domain
    SIP_DOMAIN=192.168.10.5

    ## chrooted directory
    # $CHROOT_DIR="/path/to/chrooted/directory"

    ## database type: MYSQL, PGSQL, ORACLE, DB_BERKELEY, or DBTEXT, by default none is loaded
    # If you want to setup a database with opensipsdbctl, you must at least specify
    # this parameter.
    DBENGINE=MYSQL

    ## database host
    DBHOST=localhost

    ## database name (for ORACLE this is TNS name)
    DBNAME=opensips

    # database path used by dbtext or db_berkeley
    # DB_PATH="/usr/local/etc/opensips/dbtext"

    ## database read/write user
    DBRWUSER=opensips

    ## password for database read/write user
    DBRWPW="opensipsrw"

    ## database read only user
    DBROUSER=opensipsro

    ## password for database read only user
    DBROPW=opensipsro

    ## database super user (for ORACLE this is 'scheme-creator' user)
    DBROOTUSER="root"

    # user name column
    # USERCOL="username"


    # SQL definitions
    # If you change this definitions here, then you must change them
    # in db/schema/entities.xml too.
    # FIXME

    # FOREVER="2020-05-28 21:32:15"
    # DEFAULT_ALIASES_EXPIRES=$FOREVER
    # DEFAULT_Q="1.0"
    # DEFAULT_CALLID="Default-Call-ID"
    # DEFAULT_CSEQ="13"
    # DEFAULT_LOCATION_EXPIRES=$FOREVER


    # Program to calculate a message-digest fingerprint
    # MD5="md5sum"

    # awk tool
    # AWK="awk"

    # grep tool
    # GREP="grep"

    # sed tool
    # SED="sed"


    # Describe what additional tables to install. Valid values for the variables
    # below are yes/no/ask. With ask (default) it will interactively ask the user
    # for an answer, while yes/no allow for automated, unassisted installs.
    #

    # If to install tables for the modules in the EXTRA_MODULES variable.
    # INSTALL_EXTRA_TABLES=ask

    # If to install presence related tables.
    # INSTALL_PRESENCE_TABLES=ask

    # Define what module tables should be installed.
    # If you use the postgres database and want to change the installed tables, then you
    # must also adjust the STANDARD_TABLES or EXTRA_TABLES variable accordingly in the
    # opensipsdbctl.base script.

    # opensips standard modules
    # STANDARD_MODULES="standard acc lcr domain group permissions registrar usrloc msilo
    # alias_db uri_db speeddial avpops auth_db pdt dialog dispatcher
    # dialplan"

    # opensips extra modules
    # EXTRA_MODULES="imc cpl siptrace domainpolicy carrierroute userblacklist"


    ## type of aliases used: DB - database aliases; UL - usrloc aliases
    ## - default: none
    ALIASES_TYPE="DB"

    ## control engine: FIFO or UNIXSOCK
    ## - default FIFO
    CTLENGINE="FIFO"

    ## path to FIFO file
    # OSIPS_FIFO="FIFO"

    ## MI_CONNECTOR control engine: FIFO, UNIXSOCK, UDP, XMLRPC
    # MI_CONNECTOR=FIFO:/tmp/opensips_fifo
    # MI_CONNECTOR=UNIXSOCK:/tmp/opensips.sock
    # MI_CONNECTOR=UDP:192.168.2.133:8000
    # MI_CONNECTOR=XMLRPC:192.168.2.133:8000

    ## check ACL names; default on (1); off (0)
    VERIFY_ACL=1

    ## ACL names - if VERIFY_ACL is set, only the ACL names from below list
    ## are accepted
    ACL_GROUPS="local ld int voicemail free-pstn"

    ## verbose - debug purposes - default '0'
    VERBOSE=1

    ## do (1) or don't (0) store plaintext passwords
    ## in the subscriber table - default '1'
    # STORE_PLAINTEXT_PW=0

    ## OPENSIPS START Options
    ## PID file path - default is: /var/run/opensips.pid
    # PID_FILE=/var/run/opensips.pid

    ## Extra start options - default is: not set
    # example: start opensips with 64MB share memory: STARTOPTIONS="-m 64"
    # STARTOPTIONS=

    +
    0 Votes
    ali.sade

    Edit
    /etc/opensips/opensipsctlrc
    and choose your DB ENGINE

    then run
    opensipsdbctl create

    +
    0 Votes

    Don't wake the zombies...the original post is over 3 years old.

  • +
    0 Votes
    pukinsson

    Firstly I really thank you for your article, it is really detail and carefully. I based on your article to do my work, but I met a problem at the end step: checking result of that work with X-lite.
    My problem is that I can't not use x-lite to register sip account on opensips, error time out 408 although I think opensips was installed successfully. I only have a laptop and in this laptop, I use a Vmware computer running redhat 5 as a server. I installed opensips in it and use X-lite in the physical machine ? my latop. I'm sure those two machine can ping to each other and firewalls was stopped in the both.
    The machine I installed Opensips has static 192.168.10.5 IP address (I manually put this IP in) and IP of the physical machine is 192.168.10.20. None of these machines connected to Lan or Internet. The above ip addresses are manually put by myself and they are static Ip addresses. I used statement :
    #ifconfig eth0 192.168.10.5 netmask 255.255.255.0 to get the IP addresses.

    Mysql-server version is 5.0.22-2.1 (note : version in guide document is 5.0.45-7.el5)
    Opensips version 1.5.
    Redhat 5. My other necessary packages is older than your. Particularly, mysql-devel: 5.0.22-2.1, openssl-0.9.8b-8.3.el5,etc.
    During installing process, I met only an error with:
    root@localhost opensips#/usr/bin/mysqladmin ?u root ?h localhost password 123456
    error: Access denied for user ?root?@ ?localhost? (using password: NO).
    Other results is like yours guides.
    I'm very new to MYSQL and my configuration is followed guide documents. Do you have any suggestion for me? I thank you very much. If you know the configuration files for my case, can you attach those to your reply. To be successful with this installation is very meaning for me and my work. Thanks you very much.

    I also send to you configuration files. Please consider them and help me.

    +
    0 Votes
    pukinsson

    #
    # $Id: opensips.cfg 5503 2009-03-22 16:22:32Z bogdan_iancu $
    #
    # OpenSIPS basic configuration script
    # by Anca Vamanu <anca@voice-system.ro>
    #
    # Please refer to the Core CookBook at:
    # http://www.opensips.org/index.php?n=Resources.DocsCookbooks
    # for a explanation of possible statements, functions and parameters.
    #


    ####### Global Parameters #########

    debug=3
    log_stderror=no
    log_facility=LOG_LOCAL0

    fork=yes
    children=4

    /* uncomment the following lines to enable debugging */
    #debug=6
    #fork=no
    #log_stderror=yes

    /* uncomment the next line to disable TCP (default on) */
    #disable_tcp=yes

    /* uncomment the next line to enable the auto temporary blacklisting of
    not available destinations (default disabled) */
    #disable_dns_blacklist=no

    /* uncomment the next line to enable IPv6 lookup after IPv4 dns
    lookup failures (default disabled) */
    #dns_try_ipv6=yes

    /* uncomment the next line to disable the auto discovery of local aliases
    based on revers DNS on IPs (default on) */
    #auto_aliases=no

    /* uncomment the following lines to enable TLS support (default off) */
    #disable_tls = no
    #listen = tls:your_IP:5061
    #tls_verify_server = 1
    #tls_verify_client = 1
    #tls_require_client_certificate = 0
    #tls_method = TLSv1
    #tls_certificate = "/usr/local/etc/opensips/tls/user/user-cert.pem"
    #tls_private_key = "/usr/local/etc/opensips/tls/user/user-privkey.pem"
    #tls_ca_list = "/usr/local/etc/opensips/tls/user/user-calist.pem"


    port=5060

    /* uncomment and configure the following line if you want opensips to
    bind on a specific interface/port/proto (default bind on all available) */
    #listen=udp:192.168.1.2:5060


    ####### Modules Section ########

    #set module path
    mpath="/usr/local/lib/opensips/modules/"

    /* uncomment next line for MySQL DB support */
    loadmodule "db_mysql.so"
    loadmodule "signaling.so"
    loadmodule "sl.so"
    loadmodule "tm.so"
    loadmodule "rr.so"
    loadmodule "maxfwd.so"
    loadmodule "usrloc.so"
    loadmodule "registrar.so"
    loadmodule "textops.so"
    loadmodule "mi_fifo.so"
    loadmodule "uri_db.so"
    loadmodule "uri.so"
    loadmodule "xlog.so"
    loadmodule "acc.so"
    /* uncomment next lines for MySQL based authentication support
    NOTE: a DB (like db_mysql) module must be also loaded */
    loadmodule "auth.so"
    loadmodule "auth_db.so"
    /* uncomment next line for aliases support
    NOTE: a DB (like db_mysql) module must be also loaded */
    #loadmodule "alias_db.so"
    /* uncomment next line for multi-domain support
    NOTE: a DB (like db_mysql) module must be also loaded
    NOTE: be sure and enable multi-domain support in all used modules
    (see "multi-module params" section ) */
    #loadmodule "domain.so"
    /* uncomment the next two lines for presence server support
    NOTE: a DB (like db_mysql) module must be also loaded */
    #loadmodule "presence.so"
    #loadmodule "presence_xml.so"


    # ----------------- setting module-specific parameters ---------------


    # ----- mi_fifo params -----
    modparam("mi_fifo", "fifo_name", "/tmp/opensips_fifo")


    # ----- rr params -----
    # add value to ;lr param to cope with most of the UAs
    modparam("rr", "enable_full_lr", 1)
    # do not append from tag to the RR (no need for this script)
    modparam("rr", "append_fromtag", 0)


    # ----- registrar params -----
    modparam("registrar", "method_filtering", 1)
    /* uncomment the next line to disable parallel forking via location */
    # modparam("registrar", "append_branches", 0)
    /* uncomment the next line not to allow more than 10 contacts per AOR */
    #modparam("registrar", "max_contacts", 10)


    # ----- usrloc params -----
    modparam("usrloc", "db_mode", 0)
    /* uncomment the following lines if you want to enable DB persistency
    for location entries */
    modparam("usrloc", "db_mode", 2)
    #modparam("usrloc", "db_url",
    # "mysql://opensips:opensipsrw@localhost/opensips")


    # ----- uri_db params -----
    /* by default we disable the DB support in the module as we do not need it
    in this configuration */
    modparam("uri_db", "use_uri_table", 0)
    modparam("uri_db", "db_url", "")


    # ----- acc params -----
    /* what sepcial events should be accounted ? */
    modparam("acc", "early_media", 1)
    modparam("acc", "report_ack", 1)
    modparam("acc", "report_cancels", 1)
    /* by default ww do not adjust the direct of the sequential requests.
    if you enable this parameter, be sure the enable "append_fromtag"
    in "rr" module */
    modparam("acc", "detect_direction", 0)
    /* account triggers (flags) */
    modparam("acc", "failed_transaction_flag", 3)
    modparam("acc", "log_flag", 1)
    modparam("acc", "log_missed_flag", 2)
    /* uncomment the following lines to enable DB accounting also */
    modparam("acc", "db_flag", 1)
    modparam("acc", "db_missed_flag", 2)


    # ----- auth_db params -----
    /* uncomment the following lines if you want to enable the DB based
    authentication */
    modparam("auth_db", "calculate_ha1", yes)
    modparam("auth_db", "password_column", "password")
    #modparam("auth_db", "db_url",
    # "mysql://opensips:opensipsrw@localhost/opensips")
    #modparam("auth_db", "load_credentials", "")


    # ----- alias_db params -----
    /* uncomment the following lines if you want to enable the DB based
    aliases */
    #modparam("alias_db", "db_url",
    # "mysql://opensips:opensipsrw@localhost/opensips")


    # ----- domain params -----
    /* uncomment the following lines to enable multi-domain detection
    support */
    #modparam("domain", "db_url",
    # "mysql://opensips:opensipsrw@localhost/opensips")
    #modparam("domain", "db_mode", 1) # Use caching


    # ----- multi-module params -----
    /* uncomment the following line if you want to enable multi-domain support
    in the modules (dafault off) */
    #modparam("alias_db|auth_db|usrloc|uri_db", "use_domain", 1)


    # ----- presence params -----
    /* uncomment the following lines if you want to enable presence */
    #modparam("presence|presence_xml", "db_url",
    # "mysql://opensips:opensipsrw@localhost/opensips")
    #modparam("presence_xml", "force_active", 1)
    #modparam("presence", "server_address", "sip:192.168.1.2:5060")


    ####### Routing Logic ########


    # main request routing logic

    route{

    if (!mf_process_maxfwd_header("10")) {
    sl_send_reply("483","Too Many Hops");
    exit;
    }

    if (has_totag()) {
    # sequential request withing a dialog should
    # take the path determined by record-routing
    if (loose_route()) {
    if (is_method("BYE")) {
    setflag(1); # do accounting ...
    setflag(3); # ... even if the transaction fails
    } else if (is_method("INVITE")) {
    # even if in most of the cases is useless, do RR for
    # re-INVITEs alos, as some buggy clients do change route set
    # during the dialog.
    record_route();
    }
    # route it out to whatever destination was set by loose_route()
    # in $du (destination URI).
    route(1);
    } else {
    /* uncomment the following lines if you want to enable presence */
    ##if (is_method("SUBSCRIBE") && $rd == "your.server.ip.address") {
    ## # in-dialog subscribe requests
    ## route(2);
    ## exit;
    ##}
    if ( is_method("ACK") ) {
    if ( t_check_trans() ) {
    # non loose-route, but stateful ACK; must be an ACK after
    # a 487 or e.g. 404 from upstream server
    t_relay();
    exit;
    } else {
    # ACK without matching transaction ->
    # ignore and discard
    exit;
    }
    }
    sl_send_reply("404","Not here");
    }
    exit;
    }

    #initial requests

    # CANCEL processing
    if (is_method("CANCEL"))
    {
    if (t_check_trans())
    t_relay();
    exit;
    }

    t_check_trans();

    # authenticate if from local subscriber (uncomment to enable auth)
    # authenticate all initial non-REGISTER request that pretend to be
    # generated by local subscriber (domain from FROM URI is local)
    ##if (!(method=="REGISTER") && from_uri==myself) /*no multidomain version*/
    ##if (!(method=="REGISTER") && is_from_local()) /*multidomain version*/
    ##{
    ## if (!proxy_authorize("", "subscriber")) {
    ## proxy_challenge("", "0");
    ## exit;
    ## }
    ## if (!check_from()) {
    ## sl_send_reply("403","Forbidden auth ID");
    ## exit;
    ## }
    ##
    ## consume_credentials();
    ## # caller authenticated
    ##}

    # preloaded route checking
    if (loose_route()) {
    xlog("L_ERR",
    "Attempt to route with preloaded Route's [$fu/$tu/$ru/$ci]");
    if (!is_method("ACK"))
    sl_send_reply("403","Preload Route denied");
    exit;
    }

    # record routing
    if (!is_method("REGISTER|MESSAGE"))
    record_route();

    # account only INVITEs
    if (is_method("INVITE")) {
    setflag(1); # do accounting
    }
    if (!uri==myself)
    ## replace with following line if multi-domain support is used
    ##if (!is_uri_host_local())
    {
    append_hf("P-hint: outbound\r\n");
    # if you have some interdomain connections via TLS
    ##if($rd=="tls_domain1.net") {
    ## t_relay("tls:domain1.net");
    ## exit;
    ##} else if($rd=="tls_domain2.net") {
    ## t_relay("tls:domain2.net");
    ## exit;
    ##}
    route(1);
    }

    # requests for my domain

    ## uncomment this if you want to enable presence server
    ## and comment the next 'if' block
    ## NOTE: uncomment also the definition of route[2] from below
    ##if( is_method("PUBLISH|SUBSCRIBE"))
    ## route(2);

    if (is_method("PUBLISH"))
    {
    sl_send_reply("503", "Service Unavailable");
    exit;
    }


    if (is_method("REGISTER"))
    {
    # authenticate the REGISTER requests (uncomment to enable auth)
    ##if (!www_authorize("192.168.10.5", "subscriber"))
    ##{
    ## www_challenge("192.168.10.5", "0");
    ## exit;
    ##}
    ##
    ##if (!check_to())
    ##{
    ## sl_send_reply("403","Forbidden auth ID");
    ## exit;
    ##}

    if (!save("location"))
    sl_reply_error();

    exit;
    }

    if ($rU==NULL) {
    # request with no Username in RURI
    sl_send_reply("484","Address Incomplete");
    exit;
    }

    # apply DB based aliases (uncomment to enable)
    ##alias_db_lookup("dbaliases");

    if (!lookup("location")) {
    switch ($retcode) {
    case -1:
    case -3:
    t_newtran();
    t_reply("404", "Not Found");
    exit;
    case -2:
    sl_send_reply("405", "Method Not Allowed");
    exit;
    }
    }

    # when routing via usrloc, log the missed calls also
    setflag(2);

    route(1);
    }


    route[1] {
    # for INVITEs enable some additional helper routes
    if (is_method("INVITE")) {
    t_on_branch("2");
    t_on_reply("2");
    t_on_failure("1");
    }

    if (!t_relay()) {
    sl_reply_error();
    };
    exit;
    }


    # Presence route
    /* uncomment the whole following route for enabling presence
    NOTE: do not forget to enable the call of this route from the main
    route */
    ##route[2]
    ##{
    ## if (!t_newtran())
    ## {
    ## sl_reply_error();
    ## exit;
    ## };
    ##
    ## if(is_method("PUBLISH"))
    ## {
    ## handle_publish();
    ## t_release();
    ## }
    ## else
    ## if( is_method("SUBSCRIBE"))
    ## {
    ## handle_subscribe();
    ## t_release();
    ## }
    ##
    ## exit;
    ##}


    branch_route[2] {
    xlog("new branch at $ru\n");
    }


    onreply_route[2] {
    xlog("incoming reply\n");
    }


    failure_route[1] {
    if (t_was_cancelled()) {
    exit;
    }

    # uncomment the following lines if you want to block client
    # redirect based on 3xx replies.
    ##if (t_check_status("3[0-9][0-9]")) {
    ##t_reply("404","Not found");
    ## exit;
    ##}

    # uncomment the following lines if you want to redirect the failed
    # calls to a different new destination
    ##if (t_check_status("486|408")) {
    ## sethostport("192.168.2.100:5060");
    ## # do not set the missed call flag again
    ## t_relay();
    ##}
    }

    +
    0 Votes
    pukinsson

    # $Id: opensipsctlrc 4331 2008-06-06 14:36:01Z anca_vamanu $
    #
    # The OpenSIPS configuration file for the control tools.
    #
    # Here you can set variables used in the opensipsctl and opensipsdbctl setup
    # scripts. Per default all variables here are commented out, the control tools
    # will use their internal default values.

    ## your SIP domain
    SIP_DOMAIN=192.168.10.5

    ## chrooted directory
    # $CHROOT_DIR="/path/to/chrooted/directory"

    ## database type: MYSQL, PGSQL, ORACLE, DB_BERKELEY, or DBTEXT, by default none is loaded
    # If you want to setup a database with opensipsdbctl, you must at least specify
    # this parameter.
    DBENGINE=MYSQL

    ## database host
    DBHOST=localhost

    ## database name (for ORACLE this is TNS name)
    DBNAME=opensips

    # database path used by dbtext or db_berkeley
    # DB_PATH="/usr/local/etc/opensips/dbtext"

    ## database read/write user
    DBRWUSER=opensips

    ## password for database read/write user
    DBRWPW="opensipsrw"

    ## database read only user
    DBROUSER=opensipsro

    ## password for database read only user
    DBROPW=opensipsro

    ## database super user (for ORACLE this is 'scheme-creator' user)
    DBROOTUSER="root"

    # user name column
    # USERCOL="username"


    # SQL definitions
    # If you change this definitions here, then you must change them
    # in db/schema/entities.xml too.
    # FIXME

    # FOREVER="2020-05-28 21:32:15"
    # DEFAULT_ALIASES_EXPIRES=$FOREVER
    # DEFAULT_Q="1.0"
    # DEFAULT_CALLID="Default-Call-ID"
    # DEFAULT_CSEQ="13"
    # DEFAULT_LOCATION_EXPIRES=$FOREVER


    # Program to calculate a message-digest fingerprint
    # MD5="md5sum"

    # awk tool
    # AWK="awk"

    # grep tool
    # GREP="grep"

    # sed tool
    # SED="sed"


    # Describe what additional tables to install. Valid values for the variables
    # below are yes/no/ask. With ask (default) it will interactively ask the user
    # for an answer, while yes/no allow for automated, unassisted installs.
    #

    # If to install tables for the modules in the EXTRA_MODULES variable.
    # INSTALL_EXTRA_TABLES=ask

    # If to install presence related tables.
    # INSTALL_PRESENCE_TABLES=ask

    # Define what module tables should be installed.
    # If you use the postgres database and want to change the installed tables, then you
    # must also adjust the STANDARD_TABLES or EXTRA_TABLES variable accordingly in the
    # opensipsdbctl.base script.

    # opensips standard modules
    # STANDARD_MODULES="standard acc lcr domain group permissions registrar usrloc msilo
    # alias_db uri_db speeddial avpops auth_db pdt dialog dispatcher
    # dialplan"

    # opensips extra modules
    # EXTRA_MODULES="imc cpl siptrace domainpolicy carrierroute userblacklist"


    ## type of aliases used: DB - database aliases; UL - usrloc aliases
    ## - default: none
    ALIASES_TYPE="DB"

    ## control engine: FIFO or UNIXSOCK
    ## - default FIFO
    CTLENGINE="FIFO"

    ## path to FIFO file
    # OSIPS_FIFO="FIFO"

    ## MI_CONNECTOR control engine: FIFO, UNIXSOCK, UDP, XMLRPC
    # MI_CONNECTOR=FIFO:/tmp/opensips_fifo
    # MI_CONNECTOR=UNIXSOCK:/tmp/opensips.sock
    # MI_CONNECTOR=UDP:192.168.2.133:8000
    # MI_CONNECTOR=XMLRPC:192.168.2.133:8000

    ## check ACL names; default on (1); off (0)
    VERIFY_ACL=1

    ## ACL names - if VERIFY_ACL is set, only the ACL names from below list
    ## are accepted
    ACL_GROUPS="local ld int voicemail free-pstn"

    ## verbose - debug purposes - default '0'
    VERBOSE=1

    ## do (1) or don't (0) store plaintext passwords
    ## in the subscriber table - default '1'
    # STORE_PLAINTEXT_PW=0

    ## OPENSIPS START Options
    ## PID file path - default is: /var/run/opensips.pid
    # PID_FILE=/var/run/opensips.pid

    ## Extra start options - default is: not set
    # example: start opensips with 64MB share memory: STARTOPTIONS="-m 64"
    # STARTOPTIONS=

    +
    0 Votes
    ali.sade

    Edit
    /etc/opensips/opensipsctlrc
    and choose your DB ENGINE

    then run
    opensipsdbctl create

    +
    0 Votes

    Don't wake the zombies...the original post is over 3 years old.