Category Archives: Notizen

Aufzeichnungen von unseren Meetups, Links zu Slides, etc.

[0x17] Docker Intro Workshop Notes

Yesterday we had another instance of the Docker Intro workshop. Here are some notes on what we did.

You can find the slides for the workshop here: https://tantemalkah.at/2024/docker-intro

While the Docker Handbook by Farhan Hasin Chowdhury is great overall introduction to Docker, including setup and concept explanations, the Play with Docker classroom has many interactive tutorials, where you can neatly try out stuff on the side (right there in the browser, if you are logged in with a Docker Hub account – but you can do the same thing on your own machine, if you have Docker already running).

We specifically went through the Docker for Beginners – Linux lab, and here is a slightly adapted quick run-through version:

# clone the repo containing the demo app we'll run in a
# container later
git clone  https://github.com/dockersamples/linux_tweet_app
ls -l linux_tweet_app/

# check the hostname of a plain alpine linux container
docker run alpine hostname
# see all (also stopped) containers
# shortcut for: docker container ls --all
docker ps -a
# and now delete the unused alpine container
docker rm gifted_brown  # use the name from docker ps output

# run a bash (interactively) in a fresh ubuntu container
# (and remove it automagically after it stops)
docker run -it --rm ubuntu bash
# while the bash in the container is running you can check
# its status in another terminal
docker ps
# and after it is stopped it should be completely gone
docker ps -a

# run a MySQL container with a randomly generate root password
# (in detached mode, so it does not block your terminal)
docker run --rm --detach --name mysql \
  -e MYSQL_ROOT_PASSWORD=AZ2NchuaP149fmNRxqh1cmU0Mxg815Bg \
  mysql:latest
docker ps
# see the latest logs of the mysql container
docker logs mysql 
# output logs in "follow" mode (so log display keeps running)
# (if you want to quit the logs command again, type CTRL+C)
docker logs -f mysql
# see what processes are running in the mysql container
docker container top mysql 
# while the container is still running, execute another
# command in it, e.g. the mysql client to (the first "mysql"
# is the containter name, the second the actual "mysql"
# command, followed by its arguments) 
docker exec -it mysql mysql -u root -p -v
# in a separte terminal you can see that only one mysql
# container is running
docker ps

# now let's build an image for the demo app
cd linux_tweet_app/
cat Dockerfile 
docker image build --tag linux_tweet_app:1.0 .
docker images

# now we can run the demo app and map its port 80 to
# 1234 on the host
docker run -d -p 127.0.0.1:1234:80 \
  --name linux_tweet_app linux_tweet_app:1.0
docker ps
docker container stop linux_tweet_app 
docker rm linux_tweet_app

# now we run it with a mount, so we can change its html files
# directly from our host, without the need to go into the
# container and change it there
docker run --rm -d --publish 127.0.0.1:1234:80 \
  --name linux_tweet_app \
  --mount type=bind,source="$(pwd)",target=/usr/share/nginx/html \
  linux_tweet_app:1.0
docker ps
ls -l
# let's change something in the index.html file
# if you are not familiar with vim, you can also use nano or
# open the file in the file browser with your GUI editor
vim index.html
# now take a look at http://localhost:1234 to see the changes

# even if we stop (and implicitly remove) the container to
# start a fresh one, your changes are still persisted, 
# because they are now not saved in the container but in
# your mounted linux_tweet_app dir
docker stop linux_tweet_app 
docker run --rm -d --publish 127.0.0.1:1234:80 \
  --name linux_tweet_app \
  --mount type=bind,source="$(pwd)",target=/usr/share/nginx/html  \
  linux_tweet_app:1.0

