Sendy Installation and Setup on Linux (Ubuntu and CentOS)
Sendy Definition
Sendy is a self hosted email newsletter application that lets you send emails using Amazon SES and other SMTP providers and it can be installed over LAMP (Linux, Apache, MySQL and PHP) stack just like WordPress.
Sendy Pricing and Sendy Download
You can purchase Sendy from their website https://sendy.co. Once purchased you will receive the Sendy’s download link and the license for installation in email.
Sendy Hosting
You can host Sendy with any hosting company which provides hosting for PHP based applications like WordPress or you can install/setup on your own VPS (virtual private server). This article will demonstrate installation of Sendy on a new Ubuntu or CentOS VPS from scratch.
We have used Digital Ocean to create the VPS for this article.
Sendy System Configurations
We are using Sendy 5.2.3 on Ubuntu 18.04 and CentOS 7.9 for this installation article. We will be installing the server on the URL: sendy.postbox.services. You can install Sendy on any of your domain/subdomain.
Sendy Installation Steps:
FTP the Sendy package
For Sendy installation you need to buy Sendy license from their official website. Once you have bought the Sendy license then download the Sendy package and put it into your VPS machine using FileZilla / your favorite FTP software / SCP.
Create an A record in the DNS for the Sendy URL
Before starting the configuration you need to do A records for your domain for IP connectivity.
Configure the hostname
# hostnamectl set-hostname sendy.postbox.services
Install Apache2 as web server
Ubuntu:
#apt-get install apache2
Now enable the mod_rewrite
Ubuntu :
# a2enmod rewrite
Centos7:
#sudo yum install httpd
#sudo firewall-cmd –permanent –add-service=http
#sudo firewall-cmd –permanent –add-service=https
#sudo firewall-cmd –reload
Install PHP and PHP-FPM
Ubuntu:
apt-get install php php-fpm libapache2-mod-php php-mysql php-curl php-xml
Centos:
sudo yum install epel-release yum-utils
sudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
sudo yum-config-manager –enable remi-php73
sudo yum install php php-common php-opcache php-mcrypt php-cli php-gd php-curl php-mysqlnd
Install Database (mysql or mariadb)
Ubuntu:
sudo apt install mysql-server mysql-client
CentOS:
sudo yum install mariadb-server mariadb -y
Create the database
Let’s create a database, login to MySQL, it will prompt you to enter the root password which you gave while installing mysql/mariadb
# mysql -p
Use the following commands to create a database for Sendy:
# create database sendy;
# create user ‘sendyuser’@’localhost’ IDENTIFIED BY ‘wsxEd#&12HsUwc4’;
# grant all privileges on sendy . * TO ‘sendyuser’@’localhost’;
Please change database name, username and password during your configurations.
We have created database successfully which can be checked with following command :
# show databases;
We have configured database with the following details :
Hostname : Localhost
Database : sendy
Username : sendyuser
Password : wsxEd#&12HsUwc4
Install unzip
Ubuntu:
apt-get install unzip
CentOS:
yum install unzip
Unzip Sendy package
# unzip sendy-5.2.3.zip
# ls -ltr
Move Sendy folder to web root
Now we have a folder called sendy which has all the required configuration file and folder. Move sendy folder in web document root location.
# mv sendy /var/www
Configure Apache
We have moved the sendy folder in our document root, now it’s time to setup the Apache config file for sendy.
Go to the Apache configuration path
Ubuntu:
cd /etc/apache2/sites-available/
CentOS:
cd /etc/httpd/conf.d
Create a new file with the .conf extension and put the following configuration then save and exit.
# vim sendy.postbox.services.conf
<VirtualHost 112.x.x.x:80>
ServerAdmin [email protected]
ServerName sendy.postbox.services
DocumentRoot /var/www/sendy
ErrorLog /var/www/sendy/logs/error.log
CustomLog /var/www/sendy/logs/access.log combined
<Directory /var/www/sendy>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
Require all granted
</Directory>
</VirtualHost>
Save the configuration and exit from your editor.
Note : Please change domain and IP addresses according to your configuration.
Configure Sendy configuration file
Go to your document sendy root directory inside the includes directory and update the config.php file with database details.
# cd /var/www/sendy/includes/
# vim config.php
Edit the config. php file in your favorite editor here I am editing it via VIM editor.
Here we have to change following configurations :
APP_PATH :
dbHost =
dbUser =
dbPass =
dbName =
Save and exit from the editor.
Ensure at this point all required services Apache, PHP-FPM and Mysql or MariaDB database are in running status.
Sendy server compatibility checklist
All the preparation work is done and its time to install Sendy. Before that, let’s ensure the server has all the required library by accessing a compatibility.php file
https://your-domain.com/_compatibility.php?i=1
In our case we will access:
http://sendy.postbox.services/_compatibility.php?i=1
Great, our configuration is working fine.
Sendy Web installation steps
Got your web browser and put the URL:
http://yourdomain/_install.php
http://sendy.postbox.services/_install.php
Fill the required information and click the install now button.
Note down the username and password.
After clicking the Install now button the page will be redirected to the login dashboard. Here we have to put the Email and Password which we have created during the configuration.
http://sendy.postbox.services/login
Click on Sign In button :
Now Sendy is successfully installed and ready to use.
Add Brand To Sendy
Add brand for campaigns, brand creation is a process where we can create multiple users for sending newsletters.
Click on Add your first brand button
Fill the required fields and save the password carefully from the left panel, and then click on the save button.
Brand user is created and now we can login using brand username and password.
You can also install letsencrypt free SSL certificate to secure your Sendy installation and improve deliverability.