Grouprise: Unterschied zwischen den Versionen

Aus Hostsharing Wiki
Zur Navigation springen Zur Suche springen
(E-Mail und Suche)
Zeile 150: Zeile 150:


==== Senden und Empfang von E-Mail ====
==== Senden und Empfang von E-Mail ====
Ankommmende E-Mail an ein Grouprise-Forum werden über die Datei ".forward" im $HOME des Service-Users in ein Skript "~/bin/mailin" geleitet.
Inhalt des Skriptes


<pre>
<pre>
xyz00-groups@h00:~$
xyz00-groups@h00:~$ cd
xyz00-groups@h00:~$ cat bin/mailin
xyz00-groups@h00:~$ cat bin/mailin
#!/bin/bash
#!/bin/bash
Zeile 159: Zeile 161:
export LANG=de_DE.ISO-8859-1
export LANG=de_DE.ISO-8859-1
(cd /home/pacs/xyz00/users/groups/stadtgestalten && /home/pacs/xyz00/users/groups/stadtgestalten/build/venv/bin/python manage.py processincomingmessage)
(cd /home/pacs/xyz00/users/groups/stadtgestalten && /home/pacs/xyz00/users/groups/stadtgestalten/build/venv/bin/python manage.py processincomingmessage)
</pre>
Die Datei ".forward"
<pre>
xyz00-groups@h00:~$ cat .forward  
xyz00-groups@h00:~$ cat .forward  
|/home/pacs/xyz00/users/groups/bin/mailin
|/home/pacs/xyz00/users/groups/bin/mailin
</pre>
==== Suchfunktion ====
Aufbau des Suchindex für Artikel in Grouprise
<pre>
cd ~/stadtgestalten
. build/venv/bin/activate
python manage.py clear_index
python manage.py rebuild_index
</pre>
Regelmäßige Updates des Suchindex per Cron:
<pre>
xyz00-groups@h00:~$ crontab -l
xyz00-groups@h00:~$ crontab -l
# m h  dom mon dow  command
# m h  dom mon dow  command

Version vom 3. Dezember 2020, 18:28 Uhr

Installation von Grouprise

Grouprise / Stadtgestalten ist eine Software für die Menschen in einer Stadt oder Region. Sie ermöglicht es, dass einzelne Personen sich in Gruppen engagieren und austauschen. Grouprise ist freie Software (FOSS), die Lizenz ist die AGPL.

Die Software beinhaltet eine Mailinglisten-ähnliche Funktionalität in Kombination mit der Diskussion über die HTML-Oberfläche. Für Die Mailfunktionalität nutzen wir hier die Subdomain, unter der auch die Anwendung läuft. Im Beispiel ist das "groups.hs-example.de". Für diese Domain wird hier eine Catch-All-Mailadresse eingerichtet.

Vorbereitungen in HSAdmin

In HSAdmin werden angelegt:

  • ein Service-User,
  • eine Domain,
  • ein Postgres-User und eine Datenbank,
  • eine Catch-All E-Mail Adresse
