GithubHelp home page GithubHelp logo

kazoo-docker's Introduction

Kazoo Docker Deployment

Preface

This is production (stripped down to bare minimum) version of Kazoo Docker. If you plan to alter source code or to develop features please consider it.

Notes

The intended use case is to quickly convert a VPS with Docker to complete Kazoo instance. Installation scripts tries to automatically determine hosts external IP address and deduce Kazoo API URL from it. This could be overriden with KAZOO_URL and/or EXT_IP environment variables.

As Kazoo differentiate clients by realms, and realms are domains, you also need to have a dedicated domain name server that could resolve all subdomains to single Kazoo IP address. Same could be done manually if number of sub-accounts is small.

In order to make Kazoo instance useful one also needs a VoIP carrier to provide PSTN numbers to dial into Kazoo, and same/another VoIP carrier to handle outgoing calls.

There is a docker volume couchdb-data to persistently store all Kazoo data. In case to get a clean install this volume should be removed with docker volume rm NAME command.

Each container is parametrized by NETWORK envirinment variable, with default value set to kazoo. By defining this variable it is possible to run several Kazoo instances on the same host.

Networking

There is a Nginx container provided to route HTTP requests to Monster UI (main Kazoo frontend) and to Kazoo API itself with exposed HTTP port 80. UDP port 5060 is exposed by Docker to provide access to Kazoo Kamailio instance to enable SIP devices to register and make calls.

In order to make audio work few tweaks are performed:

  1. Kamailio local.conf is altered with listen=UDP_SIP advertise EXT_IP:5060
  2. FreeSWITCH is instructed to consider all traffic external, and ext-rtp-ip parameter is set to EXT_IP
  3. For the reason unknown DNAT rule is added to route UDP from Kamailio to FreeSWITCH in form of EXT_IP:11000 -> freeswitch.container.ip
  4. Kamailio is added as SBC (both container and external ip addresses)

Init

You need to have Docker version at least 1.9.0 (as this setup relies on docker network heavily). Also you need to make sure curl and git are installed, and iptables is runnable.

git clone https://github.com/jamhed/kazoo-docker
cd kazoo-docker && ./run.sh

You can stop the Kazoo instance with stop.sh script, and start it back with start.sh script anytime.

After start

To initialize the system after first run (with empty database) there is after-start.sh script that:

  1. Creates a master account admin with password admin
  2. Adds freeswitch node to Kazoo
  3. Registers sound prompts
  4. Registers Monster-UI 'apps'

The after-start.sh script is called automatically by run.sh.

Kazoo Erlang console

docker exec -ti kazoo.kazoo ./run.sh remote_console

Kazoo sup

sup is a way to issue commands directly to Kazoo, please consult Kazoo documentation for more information.

Please note that sup script provided here is a mere wrapper of docker exec -ti kazoo.kazoo sup. If you have several Kazoo instances on the same host or have used different network name then the proper use of sup script is NETWORK=network_name ./sup [sup_args]

# Running apps
./sup kapps_controller running_apps

# Add Freeswitch node
./sup ecallmgr_maintenance add_fs_node [email protected]

# Get freeswitch nodes (should be [<<"[email protected]">>])
./sup ecallmgr_config get fs_nodes

# Add admin user
./sup crossbar_maintenance create_account admin_name kamailio.kazoo admin admin

# Import Kazoo voice prompts
./sup kazoo_media_maintenance import_prompts /home/user/kazoo-sounds/kazoo-core/en/us en-us

# Check RabbitMQ
./sup kazoo_amqp_maintenance connection_summary

Sanity check

Check Kazoo status (this is probably what you should see)

$ docker exec kazoo.kazoo sup kz_nodes status

Node          : [email protected]
Version       : 4.0.0 - 18
Memory Usage  : 190.55MB
Processes     : 1816
Ports         : 52
Zone          : local
Broker        : amqp://rabbitmq.kazoo:5672
WhApps        : blackhole(4m19s)         callflow(4m19s)          cdr(4m19s)               conference(4m19s)        
                crossbar(4m19s)          doodle(4m18s)            ecallmgr(4m18s)          fax(4m18s)               
                hangups(3m58s)           hotornot(3m58s)          jonny5(3m58s)            kazoo_globals(4m20s)     
                konami(3m58s)            media_mgr(3m58s)         milliwatt(3m58s)         omnipresence(3m58s)      
                pivot(3m58s)             registrar(3m58s)         reorder(3m58s)           runtime_tools            
                stepswitch(3m58s)        sysconf(4m19s)           teletype(3m58s)          trunkstore(3m58s)        
                webhooks(3m58s)          
