Framadate

Framadate is an online service for planning an appointment or making a decision quickly and easily.

This guide is based on the offical guide with some changes to make it work on Uberspace 7.


License

Framadate is licensed under the CeCILL-B License. The current license can always be found here.

Prerequisites

We’re using PHP in the stable version 8.1:

[isabell@stardust ~]$ uberspace tools version show php
Using 'PHP' version: '8.1'
[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 ~]$

Your Framadate URL needs to be setup:

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

Installation

Download

First, cd into the folder ~/html and remove the nocontent.html file. Then, download the files from the Framadate repository with Git and switch to the latest stable version. Be sure to replace the version 1.1.19 with the current version.

[isabell@stardust ~]$ cd ~/html
[isabell@stardust ~]$ rm nocontent.html
[isabell@stardust ~]$ git clone https://framagit.org/framasoft/framadate/framadate.git .
...
[isabell@stardust ~]$ git checkout 1.1.19
...
[isabell@stardust ~]$

Install dependencies

Install the necessary libraries with composer:

[isabell@stardust ~]$ composer install
...
[isabell@stardust ~]$

Create database

Create a database for Framadate:

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

Configuration

Configure Framadate

Now that the database is ready, you have to configure Framadate to use it.

Go to the page https://isabell.uber.space/admin/install.php and fill the form with the following string: mysql:host=localhost;dbname=<username>_framadate;port=3306, your database user and password.

Warning

Be sure to replace <username> with your username!

Note

If the page does not appear, check that a folder ~/html/tpl_c has been created with sufficient write permissions.

During installation, the database tables and the file app/inc/config.php are created. The file app/inc/config.php contains parameters of optional configuration that you can modify.

You are then redirected to the “migration” page which is used to check that the tables and data are in the correct format. For future updates, you will have to go through this page after replacing the files.

Restrict access to Admin area

Framadate has a management area for all polls in the folder admin.

To restrict access, add basic authentication for the admin site by creating ~/html/admin/.htaccess with the following content:

Warning

Be sure to replace <username> with your username!

AuthType Basic
AuthName "Administration"
AuthUserFile "/var/www/virtual/<username>/html/admin/.htpasswd"
Require valid-user
Order allow,deny
Allow from all

Then create the file .htpasswd containing the authorized user and password:

[isabell@stardust ~]$ htpasswd -bc ~/html/admin/.htpasswd admin "MySuperSecretPassword"
[isabell@stardust ~]$

As of writing this text, the .htaccess and .htpasswd files are protected from browser access by the default webserver configuration.

URL rewriting

To enable URL rewriting, to have links in the form https://isabell.uber.space/a1b2c3d4e5f6g7h8 instead of https://isabell.uber.space/studs.php?sondage=a1b2c3d4e5f6g7h8 rename the file ~/html/htaccess.txt to ~/html/.htaccess:

[isabell@stardust ~]$ mv ~/html/htaccess.txt ~/html/.htaccess
[isabell@stardust ~]$

Note

If you choose not to do this, set const URL_PROPRE = false; in ~/html/app/inc/config.php or you won’t be able to access your polls.

Note

If you’re using an additional DocumentRoot , you need to modify the .htaccess file within the DocumentRoot by adding RewriteBase / to it.

Mail

First create a new mailbox user:

[isabell@stardust ~]$ uberspace mail user add framadate
Enter a password for the mailbox:
Please confirm your password:
New mailbox created for user: 'framadate', it will be live in a few minutes...
[isabell@stardust ~]$

Then configure Framadate to use that newly created mailbox. Edit the SMTP configuration in ~/html/app/inc/config.php:

'use_smtp' => true,
'smtp_options' => [
        'host' => 'stardust.uberspace.de',              // SMTP server (you could add many servers (main and backup for example) : use ";" like separator
        'auth' => true,                    // Enable SMTP authentication
        'username' => 'framadate@isabell.uber.space',                   // SMTP username
        'password' => 'MySuperSecretPassword',                   // SMTP password
        'secure' => 'tls',                     // Enable encryption (false, tls or ssl)
        'port' => 587,                       // TCP port to connect to
    ],

Note

You have to enter the password you assigned while creating the new mail user.

If you do not want to use the mail features, set 'use_smtp' => false,.

Tested with Framadate 1.1.19, Uberspace 7.13, PHP 8.1

Written by: Marmo