http://docs.jasminsms.com/en/latest/installation/index.html
The Installation section is intended to get you up and running quickly with a simple SMS sending scenario through HTTP API or SMPP Server API.
Jasmin installation is provided as rpm & deb Linux packages, docker image and pypi package.
Important
Jasmin needs a working RabbitMQ and Redis servers, more info in Prerequisites & Dependencies below.
Jasmin requires Python 2.7 or newer (but not Python 3) with a functioning pip module.
Hint
Latest pip module installation: # curl https://bootstrap.pypa.io/get-pip.py | python
Depending on the Linux distribution you are using, you may need to install the following dependencies:
Jasmin can be installed through DEB packages hosted on Packagecloud:
wget -qO - http://bit.ly/jasmin-deb-repo | sudo bash
sudo apt-get install python-jasmin
Note
Ubuntu 15.04 and higher versions are supported.
Once Jasmin installed, you may simply start the jasmind service:
sudo systemctl enable jasmind
sudo systemctl start jasmind
Note
redis and rabbitmq must be started with jasmin.
Jasmin can be installed through RPM packages hosted on Packagecloud:
wget -qO - http://bit.ly/jasmin-rpm-repo | sudo bash
sudo yum install python-jasmin
Note
Red Hat Enterprise Linux 7 & CentOS 7 are supported.
You may get the following error if RabbitMQ or Redis server are not installed:
No package redis available.
No package rabbitmq-server available.
These requirements are available from the EPEL repository, you’ll need to enable it before installing Jasmin:
## RHEL/CentOS 7 64-Bit ##
yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
Once Jasmin installed, you may simply start the jasmind service:
sudo systemctl enable jasmind
sudo systemctl start jasmind
Note
redis and rabbitmq must be started with jasmin.
Having another OS not covered by package installations described above ? using the Python package installer will be possible, you may have to follow these instructions:
Jasmin system service is running under the jasmin system user, you will have to create this user under jasmin group:
sudo useradd jasmin
In order to run as a POSIX system service, Jasmin requires the creation of the following folders before installation:
/etc/jasmin
/etc/jasmin/resource
/etc/jasmin/store #> Must be owned by jasmin user
/var/log/jasmin #> Must be owned by jasmin user
The last step is to install jasmin through pip:
sudo pip install jasmin
systemd scripts must be downloaded from here <https://github.com/jookies/jasmin/tree/master/misc/config/systemd> and manually installed into your system, once placed in /lib/systemd/system jasmind shall be enabled and started:
sudo systemctl enable jasmind
sudo systemctl start jasmind
Note
redis and rabbitmq must be started with jasmin.
You probably have heard of Docker, it is a container technology with a ton of momentum. But if you haven’t, you can think of containers as easily-configured, lightweight VMs that start up fast, often in under one second. Containers are ideal for microservice architectures and for environments that scale rapidly or release often, Here’s more from Docker’s website.
Before we get into containers, we’ll need to get Docker running locally. You can do this by installing the package for your system (tip: you can find yours here). Running a Mac? You’ll need to install the boot2docker application before using Docker. Once that’s set up, you’re ready to start using Jasmin container !
This command will pull latest jasmin docker image to your computer:
docker pull jookies/jasmin
You should have Jasmin image listed in your local docker images:
# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
jasmin latest 0e4cf8879899 36 minutes ago 478.6 MB
Note
The Jasmin docker image is a self-contained/standalone box including Jasmin+Redis+RabbitMQ.
This command will create a new docker container with name jasmin_01 which run as a demon:
docker run -d -p 1401:1401 -p 2775:2775 -p 8990:8990 --name jasmin_01 jookies/jasmin:latest
Note that we used the parameter -p three times, it defines port forwarding from host computer to the container, typing -p 2775:2775 will map the container’s 2775 port to your host 2775 port; this can be useful in case you’ll be running multiple containers of Jasmin where you keep a port offset of 10 between each, example:
docker run -d -p 1411:1401 -p 2785:2775 -p 8990:8990 --name jasmin_02 jookies/jasmin:latest
docker run -d -p 1421:1401 -p 2795:2775 -p 9000:8990 --name jasmin_03 jookies/jasmin:latest
docker run -d -p 1431:1401 -p 2805:2775 -p 9010:8990 --name jasmin_04 jookies/jasmin:latest
You should have the container running by typing the following:
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0a2fafbe60d0 jookies/jasmin:latest "/docker-entrypoint. 43 minutes ago Up 41 minutes 0.0.0.0:1401->1401/tcp, 0.0.0.0:2775->2775/tcp, 0.0.0.0:8990->8990/tcp jasmin_01
And in order to control the container jasmin_01, use:
docker stop jasmin_01
docker start jasmin_01
It’s possible to access log files located in /var/log/jasmin inside the container by mounting it as a shared folder:
docker run -d -v /home/user/jasmin_logs:/var/log/jasmin --name jasmin_100 jookies/jasmin:latest
For the really impatient, if you want to give Jasmin a whirl right now and send your first SMS, you’ll have to connect to Management CLI overview and setup a connection to your SMS-C, let’s assumeyou have the following SMPP connection parameters as provided from your partner:
Paramater | Description | Value |
---|---|---|
Host | Host of remote SMS-C | 172.16.10.67 |
Port | SMPP port on remote SMS-C | 2775 |
Username | Authentication username | smppclient1 |
Password | Authentication password | password |
Throughput | Maximum sent SMS/second | 110 |
Note
In the next sections we’ll be heavily using jCli console, if you feel lost, please refer to Management CLI overview for detailed information.
Connect to jCli console through telnet (telnet 127.0.0.1 8990) using jcliadmin/jclipwd default authentication parameters and add a new connector with an CID=DEMO_CONNECTOR:
Authentication required.
Username: jcliadmin
Password:
Welcome to Jasmin console
Type help or ? to list commands.
Session ref: 2
jcli : smppccm -a
> cid DEMO_CONNECTOR
> host 172.16.10.67
> port 2775
> username smppclient1
> password password
> submit_throughput 110
> ok
Successfully added connector [DEMO_CONNECTOR]
Let’s start the newly added connector:
jcli : smppccm -1 DEMO_CONNECTOR
Successfully started connector id:DEMO_CONNECTOR
You can check if the connector is bound to your provider by checking its log file (default to /var/log/jasmin/default-DEMO_CONNECTOR.log) or through jCli console:
jcli : smppccm --list
#Connector id Service Session Starts Stops
#DEMO_CONNECTOR started BOUND_TRX 1 0
Total connectors: 1
We’ll configure a default route to send all SMS through our newly created DEMO_CONNECTOR:
jcli : mtrouter -a
Adding a new MT Route: (ok: save, ko: exit)
> type defaultroute
jasmin.routing.Routes.DefaultRoute arguments:
connector
> connector smppc(DEMO_CONNECTOR)
> rate 0.00
> ok
Successfully added MTRoute [DefaultRoute] with order:0
In order to use Jasmin’s HTTP API to send SMS messages, you have to get a valid user account, that’s what we’re going to do below.
First we have to create a group to put the new user in:
jcli : group -a
Adding a new Group: (ok: save, ko: exit)
> gid foogroup
> ok
Successfully added Group [foogroup]
And then create the new user:
jcli : user -a
Adding a new User: (ok: save, ko: exit)
> username foo
> password bar
> gid foogroup
> uid foo
> ok
Successfully added User [foo] to Group [foogroup]
Sending outbound SMS (MT) is simply done through Jasmin’s HTTP API (refer to HTTP API for detailed information about sending and receiving SMS and receipts):
http://127.0.0.1:1401/send?username=foo&password=bar&to=06222172&content=hello
Calling the above url from any brower will send an SMS to 06222172 with hello content, if you receive a response like the below example it means your SMS is accepted for delivery:
Success "9ab2867c-96ce-4405-b890-8d35d52c8e01"
For more troubleshooting about message delivery, you can check details in related log files in /var/log/jasmin:
Log filename | Description |
---|---|
messages.log | Information about queued, rejected, received and sent messages |
default-DEMO_CONNECTOR.log | The SMPP connector log file |