Channels      : 0
Registrations : 0
Media Servers : [email protected] (3m51s)

Node          : [email protected]
Version       : 5.0.0-dev4
Memory Usage  : 14.27MB
Processes     : 0
Ports         : 0
Zone          : local
Broker        : amqp://rabbitmq.kazoo:5672
WhApps        : kamailio(17m37s)

Check Kazoo knows about Kamailio instance

$ docker exec kazoo.kazoo sup ecallmgr_maintenance acl_summary
+--------------------------------+-------------------+---------------+-------+------------------+----------------------------------+
| Name                           | CIDR               | List          | Type  | Authorizing Type | ID                               |
+================================+===================+===============+=======+==================+==================================+
| kamailio.kazoo                 | 172.18.0.5/32      | authoritative | allow | system_config    |                                  |
+--------------------------------+-------------------+---------------+-------+------------------+----------------------------------+

Check Kamailio has FreeSwitch as dispatcher

$ docker exec kamailio.kazoo kamcmd dispatcher.list | grep URI
URI: sip:freeswitch.kazoo:11000

Monster-UI

How to register Monster-UI apps:

  1. You need to have monster-ui and kazoo images running
  2. You need to copy apps from monster-ui to kazoo
  3. You need to 'register' these apps
docker cp monster-ui.kazoo:/usr/share/nginx/html/dist/apps apps
docker cp apps kazoo.kazoo:/home/user
rm -rf apps
cd kazoo
./sup crossbar_maintenance init_apps /home/user/apps $KAZOO_URL

After you have added applications to Kazoo you need to enable them to be accessible by users. You can do it using Kazoo Monster UI.

TODO

  1. Make two instances of Kazoo to work together, probably on different hosts.
  2. Provide docker container with domain name server.
  3. Integrate Nginx with letsencrypt to setup HTTPS by default.
  4. Enable websockets by default.
  5. Provide a way to automatically test setup (with MakeBusy), either external or internal.

kazoo-docker's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

kazoo-docker's Issues

kamilio container cannot launch

the build runs through but when I try to run.sh all containers, kamilio instantly crashes:

