#devLUG #14

06 September 2018

Die #devlug #14 war am 06.09.2018 um 20:30 Uhr im IRC.

TOPs

ID Age Tag Description                                         Urg
 1 2d  top devLUG 2.0 - Wann ist man ein Member                0.81
 2 2d  top devLUG 2.0 - Rechte im eggdrop                      0.81
 3 2d  top eggdrop - Welche Funktionen kann man noch brauchen? 0.81
 4 2d  top devLUG-Session - Thema?                             0.81

TOP 1 - devLUG 2.0 - Wann ist man ein Member

Jeder sollte noch drüber nachdenken, drüber schlafen und wenn er was sagen will, einfach auf der Mailingliste ansprechen.

TOP 2 - devLUG 2.0 - Rechte im eggdrop

Verschoben wegen TOP 1.

TOP 3 - eggdrop - Welche Funktionen kann man noch brauchen?

Wir wollen versuchen den eggdrop auf den uberspace zu verschieben. Eine Idee war noch issues mit dem eggdrop zu erstellen und eine Erinnerung für die nächste devLUG.

TOP 4 - devLUG-Session - Thema?

  • Vagrant setup für einen galera cluster mit loadbalancer (haproxy und maxscale)

TOP - Sonstiges

#devLUG #13

21 August 2018

Die #devlug #13 war am 21.08.2018 im IRC.

TOP 1 - Uhrzeit

Wir haben den Stammtisch auf 20:30 Uhr verschoben. Nur noch mal als Erinnerung.

TOP 2 - devTuxBot

Unser Bot devTuxBot werden wir jetzt nach und nach ausbauen. Alle die Interesse haben, können im Raum #devlug-bot vorbei schauen und sich eine eggdrop zum testen und programmieren in den channel hängen. Infos bekommt man im Channel via !tux.

TOP 3 - offizielle Gruppe im freenode

Hatte ich ja schon auf der Mailingliste angesprochen. Wir haben noch einen weiteren Raum #devlug-offtopic wenn man sich auch über Dinge unterhalten will die nichts mit Linux / devlug etc zu tun haben.

TOP 4 - devLUG-Session

Vorschlag für die nächste Session hätte ich das Thema "git".

TOP 5 - devLUG

Alternativer Name für Stammtisch ist "#devlug".

Stammtisch #11

24 July 2018

Uhrzeit für den Stammtisch

Das Thema 'Uhrzeit für den Stammtisch' soll auf der Mailingliste angesprochen werden. Für den einen ist 19:00 Uhr vielleicht etwas zu früh, der andere muss den Nachwuchs um 20:00 Uhr in’s Bett bringen. Die Frühaufsteher werden um 22:00 Uhr schon müde und der andere wird um 03:00 erst richtig aktiv.

Wann ist der beste Zeitpunkt für unseren Stammtisch? Der offizielle Teil geht normalerweise 1 Stunde. Davor und danach können gerne Fragen gestellt werde und diskutiert werden.

Welche Erwartungshaltung hat man an den Stammtisch?

Softwareentwicklung und Projekte

Wir haben eine Untergruppe "Development" in gitlab https://gitlab.com/devlug/devel. Wann kann / sollte man diese Gruppe für Projekte nutzen und wann passt es nicht. 'Gemeinsame Projekte' können wir dort verwalten. Ab wann ist denn ein Projekt 'gemeinsam' bzw. im Interesse der devLUG.

Automatisches Deployment der Homepage

Frank hat uns ein automatisches deployment der Homepage aufgesetzt. Da es noch ein Problem im jbake gab, weshalb der Prozess immer wegen zu viel Speicherverbrauch abgeschossen wurde, musste er noch den Fehler suchen und fixen. Information zum deployment sind hier: https://www.devlug.de/blog/2018-07-21-deployment.html

Wurde die Homepage neu gebaut und deployed springt Ansible in den IRC und gibt uns eine kurze Info:

SUCCESS \o/ Unsere Webseite wurde erfolgreich gebacken und deployed -> https://devlug.de

Übersicht der Sprint-Themen

Die Seiten zu den Sprints sollen übersichtlicher werden und einfach zu verwalten: https://www.devlug.de/sprints/2018-06-Sprint.html

  • Zeitraum

  • Ein Link auf den Milestone

  • Tabelle mit den Themen (Beschreibung, Issue, Link)

Details können in einem Blog oder Artikel beschrieben werden, so hat man nicht doppelten Aufwand bei der Pflege der Homepage.

Mailingliste

Informationen die über die devLUG-announce verschickt werden, werden auf jeden Fall auch über devLUG verschickt. Also muss man sich nicht auf devLUG-announce eintragen. Es ist primäre für die Leute, die nicht immer die Mails auf devLUG verfolgen können, aber die 'wichtigen' Informationen gerne hätten.

