Socioboard - All in one social media management
This article will be showing you how to install Socioboard on Ubuntu 20.04 with Apache or Nginx web server. Socioboard is an open-source, self-hosted social media lead generation toolkit for businesse
How to Install Socioboard on Ubuntu 20.04 – Social Media Lead Generation Toolkit
This tutorial will be showing you how to install Socioboard on Ubuntu 20.04 with Apache or Nginx web server. Socioboard is an open-source, self-hosted social media lead generation toolkit for businesses. Socioboard provides hosted service, but if you like to self-host the software on your own server, you can follow the instructions below.
Socioboard Features
Social networks are meant for the users, not for businesses. Socioboard views social from a business point of view and fills those gaps which social networks cannot fill exquisitely. Businesses should own their social data and they should be in charge of what they want to do with it, generate reports and analyze data to make informed and improved business decisions.
Socioboard provides:
- Highly customizable and scalable open-source tools
- Prompt feeds and interactive social discovery tools
- Social CRM tools including shared customer records
- Highly efficient team collaboration tools
- Advanced scheduling & publishing tools
- Sophisticated analytics on various parameters
- Customer support features like tasks and Helpdesk integration
Prerequisites
First, you need a Linux server with at least 2GB RAM. You can click this special link to get $100 free credit on DigitalOcean. (For new users only). If you are already a DigitalOcean user, then you can click this special link to get $50 free credit on Vultr (for new users only). Once you have an account at DigitalOcean or Vultr, install Ubuntu 20.04 on your server and follow the instructions below.
Socioboard requires PHP and MySQL/MariaDB. To follow this tutorial, you should have already set up a LAMP stack or LEMP stack. If you haven’t already done so, please use one of the following guides.
- How to Install LAMP (Apache, MariaDB, PHP) stack on Ubuntu 20.04
- How to Install LEMP (Nginx, MariaDB, PHP) stack on Ubuntu 20.04
You also need a domain name. I registered my domain name at NameCheap because the price is low and they give whois privacy protection free for life.
Now let’s install Socioboard.
Step 1: Download Socioboard on Ubuntu 20.04 Server
Log in to your Ubuntu 20.04 server via SSH. Then run the following command to download the latest version of Socioboard onto your server.
sudo apt install git git clone https://github.com/socioboard/Socioboard-4.0.git
Once downloaded, move the files to the /var/www/
directory.
sudo mkdir -p /var/www/ sudo mv Socioboard-4.0 /var/www/socioboard
Then we need to grant permissions to the www-data
user so that the web server can write to this directory.
sudo setfacl -R -m u:www-data:rwx /var/www/socioboard/
Step 2: Install Node.js
The Socioboard backend is built on Node.js, which is a JavaScript run-time environment that translates human-readable JavaScript code into machine code, so we need to install Node.js on Ubuntu 20.04 in order to run Socioboard. This tutorial will install the LTS release of Node.js (V12.x) from the NodeSource repository.
curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash - sudo apt install -y nodejs
The nodejs
package contains the npm (Node.js package manager) binary, so there’s no need to install it separately. To check your Node.js and npm version, run
node -v npm -v
Output:
Step 3: Install Node Packages
First, install the nodemon
, sequalize
, and mysql2
package in global mode.
sudo npm install nodemon sequelize-cli sequelize mysql2 -g
In the /var/www/socioboard/socioboard-api/
directory, there are 5 sub-directories.
- feeds
- library
- notification
- publish
- user
We need to go to each of these sub-directories and install dependency packages. For example, go to the feeds
sub-directory.
cd /var/www/socioboard/socioboard-api/feeds
And install dependency packages, which will be placed in the node_modules
directory.
npm install
If there are vulnerabilities found, run the following command to fix the vulnerabilities.
npm audit fix
Now do the same in the other 4 sub-directories.
Step 4: Create a Database and User in MariaDB
Log into MariaDB database server with the following command.
sudo mysql
Then create a database for Socioboard. This tutorial names the database socioboard
. You can use whatever name you like.
create database socioboard;
Create the database user. Again, you can use your preferred name for this user. Replace your_password
with your preferred password.
create user socioboard@localhost identified by 'your_password';
Grant this user all privileges on the socioboard
database.
grant all privileges on socioboard.* to socioboard@localhost;
Flush privileges and exit.
flush privileges; exit;
Step 5: Set Up MariaDB Database
Edit a file.
sudo nano /var/www/socioboard/socioboard-api/library/sequelize-cli/config/config.json
Enter the database name, username and password.
Save and close the file. Then change directory.
cd /var/www/socioboard/socioboard-api/library/sequelize-cli/
Initialize the socioboard
database.
NODE_ENV=development sequelize db:migrate
In the /var/www/socioboard/socioboard-api/library/sequelize-cli/seeders/
directory, there’s a file whose name ends with application_info.js
. Run the following command.
NODE_ENV=development sequelize db:seed --seed 20190213051930-initialize_application_info.js
Step 6: Install MongoDB
MongoDB is a document-oriented NoSQL database program. Run the following command to import the MongoDB public GPG Key
wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add -
Create a source list file for MongoDB.
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list
Update package index and install MongoDB.
sudo apt update sudo apt install -y mongodb-org
Start MongoDB.
sudo systemctl start mongod
Enable auto-start at boot time.
sudo systemctl enable mongod
Check its status:
systemctl status mongod
Sample output:
● mongod.service - MongoDB Database Server Loaded: loaded (/lib/systemd/system/mongod.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2020-08-03 17:39:42 HKT; 52s ago Docs: https://docs.mongodb.org/manual Main PID: 2710248 (mongod) Memory: 61.8M CGroup: /system.slice/mongod.service └─2710248 /usr/bin/mongod --config /etc/mongod.conf
As you can see, it’s active (running).
Step 7: Create a Database and User in MongoDB
Log into MongoDB shell.
mongo
Create a database for SocioBoard.
use socioboard
You need to insert at least one document into this database. Run the following command to insert an example document.
db.new_collection.insert({ some_key: "some_value" })
Then run the following command to create a user.
db.createUser( { user: "socioboard", pwd: "your_password", roles: [ { role: "readWrite", db: "socioboard" } ] } )
Leave the MongoDB shell.
exit
Step 8: Set Up MongoDB Connection
Edit a file.
sudo nano /var/www/socioboard/socioboard-api/user/config/development.json
Enter the database name, username and password.
Scroll down to the end of the file and add the following 3 lines.
"base_path": "../../media", "payment_path": "../../media/payments", "template": "public/template/paymentTemplate.html"
Save and close the file. Then also edit the following 3 files and enter the MongoDB database name, username and password.
- /var/www/socioboard/socioboard-api/feeds/config/development.json
- /var/www/socioboard/socioboard-api/notification/config/development.json
- /var/www/socioboard/socioboard-api/publish/config/development.json
Step 9: Run Socioboard Microservices
sudo nano /etc/systemd/system/socioboard-user.service
Add the following lines. Replace username with your real username.
[Unit]
Description=SocioBoard User Microservice
After=multi-user.target
[Service]
Type=simple
User=username
WorkingDirectory=/var/www/socioboard/socioboard-api/user/
Environment=NODE_ENV=development
ExecStart=/usr/bin/nodemon app.js
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
Save and close the file.
sudo nano /etc/systemd/system/socioboard-publish.service
Add the following lines. Replace username with your real username.
[Unit]
Description=SocioBoard Publish Microservice
After=multi-user.target
[Service]
Type=simple
User=username
WorkingDirectory=/var/www/socioboard/socioboard-api/publish/
Environment=NODE_ENV=development
ExecStart=/usr/bin/nodemon app.js
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
Save and close the file.
sudo nano /etc/systemd/system/socioboard-feeds.service
Add the following lines. Replace username with your real username.
[Unit]
Description=SocioBoard Feeds Microservice
After=multi-user.target
[Service]
Type=simple
User=username
WorkingDirectory=/var/www/socioboard/socioboard-api/feeds/
Environment=NODE_ENV=development
ExecStart=/usr/bin/nodemon app.js
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
Save and close the file.
sudo nano /etc/systemd/system/socioboard-notification.service
Add the following lines. Replace username with your real username.
[Unit]
Description=SocioBoard Notification Microservice
After=multi-user.target
[Service]
Type=simple
User=username
WorkingDirectory=/var/www/socioboard/socioboard-api/notification/
Environment=NODE_ENV=development
ExecStart=/usr/bin/nodemon app.js
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
Save and close the file. Then start the 4 services.
sudo systemctl start socioboard-user socioboard-publish socioboard-feeds socioboard-notification
Now you should check the status of each service.
systemctl status socioboard-user systemctl status socioboard-publish systemctl status socioboard-feeds systemctl status socioboard-notification
For each service, if you see a message like
service listening on http://localhost:3000
Then the service is successfully started. If you don’t see this message, then there are errors and you can check the logs at the public/logs/
folder to see what’s wrong.
If all services have started successfully, then enable auto-start at boot time.
sudo systemctl enable socioboard-user socioboard-publish socioboard-feeds socioboard-notification
Step 10: Set Up Socioboard-web-php
Change directory.
cd /var/www/socioboard/socioboard-web-php/
Install Laravel.
sudo apt install composer composer global require laravel/installer
Rename the environmentfile.env
to .env
.
mv environmentfile.env .env
Edit this file.
nano .env
Enter the APP URL and API URLs. socioboard.example.com is the URL you will enter in the web browser address bar to access SocioBoard.
APP_URL=https://socioboard.exmaple.com/
API_URL=http://localhost:3000/
API_URL_PUBLISH=http://localhost:3001/
API_URL_FEEDs=http://localhost:3002/
API_URL_NOTIFY=http://localhost:3003/
Save and close the file. Then install PHP dependencies.
composer update
Next, generate a Laravel app key, which will be saved in the .env
file.
php artisan key:generate
Step 11: Setting Up Web Server
We can use Apache or Nginx web server.
Apache
If you prefer Apache, create a virtual host file for Socioboard.
sudo nano /etc/apache2/sites-available/socioboard.conf
Put the following text into the file. Replace socioboard.example.com
with your own sub-domain for Socioboard. Don’t forget to set A record for the domain name in your DNS manager.
<VirtualHost *:80>
ServerName socioboard.example.com
DocumentRoot /var/www/socioboard/socioboard-web-php/public/
<Directory /var/www/socioboard/socioboard-web-php/public/>
DirectoryIndex index.php
Options +FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/socioboard.error.log
CustomLog ${APACHE_LOG_DIR}/socioboard.access.log combined
</VirtualHost>
Save and close the file. Then enable this virtual host.
sudo a2ensite socioboard.conf
We need to enable the rewrite module.
sudo a2enmod rewrite
Restart Apache for the changes to take effect.
sudo systemctl restart apache2
Nginx
If you prefer Nginx, create a virtual host file for Socioboard.
sudo nano /etc/nginx/conf.d/socioboard.conf
Put the following text into the file. Replace socioboard.example.com
with your own sub-domain for Socioboard. Don’t forget to set A record for the domain name in your DNS manager.
server {
listen 80;
listen [::]:80;
server_name socioboard.example.com;
root /var/www/socioboard/socioboard-web-php/public/;
index index.php index.html index.htm index.nginx-debian.html;
error_log /var/log/nginx/socioboard.error;
location / {
try_files $uri $uri/ /index.php;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
client_max_body_size 2M;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
include snippets/fastcgi-php.conf;
}
#enable gzip compression
gzip on;
gzip_vary on;
gzip_min_length 1000;
gzip_comp_level 5;
gzip_types application/json text/css application/x-javascript application/javascript image/svg+xml;
gzip_proxied any;
# A long browser cache lifetime can speed up repeat visits to your page
location ~* \.(jpg|jpeg|gif|png|webp|svg|woff|woff2|ttf|css|js|ico|xml)$ {
access_log off;
log_not_found off;
expires 360d;
}
# disable access to hidden files
location ~ /\.ht {
access_log off;
log_not_found off;
deny all;
}
}
Save and close the file. Then test Nginx configuration.
sudo nginx -t
If the test is successful, reload Nginx for the changes to take effect.
sudo systemctl reload nginx
Step 12: Enabling HTTPS
To encrypt the HTTP traffic, we can enable HTTPS by installing a free TLS certificate issued from Let’s Encrypt. Run the following command to install Let’s Encrypt client (certbot) on Ubuntu 20.04 server.
sudo apt install certbot
If you use Nginx, then you also need to install the Certbot Nginx plugin.
sudo apt install python3-certbot-nginx
Next, run the following command to obtain and install TLS certificate.
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email you@example.com -d socioboard.yourdomain.com
If you use Apache, install the Certbot Apache plugin.
sudo apt install python3-certbot-apache
And run this command to obtain and install TLS certificate.
sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email you@example.com -d socioboard.yourdomain.com
Where
--nginx
: Use the nginx plugin.--apache
: Use the Apache plugin.--agree-tos
: Agree to terms of service.--redirect
: Force HTTPS by 301 redirect.--hsts
: Add the Strict-Transport-Security header to every HTTP response. Forcing browser to always use TLS for the domain. Defends against SSL/TLS Stripping.--staple-ocsp
: Enables OCSP Stapling. A valid OCSP response is stapled to the certificate that the server offers during TLS.
The certificate should now be obtained and automatically installed.
Step 13: Use Socioboard
Now you can access the SocioBoard web interface at https://socioboard.example.com
. You need to create an account in order to use it. If you can’t create account, check the error logs in /var/www/socioboard/socioboard-web-php/storage/logs/
directory.
Socioboard will try to send a verification email to you, but I found it can’t send emails. To activate your account, you can change the activation status from the MariaDB database. Log into MariaDB shell.
sudo mysql
Use the socioboard
database.
use socioboard;
Then activate your account.
update user_activations set activation_status = 1;
By default, your account is under the Basic plan, you can change to the Platinum plan.
update user_activations set user_plan = 7;
Leave the MariaDB shell.
exit
Then log into your SocioBoard account.
Conclusion
I hope this tutorial helped you install Socioboard on Ubuntu 20.04 server. As always, if you found this post useful, then subscribe to our free newsletter to get more tips and tricks. Take care 🙂
Gopal Jani
https://www.linkedin.com/in/gopal-jani/
1
1
1
1
1
1
1
1
1
1