Verein/JVerein

< Verein
Version vom 23. März 2015, 15:17 Uhr von Prisma (Diskussion | Beiträge)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

Wir verwenden JVerein als Software für Mitgliederverwaltung, Hibiscus für Buchführung und Onlinebanking. Sowohl Jverein als auch Hibiscus laufen unter dem Jameica Java Framework.

Installation auf BananaPi/Raspberry Pi

Unser Setup

Hardware
Banana Pi mit 8 GB SD Karte, 2 A Netzteil
Software
Debian wheezy (Kernel 3.19)
encfs um das Homeverzeichnis zu verschlüsseln (wird nur bei Anmeldung entschlüsselt)
Xpra um JVerein auf remote Rechnern anzuzeigen.

Installation von encfs

Die Installation eines encfs verschlüsselten Home Verzeichnis wurde wie hier beschrieben durchgeführt. Am Ende hat man einen Benutzer, dessen Homedir beim einloggen entschlüsselt wird.

Man kann sich per ssh(remote) allerdings nur via Passwort einloggen, da bei Logins per ssh key das Passwort zum entsperren des encfs nicht vorhanden ist.

Installation von Jameica/Hibiscus/Jverein

Jameica ist ein Java Framework, auf dem sowohl Hibiscus (Homebanking) als auch JVerein (Vereinsverwaltung) läuft. Das heisst man braucht zunächst einmal java:

apt-get install openjdk-7-jre

Nun kann man mit der Installation des Frameworks beginnen. Die aktuellste Version des Frameworks gibt es hier. Einfach runterladen(die 32 bit Linux Version) und auspacken an einen geeigneten Ort (z.B. /opt/jameica).
Da Jameica für die Darstellung die Java Library SWT braucht, dieses jedoch in eclipse nicht für die ARM Architektur verfügbar ist, müssen wir hier noch etwas Aufwand treiben. Auf dem Banana-/Raspberry PI muss das swt Paket libswt-gtk-3-java installiert werden:

apt-get install libswt-gtk-3-java

Jetzt muss man noch das vorhandene swt in dem Jameica Verzeichnis mit dem für die richtige Architektur überschreiben:

cp /usr/lib/java/swt-gtk-3.8.0.jar /opt/jameica/lib/swt/linux/swt.jar

Danach startet Jameica ganz normal. Hibsicus und Jverein werden am besten über den integrierten Plugin Manager installiert.

Installation von Xpra