organizer

21 July 2018

Seit einiger Zeit bin ich auf dem Trip "5 Füllfederhalter, Leuchtturm A5 dotted und Bullet Journal", nachdem ich feststellen musste, dass der Filofax einfach für meine Bedürfnisse nicht ganz so passend ist. Die 5 verschiedenen Farben aus den Füllfederhaltern machen auch einiges her, wenn man sich die Notizen auf den dotted Papier ansieht. Bei der Sache gibt es nur ein Problem,…​ ich bin ein Informatiker! Die ganzen Sachen kann man doch auch auf dem PC verwalten. Also mal Spaß beiseite,…​

Warum eine Organizer-Anwendung?

Ich nutzte neomutt, remind + wyrd, abook und task + timew. Vielleicht muss ich noch mal genauer überlegen was eigentlich mein Problem bei der Sache ist oder ob ich einfach nur Lust auf eine Softwareentwicklung für Linux in C++ habe. Irgendwie, irgendwas fehlt mir oder stört mich einfach. Wobei viele der oben gennaten Anwendungen eigentlich sehr cool sind. Ich bin kein Freund von "Cloud"-Anwendungen und verwende gerne Terminal-Anwendungen. Alles muss ich nicht auf dem Handy haben und alle Daten müssen auch nicht immer über das Internet gehen.

Das Problem

Besonders bei Aufgaben, Termine, Kalender, Kontakten und Erinnerungen stehen die Informationen sehr stark in Beziehung. Kontakte haben vielleicht einen Geburtstag, welche im Kalender angezeigt werden soll. Aus einer Erinnerung wird vielleicht eine Aufgabe.

Viele dieser Konzepte findet man in einigen Programmen wieder. Egal ob Linux, OSX oder diesem Nachfolger von DOS. Aber irgendwie sind es nicht die Programme die ich verwenden will und Terminal Anwendungen gibt es da selten.

Wichtig ist jedoch, dass die Konzepte eigentlich sehr ähnlich sind und die Daten für einen Benutzer auch eigentlich immer gleich sind. Meine Kontakte ändern sich nicht, nur weil ich von claws-mail auf neomutt gewechselt habe. Meine Termine bleiben gleich, ob ich mir diese mit remind oder in einer X-Anwendung ansehe.

Viele Anwenundgen haben keine Trennung zwischen UI und Modell / Logik.

Die Organizer Anwendung

Ich möchte eine Anwendung entwickeln die eine klare Trennung von UI und Modell hat. In denen die Kontakte, Termine etc. in einer Shell oder in X verwenden werden können und beliebige Anwendungen die Möglichkeit haben die Daten zu nutzen, ohne diese ins WWW zu schieben.

Wer Interesse hat mitzumachen, einfach melden.

gitlab autodeploy der Webseite

21 July 2018

gitlab logo

Eine kleine Beschreibung wie wir den deploy unserer Webseite mit gitlab automatisieren.

Die Vergangenheit

Bisher haben wir unsere Webseite immer manuell deployed. Dafür haben wir ein kleines bash Skript das uns die von jbake generierte Seite per rsync auf unseren Server bei uberspace per ssh kopiert.

#!/bin/bash
#
# rsync upload von output/ via ssh.
#
# Benutzt eine alternative Konfiguration in .ssh/config
#

CONFIG=.ssh/config

function deploy() {
  rsync $DRY -r -u -v --filter="P .htaccess" --delete -e "ssh -F $CONFIG" output/ vlughess:~/html/
}

function help() {
  echo "usage: deploy [--dry] [--help]"
}

case "$1" in
  --dry)
    DRY=-n
    ;;
  --help)
    help
    exit
    ;;
esac

deploy

Jeder der einen Zugang, bzw. einen public key in unserer authorized_keys eingetragen hat, kann das tun. Das liegt vor allem daran, dass wir ein und denselben user benutzen. Eine kleine Einschränkung mit der man leben muss auf einem uberspace.

Die Vision

Mit gitlab haben wir auch gleichzeitig die Möglichkeit eine deployment pipeline einzurichten. Wir hatten bereits den Wunsch den deploy zu automatisieren in einem issue festgehalten.

Im Wesentlichen ist das Ziel, dass durch einen push eines git tags, die Seite gebacken und die generierte Webseite veröffentlicht wird.

Dafür wollen wir einen SSH key verwenden, der eben nur dem Zweck dient einen Deploy durchzuführen und sonst nichts.

Kein Login, keine weiteren Befehle ausführen, keine Portweiterleitung.

Die Umsetzung

Allerdings muss man dann diesen Key als Variable im repository auf gitlab hinterlegen. Deswegen ist es auch wichtig, dass dieser key nichts anderes kann als einen build zu triggern. Im Falle einer Kompromittierung des keys, kann dann schon mal nicht ganz so viel kaputt gehen.

