Hardware FixRecommendedDevice not working? Your driver may be the problemCheck updates for common hardware issues.Fix DriversHalloween DealsAmazon USHalloween week deals: useful picks before month-endAmazon US: current deals, useful picks and tech finds.Check DealsSlow PC?RecommendedPC slow today? Run a repair scan before it gets worseResolve common Windows issues and optimize system performance.Scan Now×
Skip to content
World desk13 min

How to Install Pligg CMS on an Ubuntu VPS (Pligg 2.0.x/Kliqqi)

A command-oriented guide to deploying Pligg CMS, now identified with the Kliqqi project, on an Ubuntu VPS while managing legacy PHP compatibility, permissions, backups, and upgrades.
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

You can install the legacy Pligg CMS on an Ubuntu VPS by preparing an Apache–MySQL–PHP stack, creating a dedicated database, unpacking a verified Pligg/Kliqqi release, preparing its default configuration files, and completing /install/index.php in a browser. Treat the deployment as a compatibility project: the project is now identified as “Kliqqi formerly known as Pligg CMS,” the release page lists 2.0.2 as the latest release shown, and no current Ubuntu/PHP support matrix is published. Build and test on a staging VPS before exposing the site to the internet.

What Pligg CMS is today

Pligg is the former name of an open-source content-management system for news and user-feedback websites. The active project repository describes itself as “Kliqqi formerly known as Pligg CMS,” so you may encounter Pligg in older tutorials, directory names, and documentation while the downloadable project is labeled Kliqqi.

As an Amazon Associate I earn from qualifying purchases.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The project release page currently shows version 2.0.2 as the latest release listed. Its notes mention a security fix, Bootstrap 3.2.0, and FontAwesome 4.1.0 updates; the captured page displays the release date as 16 August but does not expose a year. A historical Ubuntu VPS tutorial targets 2.0.1, so do not copy its download command blindly. Select the release asset you intend to test, and record its version in your deployment notes.

Neither the release page nor the installation material supplies a current Ubuntu/PHP compatibility table. That matters because modern Ubuntu images may ship a PHP branch that the legacy application has never been tested against. A successful package installation does not prove that Pligg will run correctly. Keep the first deployment private, exercise registration, submission, comments, moderation, uploads, themes, and administration, and only then migrate DNS.

Plan the VPS before touching the application

Use a disposable staging host first

Create a separate Ubuntu VPS or snapshot for the first attempt. A staging host lets you try PHP settings, file ownership, extensions, and database imports without risking production data. Take a provider-level snapshot before major changes and maintain an independent database backup once the site contains real content.

Minimum access and infrastructure checklist

  • An Ubuntu server image with SSH access and enough disk space for the application, uploads, logs, and database backups.
  • A non-root administrative account with sudo; reserve direct root login for recovery rather than routine work.
  • A DNS name pointed at the VPS when you are ready to test the public hostname. You can initially use the server address or a temporary hosts-file entry.
  • A firewall that permits SSH from your administration network and web traffic only when the site is ready.
  • A backup destination outside the VPS. A VPS disk failure, accidental deletion, or failed upgrade can destroy both the files and the database stored on the same machine.
  • A decision about who will administer Apache, PHP, MySQL, updates, certificates, monitoring, and rollback. These responsibilities remain yours on an unmanaged server.

Choose the web stack deliberately

The Pligg-specific installation assumes a LAMP server: Linux, Apache, MySQL, and PHP. Ubuntu’s PHP documentation places a web server and database service first, then installs PHP with Apache integration and the MySQL extension. You can use a compatible MySQL implementation, but keep the database engine and character set consistent between staging and production.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Install Apache, MySQL, and PHP on Ubuntu

Connect over SSH with your administrative account, then refresh package metadata and apply security updates:

sudo apt update
sudo apt upgrade

Install the web server, database server, PHP runtime, Apache PHP module, MySQL driver, and command-line PHP tools:

sudo apt install apache2 mysql-server php libapache2-mod-php php-mysql php-cli unzip tar

php-cli is optional for the web installer but useful when checking the runtime from SSH. The package names above follow Ubuntu’s documented roles: php supplies the interpreter, libapache2-mod-php connects PHP to Apache, and php-mysql allows PHP to connect to MySQL.

Confirm that the services are running and that Apache is serving its default page:

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
sudo systemctl enable --now apache2
sudo systemctl enable --now mysql
systemctl --no-pager --full status apache2
systemctl --no-pager --full status mysql
php -v