$ sudo docker logs a3dcffaa0a8c
 0(1) INFO: <core> [core/ppcfg.c:82]: pp_subst_add(): ### added subst expression: !MY_HOSTNAME!kamailio.kazoo!g
 0(1) INFO: <core> [core/ppcfg.c:82]: pp_subst_add(): ### added subst expression: !MY_IP_ADDRESS!172.18.0.4!g
 0(1) INFO: <core> [core/ppcfg.c:82]: pp_subst_add(): ### added subst expression: !MY_AMQP_URL!kazoo://guest:[email protected]:5672!g
 0(1) INFO: <core> [core/ppcfg.c:82]: pp_subst_add(): ### added subst expression: !MY_WEBSOCKET_DOMAIN!2600hz.com!g
 0(1) INFO: <core> [core/ppcfg.c:82]: pp_subst_add(): ### added subst expression: !UDP_SIP!udp:172.18.0.4:5060!g
 0(1) INFO: <core> [core/ppcfg.c:82]: pp_subst_add(): ### added subst expression: !TCP_SIP!tcp:172.18.0.4:5060!g
 0(1) INFO: <core> [core/ppcfg.c:82]: pp_subst_add(): ### added subst expression: !TLS_SIP!tls:172.18.0.4:5061!g
 0(1) INFO: <core> [core/ppcfg.c:82]: pp_subst_add(): ### added subst expression: !UDP_ALG_SIP!udp:172.18.0.4:7000!g
 0(1) INFO: <core> [core/ppcfg.c:82]: pp_subst_add(): ### added subst expression: !TCP_ALG_SIP!tcp:172.18.0.4:7000!g
 0(1) INFO: <core> [core/ppcfg.c:82]: pp_subst_add(): ### added subst expression: !TLS_ALG_SIP!tls:172.18.0.4:7001!g
 0(1) INFO: <core> [core/ppcfg.c:82]: pp_subst_add(): ### added subst expression: !TCP_WS!tcp:172.18.0.4:5064!g
 0(1) INFO: <core> [core/ppcfg.c:82]: pp_subst_add(): ### added subst expression: !UDP_WS_SIP!udp:172.18.0.4:5064!g
 0(1) INFO: <core> [core/ppcfg.c:82]: pp_subst_add(): ### added subst expression: !TLS_WSS!tls:172.18.0.4:5065!g
 0(1) INFO: <core> [core/ppcfg.c:82]: pp_subst_add(): ### added subst expression: !UDP_WSS_SIP!udp:172.18.0.4:5065!g
 0(1) INFO: <core> [core/ppcfg.c:82]: pp_subst_add(): ### added subst expression: !KAZOO_DB_URL!text:///etc/kamailio/dbtext!g
 0(1) INFO: <core> [core/ppcfg.c:82]: pp_subst_add(): ### added subst expression: !MAX_WHILE_LOOPS!500!g
 0(1) INFO: <core> [core/ppcfg.c:82]: pp_subst_add(): ### added subst expression: !OPENBTS_AUTH_SECRET!b3a54fa8317c7d9cb1d89d8970947b30eda273124d97fc3a079ccc98ecc2569b!g
 0(1) INFO: <core> [core/ppcfg.c:82]: pp_subst_add(): ### added subst expression: !ANTIFLOOD_CACHE_PERIOD!600!g
 0(1) WARNING: <core> [core/cfg.y:3387]: warn_at(): warning in config file /etc/kamailio/default.cfg, line 63, column 13: raw socket support not compiled in
 0(1) ERROR: <core> [core/sr_module.c:571]: load_module(): could not find module <outbound> in </usr/local/lib64/kamailio/modules>
 0(1) : <core> [core/cfg.y:3407]: yyerror_at(): parse error in config file /etc/kamailio/default.cfg, line 90, column 12-24: failed to load module
 0(1) ERROR: <core> [core/sr_module.c:571]: load_module(): could not find module <uuid> in </usr/local/lib64/kamailio/modules>
 0(1) : <core> [core/cfg.y:3407]: yyerror_at(): parse error in config file /etc/kamailio/default.cfg, line 99, column 12-20: failed to load module
 0(1) ERROR: <core> [core/sr_module.c:571]: load_module(): could not find module <kazoo> in </usr/local/lib64/kamailio/modules>
 0(1) : <core> [core/cfg.y:3407]: yyerror_at(): parse error in config file /etc/kamailio/default.cfg, line 166, column 12-21: failed to load module
 0(1) ERROR: <core> [core/modparam.c:152]: set_mod_param_regex(): No module matching <kazoo> found
 0(1) : <core> [core/cfg.y:3410]: yyerror_at(): parse error in config file /etc/kamailio/default.cfg, line 167, column 50: Can't set module parameter
 0(1) ERROR: <core> [core/modparam.c:152]: set_mod_param_regex(): No module matching <kazoo> found
 0(1) : <core> [core/cfg.y:3410]: yyerror_at(): parse error in config file /etc/kamailio/default.cfg, line 168, column 51: Can't set module parameter
 0(1) ERROR: <core> [core/modparam.c:152]: set_mod_param_regex(): No module matching <kazoo> found
 0(1) : <core> [core/cfg.y:3410]: yyerror_at(): parse error in config file /etc/kamailio/default.cfg, line 178, column 43: Can't set module parameter
 0(1) ERROR: <core> [core/modparam.c:152]: set_mod_param_regex(): No module matching <kazoo> found
 0(1) : <core> [core/cfg.y:3410]: yyerror_at(): parse error in config file /etc/kamailio/default.cfg, line 180, column 63: Can't set module parameter
 0(1) ERROR: <core> [core/modparam.c:152]: set_mod_param_regex(): No module matching <kazoo> found
 0(1) : <core> [core/cfg.y:3410]: yyerror_at(): parse error in config file /etc/kamailio/default.cfg, line 181, column 47: Can't set module parameter
 0(1) ERROR: <core> [core/modparam.c:152]: set_mod_param_regex(): No module matching <kazoo> found
 0(1) : <core> [core/cfg.y:3410]: yyerror_at(): parse error in config file /etc/kamailio/default.cfg, line 182, column 46: Can't set module parameter
 0(1) ERROR: <core> [core/modparam.c:152]: set_mod_param_regex(): No module matching <kazoo> found
 0(1) : <core> [core/cfg.y:3410]: yyerror_at(): parse error in config file /etc/kamailio/default.cfg, line 183, column 39: Can't set module parameter
 0(1) ERROR: <core> [core/pvapi.c:828]: pv_parse_spec2(): error searching pvar "uuid"
 0(1) ERROR: <core> [core/pvapi.c:1032]: pv_parse_spec2(): wrong char [g/103] in [$(uuid(g){s.rm,-})] at [7 (2)]
 0(1) : <core> [core/cfg.y:3407]: yyerror_at(): parse error in config file /etc/kamailio/registrar-role.cfg, line 111, column 19-36: Can't get from cache: $(uuid(g){s.rm,-})
