aboutsummaryrefslogtreecommitdiffstats
path: root/posts
diff options
context:
space:
mode:
Diffstat (limited to 'posts')
-rw-r--r--posts/201502-ssh-tunnel-and-postfix.rst28
-rw-r--r--posts/201508-hardware-section.rst6
-rw-r--r--posts/201509-donaueschingen.rst5
-rw-r--r--posts/201604-extended-longevity-of-a-htc-one-s-using-cyanogenmod.rst44
-rw-r--r--posts/201604-linux-audio-conference-2016.rst24
-rw-r--r--posts/201604-mssw.rst7
-rw-r--r--posts/201609-darmstadt.rst11
-rw-r--r--posts/201609-letsencrypt.rst23
-rw-r--r--posts/201610-uwsgi.rst30
9 files changed, 148 insertions, 30 deletions
diff --git a/posts/201502-ssh-tunnel-and-postfix.rst b/posts/201502-ssh-tunnel-and-postfix.rst
index 9249f65..9fa9eb2 100644
--- a/posts/201502-ssh-tunnel-and-postfix.rst
+++ b/posts/201502-ssh-tunnel-and-postfix.rst
@@ -7,7 +7,7 @@
.. summary: HOWTO on setting up a SSH tunnel with the help of a systemd-networkd between two machines, with no direct access to each other and modifying Postfix to use that tunnel.
.. authors: David Runge
-| Recently I had the pleasure of setting up a :abbr:`SSH (Secure Shell)` tunnel between two virtual machines that share no route and are located in two different subnets.
+| Recently I had the pleasure of setting up a |abbr_ssh| tunnel between two virtual machines that share no route and are located in two different subnets.
| They can however reach each other via SSH, hopping their host.
| Let's assume the following setup:
@@ -15,7 +15,7 @@
* **client2** (Arch Linux) has *10.0.6.2/24*
* **host** (Debian) is *10.0.5.1/24* to **client1** and *10.0.6.1/24* to **client2**
-| As I needed the two clients to be able to send mail to each other and reach each others' services, I did some digging and opted for a SSH connection using :abbr:`TUN (network TUNnel (virtual-network kernel devices))` devices (aka. "poor man's :abbr:`VPN (Virtual Private Network)`").
+| As I needed the two clients to be able to send mail to each other and reach each others' services, I did some digging and opted for a SSH connection using |abbr_tun| devices (aka. "poor man's |abbr_vpn|").
| The following is needed to set this up:
* root access on both virtual machines (**client1** & **client2**)
@@ -151,7 +151,7 @@ Setting up the TUN devices
systemctl restart systemd-networkd
-| Now starting the tunnel again should give a fully working point-to-point :abbr:`TCP (Transmission Control Protocol)` connection between the two (virtual) machines using the TUN devices.
+| Now starting the tunnel again should give a fully working point-to-point |abbr_tcp| connection between the two (virtual) machines using the TUN devices.
| If you need a more complex setup (i.e. to access the other clients' subnet), you will have to apply some routes (either using |netfilter| or |systemd-networkd|), depending on your individual setup.
|
@@ -174,7 +174,7 @@ _____
Postfix
_______
-| If using |postfix| as :abbr:`MTA (Message Transfer Agent)`, the service has to be configured to use */etc/hosts* before resolving to your networks DNS resolving.
+| If using |postfix| as |abbr_mta|, the service has to be configured to use */etc/hosts* before resolving to your networks DNS resolving.
| On **client1** and **client2** (*/etc/postfix/main.cf*):
.. code:: ini
@@ -243,3 +243,23 @@ _______________________
.. |postfix| raw:: html
<a href="http://www.postfix.org/" target="_blank">postfix</a>
+
+.. |abbr_ssh| raw:: html
+
+ <abbr title="Secure Shell" >SSH</abbr>
+
+.. |abbr_tun| raw:: html
+
+ <abbr title="network TUNnel (virtual-network kernel devices)" >TUN</abbr>
+
+.. |abbr_vpn| raw:: html
+
+ <abbr title="Virtual Private Network" >VPN</abbr>
+
+.. |abbr_tcp| raw:: html
+
+ <abbr title="Transmission Control Protocol" >TCP</abbr>
+
+.. |abbr_mta| raw:: html
+
+ <abbr title="Message Transfer Agent" >MTA</abbr>
diff --git a/posts/201508-hardware-section.rst b/posts/201508-hardware-section.rst
index 5bb730f..e0fdab7 100644
--- a/posts/201508-hardware-section.rst
+++ b/posts/201508-hardware-section.rst
@@ -9,7 +9,7 @@
| Again, it took me some time to write something of value here. But hey, it's quality over quantity, right?
| I've just expanded the spectrum of this website (after doing some major |visual_overhauls| and simultaneously dropping |markdown| in favor of |restructured_text|) by a `hardware section </hardware/>`_.
-| The first page I've added is something I have been working on over the past two months: My `modular suitcase </hardware/modular-suitcase/>`_ (a suitcase for :abbr:`Eurorack (A racking system for modular synthesizers, being 3U tall and a multiple of 2HP wide)` modules). Go check it out, copy/ modify the source files and build one yourself (if you dare!).
+| The first page I've added is something I have been working on over the past two months: My `modular suitcase </hardware/modular-suitcase/>`_ (a suitcase for |abbr_eurorack| modules). Go check it out, copy/ modify the source files and build one yourself (if you dare!).
| More devices will follow as soon as I have the time to write about them (or the desire to document them).
.. |visual_overhauls| raw:: html
@@ -24,3 +24,7 @@
<a href="https://en.wikipedia.org/wiki/ReStructuredText" target="_blank">reStructuredText</a>
+.. |abbr_eurorack| raw:: html
+
+ <abbr title="A racking system for modular synthesizers, being 3U tall and a multiple of 2HP wide" >Eurorack</abbr>
+
diff --git a/posts/201509-donaueschingen.rst b/posts/201509-donaueschingen.rst
index d20fb9f..08d6c5e 100644
--- a/posts/201509-donaueschingen.rst
+++ b/posts/201509-donaueschingen.rst
@@ -31,7 +31,7 @@ ____________
The piece
_________
| |orm_finnendahl_ast| is quite a challenging piece to perform, as it not only involves *"robots"* (designed by |hans_huebner|) that bang on different materials and thus have to be *"in tune"*, but also a nifty |puredata| based setup, that allows all involved musicians to sample themselves and improvise to those samples at certain times, while at the same time gives Finnendahl the possibility to oversee all of their actions according to local and global timelines.
-| Like all of his newer pieces, its score is written using :abbr:`LISP (a powerful family of functional programming languages)` and sonified by using backends that base on |supercollider| or |puredata|, while the spatialization is done in |puredata|.
+| Like all of his newer pieces, its score is written using |abbr_lisp| and sonified by using backends that base on |supercollider| or |puredata|, while the spatialization is done in |puredata|.
| Sounds like a powerful setup? It is!
.. figure:: /images/donaueschingen_ast_aftershow.jpg
@@ -128,3 +128,6 @@ ______________
<a href="http://supercollider.github.io/" target="_blank">SuperCollider</a>
+.. |abbr_lisp| raw:: html
+
+ <abbr title="a powerful family of functional programming languages" >LISP</abbr>
diff --git a/posts/201604-extended-longevity-of-a-htc-one-s-using-cyanogenmod.rst b/posts/201604-extended-longevity-of-a-htc-one-s-using-cyanogenmod.rst
index 71eb0f5..2d7531a 100644
--- a/posts/201604-extended-longevity-of-a-htc-one-s-using-cyanogenmod.rst
+++ b/posts/201604-extended-longevity-of-a-htc-one-s-using-cyanogenmod.rst
@@ -11,7 +11,7 @@ The mobile
__________
| I own a quite old - at least by today's standards of planned obsolescence for every consumer device - |htc_one_s| (2012), that won't be receiving any more Android upgrades (|htc_one_s_last_update|: version 4.0.4) or support by its manufacturer directly or any distributor for that matter.
| It's quite a nice, small and lightweight phone, that by now has seen the world and besides a self-administered chassis change hasn't yielded any serious problems.
-| The phone doesn't have much RAM or much space. Neither does it have a microSD card slot, :abbr:`NFC (Near field communication)` or other fancy new stuff that people seem to need.
+| The phone doesn't have much RAM or much space. Neither does it have a microSD card slot, |abbr_nfc| or other fancy new stuff that people seem to need.
|
CyanogenMod
@@ -33,13 +33,13 @@ _______
* |f-droid_antennapod| - Advanced podcast manager and player
* |f-droid_ardroid| - Remote control for |ardour|
* |f-droid_cadroid| - Certificate importer
-* |f-droid_connectbot| - :abbr:`SSH (Secure Shell)` and local shell client
-* |f-droid_conversations| - :abbr:`XMPP (Extensible Messaging and Presence Protocol)` client
+* |f-droid_connectbot| - |abbr_ssh| and local shell client
+* |f-droid_conversations| - |abbr_xmpp| client
* |f-droid_davdroid| - Contacts and Calendar sync
* |f-droid_droidshows| - TV series browser and tracker
* |f-droid_f-droid| - Application manager
* |f-droid_firefox| - Web browser
-* |f-droid_irssi_connectbot| - Specialised :abbr:`SSH (Secure Shell)` Client
+* |f-droid_irssi_connectbot| - Specialised |abbr_ssh| Client
* |f-droid_k-9_mail| - Full-featured email client
* |f-droid_kontalk| - Community-driven messaging
* |f-droid_kore| - Remote control for |kodi| (XBMC)
@@ -54,7 +54,7 @@ _______
* |f-droid_openkeychain| - Encrypt files and communications with OpenPGP
* |f-droid_opentasks| - Keep track of your list of goals
* |f-droid_openvpn_for_android| - |openvpn| without root
-* |f-droid_openvpn_settings| - :abbr:`VPN (Virtual Private Network)` settings
+* |f-droid_openvpn_settings| - |abbr_vpn| settings
* |f-droid_osmand| - Offline/online maps and navigation
* |f-droid_orbot| - |tor_project| (anonymity) client
* |f-droid_orwall| - Force apps to use |tor_project|
@@ -64,7 +64,7 @@ _______
* |f-droid_practice_hub| - Tools for musicians
* |f-droid_port_authority| - Port scanner
* |f-droid_quickdic| - Offline translation dictionary
-* |f-droid_sms_backup| - Backup :abbr:`SMS (Short Message Service)` and call logs to :abbr:`IMAP (Internet Message Access Protocol)`
+* |f-droid_sms_backup| - Backup |abbr_sms| and call logs to |abbr_imap|
* |f-droid_silence| - Send encrypted text messages (SMS/MMS)
* |f-droid_satstat| - Signal Generator for tablets
* |f-droid_signal_generator| - Signal Generator for tablets
@@ -84,8 +84,8 @@ ________________
| One of the more notable projects was to bring |tor_project| to Android.
| The |guardian_project| has more buns in the oven though. Some are directly available through |f-droid|, others only through their own |guardian_project_repository|. This is a collection of the currently available projects:
-* |guardian_project_chatsecure| - A free and open source messaging app that features |otr| encryption over :abbr:`XMPP (Extensible Messaging and Presence Protocol)`
-* |guardian_project_orbot| - A free :abbr:`proxy (a computer network service that allows clients to make indirect network connections to other network services)` app that empowers other apps to use the internet more securely
+* |guardian_project_chatsecure| - A free and open source messaging app that features |otr| encryption over |abbr_xmpp|
+* |guardian_project_orbot| - A free |abbr_proxy| app that empowers other apps to use the internet more securely
* |guardian_project_camerav| - The easiest way to capture and share verifiable photos and video proof on a smartphone or tablet, all the while keeping it entirely secure and private
* |guardian_project_obscuracam| - A photo and video app for Android that keeps certain information private.
* |guardian_project_pixelknot| - An Android application that allows users to hide short text-based messages in photographs and share them across trusted channels.
@@ -397,3 +397,31 @@ Yay!
<a href="https://wiki.cyanogenmod.org/w/Devices" target="_blank">supported devices</a>
+.. |abbr_nfc| raw:: html
+
+ <abbr title="Near field communication" >NFC</abbr>
+
+.. |abbr_ssh| raw:: html
+
+ <abbr title="Secure Shell" >SSH</abbr>
+
+.. |abbr_xmpp| raw:: html
+
+ <abbr title="Extensible Messaging and Presence Protocol" >XMPP</abbr>
+
+.. |abbr_vpn| raw:: html
+
+ <abbr title="Virtual Private Network" >VPN</abbr>
+
+.. |abbr_sms| raw:: html
+
+ <abbr title="Short Message Service" >SMS</abbr>
+
+.. |abbr_imap| raw:: html
+
+ <abbr title="Internet Message Access Protocol" >IMAP</abbr>
+
+.. |abbr_proxy| raw:: html
+
+ <abbr title="a computer network service that allows clients to make indirect network connections to other network services" >proxy</abbr>
+
diff --git a/posts/201604-linux-audio-conference-2016.rst b/posts/201604-linux-audio-conference-2016.rst
index 63309dc..9f78ee9 100644
--- a/posts/201604-linux-audio-conference-2016.rst
+++ b/posts/201604-linux-audio-conference-2016.rst
@@ -10,7 +10,7 @@
The conference
______________
| The |linux_audio_conference| is actually a quite old concept by now. Started as a small Linux Audio user group meeting at LinuxTag back in 2002, the conference more and more developed into a multi-national event, thanks to people such as Frank Neumann (who by the way initially had a *"hacker meeting"* in mind) and places like the |zkm|.
-| As more universities hosted it, its academic side strengthened, leading to proper :abbr:`proceedings (In academia, proceedings are the collection of academic papers published in the context of an academic conference.)`, paper and poster presentations.
+| As more universities hosted it, its academic side strengthened, leading to proper |abbr_proceedings|, paper and poster presentations.
| Generally speaking it has also always been a place to present software, do workshops to show people how to use software and try it out - suited for developers, users and interested alike!
| Another nice aspect that evolved over the years is the concept of the *"Linux Sound Night"*, giving the stage to the artists to present their pieces or perform live.
| There's obviously a lot more to the history of the |linux_audio_conference| (which is no wonder after such a long time!), than I could elaborate on.
@@ -19,8 +19,8 @@ ______________
| This is where I offer you the following three choices:
|
-* :abbr:`tl;dr (Too long; didn't read)`, *"I don't care about the pain, take me to the good times!"*: Just skip the *"how"* and go to `the results </2016/linux-audio-conference-2016#minilac>`_
-* :abbr:`tl;dr (Too long; didn't read)`, *"I only care about the pain"*: Watch |video_lac_is_dead_long_live_minilac|
+* |abbr_tldr|, *"I don't care about the pain, take me to the good times!"*: Just skip the *"how"* and go to `the results </2016/linux-audio-conference-2016#minilac>`_
+* |abbr_tldr|, *"I only care about the pain"*: Watch |video_lac_is_dead_long_live_minilac|
* *"I'm all up for pain (and good times, for that matter)"*: Read on! Additionally watch |video_lac_is_dead_long_live_minilac|
@@ -65,7 +65,7 @@ _________
|
| Two weeks before the start of |minilac| the wiki was attacked by a wave of spammers and I had to deal with the unpleasant work of deleting the pages of 500 spambots, blocking their accounts and strengthening the (hastily setup) security measures for the wiki. Lesson learnt.
| Apart from the spambots the wiki also entailed another issue, that has to do with the way the |voc| operates. Being free-time professionals, they usually have conferences use |frab| for dealing with the content, which is an all-in-one conference management system, that generates all things needed for streaming, |info-beamer|, interfacing the |engelsystem| and generating a |fahrplan| (especially the latter is super helpful during large events to keep track of what is happening where, as there's also an Android App available for it).
-| This meant parsing the information from our wiki and generating the needed :abbr:`XML (Extensible Markup Language)` and :abbr:`JSON (JavaScript Object Notation)` files ourselves. Pretty painful, but we got it done (well, apart from triggering a bunch of bugs in the |voc|'s |voc_schedule_validator|, which lead to never being able to generate a proper |fahrplan|).
+| This meant parsing the information from our wiki and generating the needed |abbr_xml| and |abbr_json| files ourselves. Pretty painful, but we got it done (well, apart from triggering a bunch of bugs in the |voc|'s |voc_schedule_validator|, which lead to never being able to generate a proper |fahrplan|).
| Last minute fixes for the |info-beamer| were needed as well, but thanks to the |voc|, we got them done just in time!
| Meanwhile I prepared some hardware to be lent from the |electronic_studio| and the insurance for the |voc| equipment (to be used in combination with already available |c-base| hardware).
|
@@ -358,3 +358,19 @@ These are the lessons learnt from doing this event:
<a href="http://zkm.de" target="_blank">ZKM</a>
+.. |abbr_proceedings| raw:: html
+
+ <abbr title="In academia, proceedings are the collection of academic papers published in the context of an academic conference" >proceedings</abbr>
+
+.. |abbr_tldr| raw:: html
+
+ <abbr title="Too long; didn't read" >tl;dr</abbr>
+
+.. |abbr_xml| raw:: html
+
+ <abbr title="Extensible Markup Language" >XML</abbr>
+
+.. |abbr_json| raw:: html
+
+ <abbr title="JavaScript Object Notation" >JSON</abbr>
+
diff --git a/posts/201604-mssw.rst b/posts/201604-mssw.rst
index bf563cd..1ad578f 100644
--- a/posts/201604-mssw.rst
+++ b/posts/201604-mssw.rst
@@ -9,7 +9,7 @@
In the beginning there was one
______________________________
-| Last year, when I started building :abbr:`Eurorack (synthesizer modules designed to be rackmounted, each being 3U tall and a multiple of 2HP wide)`, what eventually took it's peak of craziness in `building my own suitcase </hardware/modular-suitcase/>`_, I got to know the great folks at |befaco|, a Spanish group of friends that started designing and eventually selling their own modules.
+| Last year, when I started building |abbr_eurorack|, what eventually took it's peak of craziness in `building my own suitcase </hardware/modular-suitcase/>`_, I got to know the great folks at |befaco|, a Spanish group of friends that started designing and eventually selling their own modules.
| Back then, the |nk| still existed as a venue and it was host to many concerts alongside the DIY workshops of |befaco| (taken care of by |florian_hanisch|).
| When it |nk-closing-statement|, I had already spent some time at |c-base| and found it to be a great place for synthesizer workshops (I mean, what better place for synths is there, but a space station? Well, maybe cats *and* synthesizers at a space station!).
|
@@ -233,3 +233,8 @@ _____________
<audio controls preload="metadata">
<source src="https://static.sleepmap.de/audio/20160403-MSSW-Showcases_DerWarst.mp3" type="audio/mpeg">
</audio>
+
+.. |abbr_eurorack| raw:: html
+
+ <abbr title="A racking system for modular synthesizers, being 3U tall and a multiple of 2HP wide" >Eurorack</abbr>
+
diff --git a/posts/201609-darmstadt.rst b/posts/201609-darmstadt.rst
index d37524a..63b6132 100644
--- a/posts/201609-darmstadt.rst
+++ b/posts/201609-darmstadt.rst
@@ -26,7 +26,7 @@ Collidin'
_________
| While the musicians involved did a very fine job rehearsing the piece in such a short amount of time, a pressure project like this obviously leads to friction, which luckily is released after the premiere has taken place.
| I for my part had a relatively relaxed job behind the mixing desk, as I monitored a piece of software I wrote to feed Lutz's |website-vvvv| with |wiki-osc| messages derived from the various audio inputs coming from musicians and microphones.
-| As a little inside joke I baptized this |website-supercollider| application |bowelyzer|. It is able to monitor up to *n* channels (also *n* times each) and send |wiki-osc| messages depending on the settings you choose. It uses :abbr:`JSON (Javascript Object Notation)` for saving and loading its settings.
+| As a little inside joke I baptized this |website-supercollider| application |bowelyzer|. It is able to monitor up to *n* channels (also *n* times each) and send |wiki-osc| messages depending on the settings you choose. It uses |abbr_json| for saving and loading its settings.
| These are the settings we used for |tolerance_stacks|:
.. code:: javascript
@@ -288,7 +288,7 @@ _________
| If you are interested, go and check out its |bowelyzer-about| page.
|
-| So, while Lutz was sitting in front of the stage, dealing with a bunch of camera-enhanced |website-rpi3|, that in turns filmed parts of the musicians' work, |bowelyzer| sent its messages, which were used to morph and move the video pieces, over :abbr:`LAN (Local Area Network)`.
+| So, while Lutz was sitting in front of the stage, dealing with a bunch of camera-enhanced |website-rpi3|, that in turns filmed parts of the musicians' work, |bowelyzer| sent its messages, which were used to morph and move the video pieces, over |abbr_lan|.
| In the meantime we were able to communicate through a local |website-etherpad| instance.
| Overall a very nice process, that got more visually interesting by the minute (although I must admit I liked the second performance's visuals the best).
|
@@ -421,3 +421,10 @@ _________
<a href="https://ccc.de" target="_blank">CCC</a>
+.. |abbr_json| raw:: html
+
+ <abbr title="Javascript Object Notation">JSON</abbr>
+
+.. |abbr_lan| raw:: html
+
+ <abbr title="Local Area Network">LAN</abbr>
diff --git a/posts/201609-letsencrypt.rst b/posts/201609-letsencrypt.rst
index 060681f..2ba4221 100644
--- a/posts/201609-letsencrypt.rst
+++ b/posts/201609-letsencrypt.rst
@@ -147,7 +147,7 @@ Snippets
include mail.domain.conf;
}
-| The initial configuration already shows, that we now have three services that will need to be covered by the certificate, which we want to get. The |website-roundcube| webmail service I picked for demonstrational purposes as a hidden service. This is not meant to badmouth their security, but to show that you can hide your service behind a :abbr:`VPN (Virtual Private Network)`, if you choose to.
+| The initial configuration already shows, that we now have three services that will need to be covered by the certificate, which we want to get. The |website-roundcube| webmail service I picked for demonstrational purposes as a hidden service. This is not meant to badmouth their security, but to show that you can hide your service behind a |abbr_vpn|, if you choose to.
| To achieve something like that, you can use the |website-nginx| geo plugin. When you setup a VPN infrastructure, this will lead to you having a separate connection to your server within a |wiki-private_network|. For the sake of simplicity let us assume your server will have **172.16.0.1** and your client computer **172.16.0.2** as IPs in this setup.
| On your server you can now explicitely look for the correct client and allow or deny access. Another block for the |website-nginx| configuration can be used to let you include this in your domain configurations:
|
@@ -306,7 +306,7 @@ moar snippets
add_header X-XSS-Protection "1; mode=block";
add_header X-Robots-Tag "none";
-| A little note on the **Content-Security-Policy** here: Usually one would try to have the targets (**default-src**, **connect-src**, **img-src**, **script-src**, **style-src**) be set to *'self'*. Due to the inline :abbr:`CSS (Cascading Style Sheets)` and Javascript in services such as |website-owncloud| and |website-roundcube|, this is not possible though, so *'unsafe_inline'* and *'unsafe_eval'* have to be added as well for some of them.
+| A little note on the **Content-Security-Policy** here: Usually one would try to have the targets (**default-src**, **connect-src**, **img-src**, **script-src**, **style-src**) be set to *'self'*. Due to the inline |abbr_css| and Javascript in services such as |website-owncloud| and |website-roundcube|, this is not possible though, so *'unsafe_inline'* and *'unsafe_eval'* have to be added as well for some of them.
| At this point you could of course also choose to create differing *'security_headers'* inclusions for the services you run.
| Depending on which are running, you will want to monitor your developer console in your browser closely after using this security header. It will tell you, if CFP is blocking some resource (and possibly making it unusable).
@@ -563,7 +563,7 @@ Your mail server can also use this certificate now (if your |wiki-mx_record| poi
Dovecot
+++++++
-The same counts for your :abbr:`IMAP (Internet Message Access Protocol)` server:
+The same counts for your |abbr_imap| server:
* */etc/dovecot/dovecot.conf*
@@ -574,7 +574,7 @@ The same counts for your :abbr:`IMAP (Internet Message Access Protocol)` server:
Prosody
+++++++
-| The :abbr:`XMPP (Extensible Messaging and Presence Protocol)`/Jabber server is unfortunately not able to directly access the data in */etc/letsencrypt/live/domain.tld*, because it runs as its own user (*prosody*).
+| The |abbr_xmpp|/Jabber server is unfortunately not able to directly access the data in */etc/letsencrypt/live/domain.tld*, because it runs as its own user (*prosody*).
| You can work around this issue by either changing many permissions, or copy the set of files over to */etc/prosody/certs/* and set these up in your configuration.
| I recommend the latter, as otherwise you will have to change many file and directory permissions, that are seemingly handled by |website-certbot| and thus lower the overall security of your system.
|
@@ -876,3 +876,18 @@ Renewal
<a href="https://prosody.im" target="_blank">prosody</a>
+.. |abbr_vpn| raw:: html
+
+ <abbr title="Virtual Private Network" >VPN</abbr>
+
+.. |abbr_css| raw:: html
+
+ <abbr title="Cascading Style Sheets" >CSS</abbr>
+
+.. |abbr_imap| raw:: html
+
+ <abbr title="Internet Message Access Protocol" >IMAP</abbr>
+
+.. |abbr_xmpp| raw:: html
+
+ <abbr title="Extensible Messaging and Presence Protocol" >XMPP</abbr>
diff --git a/posts/201610-uwsgi.rst b/posts/201610-uwsgi.rst
index cf84e42..881fbfe 100644
--- a/posts/201610-uwsgi.rst
+++ b/posts/201610-uwsgi.rst
@@ -530,7 +530,7 @@ ownCloud
Mailman
-------
| The mailing list software |website-mailman| has been around for ages. The |website-python|-based scripts, templates and |wiki-cgi| frontend are used all around the globe in small to large-scale setups.
-| Due to its age and the sometimes very quirky adoptation of the software by several Linux distributions, |website-mailman| has a not so trivial setup (after all you have to connect it to your :abbr:`MTA (Mail Transfer Agent)` and serve its web-frontend).
+| Due to its age and the sometimes very quirky adoptation of the software by several Linux distributions, |website-mailman| has a not so trivial setup (after all you have to connect it to your |abbr_mta| and serve its web-frontend).
| It was slightly annoying to set it up in my case, but eventually it all worked out.
|
@@ -639,7 +639,7 @@ Mailman
Stikked
-------
-| The |website-php|-based little webapp |website-stikked| is able to be your own little |website-pastebin| replacement. There are also some nice :abbr:`cli (command line interface)`'s around for it.
+| The |website-php|-based little webapp |website-stikked| is able to be your own little |website-pastebin| replacement. There are also some nice |abbr_cli|'s around for it.
|
* */etc/nginx/stikked.conf*
@@ -723,7 +723,7 @@ Stikked
Wordpress
---------
-| Although I try really hard to get around |website-wordpress| wherever I can by now, it is used by many for their websites and I am also still responsible for a few instances myself. According to its |wiki-wordpress|, the |website-php|-based :abbr:`CMS (content management system)` has reached a worldwide coverage of more than 25%.
+| Although I try really hard to get around |website-wordpress| wherever I can by now, it is used by many for their websites and I am also still responsible for a few instances myself. According to its |wiki-wordpress|, the |website-php|-based |abbr_cms| has reached a worldwide coverage of more than 25%.
| That's pretty crazy, considering its |wiki-wordpress_vulnerabilities|.
* */etc/nginx/wordpress.conf*
@@ -857,7 +857,7 @@ Wordpress
PostfixAdmin
------------
| When using |website-postfix| as your *MTA* and |website-mariadb| as a backend for your user data, |website-postfixadmin| is a very nice and easy choice to add, delete and change accounts, forwards, etc. for all the domains you run.
-| Nevertheless, this is most likely one of those webapps you might want to hide behind a geoblocker and use a :abbr:`VPN (Virtual Private Network)` to access it.
+| Nevertheless, this is most likely one of those webapps you might want to hide behind a geoblocker and use a |abbr_vpn| to access it.
* */etc/nginx/postfixadmin.conf*
@@ -1015,7 +1015,7 @@ phpMyAdmin
cgit
----
-| The blazingly fast |wiki-cgi| web-interface for |website-git| - the amazing :abbr:`VCS (version control system)` - is a must for everyone self-hosting some repositories.
+| The blazingly fast |wiki-cgi| web-interface for |website-git| - the amazing |abbr_vcs| - is a must for everyone self-hosting some repositories.
| |website-cgit| does not require a database, is themeable and very configurable. In conjunction with lightweight access control systems, such as |website-gitosis|, you get a very fast and flexible setup.
|
@@ -1445,3 +1445,23 @@ _________
<a href="https://codex.wordpress.org/Create_A_Network" target="_blank">multisite feature</a>
+.. |abbr_mta| raw:: html
+
+ <abbr title="Message Transfer Agent" >MTA</abbr>
+
+.. |abbr_cli| raw:: html
+
+ <abbr title="command line interface" >cli</abbr>
+
+.. |abbr_cms| raw:: html
+
+ <abbr title="content management system" >CMS</abbr>
+
+.. |abbr_vpn| raw:: html
+
+ <abbr title="Virtual Private Network" >VPN</abbr>
+
+.. |abbr_vcs| raw:: html
+
+ <abbr title="version control system" >VCS</abbr>
+