Das Xpra bitte aus den [ http://backports.debian.org/ wheezy-backports] installieren, die wheezy Version ist uralt!

Änderungen in der /etc/xpra/xpra.conf

Deaktiviere Notifications, sound und Tray notifications:

# Enable forwarding of notifications:
notifications = no

# Enable forwarding of system tray icons:
system-tray = no
# Forward sound output to clients:
speaker = no

Entferne Viedocodecs, die führen zu komischen Verzerrungen. Speed und Quality sollen automatisch bestimmt werden, mindestens jedoch 50 sein:

################################################################################
# Picture Encoding

# Encodings allowed:
# (not all encodings may be available in your environment):
#encodings = h264, vp8, png, png/P, png/L, webp, rgb, jpeg, h265, vp9
#encodings = all
#encodings = rgb
encodings = jpeg, png, png/P, rgb


# Use fixed quality
# (value is a percentage or "auto"):
#quality = 80
quality = auto

# For auto quality only:
#min-quality = 50
min-quality = 50

# Use fixed speed
# (value is a percentage or "auto"):
#speed = 90
speed = auto

# For auto speed only:
#min-speed = 20
min-speed = 50

Deaktiviere session sharing:

# Share session with other users:
sharing = no

Bei Verbidnungsherstellung jameinca (JVerein) starten. Xsession ebenfalls laden...

########################################################################
# Server Options:

# Commands to start by default
#  (may be specified more than once):
# examples:
start-child = /opt/jameica/jameica.sh
#start-child = /usr/bin/xeyes
# Xsession can take care of initializing dbus, keyring-daemon,
# gpg-agent or whatever else might be usually started together with X
start-child = /etc/X11/Xsession true

Anderer Logfile Ort

# Log file:
log-file = /tmp/xpra.log

Session nicht per mdns verbereiten.

# Publish sessions:
mdns = no

Pulseaudio brauchen wir nicht.

# Start a pulseaudio server with each session:
pulseaudio = no

Auch hier: Logfile angepasst

# Selecting virtual X server:
xvfb=Xorg -dpi 96 -noreset -nolisten tcp +extension GLX +extension RANDR +extension RENDER -logfile /tmp/Xorg.${DISPLAY}.log -config /etc/xpra/xorg.conf

Funktioniert mit xvfb offenbar nicht...

# Does the xvfb command support the "-displayfd" argument?
# displayfd = yes

Beende xorg session, wenn jameica beendet wird.

exit-with-children = yes

Änderungen in der /etc/xpra/xorg.conf

In den Sections Monitor und Display wurden alle modes > 2560x1600 rausgenommen, das braucht man wirklich nicht und schein auch zu Problemen mit einigen JVerein Fenstern zu führen.

Section "Monitor"
  Identifier "dummy_monitor"
  HorizSync   5.0 - 1000.0
  VertRefresh 5.0 - 200.0
  #To add your own modes here, use a modeline calculator, like:
  #http://xtiming.sourceforge.net/cgi-bin/xtiming.pl
  #or using the "gtf" command line tool (http://gtf.sourceforge.net/)

  #This can be used to get a specific DPI, but only for the default resolution:
  #DisplaySize 508 317
  #NOTE: the highest modes will not work without increasing the VideoRam
  # for the dummy video card.
  Modeline "2560x1600" 47.12 2560 2592 2768 2800 1600 1639 1642 1681
  Modeline "2560x1440" 42.12 2560 2592 2752 2784 1440 1475 1478 1513
  Modeline "1920x1440" 69.47 1920 1960 2152 2384 1440 1441 1444 1457
  Modeline "1920x1200" 26.28 1920 1952 2048 2080 1200 1229 1231 1261
  Modeline "1920x1080" 23.53 1920 1952 2040 2072 1080 1106 1108 1135
  Modeline "1680x1050" 20.08 1680 1712 1784 1816 1050 1075 1077 1103
  Modeline "1600x1200" 22.04 1600 1632 1712 1744 1200 1229 1231 1261
  Modeline "1600x900" 33.92 1600 1632 1760 1792 900 921 924 946
  Modeline "1440x900" 30.66 1440 1472 1584 1616 900 921 924 946
  ModeLine "1366x768" 72.00 1366 1414 1446 1494  768 771 777 803
  Modeline "1280x1024" 31.50 1280 1312 1424 1456 1024 1048 1052 1076
  Modeline "1280x800" 24.15 1280 1312 1400 1432 800 819 822 841
  Modeline "1280x768" 23.11 1280 1312 1392 1424 768 786 789 807
  Modeline "1360x768" 24.49 1360 1392 1480 1512 768 786 789 807
  Modeline "1024x768" 18.71 1024 1056 1120 1152 768 786 789 807
  Modeline "768x1024" 19.50 768 800 872 904 1024 1048 1052 1076


  #common resolutions for android devices (both orientations):
  Modeline "800x1280" 25.89 800 832 928 960 1280 1310 1315 1345
  Modeline "1280x800" 24.15 1280 1312 1400 1432 800 819 822 841
  Modeline "720x1280" 30.22 720 752 864 896 1280 1309 1315 1345
  Modeline "1280x720" 27.41 1280 1312 1416 1448 720 737 740 757
  Modeline "768x1024" 24.93 768 800 888 920 1024 1047 1052 1076
  Modeline "1024x768" 23.77 1024 1056 1144 1176 768 785 789 807
  Modeline "600x1024" 19.90 600 632 704 736 1024 1047 1052 1076
  Modeline "1024x600" 18.26 1024 1056 1120 1152 600 614 617 631
  Modeline "536x960" 16.74 536 568 624 656 960 982 986 1009
  Modeline "960x536" 15.23 960 992 1048 1080 536 548 551 563
  Modeline "600x800" 15.17 600 632 688 720 800 818 822 841
  Modeline "800x600" 14.50 800 832 880 912 600 614 617 631
  Modeline "480x854" 13.34 480 512 560 592 854 873 877 897
  Modeline "848x480" 12.09 848 880 920 952 480 491 493 505
  Modeline "480x800" 12.43 480 512 552 584 800 818 822 841
  Modeline "800x480" 11.46 800 832 872 904 480 491 493 505
  #resolutions for android devices (both orientations)
  #minus the status bar
  #38px status bar (and width rounded up)
  Modeline "800x1242" 25.03 800 832 920 952 1242 1271 1275 1305
  Modeline "1280x762" 22.93 1280 1312 1392 1424 762 780 783 801
  Modeline "720x1242" 29.20 720 752 856 888 1242 1271 1276 1305
  Modeline "1280x682" 25.85 1280 1312 1408 1440 682 698 701 717
  Modeline "768x986" 23.90 768 800 888 920 986 1009 1013 1036
  Modeline "1024x730" 22.50 1024 1056 1136 1168 730 747 750 767
  Modeline "600x986" 19.07 600 632 704 736 986 1009 1013 1036
  Modeline "1024x562" 17.03 1024 1056 1120 1152 562 575 578 591
  Modeline "536x922" 16.01 536 568 624 656 922 943 947 969
  Modeline "960x498" 14.09 960 992 1040 1072 498 509 511 523
  Modeline "600x762" 14.39 600 632 680 712 762 779 783 801
  Modeline "800x562" 13.52 800 832 880 912 562 575 578 591
  Modeline "480x810" 12.59 480 512 552 584 810 828 832 851
  Modeline "848x442" 11.09 848 880 920 952 442 452 454 465
  Modeline "480x762" 11.79 480 512 552 584 762 779 783 801
EndSection

Section "Screen"
  Identifier "dummy_screen"
  Device "dummy_videocard"
  Monitor "dummy_monitor"
  DefaultDepth 24
  SubSection "Display"
    Viewport 0 0
    Depth 24
    Modes "2560x1600" "1920x1440" "1920x1200" "1920x1080" "1600x1200" "1680x1050" "1600x900" "1400x1050" "1440x900" "1280x1024" "1366x768" "1280x800" "1024x768" "1024x600" "800x600" "320x200"
    #Virtual 32000 32000
    #Virtual 16384 8192
    #Virtual 8192 4096
    #Virtual 5120 3200
  EndSubSection
EndSection

Erlaube nur einen Zugriff auf JVerein zugleich

Xpra fehlt diese funktion leider. Deswegen muss man hier zu ssh hilfsmitteln greifen. In der /etc/security/limits.conf folgendes eintragen:

username         -       maxlogins       1

Backup

Backups des verschlüsselten Home-Verzeichnisses laufen täglich Nachts um 01:30. Einmal in der Woche werden Vollbackups gezogen, in den Tagen dazwischen inkrementelle. Backups älter als 4 Wochen werden gelöscht. Die Backups werden per sftp auf lacerta.uberspace.de geladen (Ordner: backups/jverein). Dort liegt auch ein Backup der SD Karte, welches direkt auf eine neue Karte gespielt werden kann. Für das Backup wird die Software Duply verwendet; Backups werden verschlüsselt.

Installation/Konfiguration von Duply

Installation von duply; Backup Profil erzeugen.

apt-get install duply python-paramiko
duply create jverein

Als nächstes müssen wir die config Datei (.duply/jverein/conf) anpassen:

Das Passwort für die symmetrische Verschlüsselung:

GPG_PW='PASSWORT'

Der Ort, an dem das Backup liegt (für andere Beispiele siehe die conf Datei):

TARGET='ssh://freifunk@lacerta.uberspace.de/backups/jverein'

Der Ort, der gebackupt werden soll:

SOURCE='/home/'

Mache maximal 4 Vollbackups, lösche inkrementelle und Vollbackups die älter als 1 Monat sind.

MAX_AGE=1M

MAX_FULL_BACKUPS=4

MAX_FULLBKP_AGE=1M

Setze den --force parameter, damit Backups auch wirklich gelöscht werden.

DUPL_PARAMS="$DUPL_PARAMS --force"

Cronjob einrichten

Erstelle den Ordner für die Logfiles:

mkdir /var/log/backup

Editiere /etc/crontab

30 1    * * *   root    /usr/bin/duply jverein backup_purge_purge-full >> /var/log/backup/jverein.log

Backup zurückspielen

Duply Backup

Installiere duply wie oben beschrieben.

Restore Prozedur aufrufen:

duply jverein restore /home/

SD Karte wieder herstellen

Datei von lacerta.uberspace.de runterladen (sd_jverein_backup.img.bz2) und auspacken. SD Karte einlegen, mit dd das image zurückspielen:

dd bs=1M if=sd_jverein_backup.img of=/dev/deviceOfSD

Für andere OSes gibt es auch entsprechende Tools z.B. Win32 Disk Imager