Friendica

Friendica is a free and open-source distributed social network. It has built-in support for ActivityPub (e.g. Funkwhale, Hubzilla, Mastodon, Pleroma, Pixelfed), OStatus (e.g. StatusNet, GNU social, Quitter) and diaspora* protocols.

It forms one part of the Fediverse, an interconnected and decentralized network of independently operated servers.


Note

For this guide you should be familiar with the basic concepts of

License

Friendica is released under the GNU Affero General Public License v3.0. All relevant information can be found in the LICENSE file in the repository of the project.

Prerequisites

We’re using PHP in the stable version 8.1:

[isabell@stardust ~]$ uberspace tools version use php 8.1
Selected PHP version 8.1
The new configuration is adapted immediately. Patch updates will be applied automatically.
[isabell@stardust ~]$

You’ll need your MySQL credentials. Get them with my_print_defaults:

[isabell@stardust ~]$ my_print_defaults client
--default-character-set=utf8mb4
--user=isabell
--password=MySuperSecretPassword
[isabell@stardust ~]$

Setup a new MySQL database for Friendica:

[isabell@stardust ~]$ mysql -e "CREATE DATABASE ${USER}_friendica"
[isabell@stardust ~]$

Your friendica URL needs to be setup:

[isabell@stardust ~]$ uberspace web domain list
isabell.uber.space
[isabell@stardust ~]$

Note

Friendica should be installed in a domain of its own (or in a subdomain), not in a subdirectory of a domain.

Make a decision now, because you are going to have to stick with it.

Installation

Download the source

In order to simplify updates for friendica and the needed addons, you can use the git repository instead of tarballs. If you want the bleeding edge, you could even switch your friendica installation to the next pre-release or development version.

For this guide, we’ll use the stable branch of friendica.

First, go one level above your DocumentRoot and use git clone to get the friendica repository as well as the addons. Please note, that friendica currently does not support composer v2, so you need to use composer v1, which is included in the git repository in the directory bin.

[isabell@stardust ~]$ cd /var/www/virtual/$USER
[isabell@stardust isabell]$ git clone https://github.com/friendica/friendica.git -b stable
[isabell@stardust isabell]$ cd friendica
[isabell@stardust friendica]$ bin/composer.phar install --no-dev
[isabell@stardust friendica]$ git clone https://github.com/friendica/friendica-addons.git -b stable addon
[isabell@stardust friendica]$

Copy the file .htaccess-dist to .htaccess:

[isabell@stardust ~]$ cd /var/www/virtual/$USER/friendica
[isabell@stardust friendica]$ cp .htaccess-dist .htaccess
[isabell@stardust friendica]$

Remove your empty DocumentRoot and create a new symbolic link to the friendica directory:

[isabell@stardust ~]$ cd /var/www/virtual/$USER
[isabell@stardust isabell]$ rm -f html/nocontent.html; rmdir html
[isabell@stardust isabell]$ ln -s /var/www/virtual/$USER/friendica html
[isabell@stardust isabell]$

Optional: file storage backend

Friendica can use the database to store uploaded files (like images) for posts. This is the default. However, you might want to change this to a file system based storage.

It is recommended to setup a directory which is not reachable from your public URL. Therefore, create a new directory outside of your friendica installation:

[isabell@stardust ~]$ cd /var/www/virtual/$USER
[isabell@stardust isabell]$ mkdir storage
[isabell@stardust isabell]$

Finishing installation

Point your browser to your uberspace URL or domain. It may take a while to load during this installation run.

Page 1 – System tests:

The first page shows some system tests, which should all be green.

Page 2 – Basic setup:

This includes things like SSL, the hostname, and the installation path. The automatically detected values should be correct, you should not need to change anything here.

Page 3 – Database Configuration:
  • Database host: localhost

  • Database User: isabell

  • Database Password: yourMySQLPassword

  • Database Name: isabell_friendica

Page 4 – Server setup:

Enter an e-mail address for the friendica site admin. You will register a user with this address later on, and that user will be granted admin rights for this friendica installation. Also, you can set a default timezone and system language for friendica.

After those setup steps, point your browser to the registration page (https://isabell.uber.space/register) and sign up with the same e-mail address that you’ve used in page 4 above.

Configure your account basics

You should receive an e-mail with a provisional password. Log on using your nickname or email address and that password. Go to settings and change the provided password to one of your choice.

Configure your site basics

Visit the site section of the admin menu to close registration access to your new site – this is a choice you can revise later. For a small site for a group of friends or a family, the best registration policy would be invite-only.

Go to the site section of the admin menu and enable searching for updates in the advanced settings. This way, you’ll be notified of available updates on the overview page of the admin menu.

If you’ve created a folder for uploaded files, go to the storage section of the admin menu and enter the storage file path into the textfield, e.g. /var/www/virtual/isabell/storage.

Activate scheduled tasks

The background tasks need to be run every 5–10 minutes. For a small to medium site, an interval of 10 minutes is sufficient.

Add the following cronjob to your crontab to run the worker every 10 minutes:

*/10 * * * * cd /var/www/virtual/$USER/html && php bin/worker.php > /dev/null 2>&1

Updates

If you want to update to the next stable version, you can use git to download the necessary files. Please remember to always keep your local base friendica and addon repository clones on the same branch and pull them simultaneously:

[isabell@stardust ~]$ cd /var/www/virtual/$USER/friendica
[isabell@stardust friendica]$ git pull && cd addon && git pull && cd ..
[isabell@stardust friendica]$ bin/composer.phar install --no-dev
[isabell@stardust friendica]$

Note

Check the friendica blog regularly to stay informed about the newest version. It’s also recommended to enable searching for updates in the admin menu (site > advanced settings).

Backup

This is a list of files you need to restore your friendica node:

  • A dump of the database

  • Configuration file: config/local.config.php

  • The .htaccess file (if it was edited after copying the .htaccess-dist file)

  • If the file storage backend is set to filesystem, a copy of the root filesystem folder (e.g. /var/www/virtual/isabell/storage).


Tested with Friendica 2022.03, Uberspace 7.12.1

Written by: Tobias Quathamer <t.quathamer@mailbox.org>