Hätten wir die Möglichkeit einen weiteren user anzulegen könnten wir auch einfach die Berechtigungen soweit einschränken, dass da nicht viel schief gehen kann. Das hätte auch den Vorteil, dass wir die eigentliche Arbeit des Bauens der Seite auf gitlab auslagern könnten und in einer zweiten Stufe dann die Dateien auf den Server kopieren.

Aber das können wir mit unserem uberspace, wie oben bereits erwähnt, nicht so umsetzen.

public key einschränken

Deswegen schränken wir die Berechtigung des keys mithilfe der authorized_keys Datei ein. Dafür haben wir ein kleines Skript geschrieben, dass wir mit der command Option an den öffentlichen Schlüssel binden. Zusätzlich haben wir für den Schlüssel dann noch das portforwarding eingeschränkt mit der Option no-port-forwarding.

Die Zeile sieht jetzt folgendermaßen aus:

no-port-forwarding,command="/home/vlughess/bin/gitdeploy.sh" ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFxzSTWhjPxfPZBcJ1d51+HwHwipv/nRi6e8jBlqF6lv devlug_deploy

Wenn man nun versucht sich per ssh mit dem entsprechenden key zu verbinden, wird nur das in command definierte Skript ausgeführt und am Ende der Ausführung wird die Verbindung unterbrochen.

build skript

Das build Skript ist ziemlich straightforward.

header von gitdeploy.sh
#!/usr/bin/env bash
#
# gitdeploy
#
# Kleines Helferskript um die Homepage auf einem Server zu bauen und im webroot zu deployen.
#
#
# Die Aufgaben sind recht simpel:
#
# * erstelle einen klon des Projekts, falls nicht schon geschehen.
# * wechsel in einen entsprechenden branch, tag oder commit
# * baue die Seite mit jbake
# * kopiere die Daten in das webroot
# * räume auf
# * sende eine Nachricht in den IRC channel bei Erfolg oder Fehlschlag
#

Wen es im Detail interssiert kann sich das Skript auf gitlab anschauen.

Es hat allerdings ein paar Abhängigkeiten.

  • java

  • jbake

  • git

  • rsync

  • ansible (optional, wird für irc Nachrichten verwendet)

Java und Jbake haben wir auf dem uberspace mit sdkman installiert. Der Rest war schon vorhanden.

gitlab-ci Konfiguration

Die gitlab-ci Konfiguration haben wir uns aus einem example repository geklaut und ein wenig angepasst.

image: ubuntu

before_script:
  ##
  ## Install ssh-agent if not already installed, it is required by Docker.
  ## (change apt-get to yum if you use an RPM-based image)
  ##
  - 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client git -y )'

  ##
  ## Run ssh-agent (inside the build environment)
  ##
  - eval $(ssh-agent -s)

  ##
  ## Add the SSH key stored in SSH_PRIVATE_KEY variable to the agent store
  ## We're using tr to fix line endings which makes ed25519 keys work
  ## without extra base64 encoding.
  ## https://gitlab.com/gitlab-examples/ssh-private-key/issues/1#note_48526556
  ##
  - echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - > /dev/null

  ##
  ## Create the SSH directory and give it the right permissions
  ##
  - mkdir -p ~/.ssh
  - chmod 700 ~/.ssh

  ##
  ## Use ssh-keyscan to scan the keys of your private server. Replace gitlab.com
  ## with your own domain name. You can copy and repeat that command if you have
  ## more than one server to connect to.
  ##
  - ssh-keyscan aldebaran.uberspace.de >> ~/.ssh/known_hosts
  - chmod 644 ~/.ssh/known_hosts

produktiv_deploy:
  stage: deploy
  environment: Produktiv
  only:
    - tags (1)
  script:
    - ssh vlughess@aldebaran.uberspace.de (2)
  1. Der build wird nur für Tags ausgeführt.

  2. Wir triggern den command über eine Verbindung mit dem privaten Key, den wir in gitlab hinterlegt haben.

Release

Ein release der Webseite sieht jetzt folgendermaßen aus.

git checkout master
git tag -a -s -m 'Release der Webseite' 2018-07-21T1731
git push --tags

Durch den push wird der tag auf gitlab übertragen. Der neue Tag triggert den produktiv_deploy job auf gitlab.

In der Ausgabe kann man schön nachvollziehen was vorsich geht.

GnuPlot

30 June 2018

Wie kann ich ein einfaches Digramm (Zeit / Anzahl) erstellen?

Erstelle eine Datei mit Datum und Anzahl. Hier ein Beispiel der Mitglieder auf der devlug Mailingliste members.dat

2017-06-19 2
2018-03-15 3
2018-03-30 5
2018-06-30 14

