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.