KDE.org/Local Setup

From KDE Community Wiki


This page will help you getting started improving the KDE websites. Currently all pages are being ported to WordPress since it offers a full CMS.

Setting up kde.org (new fancy way)

You need svn, php-composer and docker installed.

Refer to instructions in the README.

kde.org/applications, kde.org/fundraisers and kde.org/announcement/release are not yet supported. :(

You can submit a patch with arc using:

arc diff --conduit-uri=https://phabricator.kde.org/

Setting up kde.org (old way)

This was done with Arch Linux, PHP 7.3 and Apache 2.4. Expect minor change with another Linux distribution. You will also need Composer.

  • In /var/www/, clone the following repositories:
svn co svn://anonsvn.kde.org/home/kde/trunk/www/sites/www/ kde.org
git clone https://anongit.kde.org/websites/capacity
cd kde.org
git clone [email protected]:websites/kde-org-applications.git applications
cd applications
git clone [email protected]:websites/kde-org-applications-extractor.git

The resulting directory structure should now look like this:

├── capacity
└── kde.org
    └── applications
        └── kde-org-applications-extractor

  • Create the following vhost file in /etc/httpd/conf/vhosts/kde.org.dom (Arch Linux)
<VirtualHost *:80>
    ServerName localhost

    DocumentRoot /var/www/kde.org
    ErrorLog /var/log/httpd/kde.org-error.log
    CustomLog /var/log/httpd/kde.org.log combined

    <Directory /var/www/kde.org>
        AllowOverride All
        Require all granted
        FallbackResource /index.php
        DirectoryIndex index.php
  • Enable the newly created virtual host. In Debian/Ubuntu with a2ensite, in Arch Linux by adding the following line to the config file: Include conf/vhosts/kde.org.dom
  • Update the include_path variable in the PHP config file, for example in /etc/php/7.2/cli/php.ini (you can find out which file to use with the command php -i | grep 'php.ini').
include_path = ".:/php/includes:/var/www/capacity/includes:"
  • Run composer install or (for a local composer setup) php composer.phar install to get all the other php dependencies.
  • Restart the httpd and php-fpm services
systemctl restart httpd php-fpm

If the instruction didn't work for you, and you weren't able to fix it. Please contact [kde-promo at kde dot org] and ask for help.

If the instruction didn't work for you, but you were able to fix it. Please add how you did it to this article.


The information below is mostly outdated.


You should have some things running on your machine already before starting. You will need:

  • Apache2 and the usual modules (php such as libapache2-mod-php5)
  • mysql

This could for example look like:

apt-get install apache2 libapache2-mod-php5 php5-mysql mysql-server

Make sure that it works by checking out localhost in a web browser.

You can modify the default setup to do the development in your home directory if it isn't already set up like that. Read up on apache if you want to. Some hints:

sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/kdesites
sudo a2ensite kdesites

The easiest will be to have all kde sites in a subfolder structure, such as:


Thus point the apache setup to ~/public_html/kdesites

You can set up local subdomains in /etc/hosts

Setting up

For new sites we use WordPress. You should get the latest WordPress release from: wordpress.org

Simply unzip/tar the download in a sub-folder. Get WordPress working. Next after testing that wordpress works, check out the Neverland theme and create a symlink:

git clone git://anongit.kde.org/websites/neverland
cd neverland
git checkout devel # currently the devel branch is the right one, this might change
cd ../wordpress/wp-content/themes
ln -s ../../../neverland/themes/wordpress/neverland/ .

Check that you have the Neverland theme in wordpress. The header of the page will look a bit strange until you configured a menu in wordpress. Log in as administrator and use Appearance -> Menus to set it up. Also select Screen Options -> Description to be able to edit the menu description (second line of the header).