If the PHP version is substantially newer than the one used by the historical Pligg instructions, stop here and test the application on the staging host. Do not “solve” compatibility by disabling security updates on a production server. If you must use an alternate PHP branch, document how it is installed, patched, selected for Apache, and rolled back.

Apply basic VPS security

Before opening the site publicly, restrict the firewall to the services you actually need. The following example allows SSH, HTTP, and HTTPS; replace the SSH rule with your own source restriction when possible:

sudo ufw allow OpenSSH
sudo ufw allow http
sudo ufw allow https
sudo ufw enable
sudo ufw status verbose

Use a unique SSH key, disable password authentication only after key-based login is confirmed, and keep Ubuntu packages current. Do not expose MySQL’s port to the internet for the Pligg installer; the application can connect to a database on the same VPS through localhost.

Create a dedicated Pligg database and account

Log in to the local MySQL console as an administrative database user:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
sudo mysql

Create one database and one account for this installation. Replace the sample secret with a long, randomly generated password and retain it in your password manager; do not reuse an SSH, control-panel, or personal password.

CREATE DATABASE pligg_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'pligg_user'@'localhost' IDENTIFIED BY 'DB_PASSWORD';
GRANT ALL PRIVILEGES ON pligg_db.* TO 'pligg_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;

The database name, user name, host (localhost), and password are the four values you will enter in the browser installer. Granting privileges on pligg_db.* keeps the account scoped to this application instead of giving it server-wide control. If your database is on another host, use the provider’s private hostname and firewall rules rather than opening MySQL to arbitrary addresses.

Download and unpack a verified release

Obtain the archive from the project’s release source rather than an untrusted mirror. The current release listing shows 2.0.2, while the older VPS walkthrough downloads 2.0.1; verify the filename, version, and any checksum published with the asset before deploying it. Save the archive on your workstation or in /tmp, then copy it to the VPS with your normal secure-copy method.

scp kliqqi-2.0.2.tar.gz [email protected]:/tmp/

On the VPS, create a temporary extraction directory and inspect the archive before placing files in Apache’s document root:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
sudo mkdir -p /tmp/pligg-release
sudo tar -xzf /tmp/kliqqi-2.0.2.tar.gz -C /tmp/pligg-release
sudo find /tmp/pligg-release -maxdepth 2 -type f | head -50

The archive may contain a top-level directory. Identify the directory that contains install, libs, settings.php.default, and the other application files. Do not merge an unknown archive into an existing production tree; use an empty document root or a versioned release directory.

Prepare the application files

Rename the default files

Before opening the installer, the repository instructions require several default files and directories to be activated. Run these commands from the extracted application directory, adjusting only the path to that directory:

mv favicon.ico.default favicon.ico
mv settings.php.default settings.php
mv libs/dbconnect.php.default libs/dbconnect.php
mv logs.default logs

The language files also use a .default suffix. List the available choices, select the language you want the site to use, and rename that file to the active filename expected by the package:

find languages -maxdepth 1 -type f -name '*.default' -print

Do not rename every language file. Activate the one you selected and leave the others unchanged unless the project’s own documentation says otherwise.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Copy files into the Apache document root

Use the document root configured for the virtual host. A simple single-site Ubuntu installation commonly uses /var/www/html; a named virtual host may use a different directory. Copy the prepared tree rather than extracting an unverified archive directly over a live site:

sudo mkdir -p /var/www/html
sudo cp -a . /var/www/html/

If the extracted directory itself was copied, ensure that /var/www/html/install/index.php exists. The browser path depends on the document root: a site rooted at /var/www/html uses https://your-hostname.example/install/index.php.

Set ownership and writable paths carefully

The installer and running site need controlled write access. The project calls out /admin/backup/, avatar-upload directories, /cache/, /languages/, and /logs/. It also identifies libs/dbconnect.php and settings.php as configuration files whose permissions change during setup.

First identify the account Apache uses on your Ubuntu image:

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
ps -o user= -C apache2 | sort -u

Grant that account ownership or group write access only to the directories that must be writable. Avoid applying chmod -R 777; world-writable application trees allow any local process to alter PHP code. A safer pattern is to make the web user the owner of the specific runtime directories, keep the rest owned by your administrative account, and use the narrowest mode that lets the installer complete.

