Instalar dudle con debian 12

Por fin otra tarea menos! Esta ya daba vergüenzilla y todo al tener la instalación anterior de dudle aún con Debian 6!!! Así que directamente lo que he planteado es hacer una instalación limpia y los datos que puedan estar ahí, que pasen a mejor vida! Aunque creo que los datos aún serían compatibles, parece que tienen el mismo formato.

Vamos a ver como se hace ahora la instalación. Para ello he seguido el repositorio de github del proyecto que omite la información de la instalación y configuración de apache.

Primero vamos a instalar las dependencias:

# apt -y install apache2 git ruby-dev libxml2-dev zlib1g-dev
# gem install ratom

A continuación clonamos el repositorio en algún sitio del servidor, en mi caso lo he dejado en /var/www/dudle

# cd /var/www
# git clone https://github.com/kellerben/dudle.git

Ahora vamos a descargar los ficheros .mo correspondientes a los ficheros de idioma compilados. Vamos a crear un script, le damos permisos de ejecución, lo ejecutamos y finalmente borramos el fichero.

# cd dudle/locale

# vi download_mo.sh
for i in ??; do
	wget -O $i/dudle.mo https://dudle.inf.tu-dresden.de/locale/`basename $i`/dudle.mo
done

# chmod +x download_mo.sh

# ./download_mo.sh

# rm download_mo.sh

Ahora configuramos apache:

# cd /etc/apache2/sites-available

# vi dudle.conf
<VirtualHost *:80>
        ServerName      dudle.marsupi.org
        ServerAlias     *.dudle.marsupi.org dudle.lamardebits.org *.dudle.lamardebits.org dudle.lamardebits.cat *.dudle.lamardebits.cat
        ServerAdmin     xxx@lamardebits.org
        DocumentRoot    /var/www/dudle/

        ErrorLog        /var/log/apache2/dudle.error.log
        CustomLog       /var/log/apache2/dudle.access.log combined

	<Directory "/var/www/dudle">
		AllowOverride All

    		SetEnv RUBYLIB /var/www/dudle/
    		SetEnv RUBYOPT "-E UTF-8:UTF-8"
    		SetEnv GIT_AUTHOR_NAME="Blackhold"
    		SetEnv GIT_AUTHOR_EMAIL=xxx@domain.com
    		SetEnv GIT_COMMITTER_NAME="$GIT_AUTHOR_NAME"
    		SetEnv GIT_COMMITTER_EMAIL="$GIT_AUTHOR_EMAIL"

		Order allow,deny
		Allow from all
	</Directory>
</VirtualHost>

# cd /etc/apache2/sites-enabled/; rm *; ln -s ../sites-available/dudle.conf .

Habilitamos los módulos de apache que necesitamos, comprobamos que no falla nada y reiniciamos apache

# a2enmod rewrite cgid
# apache2ctl configtest
# service apache2 restart

Una recomendación que nos hacen a la documentación de instalación es de configurar un script en el cron

# vi /etc/crontab
# clean old dudle polls
0 0	* * *	www-data /var/www/dudle/dudle_cleanup.sh

A continuación volvemos al directorio de dudle y copiamos el fichero de configuración config_sample.rb de ejemplo a config.rb, en mi caso para poner mi propia hoja de estilos

# cd /var/www/dudle
# cp config_sambple.rb config.rb
# vi config.rb
$conf.default_css = "css/marsupi.css"
# mkdir css
# vi css/marsupi.css
/***************************************************************************
* Copyright 2011 Benjamin Kellermann                                       *
*                                                                          *
* This file is part of dudle.                                              *
*                                                                          *
* Dudle is free software: you can redistribute it and/or modify it under   *
* the terms of the GNU Affero General Public License as published by       *
* the Free Software Foundation, either version 3 of the License, or        *
* (at your option) any later version.                                      *
*                                                                          *
* Dudle is distributed in the hope that it will be useful, but WITHOUT ANY *
* WARRANTY; without even the implied warranty of MERCHANTABILITY or        *
* FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Affero General Public     *
* License for more details.                                                *
*                                                                          *
* You should have received a copy of the GNU Affero General Public License *
* along with dudle.  If not, see .           *
***************************************************************************/

/* head */

body {
        padding: 0px;
        color: black;
        font: 70% Verdana,Helvetica,Arial,sans-serif;
        background-color: #CCC;
        margin: .5em .5em 1em;
        border: white 1px solid;
}

