Grouprise: Unterschied zwischen den Versionen

Aus Hostsharing Wiki
Zur Navigation springen Zur Suche springen
(erste Anpassungen Grouprise v3.0)
Zeile 1: Zeile 1:
== Installation von Grouprise ==
== Installation von Grouprise ==


Grouprise 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.
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 ====
==== Vorbereitungen in HSAdmin ====
Zeile 20: Zeile 22:
xyz00@hsadmin> bye
xyz00@hsadmin> bye
xyz00@h00:~$  
xyz00@h00:~$  
</pre>
==== Installation von NodeJS ====
Installation von NodeJS (hier Version 10.x) für den User nach der Anleitung
[[NodeJS]]
<pre>
xyz00@h00:~$ sudo -u xyz00-groups -i
xyz00-groups@h00:~$ touch ~/.profile
xyz00-groups@h00:~$ chmod u+x ~/.profile
xyz00-groups@h00:~$ wget https://raw.githubusercontent.com/creationix/nvm/v0.35.3/install.sh
xyz00-groups@h00:~$ chmod u+x install.sh
xyz00-groups@h00:~$ ./install.sh
xyz00-groups@h00:~$ rm install.sh
xyz00-groups@h00:~$ export NVM_DIR="$HOME/.nvm"
xyz00-groups@h00:~$ . "$NVM_DIR/nvm.sh"
xyz00-groups@h00:~$ nvm install 10
xyz00-groups@h00:~$ node -v
v10.21.0
</pre>
</pre>


Zeile 47: Zeile 29:
xyz00-groups@h00:~$ git clone https://git.hack-hro.de/stadtgestalten/stadtgestalten.git
xyz00-groups@h00:~$ git clone https://git.hack-hro.de/stadtgestalten/stadtgestalten.git
xyz00-groups@h00:~$ cd stadtgestalten/
xyz00-groups@h00:~$ cd stadtgestalten/
xyz00-groups@h97:~/stadtgestalten$ git tag
xyz00-groups@h00:~/stadtgestalten$ git tag
xyz00-groups@h97:~/stadtgestalten$ git checkout v2.4.3
xyz00-groups@h00:~/stadtgestalten$ git checkout v3.0.10
xyz00-groups@h97:~/stadtgestalten$ make app_setup
xyz00-groups@h00:~/stadtgestalten$ make update_virtualenv
</pre>
</pre>


Zeile 76: Zeile 58:
     ('Admins', 'hallo@groups.hs-example.de'),
     ('Admins', 'hallo@groups.hs-example.de'),
]
]
DEFAULT_FROM_EMAIL = 'noreply@groups.hs-example.de'
GROUPRISE = {
FROM_EMAIL_WITH_SLUG = 'noreply+{slug}@groups.hs-example.de'
    'CLAIMS': [ 'Meine Stadt', 'Zuhause in', 'Stadt gestalten' ],
ANSWERABLE_FROM_EMAIL = 'noreply@groups.hs-example.de'
    'SCORE_CONTENT_AGE': 100,
DEFAULT_REPLY_TO_EMAIL = 'reply+{reply_key}@groups.hs-example.de'
    'UPLOAD_MAX_FILE_SIZE': 0,
STADTGESTALTEN_BOT_EMAIL = 'grouprise-bot@groups.hs-example.de'
 
SERVER_EMAIL = 'grouprise <noreply@groups.hs-example.de>'
    # special users and groups
GROUPRISE_POSTMASTER_EMAIL = 'postmaster@groups.hs-example.de'
    'FEED_IMPORTER_GESTALT_ID': 1,
ABOUT_GROUP_ID = 1
    'OPERATOR_GROUP_ID': 1,
STADTGESTALTEN_FEEDS_IMPORTER_USER_ID = 1
    'UNKNOWN_GESTALT_ID': 1,
GROUPRISE_FEEDS_IMPORTER_GESTALT_ID = 1
 
GROUPRISE_UNKNOWN_GESTALT_ID = 1
    # email settings
ACCOUNT_DEFAULT_HTTP_PROTOCOL = 'https'
    'DEFAULT_DISTINCT_FROM_EMAIL': 'noreply+{slug}@groups.hs-example.de',
ENTITY_SLUG_BLACKLIST = [ 'all', 'alle', 'antwort', 'crew', 'facebook', 'gbr', 'info', 'kontakt', 'mail', 'noreply', 'postmaster', 'presse', 'reply', 'stadt', 'unknown', 'webmaster', 'www']
    'DEFAULT_REPLY_TO_EMAIL': 'reply+{reply_key}@groups.hs-example.de',
    'MAILBOX_DELIVERED_TO_EMAIL': 'mailbox@groups.hs-example.de',
    'POSTMASTER_EMAIL': 'postmaster@groups.hs-example.de',
    'MAILINGLIST_ENABLED': True,
 
    'ENTITY_SLUG_BLACKLIST': [
        'all', 'grouprise', 'info', 'mail', 'noreply', 'postmaster', 'reply', 'stadt',
        'webmaster', 'www'
    ]
}
# set debug mode to false
# set debug mode to false
DEBUG = False
DEBUG = False
Zeile 104: Zeile 95:
xyz00-groups@h00:~/stadtgestalten$ mkdir -p $HOME/etc
xyz00-groups@h00:~/stadtgestalten$ mkdir -p $HOME/etc
xyz00-groups@h00:~/stadtgestalten$ vi $HOME/etc/settings.py
xyz00-groups@h00:~/stadtgestalten$ vi $HOME/etc/settings.py
xyz00-groups@h00:~/stadtgestalten$ ln -sf $HOME/etc/settings.py stadt/settings/local.py
xyz00-groups@h00:~/stadtgestalten$ cp $HOME/etc/settings.py ./grouprise/  
xyz00-groups@h00:~/stadtgestalten$ ls -l stadt/settings/local.py
lrwxrwxrwx 1 xyz00-groups xyz00 45 Jun 13 20:32 stadt/settings/local.py -> /home/pacs/xyz00/users/groups/etc/settings.py
xyz00-groups@h00:~/stadtgestalten$ . build/venv/bin/activate
xyz00-groups@h00:~/stadtgestalten$ . build/venv/bin/activate
xyz00-groups@h00:~/stadtgestalten$ python manage.py migrate
xyz00-groups@h00:~/stadtgestalten$ python manage.py migrate