ERROR: bad config file (11 errors)
 0(1) WARNING: <core> [core/ppcfg.c:221]: pp_ifdef_level_check(): different number of preprocessor directives: N(#!IF[N]DEF) - N(#!ENDIF) = 1
 0(1) INFO: <core> [core/sctp_core.c:53]: sctp_core_destroy(): SCTP API not initialized

couchdb 1.6 uses port 15984, but couchdb 2.0 uses 5984

@jamhed The image builds of 2600hz/couchdb of Feb 17 uses couchdb 1.6 which broke the run.sh process as kazoo.kazoo config was pointing to couchdb2's port 5984, resulting in the following error when running ./run.sh:

([email protected])1> 11:37:24.938 info kz_dataconnection.161 trying to connect kazoo_couch
([email protected])1> 11:37:24.940 warning kz_couch_util.338 connection to http://couchdb.kazoo:5984 failed: econnrefused
([email protected])1> 11:37:24.940 info kz_dataconnection.171 failed to connect with kazoo_couch : {error,econnrefused} : #{admin_port => 5986,compact_automatically => true,cookie => change_me,driver => kazoo_couch,ip => "couchdb.kazoo",port => 5984,tag => local}

I built couchdb2 locally and it is working fine. FYI.

create master account

Hi

I am running run.sh and I am getting this error:

wait for kazoo.kazoo to start (you may check docker logs if impatient)
create master account: failed to validate account properties(error): '{}'
failed

how can i revolve it

The command '/bin/sh -c build/setup-private.sh' returned a non-zero code: 128

the GH repos in monster-ui/build/setup-private.sh no longer exist.

from setup-private.sh

for app in conferences fax debug callqueues operator websockets dialplans voicemails pivot userportal mobile provisioner cluster branding reporting port migration carriers
do
	git clone --depth 1 --no-single-branch https://github.com/2600hz/monster-ui-$app $app
done

this is the error I'm getting.

Setup private apps
Cloning into 'conferences'...
Warning: Permanently added the RSA host key for IP address '192.30.253.112' to the list of known hosts.
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
Cloning into 'fax'...
Warning: Permanently added the RSA host key for IP address '192.30.253.113' to the list of known hosts.
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
Cloning into 'debug'...
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
Cloning into 'callqueues'...
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
Cloning into 'operator'...
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
Cloning into 'websockets'...
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
Cloning into 'dialplans'...
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
Cloning into 'voicemails'...
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
Cloning into 'pivot'...
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
Cloning into 'userportal'...
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
Cloning into 'mobile'...
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
Cloning into 'provisioner'...
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
Cloning into 'cluster'...
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
Cloning into 'branding'...
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
Cloning into 'reporting'...
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
Cloning into 'port'...
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
Cloning into 'migration'...
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
Cloning into 'carriers'...
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
The command '/bin/sh -c build/setup-private.sh' returned a non-zero code: 128

SIP NAT configuration

Thanks for working on these docker images! It makes it really easy to have everything installed, very useful.

I'm running the minimal images on a PC for testing/experimenting purposes. I have problems with calls getting disconnected after 30 sec, due to ACK timeout, and also with not having voice.
I believe that the cause of these issues is that the docker setup implies the scenario of having kazoo behind NAT. Kamailio and Freeswitch however do not seem to be configured for this in the images. In the traces I see that the adresses/ports of the kazoo docker network bridge are communicated to the clients on SIP/SDP. This is a problem e.g. when clients want to send an ACK after receiving a 200 OK with the Freeswitch IP/Port in the SIP contact header.

Would it be possible to have Kamailio/Freeswitch configured by default for this "behind NAT" scenario to modify the relevant SIP headers and communicate the RTP endpoints with a "public" IP? Or is this already taken care of and I have missed something completely obvious ?

2600hz/freeswitch:latest -> ./run-deploy.sh: no such file or directory

@jamhed

Something's amiss with the new 2600hz/freeswitch:latest

Status: Downloaded newer image for 2600hz/freeswitch:latest
37539677796e983a52ceb67a2416675b608247a1880a427aa13eb4124961fd6f
docker: Error response from daemon: oci runtime error: container_linux.go:247: starting container process caused "exec: \"./run-deploy.sh\": stat ./run-deploy.sh: no such file or directory".

monster-ui problem

In the current monster-ui image there is a sort function missing from monster.util.js. Since more screens want to use it, this is probably a regression in monster-ui and it breaks quite a few things. If there is a fix for it in monster-ui then would it be possible to update the image ? Thanks in advance.

Missing repositories

Hi, just wondering if this project is still maintained? I'm trying to run the script and most of the 2600hz repositories don't exist.

hosts.sh missing from production git repo.

@jamhed, On README.md, host.sh is missing from the production repo, although referenced in the the README file.

I am thoroughly enthused by the efforts done with 2600hz on kazoo + docker, and the quality of the project thus far! Also if I may, I can contrib the couchdb persistency listed in the TODO. Sending a PR your way once I am able.

EDIT: Also along with host.sh, get-ip

Great docker work overall! A+

krull

kamailio container cant connect to rabbitmq - shows channel_max error

Hello,

When we launch containers per given instructions I see this error : in kamailio container logs:

17(31) ERROR: kazoo [kz_amqp.h:299]: kz_amqp_error(): Logging in: (end-of-stream)
17(31) ERROR: kazoo [kz_amqp.c:878]: kz_amqp_connection_open(): Login to AMQP broker failed!
17(31) ERROR: kazoo [kz_amqp.h:299]: kz_amqp_error(): closing connection: (end-of-stream)
9(23) INFO: <script>: connection to rabbitmq.kazoo closed

Also Repeated error in rabbitmq container logs:

failed to negotiate connection parameters: negotiated channel_max = 0 (no limit) is higher than the maximum allowed value (2047)

Also this command (inside rabbitmq container) rabbitmq-diagnostics environment | grep 'channel_max' shows
{channel_max,2047},

Using docker 19.x on CentOS 7.

Below is the output of : sudo docker exec kazoo.kazoo sup kz_nodes status where kamailio is now shown at all:

[centos@ip-172-31-2-82 docker]$ sudo docker exec kazoo.kazoo sup kz_nodes status
Node : [email protected]
md5 : ArGJA-d4jQ8D82HNFBDt7A
Version : 4.0.0 - 19
Memory Usage : 150.00MB
Processes : 1754
Ports : 35
Zone : local
Broker : amqp://rabbitmq.kazoo:5672
Globals : local (1)
Node Info : kz_amqp_pool: 150/0/0 (ready)
WhApps : blackhole(50m51s) callflow(50m50s) cdr(50m50s) conference(50m50s)
crossbar(50m50s) ecallmgr(50m43s) fax(50m48s) hangups(50m48s)
media_mgr(50m48s) milliwatt(50m48s) omnipresence(50m48s) pivot(50m48s)
registrar(50m48s) reorder(50m48s) stepswitch(50m48s) sysconf(50m51s)
teletype(50m48s) trunkstore(50m43s) webhooks(50m43s)
Channels : 0
Registrations : 0
Media Servers : [email protected] (43m43s)

[centos@ip-172-31-2-82 docker]$

Perhaps Kamailio use channel_max as '0' while connecting to rabbitmq?

Please suggest how to fix this problem.

Thanks
Amit

cant build kamailio container

perhaps problem is in nsq module

install -m 755 evbuffsock.h /usr/local/include/evbuffsock.h
cc -o command.o -c command.c -g -Wall -O2 -DDEBUG -fPIC
cc -o reader.o -c reader.c -g -Wall -O2 -DDEBUG -fPIC
reader.c: In function 'new_nsq_reader':
reader.c:112:5: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
ev_timer_init(&rdr->lookupd_poll_timer, nsq_reader_lookupd_poll_cb, 0., 5.);
^
reader.c:112:5: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
reader.c:112:5: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
reader.c:112:5: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
cc -o nsqd_connection.o -c nsqd_connection.c -g -Wall -O2 -DDEBUG -fPIC
nsqd_connection.c: In function 'new_nsqd_connection':
nsqd_connection.c:117:9: warning: passing argument 4 of 'new_buffered_socket' makes integer from pointer without a cast
nsqd_connection_connect_cb, nsqd_connection_close_cb,
^
In file included from nsq.h:9:0,
from nsqd_connection.c:1:
/usr/local/include/evbuffsock.h:69:24: note: expected 'size_t' but argument is of type 'void ()(struct BufferedSocket *, void *)'
struct BufferedSocket *new_buffered_socket(struct ev_loop *loop, const char *address, int port,
^
nsqd_connection.c:117:37: warning: passing argument 5 of 'new_buffered_socket' makes integer from pointer without a cast
nsqd_connection_connect_cb, nsqd_connection_close_cb,
^
In file included from nsq.h:9:0,
from nsqd_connection.c:1:
/usr/local/include/evbuffsock.h:69:24: note: expected 'size_t' but argument is of type 'void (
)(struct BufferedSocket , void *)'
struct BufferedSocket *new_buffered_socket(struct ev_loop *loop, const char *address, int port,
^
nsqd_connection.c:118:9: warning: passing argument 6 of 'new_buffered_socket' makes integer from pointer without a cast
NULL, NULL, nsqd_connection_error_cb,
^
In file included from nsq.h:9:0,
from nsqd_connection.c:1:
/usr/local/include/evbuffsock.h:69:24: note: expected 'size_t' but argument is of type 'void *'
struct BufferedSocket *new_buffered_socket(struct ev_loop *loop, const char *address, int port,
^
nsqd_connection.c:118:15: warning: passing argument 7 of 'new_buffered_socket' makes integer from pointer without a cast
NULL, NULL, nsqd_connection_error_cb,
^
In file included from nsq.h:9:0,
from nsqd_connection.c:1:
/usr/local/include/evbuffsock.h:69:24: note: expected 'size_t' but argument is of type 'void *'
struct BufferedSocket *new_buffered_socket(struct ev_loop *loop, const char *address, int port,
^
nsqd_connection.c:119:9: warning: passing argument 9 of 'new_buffered_socket' from incompatible pointer type
conn);
^
In file included from nsq.h:9:0,
from nsqd_connection.c:1:
/usr/local/include/evbuffsock.h:69:24: note: expected 'void (
)(struct BufferedSocket , void *)' but argument is of type 'struct NSQDConnection *'
struct BufferedSocket *new_buffered_socket(struct ev_loop *loop, const char *address, int port,
^
nsqd_connection.c:116:16: error: too few arguments to function 'new_buffered_socket'
conn->bs = new_buffered_socket(loop, address, port,
^
In file included from nsq.h:9:0,
from nsqd_connection.c:1:
/usr/local/include/evbuffsock.h:69:24: note: declared here
struct BufferedSocket *new_buffered_socket(struct ev_loop *loop, const char *address, int port,
^
make: *
* [nsqd_connection.o] Error 1
Makefile:17: recipe for target 'nsqd_connection.o' failed
install -m 755 -d /usr/local/include
install -m 755 -d /usr/local/lib
install -m 755 libnsq.a /usr/local/lib/libnsq.a
install: cannot stat 'libnsq.a': No such file or directory
Makefile:32: recipe for target 'install' failed
make: *** [install] Error 1
Makefile:107: config.mak: No such file or directory

Best Regards
Robert

docker-compose ?

is there a possibilitie this could be done with docker-compose....? i see no compose file? other then that
I would also be curious about rancher or DC/OS as an app

Freeswitch no audio

This is probably my own lack of knowledge but i was wondering if i could get some pointers.
I set up everything form your script.
I cant hear any audio in the calls both ways.
i think its a free switch port thing. i might be wrong
i installed centos 7 and then converted from firewalld to ip-tables services
then i installed docker and ran your script.

Could you tell me the manual way to set up the RTP ports.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.