One thing I want to mention here specifically is port mappings. In most tutorials and explanations, sometimes even in the official Docker docs, you will find port mappings like -p 1234:80, mapping the port 80 inside the container (where e.g. a web app is running) to the port 1234 on your host machine (so you can access it through http://localhost:1234). This is all fine, and maybe just the thing you want on the final production server (because somehow your visitors from the interwebs should be able to access the page inside the container – probably not on port 1234 though). But while developing and testing locally, you might have a security issue there. Because mapping -p 1234:80 means that the port 1234 is opened on ALL your interfaces. So whoever is on the same local network as you and has your IP address can also access your web app. But while developing or testing on your local machine, you might not have all required security measures in place. So the safer default is always to map it to your local port ONLY on your loopback interface (which is 127.0.0.1, the actual „localhost“). So instead of the above, use -p 127.0.0.1:1234:80. This way really only you (or anyone who already is on your machine) can access the web app inside the container.

In the end we also took a quick look at compose files and how they can be used to spin up a range of services. But as usual, time was way to short to get into everything in details. The general idea was that participants now have a good entrypoint (like every container needs), to continue exploring the Docker lands.

Here are also a few more resources to continue your journey (apart from the Docker Handbook and the Play with Docker classroom):

[0x14-5] Double Feature: Clouds & Containers [notes]

On April 19 & 20, we (ad)ventured into the cloud & container lands. First, on Friday evening jackie gave hir talk titled Shine some light through this cloud. A short primer on clouds and cloud computing (the link leads to the slide deck), and in the following discussion we already talked a lot about the difference of full virtualisation and containerisation.

Then on Saturday afternoon we gathered again to go through a Docker Intro Workshop (link again leads to the slide deck of the workshop). In it we started by looking in to the basics of containerisation and how it works specifically with Docker.

Continue reading

[0x12] Toward a New Hacker Ethic [notes]

Den vergangenen Freitag-Abend (16.2.) haben wir uns den Talk Programming is Forgetting: Toward a New Hacker Ethic von Allison Parrish angeschaut, den sie am Open Hardware Summit 2016 gehalten hat. Der Talk und ein Transkript davon sind unter dem Link nachschau- und lesbar.

Im Anschluss haben wir darüber diskutiert, inwiefern dieses Thema auch an unsere Diskussionen am 11. November beim Meetup [0x10] Ist Linux freie Software? anschließt, und was in welchen unserer eigenen Umfelder wir die von Allison Parrish angesprochenen Aspekte auch als besonders aktuell und wichtig erachten. Ganz kurzes und vorsichtiges Fazit: es braucht auf jeden Fall noch mehr solcher Talks und viel Awarenessarbeit um viele Hacking- und Freie Software-Kontexte solidarisch und emanzipatorsich zu gestalten, und nicht als Selbstversorgungs- oder -beschäftigungsprojekt einer kleinen relativ privilegierten Gruppe in unserer Gesellschaft.

Insgesamt fanden wir das Format „Talk schauen und diskutieren“ sehr angenehm, weshalb wir das gleich nochmal für den 22. März eingeplant haben – der konkrete Talk steht aber noch nicht fest. Eine Ankündigung folgt bis Anfang März. Außerdem haben wir für 19./20. April das Nachholen des Docker-Workshops eingeplant, der ursprünglich schon im Juni 2022 stattfinden hätte sollen. Auch hier wird es demnächst eine Ankündigung geben.

[0x10] Ist Linux freie Software?

Nach einem spannenden und aufschlussreichen Input von lorb am 11. November 2023 zu Freier Software, und wie sie sich von „nur“ Open Source unterscheidet, haben wir auch eine anregende Diskussion dazu geführt, wo uns freie Software alleine schon weiterbringt, und wo es vielleicht darüber hinaus noch um andere wichtige Aspekte bei der Softwareentwicklung -und Nutzung geht, wenn wir das auf eine emanzipatorische Weise tun wollen.

Im Anschluss haben wir auch noch ein bisschen über die möglichen weiteren Meetups geplaudert und ein paar andere kleine organisatorische Dinge abgeklärt.

Continue reading

[0x0B] Die Kommandozeile und ihre Lieblingsbefehle

Bei unserem 11ten Meetup haben wir uns mit den gängigsten Kommandozeilen-Befehlen auseinandergesetzt. katrin hat uns dafür einen Input geliefert und auch ein paar Kommandozeilenschmankerl herausgesucht. Dabei konnten wir die vorgestellten Befehle alle gleich auch selbst ausprobieren. In diesem Blog-Beitrag findet ihr die von uns ausprobierten Befehle samt Erklärung dazu, was sie machen.

Continue reading

[0x09] reboot sequence 2021

Mit unserem achten feminist linux meetup starteten wir am 10.3.2021 nach eine mehr als einjährigen Pause unsere reboot sequence. Zugleich sind wir pandemie-bedingt in den digitalen Raum ausgewichen, mit vielen positiven Nebeneffekten. So hatten wir zum Beispiel auch Besuch aus Berlin und Graz, sowie auch von Leuten die es bisher nie zum Meetup geschafft haben, für die aber so ein digitaler Besuch leichter in ihren Alltag integrierbar war.

Screenshot der Titelfolie zum Ankommen im BBB-Raum
Der Welcomescreen um mal im BBB Raum anzukommen
Continue reading

[0x07] Inkscape and more

Unser siebentes Meetup war ein gemütliches Zusammensitzen und Diskutieren verschiedener Themen. Von den angekündigten Anwendungen haben wir uns am Ende aber nur Inkscape angeschaut, dafür gleich in Form eins kleinen Miniworkshops. Für die nächsten Meetups gab es vor allem an Audacity großes Interesse für einen eigenen Workshop.

Use Glimpse!

Außerdem wurden wir auf einen relativ neuen Fork des GNU Image Manipulation Program aufmerksam: der Glimpse Image Editor wurde sowohl aufgrund des Namens GIMP – der im angloamerikanischen Raum vor allem diskriminierend gegen Menschen mit dis_abilities in Verwendung ist – als auch aufgrund des toxischen Umfelds in der Entwickler*innen Community geforked. Mehr Hintergrundinfos finden sich auf der About Seite des Glimpse Projekts.

Weitere Meetups

Für ein mögliches näxtes Meetup haben wir bereits den Freitag, 24. Jänner 2020 fixiert. Allerdings ist sonst noch nicht viel geplant, und wir haben darüber diskutiert, dass wir gerade nicht genug Zeit und Energie haben um größere, inklusive und breit beworbene Meetups zu organisieren, die auch neugierige neue Menschen anlocken. Daher werden wir vorerst nur noch über unsere Mailingliste kommunizieren und ankündigen. Es sind aber nach wie vor alle Interessierten eingeladen sich dort anzumelden und mitzumachen.

Wer zwar neugierig aber unsicher ist ob und wie si*er mitmachen mag und kann, ihr könnt auch an unsere Kontaktadresse femlimup@diebin.at schreiben, die zur Zeit von Maria und Jackie gelesen und beantwortet wird.

[0x06] Mit der Shell kleine Alltagsprobleme lösen

Zur Intro hat uns l0rb eine kurze Intro in die Shell Syntax gegeben und dabei bereits einige Problemlösungen vorgestellt. Das ganze kann auch im Nachhinein gleich selbst interaktiv ausprobiert werden, in der eigenen Shell oder direkt im Webbrowser: https://repl.it/@l0rb/bash101

Danach hat uns Maria gezeigt, wie alle FLAC-Audiofiles (z.B. Musikstücke) im aktuellen Verzeichnis mit einer command line in MP3-Audiofiles konvertiert werden können. Und zwar lässt sich das so machen (vorausgesetzt lame und flac sind schon installiert, z.B. mit sudo apt install lame flac):

for f in *.flac; do flac -cd "$f" | lame -b 320 - "${f%.*}".mp3; done

Beim Ausprobieren und Plaudern sind wir dann auch noch auf viele weitere praktische Varianten gekommen.

Continue reading

[0x03] Juni 2019: Backups

Es ist Juni 2019, der heißeste Monat seit Beginn der Aufzeichnungen, und du schwitzt dich gerade dabei ab deine letzten Änderungen an deiner großen Abschlussarbeit vorzunehmen. 15 Uhr, die Hitze im kleinen Kämmerchen wird fast unaushaltbar, aber hey, ein Licht am Horizont, die letzten Tastenanschläge sind getan. Du drückst auf speichern und freust dich schon auf das kühle Getränk am Donaukanal.

Dort angekommen ist es freilich supervoll. Das macht nix, du hast dich mit Freund*innen getroffen und ihr stoßt darauf an, dass du mit dem ganzen Scheiß endlich fertig bist. Nieee wieder Schule! Cheers. Was für ein toller Tag.

Just in dem Moment radelt eine ganze Meute von Tourist*innen auf Citybikes vorbei und fährt euch fast nieder. In dem ganzen Troubel fällt dein Rucksack in den Donaukanal. Naja, war eh nicht wirklich viel drin. Oh doch, scheiße, dein Notebook! Mit der Abschlussarbeit! Und du hast dich bis jetzt davor gedrückt ein tägliches Backup einzurichten. Und das letzte mal, dass du alles manuell auf eine Platte kopiert hast ist auch schon ein paar Wochen her. Neeeeeeein!

Von Jackie frei erfunden an einem launigen Sommermorgen beim Frühstückskaffee. Und nein, sie war gestern nicht am Donaukanal.

So oder ähnlich kann es dir gehen, wenn du keine Backups machst oder diese nur sporadisch – wenn’s dir eben halt mal einfällt – vornimmst. Klar, das beste Backup ist jenes, das du auch nie brauchst. Nur wenn du’s eben mal brauchst…

Wir haben uns also bei unserem 3. Meetup am 14. Juni 2019 mit der Frage von Backups unter Linux auseinandergesetzt und zwei Tools dazu genauer unter die Lupe genommen: Déjà-Dup als grafisches Tool und Frontend zu Duplicity, sowie Borg als CLI-Tool. Beide bieten verschlüsselte Backups an und eignen sich daher auch für Remote Backups. Weil was habe ich vom besten Backup, wenn’s nur auf einer externen Platte ist, die an meinem Raspberry Pi in meiner Wohnung hängt, und die gemeinsam mit meinem Notebook gefladert wird?

Die Slides zum Talk und den Demos von Jackie könnt ihr unter https://tantemalkah.at/2019/flm0x03-backups nachlesen und nachschauen. Neben ein paar allgemeinen Infos zu Backups, die sich in den Slides finden, sind dort auch zwei Screencasts verlinkt, einmal zu Déjà-Dup und einmal zu Borg.

[0x01] März 2019: Intro

Bei diesem ersten Meetup fanden sich an die 20 Linux-Begeisterte und Interessierte zusammen, um einander kennen zu lernen und Ideen für weitere Meetups zu sammeln. Inhaltlich haben Lucia und Jackie einen Vortrag zur Funktionsweise von Computern und Betriebssystemen und der Geschichte von Freier Software und Linux beigesteuert. Der Vortrag ist Teil eines umfrangreicheren Linux Intro Workshop, die Unterlagen dazu gibt es hier: Linux Intro Workshop: Crash-Kurs Betriebssysteme & Linux.

Danach haben wir Ideen gesammelt was es alles an spannenden Themen gibt, die wir uns gern auf weiteren Meetups aneignen möchte. Die Liste werden wir kontinuierlich weiterführen, fürs erste kam aber schon eine ganze Menge zusammen:

  • Zeux automatisieren (z.B. updates; oder: everything; oder: the boring stuff)
  • Soundbearbeitung unter Linux
  • Setups und Installationen
  • Scripte schreiben
  • Virtualisierung
  • Eltern remote supporten
  • Distros vorstellen & ausprobieren
  • die wichtigsten Shell-Befehle
  • Infrastruktur zum Resource-Sharing
  • Webserver aufsetzen
  • Nextcloud aufsetzen
  • Privacy unter Linux
  • Raspberry Pi
  • Grundlagen der IT-Security
  • Was mach ich mit meinem Linux-Computer so die ganze Zeit
  • Anwendungsprogramme
  • FHS oder: wo liegt denn hier eigentlich was?

Auf der Ebene der Formate haben wir neben Talks und Plauderei auch noch über offene Workshops und mit Themen befüllte Frühstücke/Brunches nachgedacht.

Für das näxte Meetup haben wir auch schon ein paar Rahmendaten fixiert. Die Ankündigungen findet ihr hier in der Termin-Übersicht.