xyz00@h00:~$ hsscript -i
Password: *********************
xyz00@hsadmin> user.add({ set: { name:'xyz00-groups', password:'******', shell:'/bin/bash' xyz00@hsadmin> domain.add({ set: { name:'groups.hs-example.de', user:'xyz00-groups' } })
xyz00@hsadmin> postgresqluser.add({ set: { name:'xyz00_groups', password:'******' } })
xyz00@hsadmin> postgresqldb.add({ set: { name:'xyz00_groups', owner:'xyz00_groups' } })
xyz00@hsadmin> emailaddress.add({ set: { localpart:'', domain:'groups.hs-example.de', target:'xyz00-groups' } })
xyz00@hsadmin> bye
xyz00@h00:~$ 

Notizen zur Installation

xyz00-groups@h00:~$ git clone https://git.hack-hro.de/stadtgestalten/stadtgestalten.git
xyz00-groups@h00:~$ cd stadtgestalten/
xyz00-groups@h00:~/stadtgestalten$ git tag
xyz00-groups@h00:~/stadtgestalten$ git checkout v3.0.11
xyz00-groups@h00:~/stadtgestalten$ make virtualenv-update

Den Secret_Key kann man wie folgt erzeugen:

python3 -c "import secrets; print(secrets.token_urlsafe(32))"

Anlegen einer Datei $HOME/etc/settings.py mit folgendem Inhalt:

from grouprise.common_settings import *

SECRET_KEY = 'XXXXXX'

ALLOWED_HOSTS = [ 'groups.hs-example.de' ]

DEBUG = True

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'HOST': 'localhost',
        'NAME': 'xyz00_groups',
        'USER': 'xyz00_groups',
        'PASSWORD': '******',
    }
}

HUEY= {
    'huey_class': 'huey.SqliteHuey',
    'filename': '/home/pacs/xyz00/users/groups/var/huey.sqlite',
}

SESSION_COOKIE_AGE = 60 * 60 * 24 * 365

ADMINS = [ ('Admins', 'webmaster@groups.cowokr.de') ]

DEFAULT_FROM_EMAIL = 'noreply@groups.cowokr.de'

SERVER_EMAIL = 'noreply@groups.cowokr.de'

ACCOUNT_DEFAULT_HTTP_PROTOCOL = 'https'

GROUPRISE = {
    'CLAIMS': [ 'Meine Stadt', 'Zuhause in', 'Stadt gestalten' ],
    'SCORE_CONTENT_AGE': 100,
    'UPLOAD_MAX_FILE_SIZE': 0,

    # special users and groups
    'FEED_IMPORTER_GESTALT_ID': 1,
    'OPERATOR_GROUP_ID': 1,
    'UNKNOWN_GESTALT_ID': 1,

    # email settings
    'DEFAULT_DISTINCT_FROM_EMAIL': 'noreply+{slug}@groups.hs-example.de',
    'DEFAULT_REPLY_TO_EMAIL': 'reply+{reply_key}@groups.hs-example.de',
    'MAILBOX_DELIVERED_TO_EMAIL': 'xyz00-groups@h00.hostsharing.net',
    'POSTMASTER_EMAIL': 'postmaster@groups.hs-example.de',
    'MAILINGLIST_ENABLED': True,

    'ENTITY_SLUG_BLACKLIST': [
        'all', 'grouprise', 'info', 'mail', 'noreply', 'postmaster', 'reply', 'stadt',
        'webmaster', 'www'
    ]
}

Verlinken nach $HOME/stadtgestalten/stadt/settings/local.py:

xyz00-groups@h00:~/stadtgestalten$ mkdir -p $HOME/var
xyz00-groups@h00:~/stadtgestalten$ mkdir -p $HOME/etc
xyz00-groups@h00:~/stadtgestalten$ vi $HOME/etc/settings.py
xyz00-groups@h00:~/stadtgestalten$ cp $HOME/etc/settings.py ./grouprise/ 
xyz00-groups@h00:~/stadtgestalten$ . build/venv/bin/activate
xyz00-groups@h00:~/stadtgestalten$ python manage.py migrate
xyz00-groups@h00:~/stadtgestalten$ make
xyz00-groups@h00:~/stadtgestalten$

Integration in den Apache

xyz00-groups@h00:~/stadtgestalten$ cd $HOME/doms/groups.hs-example.de/
xyz00-groups@h00:~/doms/groups.hs-example.de$ rm -rf subs/www/ subs-ssl/www/ htdocs-ssl/.htaccess 
xyz00-groups@h00:~/doms/groups.hs-example.de$ vi .htaccess
xyz00-groups@h00:~/doms/groups.hs-example.de$ cat .htaccess
PassengerPython /home/pacs/xyz00/users/groups/stadtgestalten/build/venv/bin/python
xyz00-groups@h00:~/doms/groups.hs-example.de$ cd htdocs-ssl/
xyz00-groups@h00:~/doms/groups.hs-example.de/htdocs-ssl$ mkdir stadt
xyz00-groups@h00:~/doms/groups.hs-example.de/htdocs-ssl$ cd stadt/
xyz00-groups@h00:~/doms/groups.hs-example.de/htdocs-ssl/stadt$ ln -s $HOME/stadtgestalten/static .
xyz00-groups@h00:~/doms/groups.hs-example.de/htdocs-ssl/stadt$ ln -s $HOME/stadtgestalten/media .
xyz00-groups@h00:~/doms/groups.hs-example.de/htdocs-ssl/stadt$ cd $HOME/doms/groups.hs-example.de/app-ssl
xyz00-groups@h00:~/doms/groups.hs-example.de/app-ssl$ vi passenger_wsgi.py
xyz00-groups@h00:~/doms/groups.hs-example.de/app-ssl$ cat passenger_wsgi.py
import sys, os
sys.path.append("/home/pacs/xyz00/users/groups/stadtgestalten")
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "grouprise.settings")
application = get_wsgi_application()

Die Datei $HOME/doms/groups.hs-example.de/.htaccess:

PassengerPython /home/pacs/xyz00/users/groups/stadtgestalten/build/venv/bin/python

Die Datei $HOME/doms/groups.hs-example.de/app-ssl/passenger_wsgi.py:

import sys, os
sys.path.append("/home/pacs/xyz00/users/groups/stadtgestalten")
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "grouprise.settings")
application = get_wsgi_application()

Senden und Empfang von E-Mail

Ankommmende E-Mail an ein Grouprise-Forum werden über die Datei ".forward" im $HOME des Service-Users in ein Skript "~/bin/mailin" geleitet.

Inhalt des Skriptes

xyz00-groups@h00:~$ cat bin/mailin
#!/bin/bash
umask 0022
export LANG=de_DE.ISO-8859-1
(cd /home/pacs/xyz00/users/groups/stadtgestalten && /home/pacs/xyz00/users/groups/stadtgestalten/build/venv/bin/python manage.py processincomingmessage)

Die Datei ".forward"

xyz00-groups@h00:~$ cat .forward 
|/home/pacs/xyz00/users/groups/bin/mailin

Suchfunktion

Aufbau des Suchindex für Artikel in Grouprise

cd ~/stadtgestalten
. build/venv/bin/activate
python manage.py clear_index 
python manage.py rebuild_index

Regelmäßige Updates des Suchindex per Cron:

xyz00-groups@h00:~$ crontab -l
# m h  dom mon dow   command
HOME=/home/pacs/xyz00/users/groups
VIRTUAL_ENV=/home/pacs/xyz00/users/stadt/stadtgestalten/build/venv
PATH=/home/pacs/xyz00/users/groups/stadtgestalten/build/venv/bin:/home/pacs/xyz00/users/groups/.nvm/versions/node/v10.21.0/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
MAILTO=webmaster@groups.hs-example.com
0 */5 * * * cd $HOME/stadtgestalten && $VIRTUAL_ENV/bin/python manage.py update_index >/dev/null 2>&1

Links

Webseite

Grouprise Installationen

Handbuch für Nutzer:innen