Version vom 3. Dezember 2020, 10:27 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.10
xyz00-groups@h00:~/stadtgestalten$ make update_virtualenv

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

# grouprise settings file
# see https://docs.djangoproject.com/en/2.1/ref/settings/
import os
import subprocess
from stadt.settings.default import *
from core.assets import add_javascript_reference, add_javascript_inline, add_csp_directive, add_meta
# see https://www.miniwebtool.com/django-secret-key-generator/
SECRET_KEY = 'XXXXXXXXXXXXXXXXXXXXXXXX'
ALLOWED_HOSTS = ['groups.hs-example.de', 'localhost']
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'HOST': 'localhost',
        'NAME': 'xyz00_groups',
        'USER': 'xyz00_groups',
        'PASSWORD': '******',
    }
}
ADMINS = [
    ('Admins', 'hallo@groups.hs-example.de'),
]
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': 'mailbox@groups.hs-example.de',
    'POSTMASTER_EMAIL': 'postmaster@groups.hs-example.de',
    'MAILINGLIST_ENABLED': True,

    'ENTITY_SLUG_BLACKLIST': [
        'all', 'grouprise', 'info', 'mail', 'noreply', 'postmaster', 'reply', 'stadt',
        'webmaster', 'www'
    ]
}
# set debug mode to false
DEBUG = False
# increase session cookie time to 1 year
SESSION_COOKIE_AGE = 60 * 60 * 24 * 365
STADTGESTALTEN_CLAIMS = [
    'grouprise forever',
    'Mailingslisten leichtgemacht',
]
STATIC_URL = '/static/'

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

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$

Integration in den Apache

xyz00-groups@h00:~/stadtgestalten$ cd $HOME/doms/groups.hs-example.de/
xyz00-groups@h97:~/doms/groups.hs-example.de$ rm -rf subs/www/ subs-ssl/www/ htdocs-ssl/.htaccess 
xyz00-groups@h97:~/doms/groups.hs-example.de$ vi .htaccess
xyz00-groups@h97:~/doms/groups.hs-example.de$ cat .htaccess
PassengerPython /home/pacs/xyz00/users/groups/stadtgestalten/build/venv/bin/python
xyz00-groups@h97:~/doms/groups.hs-example.de$ cd htdocs-ssl/
xyz00-groups@h97:~/doms/groups.hs-example.de/htdocs-ssl$ ln -s $HOME/stadtgestalten/static .
xyz00-groups@h97:~/doms/groups.hs-example.de/htdocs-ssl$ mkdir stadt
xyz00-groups@h97:~/doms/groups.hs-example.de/htdocs-ssl$ cd stadt/
xyz00-groups@h97:~/doms/groups.hs-example.de/htdocs-ssl/stadt$ ln -s $HOME/stadtgestalten/static .
xyz00-groups@h97:~/doms/groups.hs-example.de/htdocs-ssl/stadt$ cd $HOME/doms/groups.hs-example.de/app-ssl
xyz00-groups@h97:~/doms/groups.hs-example.de/app-ssl$ vi passenger_wsgi.py
xyz00-groups@h97:~/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", "stadt.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", "stadt.settings")
application = get_wsgi_application()

Senden und Empfang von E-Mail

xyz00-groups@h00:~$ 
xyz00-groups@h00:~$ cd
xyz00-groups@h00:~$ cat bin/mailin
#!/bin/bash
umask 0022
sed -e "/^Delivered-To/d"|sed -e "s/^X-Original/Delivered/"| (cd /home/pacs/xyz00/users/groups/stadtgestalten && /home/pacs/xyz00/users/groups/stadtgestalten/build/venv/bin/python manage.py processincomingmessage)
xyz00-groups@h00:~$ cat .forward 
|/home/pacs/xyz00/users/groups/bin/mailin
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=hallo@example.com
*/2 * * * * cd $HOME/stadtgestalten && $VIRTUAL_ENV/bin/python manage.py send_mail >/dev/null 2>&1
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