#header1 {
        background-color:#AA0000;
        width:20px;
        height:72px;
        float:left;
        margin: 0;
}
#header2{
        background-color:#AA0000;
        padding: 20px 0 5px 300px;
        background-image:url(https://capa8.net/wp-content/uploads/2020/03/petit.png);
        background-position:left 20px;
        background-repeat:no-repeat;
        height:65px;
        float:left;
/*  margin: 0 1.275em 0 0;*/
}
#header3 {
        background-color:#AA0000;
        height:92px;
        padding: 0;
        margin: 0;
}

#breadcrumbs {
        min-height:1.37em;
        padding: .4em 0 .4em 68px;
        background-color: #000;
        color: #C6D3DF;
}
#breadcrumbs a {
        color: #C6D3DF;
}

/* main content */


#main{
        background-color: white;
        border: 1px solid #EEE;
}

label { cursor: pointer; }

#tabs{
        float:left;
        padding-top: 1.5625em;
        width: 15em;
}
#tabs ul{
        list-style:none;
        margin: 0;
        margin-top:.5em;
        padding: 0;
}

#tabs li.nonactive_tab , #tabs li.active_tab{
        background-color: #FFF;
        background-image: url(tud/big_emptynode_close.gif);
        background-repeat: no-repeat;
        background-position: left;
        color: #333;
        display: block;
        text-decoration: none;
        margin: 0;
        padding: .3em .3em .4em 0;
        padding-left: 28px;
}

#tabs li.active_tab, #tabs li.nonactive_tab:hover {
        background-color: #CCC;
}
#tabs li.active_tab{
        background-image: url(tud/big_emptynode_open.gif);
}

#tabs li.nonactive_tab a {
        border-bottom: none;
        color: #333;
}
#tabs li.separator_tab {
        border-top: 1px solid #ccc;
}

#content{
        margin-top:0;
        margin-left: 15em;
        padding-top: 1.5625em;
        padding-left: 1em;
        padding-bottom: 1.25em;
        line-height: 1.5em;
        min-height: 20em;
        border-left: 1px solid #ccc;
}

#tabs:before {
        content:"dudle";
        margin: 0 0 0 1em;
        padding: 0 8em .375em 0;
        min-width: 15em;
}



/* content */

.invisible {
        border:none;
        visibility: hidden;
}

.textcolumn{
        text-align: left;
        max-width: 45em;
}

.shorttextcolumn{
        text-align: left;
        max-width: 20em;
}

h1, h2, h3, #tabs:before {
        font-size: 1em;
        font-weight: 700;
        letter-spacing: .1em;
        text-transform: uppercase;
}

h1, #tabs:before {
        border-bottom: dotted 1px #333;
        color: #333;
        line-height: normal;
}
h1 {
        margin: 0 0 1.875em -.5625em;
        padding: 0 .5625em .375em;
}

h2, h3{
        color: #666;
        font-style: normal;
        margin-bottom: .5em;
        margin-top: .5em;
}

h3 {
        font-style: italic;
        font-weight: 700;
        letter-spacing: .05em;
        text-transform: none;
}

a, a:active {
        color: #40779E;
        text-decoration: none;
}

a:hover {
        text-decoration: underline;
}