After installation, remove write access that is no longer needed, especially on configuration files and language or template directories. Record the final owner and mode so a later upgrade does not accidentally broaden permissions.

Configure an Apache virtual host

For a hostname-based deployment, create a dedicated Apache site rather than relying on the default host:

sudo nano /etc/apache2/sites-available/pligg.conf

Use a configuration that points DocumentRoot at the application directory and permits the rewrite rules shipped with the project:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
<VirtualHost *:80>
    ServerName your-hostname.example
    DocumentRoot /var/www/html
    <Directory /var/www/html>
        AllowOverride All
        Require all granted
    </Directory>
    ErrorLog ${APACHE_LOG_DIR}/pligg-error.log
    CustomLog ${APACHE_LOG_DIR}/pligg-access.log combined
</VirtualHost>

Enable the site and rewrite module, then validate the configuration:

sudo a2enmod rewrite
sudo a2ensite pligg.conf
sudo apache2ctl configtest
sudo systemctl reload apache2

If Apache reports a syntax error, fix it before visiting the installer. Keep the default site enabled until the new virtual host responds correctly, then disable it if it is not needed.

Run the browser installer

  1. Open /install/index.php using the hostname mapped to the VPS.
  2. Select the language you activated when preparing the files.
  3. Enter the database host, database name, database user, and password created earlier. For a local MySQL service, the host is normally localhost.
  4. Choose a table prefix. Keep the prefix short and record it; it is useful when inspecting the database and avoids collisions if other tables share the database.
  5. Create the first administrator account with a unique password. Do not reuse the database password.
  6. Submit the form and read every diagnostic. If the installer reports a missing extension, unwritable path, or failed database connection, stop and correct that condition rather than continuing with a partial installation.

A database connection error usually means one of four values is wrong: host, database name, user, or password. A permission error points to ownership or mode on the application path named by the installer. A blank page or PHP fatal error should be investigated in Apache’s error log and against the PHP version on the staging host; changing permissions will not repair an application/runtime incompatibility.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Close the installation and verify the site

When the installer completes, remove its directory so nobody can rerun setup:

sudo rm -rf /var/www/html/install

The project instructions document setting libs/dbconnect.php to mode 644 after setup:

sudo chmod 644 /var/www/html/libs/dbconnect.php

Apply an equivalent restrictive mode to settings.php unless the application specifically requires it to remain writable. Confirm that the installer directory is gone, then open the front page at /index.php and sign in through /admin.

  • Load the home page while logged out and logged in.
  • Create a test story or feedback item, add a comment, and verify moderation controls.
  • Test avatar and other uploads, cache generation, language selection, and backups.
  • Review Apache’s access and error logs while performing each action.
  • Confirm that database backups can be restored to a separate staging database.

Only after these checks pass should you point the production DNS record at the VPS and configure HTTPS using the certificate process appropriate for your Ubuntu environment.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Common installation failures and fixes

The site shows Apache’s default page

The request is reaching the wrong virtual host or the files are in a nested directory. Check apache2ctl -S, confirm the active DocumentRoot, and verify that install/index.php exists directly beneath it.

/install/index.php returns 404

Inspect the extracted tree and the configured document root. If the archive created /var/www/html/kliqqi-2.0.2/, either point the virtual host there or move the contents up one level. Do not guess at a URL path until the filesystem layout matches it.

The installer cannot connect to MySQL

From SSH, test the same account independently:

mysql -u pligg_user -p -h localhost pligg_db

If that command fails, correct the account, password, host, or grant before retrying the web installer. If it succeeds, inspect PHP’s MySQL extension with php -m | grep -i mysqli and check Apache’s error log for a web-runtime mismatch.

PHP displays a fatal error or a blank response

Read the relevant Apache error log immediately after reproducing the problem. Compare the installed PHP branch with the one used on your staging test. Because no current Pligg/PHP support matrix is published, a modern PHP release may require a different tested image; do not hide errors by disabling reporting or weakening server security.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Uploads, cache, or logs fail

Check the exact directory named by the error, its owner, and its mode. The web user needs write access to runtime directories such as cache, logs, avatar storage, and the administrator backup directory. Grant access to those paths only, then retry the operation and remove unnecessary write access afterward.

Rewrites or friendly URLs do not work

Confirm that mod_rewrite is enabled, the virtual host allows overrides, and Apache was reloaded after configuration changes. Keep the application’s distributed rewrite file intact; replacing it with a generic rule set can break administration or static assets.

