This document gives a short outline about the necessary steps to setup a LiquidFeedback system.
If you're using a Debian system, make sure that the following packages are installed:
If you're using any other Linux distribution or BSD system, install the necessary software components accordingly.
The useraccount of Moonbridge server process needs to have access to your
PostgreSQL installation. This is done by executing PostgreSQL's shell command
createuser
as database superuser (usually pgsql
, or postgres
for
Debian installations):
su - postgres -s $SHELL
createuser --no-superuser --createdb --no-createrole www-data
exit
We recommend to create the database with the same user as your webserver
(usually www-data
) to avoid having to setup database privileges.
The example below installs the database as www-data
and stores the three
executables lf_update
, lf_update_issue_order
and
lf_update_suggestion_order
in the directory /opt/liquid_feedback_core/
:
# Download and unpack LiquidFeedback-Core
# from http://www.public-software-group.org/pub/projects/liquid_feedback/backend/
make
mkdir /opt/liquid_feedback_core
cp core.sql lf_update lf_update_issue_order lf_update_suggestion_order /opt/liquid_feedback_core
su www-data -s $SHELL
cd /opt/liquid_feedback_core
createdb liquid_feedback
psql -v ON_ERROR_STOP=1 -f core.sql liquid_feedback
A simple configuration may look as follows:
psql liquid_feedback
INSERT INTO system_setting (member_ttl) VALUES ('1 year');
INSERT INTO contingent (polling, time_frame, text_entry_limit, initiative_limit) VALUES (false, '1 hour', 20, 6);
INSERT INTO contingent (polling, time_frame, text_entry_limit, initiative_limit) VALUES (false, '1 day', 80, 12);
INSERT INTO contingent (polling, time_frame, text_entry_limit, initiative_limit) VALUES (true, '1 hour', 200, 60);
INSERT INTO contingent (polling, time_frame, text_entry_limit, initiative_limit) VALUES (true, '1 day', 800, 120);
Create an invite code for an admin user:
INSERT INTO member (invite_code, admin) VALUES ('sesam', true);
Exit the psql
interface by typing:
\q
And don't forget to quit the www-data
shell:
exit
# Download and unpack Moonbridge
# from http://www.public-software-group.org/pub/projects/moonbridge/
pmake MOONBR_LUA_PATH=/opt/moonbridge/?.lua
mkdir /opt/moonbridge
cp moonbridge /opt/moonbridge/
cp moonbridge_http.lua /opt/moonbridge/
# Download and unpack WebMCP
# from http://www.public-software-group.org/pub/projects/webmcp/
make
mkdir /opt/webmcp
cp -RL framework/* /opt/webmcp/
Unpack source tree into appropriate directory, e.g. /opt/liquid_feedback_frontend
:
# Download LiquidFeedback-Frontend
# from http://www.public-software-group.org/pub/projects/liquid_feedback/frontend/
mv liquid_feedback_frontend-vX.X.X /opt/liquid_feedback_frontend
Make tmp/
directory of LiquidFeedback-Frontend writable for webserver:
chown www-data /opt/liquid_feedback_frontend/tmp
It may be necessary to configure your server's mail system.
cd /opt/liquid_feedback_frontend/config
cp example.lua myconfig.lua
# edit myconfig.lua according to your needs
lf_update
and related commands The executables lf_update
, lf_update_issue_order
, and
lf_update_suggestion_order
must be executed regularly. This may be achieved
by creating a file named /opt/liquid_feedback_core/lf_update.sh
with the
following contents:
#!/bin/sh
while true; do
nice /opt/liquid_feedback_core/lf_update dbname=liquid_feedback 2>&1 | logger -t "lf_core"
nice /opt/liquid_feedback_core/lf_update_issue_order dbname=liquid_feedback 2>&1 | logger -t "lf_core"
nice /opt/liquid_feedback_core/lf_update_suggestion_order dbname=liquid_feedback 2>&1 | logger -t "lf_core"
sleep 5
done
This file must be marked as executable:
chmod +x /opt/liquid_feedback_core/lf_update.sh
And this file should be started automatically at system boot. On systems with
systemd, create a file named /etc/systemd/system/liquid_feedback_core.service
:
[Unit]
Description=LiquidFeedback Core update
[Service]
User=www-data
ExecStart=/opt/liquid_feedback_core/lf_update.sh
[Install]
WantedBy=multi-user.target
Enable and start the service:
systemctl start liquid_feedback_core
systemctl enable liquid_feedback_core
After lf_update
has been executed at least once, you should be able to use
your LiquidFeedback system.
Create a file named /opt/liquid_feedback_frontend/run.sh
:
#/bin/bash
/opt/moonbridge/moonbridge /opt/webmcp/bin/mcp.lua /opt/webmcp/ /opt/liquid_feedback_frontend/ main myconfig 2>&1 | logger -t "lf_frontend"
Make it executable:
chmod +x /opt/liquid_feedback_frontend/run.sh
On systemd based systems, create a file named
/etc/systemd/system/liquid_feedback_frontend.service
:
[Unit]
Description=LiquidFeedback Frontend
[Service]
User=www-data
ExecStart=/opt/liquid_feedback_frontend/run.sh
[Install]
WantedBy=multi-user.target
Enable and start the service:
systemctl start liquid_feedback_frontend
systemctl enable liquid_feedback_frontend
In the latter case, the Moonbridge server will open a TCP port according to your configuration. Directly accessing this TCP port through your webbrowser is helpful for development purposes. For real-life deployment, however, it is recommended to further proxy the application (e.g. using nginx). The proxy can also add HTTPS and/or HTTP/2 support (which is not supported by Moonbridge itself).