Dann die members.plot Datei.

set title "Members"
set terminal png
set output 'members.png'
set xdata time
set timefmt "%Y-%m-%d"
set xrange ['2017-06-01':'2018-06-30']
set yrange [2 : 30]
set style data line
set format x "%m.%y"
set grid xtics ytics
plot 'members.dat' using 1:2 title "Members"
gnuplot members.plot

members

vLUG-Session - E-Mail mit neomutt und co

25 June 2018

Thema

In der 1. vLUG-Session der devLUG hatten wir am Montag, 25.06.2018 das Thema E-Mail mit neomutt und Co. Die Session ging von 19:00 Uhr bis 20:00 Uhr. Wir haben per Videokonferenz einen Bildschirm freigegeben. Der Moderator hat auf seinem PC ein paar Grundlagen zu getmail, procmail, notmuch, neomutt gegeben.

Die folgenden Themen wurden sehr grob angesprochen:

  • Konfiguration von getmail zum Abholen von E-Mails via IMAP-Server

  • Übergabe der E-Mails von getmail an procmail

  • Definition von procmail-Regeln

  • Konfiguration von notmuch

  • Konfiguration von virtuellen mailboxen

  • Adressen via alias und lbdb

  • Konfiguration von Farben

  • Konfiguration von send- und folder-hooks

Audio-/Videokommunikation

24 June 2018

Audio-/Videokommunikation

Dieses Wochenende haben wir ein paar Tests mit Tools für Audiokommunikation gemacht.

Wir haben uns SIP-Accounts auf http://linphone.org/ und http://opensips.org/ angelegt. Als Client-Software linphone, empathy mit telepathy-rakia. Auf dem Handy haben wir linphone und Ring installiert.

Für Mumble brauchen wir einen Server, deswegen ist es für uns aktuell noch keine Lösung.

Leider waren unserer Tests noch nicht so positiv. Eine Verbindung von Ring auf Handy zu Handy via Ring-Protokoll war erfolgreich.

Mal sehen wie die Sache weitergeht,..

Wir ziehen um

13 April 2018

Wir ziehen von github nach gitlab

Wir werden dieses Wochenende unsere Git Repositories von GitHub nach GitLab umziehen. Ihr findet uns jetzt auf https://gitlab.com/vlug-hessen

Update: So, 2018-04-15 14:00

Wir sind erfolgreich umgezogen. Die Repositories sind jetzt auf GitLab.com.

Installation Debian

24 March 2018

Debian GNU/Linux

In diesem Kapitel beschreibe ich ein paar Informationen wie ich meine Debian-Systeme installiere / konfiguriere.

Installation

Debian kann auf der Homepage https://www.debian.org/distrib/ heruntergeladen werden. In den meisten Fällen verwende ich die "Netzwerkinstallation" über einen USB-Stick https://www.debian.org/CD/netinst/.

Debian GNU/Linux – Installationsanleitung: https://www.debian.org/releases/stable/amd64/index.html.de

Anwendungen

Als Erstes installiere ich mir aptitude, da ich alle Anwendungen via aptitude installiere.

apt-get install aptitude

Direkt danach folgenden - dir für mich - wichtigsten Programme.

aptitude install zsh tmux gnupg ssh git vim

Direkt gefolgt von Programmen zum lesen und schreiben von E-Mails und Verwaltung von Adressen.

aptitude install getmail procmail neomutt notmuch neovim lbdb abook w3m urlview

Installation vom WindowManager i3

aptitude i3-wm i3status i3lock lightdm acpi rofi xterm gnome-terminal gpa

Kommunikation via IRC

aptitude irssi irssi-scrips hexchat hexchat-plugins

Sonstige Anwendungen

aptitude vim-gtk mc
aptitude firefox-esr libreoffice keepass2 firefox-esr-l10n-de timewarrior
aptitude imagemagick gimp eog shorewall
aptitude network-manager network-manager-gnome
aptitude thunar
aptitude screenfetch
aptitude asciidoc asciidoc-fop

Projekt - Homepage

09 September 2017

Beschreibung

Mit der Erstellung unserer eigenen Homepage starten wir auch schon unser 1. Projekt der vlughessen.

Homepage

09 September 2017

Struktur und Inhalt

Letztes Wochenende habe ich einen kleinen Entwurf für die Homepage hochgeladen. Inhaltlich war die Seite noch sehr leer. Dieses Wochenende versuche ich eine Struktur zu erstellen und etwas Inhalt auf die Homepage zu bekommen.

Herzlich Willkommen

03 September 2017

Virtuelle Linux User Group Hessen

Herzlich Willkommen auf der Homepage der virtuellen Linux User Group Hessen.

Mehr Informationen über die vlughessen findest du hier.


Older posts are available in the archive.