Serendipity is a PHP-based content management system (CMS) that allows you to create and manage a website. In this tutorial, you will learn how to install Serendipity on Void Linux.
Before you begin, you will need the following:
Open the terminal and update the package list:
sudo xbps-install -S
Install the required dependencies:
sudo xbps-install -S php php-json php-xml php-gd php-zlib php-pdo_mysql php-mbstring unzip
Download the latest version of Serendipity from the official website:
wget https://github.com/s9y/Serendipity/releases/download/2.3.5/serendipity-2.3.5.zip
Extract the file:
unzip serendipity-2.3.5.zip
Move the extracted directory to your web server document root:
sudo mv serendipity-2.3.5 /var/www/html/
To allow the web server to access the Serendipity files, change the ownership to the web server user:
sudo chown -R www-data:www-data /var/www/html/serendipity-2.3.5
Create a new MySQL database and user for Serendipity:
sudo mysql -u root -p
Enter your MySQL root password when prompted.
CREATE DATABASE serendipitydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'serendipityuser'@'localhost' IDENTIFIED BY 'mypassword';
GRANT ALL PRIVILEGES ON serendipitydb.* TO 'serendipityuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;
Navigate to the Serendipity directory:
cd /var/www/html/serendipity-2.3.5
Copy the default configuration file:
cp serendipity_config.inc.php{.dist,}
Edit the configuration file:
nano serendipity_config.inc.php
Set the following values:
[...]
$serendipity['dbName']         = 'serendipitydb';
$serendipity['dbUser']         = 'serendipityuser';
$serendipity['dbPass']         = 'mypassword';
$serendipity['dbHost']         = 'localhost';
$serendipity['dbType']         = 'mysql';
[...]
$serendipity['baseURL']        = 'http://localhost/serendipity-2.3.5';
[...]
Save and close the file.
Create a new virtual host configuration file:
sudo nano /etc/httpd/conf/extra/serendipity.conf
Add the following content:
<VirtualHost *:80>
    DocumentRoot "/var/www/html/serendipity-2.3.5"
    ServerName your-domain.com
    ServerAlias www.your-domain.com
    <Directory "/var/www/html/serendipity-2.3.5">
      AllowOverride All
      Require all granted
    </Directory>
    ErrorLog "/var/log/httpd/serendipity_error.log"
    CustomLog "/var/log/httpd/serendipity_access.log" combined
</VirtualHost>
Save and close the file.
Restart Apache:
sudo systemctl restart httpd
Create a new server block configuration file:
sudo nano /etc/nginx/conf.d/serendipity.conf
Add the following content:
server {
  listen 80;
  server_name your-domain.com www.your-domain.com;
  root /var/www/html/serendipity-2.3.5;
  index index.php;
  location / {
    try_files $uri $uri/ /index.php?$args;
  }
  location ~ \.php$ {
    fastcgi_pass unix:/run/php-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_index index.php;
    include fastcgi_params;
  }
}
Save and close the file.
Restart nginx:
sudo systemctl restart nginx
Open a web browser and navigate to your Serendipity website: http://your-domain.com/serendipity-2.3.5/. You should see the installation wizard. Follow the instructions to complete the installation.
Congratulations! You have successfully installed Serendipity on Void Linux.
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!