Upgrade procedure for an existing Pligg/Kliqqi site

Do not treat an upgrade as a file copy. Take a database dump and a complete site-file backup first, and test the release on a clone of the site.

  1. Record the running version, enabled modules, template, PHP version, database credentials, and current file ownership.
  2. Back up the MySQL database and verify that the dump can be opened or restored on staging.
  3. Back up the complete application tree, including uploads and custom templates.
  4. Preserve /avatars/, libs/dbconnect.php, favicon.ico, and settings.php. These are specifically identified by the project’s upgrade instructions as files or directories to retain.
  5. Place the new release files in the application directory without overwriting the preserved configuration and user-upload paths.
  6. Open /install/upgrade.php and complete the database upgrade.
  7. Delete /install immediately after the upgrade and restore restrictive permissions.
  8. Re-enable modules deliberately, then test the active template for compatibility. A template that worked on the old release can fail after core markup or Bootstrap changes.
  9. Review login, submissions, comments, uploads, moderation, backups, and scheduled maintenance before switching production traffic.

If the upgrade fails, stop rather than repeatedly rerunning it. Restore the database and files from the verified backup, document the failing step, and reproduce it on staging with the same Ubuntu and PHP versions.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Manual VPS or managed hosting?

A self-managed Ubuntu VPS gives you control, but it also makes you responsible for every operating-system and application boundary. A managed service can reduce routine administration, although the provider’s actual PHP versions, backup policy, rollback process, and Pligg compatibility still need verification.

Decision area Self-managed Ubuntu VPS Managed VPS
Ubuntu and PHP versions You choose packages and can pin a tested image, but you must patch and validate them. The provider may maintain the stack; confirm that the required PHP branch and extensions are available.
SSH and root controls You control accounts, firewall rules, sudo policy, and hardening. Access may be restricted or abstracted; confirm what you can change.
Database administration You create users, grants, backups, upgrades, and recovery tests. The provider may operate the database; verify export and restore access.
HTTPS certificates You configure issuance, renewal, and web-server integration. Automation may be included, but check hostname and renewal limitations.
Backups and rollback You design off-server backups and test restores. Ask what is backed up, how often, where it is stored, and how a point-in-time rollback works.
Permissions You can tune Apache ownership and writable paths precisely. Control-panel policies may limit filesystem changes; ensure the installer paths can be managed safely.
Monitoring You select log retention, alerts, and health checks. Basic monitoring may be supplied; establish whether PHP errors, disk use, and database health are covered.

Choose the model that matches your ability to maintain an older PHP application. In either case, insist on a staging environment and a tested restore path; hosting convenience does not remove application compatibility risk.

Final deployment checklist

  • Ubuntu is updated, SSH is key-based, and firewall rules are limited to required services.
  • Apache, MySQL, PHP, libapache2-mod-php, php-mysql, and optional php-cli are installed.
  • The chosen Pligg/Kliqqi release is verified and tested on the exact Ubuntu/PHP image.
  • A dedicated database and least-privilege application user exist with a unique password.
  • Default files were renamed, the selected language was activated, and the application is in the intended document root.
  • Only required directories are writable by the Apache account.
  • The browser installer completed without unresolved errors.
  • /install was deleted, libs/dbconnect.php is mode 644, and configuration files are not unnecessarily writable.
  • Front-end, administrator, submissions, comments, uploads, cache, logs, and backups were tested.
  • Database and file backups were restored successfully on staging before DNS was changed.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Leave a Reply

Your email address will not be published. Required fields are marked *

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

More from the Wire

  1. World desk4 min
    How to Spot an AI Voice Scam Before Sending MoneyDon’t rely on how a caller sounds. Pause, call back through a known number, and verify the emergency with another trusted person before sending money.
  2. Mountain View desk4 min
    Google’s SynthID Detector: How to Check AI-Generated Images, Video and AudioGoogle’s SynthID Detector looks for an embedded watermark in supported images, video and audio. Here is what its results do—and do not—show.
  3. Redmond desk20 min
    How to create a link to File or Folder in Windows 11Windows 11 gives you several ways to point to a file or folder without moving or duplicating it. You can create a desktop shortcut,…
Recommended PC Tool
Recommended PC Tool
Windows Errors? Fix Them Before They SpreadFree repair scan
Outdated Drivers Are Slowing You DownFree scan - exact matches

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.