Installing OSSN on NixOS

Introduction

OSSN (Open Source Social Network) is a free and open-source social networking software written in PHP. It allows you to create your own social network website with advanced features such as user profiles, news feeds, private messaging, and more.

NixOS is a Linux distribution that uses a declarative approach to system configuration management, which makes it a popular choice among system administrators and developers. This tutorial will guide you through the process of installing OSSN on NixOS.

Prerequisites

Before we begin, you will need the following:

Step 1: Install Required Packages

First, we need to install the required packages to run the OSSN server. Open your terminal and input the following command:

sudo nix-env -i openssl php7 php7-gd php7-json php7-mbstring php7-pdo php7-pdo_mysql php7-session php7-xml

This command installs the necessary dependencies required to run OSSN.

Step 2: Download and Extract OSSN

Next, we will download the latest version of OSSN from their official website.

Run the following commands to download and extract the archive file:

wget https://github.com/opensource-socialnetwork/opensource-socialnetwork/releases/download/v7.4.2/opensource-socialnetwork-v7.4.2.zip
unzip opensource-socialnetwork-v7.4.2.zip

Optional: If you want to extract the OSSN files to a location other than the current directory, you can modify the above command accordingly.

Step 3: Configure Database

Before we can proceed with the installation, we need to create a new database and user for OSSN.

Login to your MySQL server as root user and create a database for OSSN:

$ mysql -u root -p
> CREATE DATABASE ossn_db;
> GRANT ALL PRIVILEGES ON ossn_db.* TO 'ossn_user'@'localhost' IDENTIFIED BY 'ossn_password';
> FLUSH PRIVILEGES;
> EXIT;

Replace the database name, username and password with your preferred values.

Step 4: Configure Web Server

We will create a new virtual host in Nginx web server to serve the OSSN application.

Create a new configuration file under /etc/nginx/sites-available/ with a unique name like ossn.conf.

$ sudo nano /etc/nginx/sites-available/ossn.conf

Paste the following content to the configuration file:

server {
    listen 80;
    server_name your-domain.com;
    root /path/to/ossn/folder;
    index index.php index.html;

    location / {
        try_files $uri $uri/ /index.php;
    }

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

Replace the following parameters according to your server configuration:

Enable this virtual host by creating a symbolic link from sites-available to sites-enabled:

$ sudo ln -s /etc/nginx/sites-available/ossn.conf /etc/nginx/sites-enabled/

Test your Nginx configuration:

$ sudo nginx -t

If there are no syntax errors, restart the Nginx service:

$ sudo systemctl restart nginx

Step 5: Install OSSN

Navigate to the OSSN directory:

cd opensource-socialnetwork-v7.4.2

Rename the config.php.example file to config.php using the following command:

cp config.php.example config.php

Edit the config.php file and set the database details as follows:

$dbhost = 'localhost';
$dbname = 'ossn_db';
$dbuser = 'ossn_user';
$dbpass = 'ossn_password';

Where $dbhost is the address of your MySQL server.

Next, we will run the installation script:

$ sudo php ossn/install.php

Follow the prompts to complete the installation.

Step 6: Set File Permissions

To ensure that OSSN functions correctly, we need to set correct file permissions to the OSSN directory and its subdirectories.

$ sudo chown -R root:www-data /path/to/ossn
$ sudo find /path/to/ossn -type f -exec chmod 644 {} \;
$ sudo find /path/to/ossn -type d -exec chmod 755 {} \;

Conclusion

OSSN is now installed and running on your NixOS system. You can now visit your domain name to access the social network.

If you face any issues, do let us know in the comments below!

If you want to self-host in an easy, hands free way, need an external IP address, or simply want your data in your own hands, give IPv6.rs a try!

Alternatively, for the best virtual desktop, try Shells!