td {
        vertical-align:middle;
        text-align:center;
}
th, td.navigation, td.sum {
        padding: 0.25em 0.5em 0.25em 0.5em;
        background-color: #CCC;
/*  border: #999 1px solid;*/
        border: none;
}
th a {
        border: none;
}
td.sum{ color: #FFF}
td.match_100{background-color: #860000; }
td.match_90{ background-color: #1D355B; }
td.match_80{ background-color: #2F4067; }
td.match_70{ background-color: #3F4F74; }
td.match_60{ background-color: #515D80; }
td.match_50{ background-color: #636C8E; }
td.match_40{ background-color: #777F9E; }
td.match_30{ background-color: #8B94B1; }
td.match_20{ background-color: #A8AFC7; }
td.match_10{ background-color: #CDD4E2; }
td.match_0{  background-color: #D9DCE2; }


#active, #active input.delete {
        background-color:#89b6df;
}
pre#configwarning {
        font-family: "Courier New",Courier,monospace;
        letter-spacing:0;
        margin-top: -12ex;
        line-height:95%;
        margin-left: -2ex;
}

.warning, .error{
        color: #E87B14;
}

td.separator_top{
        border-top: dotted 1px #333;
        padding-top:0.7ex;
}

th.weekday{
        width: 2.5em;
        padding: 0.25em 0.5em 0.25em 0.5em;
}

input.navigation, input.disabled, input.chosen, input.notchosen, input.delete, input.toggle {
        border: none;
        padding: 0px;
        margin: 0px;
        cursor: pointer;
        min-height: 1.5em;
}
input.navigation, input.disabled, input.chosen, input.notchosen, input.toggle {
        width: 100%;
}
input.toggle {
        padding:0 0.5em 0 0.5em;
}
.navigation, input.delete, input.toggle {
        background-color: #CCC;
} 
a.editcolumn {
        color: black;
}
.navigation:hover, #active input.delete:hover, input.delete:hover, a.editcolumn:hover, input.toggle:hover {
        background-color: #ffff69;
}
input.chosen { 
        background-color: #fac600;
}

td.a_yes__, table.checkboxes tr.input-a_yes__ td { 
        background-color: #D3E7C5;
}
input.disabled, td.undecided {
        color: #999;
}
td.c_no___, table.checkboxes tr.input-c_no___ td { 
        background-color: #F4E0E8;
}
td.b_maybe, table.checkboxes tr.input-b_maybe td { 
        background-color: #FDF2D1;

}

input.notchosen, input.disabled {
        background-color: #FFF;
}
input.notchosen:hover, input.chosen:hover, input.disabled:hover {
        background-color: #ffff69;
}


td.settingstable, table.settingstable td{
        text-align: left;
}
table.settingstable td.label{
        text-align: right;
}

table.calendarday td{
        border-spacing: 0;
        margin: 0;
        padding: 0;
        border: #999 1px solid;
}
table.calendarday td.navigation{
        padding: 0 .5em 0 .5em;
        border: none;
}
table.calendarday td.invisible, table.calendarday td.addColumnManual {
        border: none;
}
table.polltable {
        padding: 10px;
        border-collapse: separate;
        border-spacing: 2px;
}
#polltable {
        overflow: auto;
}
table, table td {
        border: none;
}

table.polltable td {
        padding: 0.25em 0.5em 0.25em 0.5em;
        margin: 1em;
}

td.name {
        text-align: right;
}
table.polltable tr.participantrow:hover {
        background-color: #E5EBF2;
}
table.polltable td.checkboxes {
        padding:0;
        margin: 0;
}

table.checkboxes {
        border-spacing: 0;
        width: 100%;
}

table.polltable tr td.input-radio {
        border-right:none;
}
table.polltable tr td.input-label {
        border-left:none;
}

tr#add_participant {
        background-color: #f5f9fc;
}

form#ac_participant, form#ac {
        background-color: #E5EBF2;
}
form#ac_participant, form#ac, form#ac_admin{
        padding: 1em;
}

div#wizzard_navigation {
        text-align: center;
}

div#languageChooser {
        position:absolute;
        top:15px;
        padding:0;
        margin:0;
        right: 1.2em;
        color: #000;
        font-weight: 700;
}
div#languageChooser li, #breadcrumbs li, #footer1 li {
        list-style:none;
        display: inline;
}
#breadcrumbs ul {
        padding:0;
        margin:0;
}
li.lang ~ li.lang:before {
        content:"| ";
}
li.breadcrumb ~ li.breadcrumb:before {
        content: " » ";
}

#footer1 {
        background-color: #860000;
        height: 2.15em;
        border: none;
}
#footer1 a {
        font-weight: bold;
        color: #fff;
        text-decoration: none;
        margin-right: 1.25em;
}
#footer1 ul {
        padding: .4em 1.25em;
        margin: 0;
}

div#languageChooser a {
        border: none;
        color: #FFF;
}
div#languageChooser a:hover {
        text-decoration: underline;
}

Para que todo funcione correctamente, le damos permisos a www-data a todo el directorio

# cd /var/www
# chown -R www-data:www-data dudle

Y listos! ya podemos acceder a dudle por http. En esta configuración lo he expuesto sólo al puerto 80 porqué los certificados lo gestiono en un frontal con nginx.

PS: Justo al usar la primera encuesta me sale el error “An error occurred while executing DuD-Poll.”, para ello será necesario ejecutar:

# cd /var/www/dudle
# git config --global --add safe.directory /var/www/dudle
# git grep -l YAML::load | xargs sed s/YAML::load/YAML::unsafe_load/ -i

Deixa un comentari

L'adreça electrònica no es publicarà. Els camps necessaris estan marcats amb *

Aquest lloc utilitza Akismet per reduir els comentaris brossa. Apreneu com es processen les dades dels comentaris.