Purtroppo moinmoin è obsoleto. Io mi trovo costretto a usarlo perchè la mia KB (quella che state leggendo ora) nasceva su moinmoin e non ho trovato un tool per convertirla a dokuwiki.
Moinmoin non è più pacchettizzato da Debian 11 / Devuan Chimaera in avanti, e richiede python 2.7 che per fortuna esiste ancora, ma non esiste più il modulo WSGI per Apache2. Questo significa che ho dovuto usare un trucco orrendo per fare andare moinmoin 1.9 su Debian 11.
L'idea è quella di fare girare moinmoin usando il suo "piccolo web server interno" il che richiede praticamente zero integrazione con il sistema. Il web server risponde sulla 8080 a localhost, e poi gli faccio davanti un proxy con Apache. Dicono che è lento, a me sembra che vada benissimo.
Attenzione perché la config di default in questa modalità è "per uso personale" e quindi è priva di ogni tipo di autenticazione / controllo accessi, ma è sufficiente modificare la config per farlo funzionare come vogliamo.
Nota: io ho "importato" la config e i dati dal mio vecchio moinmoin che era installato su Debian 9, quindi avevo già degli account utente funzionanti. Non ho studiato la creazione di un nuovo wiki con nuovi account partendo da zero. Non ho idea di quanto possa essere complesso farlo.
python2.7
DesktopEdition = False # Sicurezza acl_hierarchic = 1 actions_excluded = ['newaccount'] superuser = [u"Kurgan", ] acl_rights_before = u"Kurgan,AdminGroup:read,write,delete,revert,admin" acl_rights_default = u"EditorsGroup:read,write,delete,revert All:read" acl_rights_after = u"All:" # Personalizzazione sito sitename = u'La Knowledge Base di Kurgan' # [Unicode] interwikiname = None language_default = 'en' page_front_page = u"FrontPage" show_interwiki = 0 logo_string = u'' navi_bar = [ # If you want to show your page_front_page here: u'%(page_front_page)s', u'RecentChanges', u'FindPage', u'HelpContents', ] secrets = 'La vostra stringa random preferita e lunga'
user = 'www-data' group = 'www-data'
[logger_root] level=ERROR handlers=stderr
python2.7 wikiserver.py
e proviamo a collegarci a http://localhost:8080, poi lasciamo in esecuzione questo processo mentre installiamo apache e proviamo la config del reverse proxy, come segue:apt install apache2 a2enmod proxy a2enmod proxy_http
<VirtualHost *:80> ServerName kb.kurgan.org ServerAdmin webmaster@kurgan.org RedirectMatch 301 ^(?!/\.well-known/acme-challenge/).* https://kb.kurgan.org$0 DocumentRoot /var/www/kb ErrorLog ${APACHE_LOG_DIR}/kb-error.log CustomLog ${APACHE_LOG_DIR}/kb-access.log combined <[[/VirtualHost]]> <IfModule mod_ssl.c> <VirtualHost *:443> SSLEngine on SSLCertificateFile /etc/letsencrypt/kb.kurgan.org.cert SSLCertificateKeyFile /etc/letsencrypt/kb.kurgan.org.key ServerName kb.kurgan.org ServerAdmin webmaster@kurgan.org DocumentRoot /var/www/kb ErrorLog ${APACHE_LOG_DIR}/kb-error.log CustomLog ${APACHE_LOG_DIR}/kb-access.log combined # il web server dentro moinmoin riporta un 500 se fai una get # di / quindi faccio un rewrite da / a FrontPage RewriteEngine on RewriteCond %{REQUEST_URI} ^/$ Rewriterule ^(.*)$ https://kb.kurgan.org[[/FrontPage]] [L,R=301] ProxyPass / http://localhost:8080/ ProxyPassReverse / http://localhost:8080/ ProxyPreserveHost On <[[/VirtualHost]]> <[[/IfModule]]>
/lib/systemd/system/moinmoin.service
e metterci dentro:[Unit] Description=MoinMoin wiki application After=syslog.target network.target StartLimitIntervalSec=30 StartLimitBurst=2 [Service] Restart=on-failure Type=simple ExecStart=/usr/bin/python2.7 /srv/moin-1.9-1.9.11/wikiserver.py User=root Group=root KillSignal=SIGQUIT [Install] WantedBy=multi-user.target
systemctl start moinmoin.service
systemctl enable moinmoin.service
Quando si crea una riga di testo "teletype", cioè usando due backtick (vedi sotto) o usando le tre graffe aperte e chiuse sulla stessa riga, succede che moinmoin (versione 1.9.11 lo fa) ci mette in mezzo dei non-breaking spaces al posto degli spazi. Risultato, quando copi e incolli qualcosa (che tipicamente nasce per essere copia-incollato) non funziona un cavolo perché i non-breaking spaces SEMBRANO spazi ma non lo sono. sono in realtà sequenze UTF-8 codificate con C2 0A in esadecimale.
C'è un bug report qui: http://moinmo.in[[/MoinMoinBugs]]/BrokenRenderingOfTeletypeText che non so se sia stato applicato in seguito. Io l'ho applicato alla mia installazione e ora funziona. (riavviare moinmoin!!!)
Per comodità riporto qui le mie modifiche:
# Text ############################################################## def _text(self, text): text = wikiutil.escape(text) #if self._in_code: # text = text.replace(' ', self.hardspace) return text
*Al file /srv/moin-1.9-1.9.11/MoinMoin/web/static/htdocs/modernized/css/common.css (riga 69 in avanti) aggiungere 3 righe come segue:
pre { border: 1pt solid #AEBDCC; background-color: #F3F5F7; padding: 5pt; font-family: courier, monospace; } pre, tt{ white-space: pre; /* begin css 3 or browser specific rules - do not remove! see: http://forums.techguy.org/archive/index.php/t-249849.html */ white-space: pre-wrap; word-wrap: break-word; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; /* end css 3 or browser specific rules */ }
Nelle versioni recenti di !MoinMoin non e` possibile disattivare il quoting con il backtick, il che e` allucinante per me che scrivo in italiano con una tastiera americana, quindi lo uso per gli accenti.
La soluzione e` andare a modificarselo a mano.
Nel file MoinMoin/parser/text_moin_wiki.py
, alla riga 302 (o giu` di li`) c'e` una voce che dice:
)|(?P<tt_bt> ` # teletype (using a backtick) on (?P<tt_bt_text>.*?) # capture the text ` # off
Questa va cambiata in qualcos'altro. Per dire, cosi` ci vogliono due "`" di fila per attivare la funzione di quoting.
)|(?P<tt_bt> `` # teletype (using a backtick) on (?P<tt_bt_text>.*?) # capture the text `` # off
Per quanto uno possa proteggere moinmoin dagli spammer, questi possono sempre creare directory inutili nel file system cercando di creare le loro pagine di spam. Per ripulirle (a vostro rischio) andate dove sono salvate le pagine e usate find per ripulire cio` che e` vuoto:
cd /usr/share/moin/kb/data/pages find . -empty -delete
I log si trovano dentro a /wiki/data
(relativamente alla vostra installazione) e si riempiono all'infinito. Ogni tanto andrebbero cancellati, specie l' event-log che di fatto è inutile perché riporta gli accessi al sito, ma sono tutti provenienti da localhost visto che c'è apache davanti come proxy. Utilità quindi molto ridotta.