From 2612805de7de8795c3f9092fc5f93671a8553150 Mon Sep 17 00:00:00 2001
From: Jan Ulrich Hasecke <jan.ulrich@hasecke.com>
Date: Thu, 30 Jun 2022 10:11:45 +0200
Subject: [PATCH] Pandoc-ConTeXt Branch

---
 source/referenz/index.md                                   |   12 
 source/referenz/tls/standard.md                            |   14 
 Pipfile.lock                                               |  246 ++
 source/referenz/zonefile/expandiertes-standard-zonefile.md |   36 
 source/referenz/zonefile/index.md                          |   20 
 source/glossar.md                                          |  126 +
 source/referenz/domain/domain-optionen.md                  |   89 +
 Pipfile                                                    |   13 
 source/referenz/email/index.md                             |   37 
 source/referenz/backup.md                                  |   52 
 source/referenz/hsadmin/index.md                           |   66 
 source/referenz/email/posteingangsserver.md                |   15 
 source/referenz/email/emailalias-paketuser.md              |    9 
 source/referenz/hsadmin/mysqldb.md                         |   79 
 source/einstieg/passwort.md                                |  127 +
 source/referenz/webpaket/verzeichnisebenen-email-nutzer.md |   19 
 source/referenz/tls/filemap-ohne-ssl.md                    |   48 
 source/referenz/benutzer/index.md                          |   89 +
 source/einstieg/email.md                                   |  271 +++
 source/referenz/webpaket/verzeichnisebenen-paket-admin.md  |   54 
 source/referenz/hsadmin/postgresqldb.md                    |   72 
 source/plattform/redundanz.md                              |   10 
 source/referenz/zonefile/expansion-platzhalter.md          |   88 +
 source/referenz/logging/index.md                           |   70 
 source/referenz/tls/eigene-tls-zertifikate.md              |   17 
 source/plattform/backup.md                                 |   12 
 source/plattform/index.md                                  |    8 
 source/referenz/webpaket/speicherbelegung.md               |   44 
 source/referenz/hsadmin/postgresqluser.md                  |   83 
 source/referenz/email/autoconfig.md                        |   39 
 source/referenz/hsadmin/q.md                               |   22 
 source/mail/index.md                                       |  268 +++
 source/referenz/hsadmin/mysqluser.md                       |   79 
 source/referenz/zonefile/eigenes-zonefile.md               |   29 
 source/referenz/hsadmin/syntax.md                          |   65 
 source/referenz/tls/letsencrypt.md                         |   45 
 source/referenz/datenbanken/index.md                       |   19 
 source/einstieg/datenbank.md                               |  145 +
 source/referenz/hsadmin/emailaddress.md                    |  135 +
 source/referenz/wartungsfenster.md                         |   26 
 source/referenz/domain/subdomains.md                       |   46 
 source/einstieg/index.md                                   |   23 
 source/referenz/zonefile/platzhalter.md                    |   90 +
 source/index.md                                            |   55 
 source/plattform/replikation.md                            |   11 
 source/referenz/hsadmin/emailaliases.md                    |   83 
 source/referenz/hsadmin/domain.md                          |  150 +
 source/referenz/datenbanken/datenbanken-nutzer.md          |   21 
 source/referenz/domain/index.md                            |   58 
 source/referenz/hostkeys.md                                |  123 +
 source/referenz/webpaket/verzeichnisebenen-domain-admin.md |  155 +
 source/referenz/datenbanken/datenbank-webfrontend.md       |    7 
 source/referenz/tls/index.md                               |   21 
 source/referenz/hsadmin/skript.md                          |  294 +++
 source/referenz/datenbanken/datenbank-zugriff.md           |   12 
 source/referenz/email/postausgangsserver.md                |   38 
 source/plattform/rechenzentren.md                          |   37 
 source/einstieg/benutzer-anlegen.md                        |  135 +
 source/referenz/hsadmin/user.md                            |  105 +
 source/einfuehrung/index.md                                |  142 +
 source/referenz/tls/varianten.md                           |   24 
 source/referenz/email/size-email.md                        |    7 
 source/referenz/webpaket/index.md                          |   55 
 source/einstieg/webspace.md                                |  216 ++
 source/plattform/monitoring.md                             |   12 
 source/referenz/hsadmin/webfrontend.md                     |    8 
 source/einstieg/ssh-key.md                                 |   42 
 source/referenz/tls/filemap-mit-ssl.md                     |   49 
 source/referenz/domain/domainverwaltung.md                 |  114 +
 source/plattform/netze.md                                  |   45 
 source/referenz/email/webmail.md                           |    7 
 source/referenz/htaccess.md                                |   94 +
 source/einstieg/domain.md                                  |  117 +
 source/referenz/zonefile/eigenes-zonefile-deaktivieren.md  |    5 
 source/referenz/zonefile/kontrolle-aenderungen.md          |   34 
 source/referenz/php.md                                     |   61 
 76 files changed, 5,194 insertions(+), 0 deletions(-)

diff --git a/Pipfile b/Pipfile
new file mode 100644
index 0000000..cf0b5a9
--- /dev/null
+++ b/Pipfile
@@ -0,0 +1,13 @@
+[[source]]
+url = "https://pypi.python.org/simple"
+verify_ssl = true
+name = "pypi"
+
+[packages]
+sphinx = "*"
+sphinx-rtd-theme = "*"
+
+[dev-packages]
+
+[requires]
+python_version = "3.9"
diff --git a/Pipfile.lock b/Pipfile.lock
new file mode 100644
index 0000000..4056638
--- /dev/null
+++ b/Pipfile.lock
@@ -0,0 +1,246 @@
+{
+    "_meta": {
+        "hash": {
+            "sha256": "7205e21d1d077da165229a43df71ccc4632036cd489e3b52253d96ad687c038f"
+        },
+        "pipfile-spec": 6,
+        "requires": {
+            "python_version": "3.9"
+        },
+        "sources": [
+            {
+                "name": "pypi",
+                "url": "https://pypi.python.org/simple",
+                "verify_ssl": true
+            }
+        ]
+    },
+    "default": {
+        "alabaster": {
+            "hashes": [
+                "sha256:446438bdcca0e05bd45ea2de1668c1d9b032e1a9154c2c259092d77031ddd359",
+                "sha256:a661d72d58e6ea8a57f7a86e37d86716863ee5e92788398526d58b26a4e4dc02"
+            ],
+            "version": "==0.7.12"
+        },
+        "babel": {
+            "hashes": [
+                "sha256:ab49e12b91d937cd11f0b67cb259a57ab4ad2b59ac7a3b41d6c06c0ac5b0def9",
+                "sha256:bc0c176f9f6a994582230df350aa6e05ba2ebe4b3ac317eab29d9be5d2768da0"
+            ],
+            "version": "==2.9.1"
+        },
+        "certifi": {
+            "hashes": [
+                "sha256:78884e7c1d4b00ce3cea67b44566851c4343c120abd683433ce934a68ea58872",
+                "sha256:d62a0163eb4c2344ac042ab2bdf75399a71a2d8c7d47eac2e2ee91b9d6339569"
+            ],
+            "version": "==2021.10.8"
+        },
+        "charset-normalizer": {
+            "hashes": [
+                "sha256:2857e29ff0d34db842cd7ca3230549d1a697f96ee6d3fb071cfa6c7393832597",
+                "sha256:6881edbebdb17b39b4eaaa821b438bf6eddffb4468cf344f09f89def34a8b1df"
+            ],
+            "markers": "python_version >= '3'",
+            "version": "==2.0.12"
+        },
+        "docutils": {
+            "hashes": [
+                "sha256:686577d2e4c32380bb50cbb22f575ed742d58168cee37e99117a854bcd88f125",
+                "sha256:cf316c8370a737a022b72b56874f6602acf974a37a9fba42ec2876387549fc61"
+            ],
+            "version": "==0.17.1"
+        },
+        "idna": {
+            "hashes": [
+                "sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff",
+                "sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d"
+            ],
+            "markers": "python_version >= '3'",
+            "version": "==3.3"
+        },
+        "imagesize": {
+            "hashes": [
+                "sha256:1db2f82529e53c3e929e8926a1fa9235aa82d0bd0c580359c67ec31b2fddaa8c",
+                "sha256:cd1750d452385ca327479d45b64d9c7729ecf0b3969a58148298c77092261f9d"
+            ],
+            "version": "==1.3.0"
+        },
+        "importlib-metadata": {
+            "hashes": [
+                "sha256:1208431ca90a8cca1a6b8af391bb53c1a2db74e5d1cef6ddced95d4b2062edc6",
+                "sha256:ea4c597ebf37142f827b8f39299579e31685c31d3a438b59f469406afd0f2539"
+            ],
+            "markers": "python_version < '3.10'",
+            "version": "==4.11.3"
+        },
+        "jinja2": {
+            "hashes": [
+                "sha256:539835f51a74a69f41b848a9645dbdc35b4f20a3b601e2d9a7e22947b15ff119",
+                "sha256:640bed4bb501cbd17194b3cace1dc2126f5b619cf068a726b98192a0fde74ae9"
+            ],
+            "version": "==3.1.1"
+        },
+        "markupsafe": {
+            "hashes": [
+                "sha256:0212a68688482dc52b2d45013df70d169f542b7394fc744c02a57374a4207003",
+                "sha256:089cf3dbf0cd6c100f02945abeb18484bd1ee57a079aefd52cffd17fba910b88",
+                "sha256:10c1bfff05d95783da83491be968e8fe789263689c02724e0c691933c52994f5",
+                "sha256:33b74d289bd2f5e527beadcaa3f401e0df0a89927c1559c8566c066fa4248ab7",
+                "sha256:3799351e2336dc91ea70b034983ee71cf2f9533cdff7c14c90ea126bfd95d65a",
+                "sha256:3ce11ee3f23f79dbd06fb3d63e2f6af7b12db1d46932fe7bd8afa259a5996603",
+                "sha256:421be9fbf0ffe9ffd7a378aafebbf6f4602d564d34be190fc19a193232fd12b1",
+                "sha256:43093fb83d8343aac0b1baa75516da6092f58f41200907ef92448ecab8825135",
+                "sha256:46d00d6cfecdde84d40e572d63735ef81423ad31184100411e6e3388d405e247",
+                "sha256:4a33dea2b688b3190ee12bd7cfa29d39c9ed176bda40bfa11099a3ce5d3a7ac6",
+                "sha256:4b9fe39a2ccc108a4accc2676e77da025ce383c108593d65cc909add5c3bd601",
+                "sha256:56442863ed2b06d19c37f94d999035e15ee982988920e12a5b4ba29b62ad1f77",
+                "sha256:671cd1187ed5e62818414afe79ed29da836dde67166a9fac6d435873c44fdd02",
+                "sha256:694deca8d702d5db21ec83983ce0bb4b26a578e71fbdbd4fdcd387daa90e4d5e",
+                "sha256:6a074d34ee7a5ce3effbc526b7083ec9731bb3cbf921bbe1d3005d4d2bdb3a63",
+                "sha256:6d0072fea50feec76a4c418096652f2c3238eaa014b2f94aeb1d56a66b41403f",
+                "sha256:6fbf47b5d3728c6aea2abb0589b5d30459e369baa772e0f37a0320185e87c980",
+                "sha256:7f91197cc9e48f989d12e4e6fbc46495c446636dfc81b9ccf50bb0ec74b91d4b",
+                "sha256:86b1f75c4e7c2ac2ccdaec2b9022845dbb81880ca318bb7a0a01fbf7813e3812",
+                "sha256:8dc1c72a69aa7e082593c4a203dcf94ddb74bb5c8a731e4e1eb68d031e8498ff",
+                "sha256:8e3dcf21f367459434c18e71b2a9532d96547aef8a871872a5bd69a715c15f96",
+                "sha256:8e576a51ad59e4bfaac456023a78f6b5e6e7651dcd383bcc3e18d06f9b55d6d1",
+                "sha256:96e37a3dc86e80bf81758c152fe66dbf60ed5eca3d26305edf01892257049925",
+                "sha256:97a68e6ada378df82bc9f16b800ab77cbf4b2fada0081794318520138c088e4a",
+                "sha256:99a2a507ed3ac881b975a2976d59f38c19386d128e7a9a18b7df6fff1fd4c1d6",
+                "sha256:a49907dd8420c5685cfa064a1335b6754b74541bbb3706c259c02ed65b644b3e",
+                "sha256:b09bf97215625a311f669476f44b8b318b075847b49316d3e28c08e41a7a573f",
+                "sha256:b7bd98b796e2b6553da7225aeb61f447f80a1ca64f41d83612e6139ca5213aa4",
+                "sha256:b87db4360013327109564f0e591bd2a3b318547bcef31b468a92ee504d07ae4f",
+                "sha256:bcb3ed405ed3222f9904899563d6fc492ff75cce56cba05e32eff40e6acbeaa3",
+                "sha256:d4306c36ca495956b6d568d276ac11fdd9c30a36f1b6eb928070dc5360b22e1c",
+                "sha256:d5ee4f386140395a2c818d149221149c54849dfcfcb9f1debfe07a8b8bd63f9a",
+                "sha256:dda30ba7e87fbbb7eab1ec9f58678558fd9a6b8b853530e176eabd064da81417",
+                "sha256:e04e26803c9c3851c931eac40c695602c6295b8d432cbe78609649ad9bd2da8a",
+                "sha256:e1c0b87e09fa55a220f058d1d49d3fb8df88fbfab58558f1198e08c1e1de842a",
+                "sha256:e72591e9ecd94d7feb70c1cbd7be7b3ebea3f548870aa91e2732960fa4d57a37",
+                "sha256:e8c843bbcda3a2f1e3c2ab25913c80a3c5376cd00c6e8c4a86a89a28c8dc5452",
+                "sha256:efc1913fd2ca4f334418481c7e595c00aad186563bbc1ec76067848c7ca0a933",
+                "sha256:f121a1420d4e173a5d96e47e9a0c0dcff965afdf1626d28de1460815f7c4ee7a",
+                "sha256:fc7b548b17d238737688817ab67deebb30e8073c95749d55538ed473130ec0c7"
+            ],
+            "version": "==2.1.1"
+        },
+        "packaging": {
+            "hashes": [
+                "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb",
+                "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522"
+            ],
+            "version": "==21.3"
+        },
+        "pygments": {
+            "hashes": [
+                "sha256:44238f1b60a76d78fc8ca0528ee429702aae011c265fe6a8dd8b63049ae41c65",
+                "sha256:4e426f72023d88d03b2fa258de560726ce890ff3b630f88c21cbb8b2503b8c6a"
+            ],
+            "version": "==2.11.2"
+        },
+        "pyparsing": {
+            "hashes": [
+                "sha256:18ee9022775d270c55187733956460083db60b37d0d0fb357445f3094eed3eea",
+                "sha256:a6c06a88f252e6c322f65faf8f418b16213b51bdfaece0524c1c1bc30c63c484"
+            ],
+            "version": "==3.0.7"
+        },
+        "pytz": {
+            "hashes": [
+                "sha256:1e760e2fe6a8163bc0b3d9a19c4f84342afa0a2affebfaa84b01b978a02ecaa7",
+                "sha256:e68985985296d9a66a881eb3193b0906246245294a881e7c8afe623866ac6a5c"
+            ],
+            "version": "==2022.1"
+        },
+        "requests": {
+            "hashes": [
+                "sha256:68d7c56fd5a8999887728ef304a6d12edc7be74f1cfa47714fc8b414525c9a61",
+                "sha256:f22fa1e554c9ddfd16e6e41ac79759e17be9e492b3587efa038054674760e72d"
+            ],
+            "version": "==2.27.1"
+        },
+        "snowballstemmer": {
+            "hashes": [
+                "sha256:09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1",
+                "sha256:c8e1716e83cc398ae16824e5572ae04e0d9fc2c6b985fb0f900f5f0c96ecba1a"
+            ],
+            "version": "==2.2.0"
+        },
+        "sphinx": {
+            "hashes": [
+                "sha256:7bf8ca9637a4ee15af412d1a1d9689fec70523a68ca9bb9127c2f3eeb344e2e6",
+                "sha256:ebf612653238bcc8f4359627a9b7ce44ede6fdd75d9d30f68255c7383d3a6226"
+            ],
+            "index": "pypi",
+            "version": "==4.5.0"
+        },
+        "sphinx-rtd-theme": {
+            "hashes": [
+                "sha256:4d35a56f4508cfee4c4fb604373ede6feae2a306731d533f409ef5c3496fdbd8",
+                "sha256:eec6d497e4c2195fa0e8b2016b337532b8a699a68bcb22a512870e16925c6a5c"
+            ],
+            "index": "pypi",
+            "version": "==1.0.0"
+        },
+        "sphinxcontrib-applehelp": {
+            "hashes": [
+                "sha256:806111e5e962be97c29ec4c1e7fe277bfd19e9652fb1a4392105b43e01af885a",
+                "sha256:a072735ec80e7675e3f432fcae8610ecf509c5f1869d17e2eecff44389cdbc58"
+            ],
+            "version": "==1.0.2"
+        },
+        "sphinxcontrib-devhelp": {
+            "hashes": [
+                "sha256:8165223f9a335cc1af7ffe1ed31d2871f325254c0423bc0c4c7cd1c1e4734a2e",
+                "sha256:ff7f1afa7b9642e7060379360a67e9c41e8f3121f2ce9164266f61b9f4b338e4"
+            ],
+            "version": "==1.0.2"
+        },
+        "sphinxcontrib-htmlhelp": {
+            "hashes": [
+                "sha256:d412243dfb797ae3ec2b59eca0e52dac12e75a241bf0e4eb861e450d06c6ed07",
+                "sha256:f5f8bb2d0d629f398bf47d0d69c07bc13b65f75a81ad9e2f71a63d4b7a2f6db2"
+            ],
+            "version": "==2.0.0"
+        },
+        "sphinxcontrib-jsmath": {
+            "hashes": [
+                "sha256:2ec2eaebfb78f3f2078e73666b1415417a116cc848b72e5172e596c871103178",
+                "sha256:a9925e4a4587247ed2191a22df5f6970656cb8ca2bd6284309578f2153e0c4b8"
+            ],
+            "version": "==1.0.1"
+        },
+        "sphinxcontrib-qthelp": {
+            "hashes": [
+                "sha256:4c33767ee058b70dba89a6fc5c1892c0d57a54be67ddd3e7875a18d14cba5a72",
+                "sha256:bd9fc24bcb748a8d51fd4ecaade681350aa63009a347a8c14e637895444dfab6"
+            ],
+            "version": "==1.0.3"
+        },
+        "sphinxcontrib-serializinghtml": {
+            "hashes": [
+                "sha256:352a9a00ae864471d3a7ead8d7d79f5fc0b57e8b3f95e9867eb9eb28999b92fd",
+                "sha256:aa5f6de5dfdf809ef505c4895e51ef5c9eac17d0f287933eb49ec495280b6952"
+            ],
+            "version": "==1.1.5"
+        },
+        "urllib3": {
+            "hashes": [
+                "sha256:44ece4d53fb1706f667c9bd1c648f5469a2ec925fcf3a776667042d645472c14",
+                "sha256:aabaf16477806a5e1dd19aa41f8c2b7950dd3c746362d7e3223dbe6de6ac448e"
+            ],
+            "version": "==1.26.9"
+        },
+        "zipp": {
+            "hashes": [
+                "sha256:56bf8aadb83c24db6c4b577e13de374ccfb67da2078beba1d037c17980bf43ad",
+                "sha256:c4f6e5bbf48e74f7a38e7cc5b0480ff42b0ae5178957d564d18932525d5cf099"
+            ],
+            "version": "==3.8.0"
+        }
+    },
+    "develop": {}
+}
diff --git a/source/einfuehrung/index.md b/source/einfuehrung/index.md
new file mode 100644
index 0000000..8372234
--- /dev/null
+++ b/source/einfuehrung/index.md
@@ -0,0 +1,142 @@
+# Einleitung {#kap-einfuehrung}
+
+![image](../images/header/souveraenitaet.png)
+
+Dieses Handbuch richtet sich an Anwender, welche ihre Internetprojekte
+bei der Hostsharing eG betreiben möchten. Es bietet einen Überblick über
+die Infrastruktur, eine Einführung in deren Nutzung sowie eine
+Beschreibung typischer Prozesse.
+
+Unser besonderer Dank gilt allen, die zu diesem Handbuch beigetragen
+haben, insbesondere: Purodha Blissenbach, Christian Günter, Jan Ulrich
+Hasecke, Michael Hierweck, Peter Hormanns, Uwe Müller, Veit Schiele,
+Dominic Schlegel und Lars Trebing.
+
+## Managed Operations Platform
+
+Die Hostsharing eG betreibt für ihre Mitglieder eine [Managed Operations
+Platform](https://www.hostsharing.net/features/) für den Betrieb von
+Web-Anwendungen. Die gesamte bereitgestellte Infrastruktur -- von der
+Hardware über Netze bis zur Softwareumgebung mit ihren administrativen
+Tools -- wird von der Hostsharing eG bereitgestellt, gewartet,
+aktualisiert und überwacht, sodass sich die Mitglieder auf den Betrieb
+ihrer indviduellen Internetangebote konzentrieren können. Das Angebot
+wird durch passende Beratungs- und Unterstützungsleistungen abgerundet.
+
+## Web-Pakete
+
+Die Mitglieder nutzen die Managed Operations Platform in Form von
+Web-Paketen.
+
+Ein Web-Paket stellt einen Verbund von Benutzerkennungen, Domains,
+E-Mail-Adressen, Postfächern, Datenbanken und weiteren Funktionen dar,
+welchem Ressourcen wie Speicherplatz und Datentransfervolumen zugeordnet
+sind.
+
+Ein Web-Paket ermöglicht die Nutzung von:
+
+-   Web-Anwendungen
+-   Daemons
+-   E-Mail-Infrastruktur
+-   Domains und Subdomains
+-   TLS-Verschlüsselung
+-   Datenbanken
+-   verschiedenen Programmiersprachen
+
+Web-Pakete eignen sich zum Betrieb eines oder mehrerer Internetangebote.
+Jedes Mitglied kann beliebig viele Web-Pakete bestellen und verwalten.
+
+Ein Web-Paket kann einzeln als [Managed
+Webspace](https://www.hostsharing.net/angebote/managed-webspace/)
+gebucht werden. Auf einem [Managed
+Server](https://www.hostsharing.net/angebote/managed-server/) können ein
+oder mehrere Web-Pakete betrieben werden.
+
+## Managed Webspace
+
+![image](../images/icons/icon-managedwebspace.*){width="30.0%"}
+
+Mit der Buchung eines Managed Webspace erhält das Mitglied ein Webpaket,
+welches auf einem Server untergebracht ist, dessen Ressourcen sich die
+Mitglieder teilen (Shared Hosting). Mitglieder können mehrere Managed
+Webspaces buchen und erhalten mit jeder Buchung ein weiteres Web-Paket.
+
+Mit der Buchung von Managed Webspace erhält das Mitglied Speicherplatz
+zugewiesen, ein Traffic-Kontingent und ein Kontingent von
+Benutzerkonten, Datenbanken und E-Mail-Adressen. Diese Ressourcen sind
+modular zubuchbar. CPU und RAM werden gemeinsam genutzt.
+
+## Managed Server
+
+![image](../images/icons/icon-managedserver.*){width="30.0%"}
+
+Mit der Buchung eines Managed Servers erhält das Mitglied Speicherplatz,
+CPU und RAM dediziert zugewiesen sowie ein Traffic-Kontingent. Diese
+Ressourcen sind modular zubuchbar. Das Mitglied kann beliebig viele
+Benutzerkonten, Datenbanken und E-Mail-Adressen einrichten und sie in
+Form von Web-Paketen mandantenfähig gruppieren. Um einen Managed Server
+nutzen zu können, werden also auf diesem wenigstens ein, bei Bedarf auch
+mehrere Web-Pakete eingerichtet.
+
+Verschiedene Managed Server eines Mitglieds können auf Wunsch über
+interne Netze miteinander verbunden werden, um sichere Kommunikation
+zwischen Komponenten eines verteilten Deployments zu realisieren.
+
+Mehrere Mitglieder können sich einen Managed Server teilen. Ein
+Reselling an Endkunden ist möglich.
+
+## Best Practice
+
+Mitglieder von Hostsharing können den Aufbau ihrer Webanwendungen sehr
+frei gestalten, denn Hostsharing bietet ein hohes Maß an Flexibilität.
+Dennoch ist es sinnvoll, bei der Organisation seiner Webanwendungen
+bestimmte Verfahrensweisen zu beachten, die erfahrungsgemäß die
+Sicherheit erhöhen. Dazu gehört vor allem die Nutzung der Vorteile, die
+das Linux-Betriebssystem aufgrund seiner Mehrbenutzerfähigkeit bietet.
+
+### Pro Anwendung ein Benutzer
+
+Wenn auf einem Linux-Betriebssystem zwei Anwendungen (A und B) unter
+verschiedenen Benutzern (`xyz00-a` und `xyz00-b`) laufen, sind sie in
+gewisser Hinsicht gegeneinander abgeschottet. Wenn es einem Angreifer
+gelingt, durch eine Sicherheitslücke in Anwendung A die Benutzerrechte
+von `xyz00-a` zu erlangen, kann er mit diesen Rechten im Heimverzeichnis
+von `xyz00-a` jeden beliebigen Schaden anrichten. Im Heimverzeichnis von
+`xyz00-b` besitzt er jedoch keine Lese- und Schreibrechte, sodass er
+dort auch keine Schäden verursachen kann.
+
+Deshalb gilt es bei Hostsharing als Best Practice für jede Domain und
+jede Anwendung einen eigenen Benutzer anzulegen. Hostsharing hat
+verschiedene Benutzerrollen vorgesehen, die jeweils spezifische Aufgaben
+übernehmen. Die Rollen werden in `kap-benutzerrollen`{.interpreted-text
+role="numref"} ausführlich erklärt.
+
+## Weitere Informationsquellen
+
+Wenn Ihnen dieses Handbuch nicht weiterhilft, können Sie die folgenden
+Informationsquellen nutzen.
+
+Das Hostsharing Wiki
+
+:   Das [Hostsharing
+    Wiki](https://wiki.hostsharing.net/index.php?title=Hauptseite) wird
+    von den Mitgliedern der Hostsharing eG gepflegt. Es enthält vor
+    allem
+    [Installationsanleitungen](https://wiki.hostsharing.net/index.php?title=Kategorie:Installationsanleitungen)
+    für die diversen Webanwendungen, die unsere Mitglieder auf der
+    Managed Operations Platform betreiben.
+
+Die Support-Mailingliste
+
+:   Die Mitglieder der Hostsharing eG helfen sich gegenseitig auf der
+    [Support-Mailingliste](https://lists.hostsharing.net/mailman/listinfo/support).
+    Sie müssen die Mailingliste abonnieren, um Fragen zu stellen. Werfen
+    Sie einen Blick in das Mailinglisten-Archiv, bevor Sie Ihre Frage
+    stellen. Unter Umständen wurde sie schon beantwortet.
+
+Der Hostsharing-Service
+
+:   Falls Sie ein besonderes Problem mit Ihrem Web-Paket haben, können
+    Sie per E-Mail den [Hostsharing-Service](service@hostsharing.net)
+    direkt fragen. In dringenden Fällen können Sie den Service auch
+    telefonisch unter der Nummer +49 40 2093313-11 erreichen.
diff --git a/source/einstieg/benutzer-anlegen.md b/source/einstieg/benutzer-anlegen.md
new file mode 100644
index 0000000..cbca78c
--- /dev/null
+++ b/source/einstieg/benutzer-anlegen.md
@@ -0,0 +1,135 @@
+# Domain-Benutzer anlegen
+
+Bevor wir eine Domain aufschalten, müssen wir einen Benutzer mit der
+Rolle `Domain-Admin`{.interpreted-text role="role"} anlegen. Rufen Sie
+dazu das Webfrontend von HSAdmin über den Link
+<https://admin.hostsharing.net> auf und loggen Sie sich mit der
+Benutzerkennung des `Paket-Admin`{.interpreted-text role="role"} ein. In
+unserem Beispiel ist das `xyz00`.
+
+Gehen Sie in den Bereich `Web-Paket`{.interpreted-text role="guilabel"}
+und dort in das Menü `Benutzer/Postfach`{.interpreted-text
+role="guilabel"}. Klicken Sie nun auf das Plus-Symbol
+`Neuen Eintrag anlegen`{.interpreted-text role="guilabel"}. Es öffnet
+sich das in `fig-domain-admin-anlegen`{.interpreted-text role="numref"}
+gezeigte Menü zum Anlegen eines neuen Benutzers.
+
+::: {#fig-domain-admin-anlegen}
+![Das Menü zum Anlegen eines neuen
+Benutzers.](../images/hsadmin-da-anlegen-1.*){width="100.0%"}
+:::
+
+Die Felder für den Benutzer und das Passwort sind rot umrandet. Das
+zeigt an, dass Sie diese Felder bearbeiten müssen. Das Kürzel für den
+Paket-Admin ist bereits eingetragen. Sie müssen lediglich nach dem
+Bindestrich eine Bezeichnung eingeben, die Ihnen sinnvoll erscheint.
+Während das Kürzel am Anfang (z.B. `xyz00`) zwingend vorgegeben ist,
+können Sie die Bezeichnung dahinter frei wählen. Denken Sie an den Zweck
+des Benutzers. Er verwaltet eine oder mehrere Domains. Wenn Sie in Ihrem
+Web-Paket nur eine Domain verwalten wollen, können Sie den Benutzer zum
+Beispiel `xyz00-domain` nennen. Wenn der Benutzer mehrere Domains
+verwalten soll, kann sein Name zur verständlichen Kennzeichung
+`xyz00-doms` lauten. Und wenn Sie mehrere Domains mit unterschiedlichen
+Domain-Admins in einem Paket verwalten wollen, können Sie in den Namen
+auch die jeweilige Domain einfügen, wie zum Beispiel
+`xyz00-hs_example.de`. Wir empfehlen aus Sicherheitsgründen für jede
+Domain einen eigenen Domain-Admin anzulegen. In
+`kap-hsscript-skript`{.interpreted-text role="numref"} erfahren Sie, wie
+Sie mit Hilfe eines Skripts die Anlage neuer Domains und neuer
+Domain-Admins vereinfachen können.
+
+::: admonition
+Beachten Sie die Namenskonvention
+
+Alle Benutzernamen beginnen mit dem Kürzel für das Paket, in unserem
+Beispiel `xyz00`. Ergänzungen können mit einem Bindestrich abgetrennt
+werden wie zum Beispiel in dem Benutzernamen für den Domain-Admin
+`xyz00-doms`. Es ist nur ein Bindestrich zulässig. Weitere gültige
+Trennzeichen zur Verbesserung der Lesbarkeit sind ein Punkt und der
+Unterstrich. Es sind also folgende Benutzernamen für Domain-Benutzer
+möglich: `xyz00-example_de`, `xyz00-example.de` oder
+`xyz00-hs_example.de`.
+:::
+
+Durch die Anlage eines Domain-Admins erzeugen Sie einen Unix-Benutzer
+mit einer eigenen Verzeichnisstruktur in Ihrem Webpaket. Die Arbeit mit
+verschiedenen Benutzern dient der Sicherheit. Falls durch eine
+Sicherheitslücke in einer Website jemand Zugang zum Verzeichnis des
+Domain-Admins erhält, kann er nur dort Schaden anrichten und nicht im
+gesamten Web-Paket, das von dem Paket-Admin verwaltet wird. Lesen Sie
+mehr dazu in `kap-benutzerrollen`{.interpreted-text role="numref"}.
+
+Es ist möglich einem Domain-Admin mehrere Domains zuzuordnen. Die Ordner
+und Dateien für jede einzelne Domain befinden sich dann alle im
+Heimverzeichnis des Domain-Admins im Ordner `/doms`{.interpreted-text
+role="file"}. Dieses Vorgehen, das der leichteren Übersicht dient,
+reduziert die Sicherheit, da mehrere Domains mit einem Unix-Benutzer
+betrieben werden. Wenn Sie unsicher sind, welches Vorgehen Sie bei der
+Organisation Ihrer Websites nutzen sollen, fragen Sie den Service.
+
+In `fig-domain-admin-ausgefuellt`{.interpreted-text role="numref"} sehen
+Sie ein Beispiel mit dem Benutzernamen `xyz00-doms`.
+
+::: {#fig-domain-admin-ausgefuellt}
+![Das ausgefüllte Formular zur Anlage eines
+Benutzers.](../images/hsadmin-da-anlegen-2.*){width="100.0%"}
+:::
+
+Bei der Anlage eines Benutzers müssen Sie folgendes berücksichtigen:
+
+Benutzer/Postfach
+
+:   Der Benutzername muss immer mit dem Kürzel des Paket-Admins
+    beginnen. Wenn Sie als Paket-Admin in HSAdmin eingeloggt sind, ist
+    das Kürzel schon im Formular eingetragen.
+
+Passwort
+
+:   HSAdmin erzwingt ein Passwort mit einer Mindestlänge von 6 Zeichen.
+    Es muss aus Kleinbuchstaben, Großbuchstaben, Ziffern und
+    Sonderzeichen bestehen, wobei Zeichen aus mindestens drei dieser
+    Gruppen verwendet werden müssen.
+
+Kurzbeschreibung
+
+:   In der Kurzbeschreibung können Sie Informationen vermerken, die
+    Ihnen helfen, den Benutzer zuzuordnen.
+
+Shell-/Kommando-Interpreter
+
+:   Domain-Admins benötigen eine Shell. Wählen Sie deshalb zum Beispiel
+    `/bin/bash`{.interpreted-text role="command"} aus.
+
+Quota (Soft-Limit)
+
+:   Hiermit können Sie dem Benutzer und seinen Daten ein
+    Festplatten-Quota zuteilen. Man unterscheidet das Soft- und das
+    Hard-Limit. Lesen Sie mehr dazu in `kap-quota`{.interpreted-text
+    role="numref"}. Wenn Sie nichts eintragen, wird kein gesondertes
+    Quota für den Benutzer gesetzt. Lassen Sie die beiden Felder im
+    Zweifelsfall leer.
+
+Quota (Hard-Limit)
+
+:   Das Hard-Limit des Quota.
+
+Bestätigen Sie die Anlage mit `OK`{.interpreted-text role="guilabel"}.
+
+Nach der Anlage erscheint der neue Benutzer in der Liste des Menüs
+`Benutzer/Postfach`{.interpreted-text role="guilabel"}.
+
+::: {#fig-domain-admin-angelegt}
+![Der neue Domain-Admin ist
+angelegt.](../images/hsadmin-da-anlegen-3.*){width="100.0%"}
+:::
+
+::: admonition
+Best Practice
+
+Legen Sie für jede Domain einen gesonderten Domain-Admin an. Nutzen Sie
+dabei zum Beispiel das Namensschema `xyz00-hs_example.de`.
+:::
+
+```{=latex}
+\clearpage
+```
diff --git a/source/einstieg/datenbank.md b/source/einstieg/datenbank.md
new file mode 100644
index 0000000..dd5da76
--- /dev/null
+++ b/source/einstieg/datenbank.md
@@ -0,0 +1,145 @@
+# Datenbank einrichten
+
+Wenn Sie für eine Webanwendung eine MySQL- oder PostgreSQL-Datenbank
+benötigen, können Sie die Datenbank und den Datenbanknutzer in
+`HSAdmin`{.interpreted-text role="command"} anlegen.
+
+::: hint
+::: title
+Hint
+:::
+
+Aus Lizenzgründen pflegt Hostsharing die von MySQL abgespaltene
+Open-Source-Datenbank MariaDB. Das Benutzer-Interface von HSAdmin
+spricht noch von MySQL. Der Einfachheit halber sprechen wir in dieser
+Anleitung deshalb noch von MySQL.
+:::
+
+Beim Anlegen einer Datenbank ist die Reihenfolge entscheidend:
+
+1.  Zunächst den Datenbanknutzer anlegen, den Verwalter der jeweiligen
+    Datenbank
+2.  die Datenbank anlegen.
+
+::: only
+html
+
+## Videoanleitung
+:::
+
+```{=html}
+<video width="640" height="480" controls src="https://media.hostsharing.net/Datenbank-anlegen.webm"></video>
+```
+### Datenbanknutzer anlegen
+
+Melden Sie sich mit dem Paket-Admin (`xyz00`) bei HSAdmin unter
+<https://admin.hostsharing.net> an und gehen Sie in den Bereich
+`Web-Paket`{.interpreted-text role="guilabel"}.
+
+Klicken Sie das Menü `MySQL-Benutzer`{.interpreted-text role="guilabel"}
+an. Es wird die Liste der MySQL-Benutzer angezeigt, die wie
+`fig-hsadmin-mysql-benutzer`{.interpreted-text role="numref"} zeigt,
+noch leer ist.
+
+::: {#fig-hsadmin-mysql-benutzer}
+![Das Menü `MySQL-Benutzer`{.interpreted-text role="guilabel"} mit der
+leeren Liste der
+Datenbanknutzer.](../images/hsadmin-mysql-benutzer.*){width="100.0%"}
+:::
+
+Klicken Sie auf das Plus-Icon `Neuen Eintrag anlegen`{.interpreted-text
+role="guilabel"}. Es erscheint folgende Eingabemaske:
+
+::: {#fig-hsadmin-mysql-benutzer-anlegen}
+![Das Menü zum Anlegen eines
+Datenbanknutzers.](../images/hsadmin-mysql-benutzer-anlegen.*){width="100.0%"}
+:::
+
+Die Felder werden wie folgt ausgefüllt:
+
+MySQL-Benutzer:
+
+:   xyz00_dbuser
+
+Passwort:
+
+:   \*\*\*\*
+
+Merken Sie sich den Benutzernamen und das Passwort, da Sie beides bei
+der Konfiguration Ihrer Webanwendung benötigen.
+
+Mit dem Button `OK`{.interpreted-text role="guilabel"} wird der Eintrag
+gespeichert.
+
+Der neue Datenbanknutzer erscheint nun in der Liste des Menüs
+`MySQL-Benutzer`{.interpreted-text role="guilabel"}.
+
+::: {#fig-hsadmin-mysql-benutzer-angelegt}
+![Der neu angelegte Datenbanknutzer erscheint in der
+Liste.](../images/hsadmin-mysql-benutzer-angelegt.*){width="100.0%"}
+:::
+
+::: attention
+::: title
+Attention
+:::
+
+Beachten Sie, dass der Name eines Datenbankbenutzers immer mit dem
+Paketnamen (in unserem Beispiel `xyz00`) gefolgt von einem Unterstrich
+beginnen muss. Es darf kein Minuszeichen nach dem Paketnamen benutzt
+werden. Zusammen mit den Zeichen danach darf der Name des
+Datenbankbenutzers höchstens 16 Zeichen lang sein, zum Beispiel
+`xyz00_wordpress` (15 Zeichen).
+:::
+
+### Datenbank anlegen
+
+Nun können Sie die Datenbank für Ihre Webanwendung anlegen. Gehen Sie in
+das Menü `MySQL-Datenbank`{.interpreted-text role="guilabel"}. Die Liste
+der Datenbanken ist noch leer. Klicken Sie auf das Plus-Icon
+`Neuen Eintrag anlegen`{.interpreted-text role="guilabel"}.
+
+Es öffnet sich das Menü zum Anlegen einer Datenbank.
+
+::: {#fig-hsadmin-mysql-db-anlegen}
+![Das Menü zum Anlegen einer
+Datenbank.](../images/hsadmin-mysql-db-anlegen.*){width="100.0%"}
+:::
+
+Die Felder hier:
+
+MySQL-Datenbank
+
+:   xyz00_dbmysql
+
+MySQL-Benutzer
+
+:   xyz00_dbuser
+
+Zeichenkodierung
+
+:   UTF8
+
+Mit dem Button `OK`{.interpreted-text role="guilabel"} wird der Eintrag
+gespeichert. Die neue Datenbank erscheint in der Liste der Datenbanken.
+
+::: attention
+::: title
+Attention
+:::
+
+Beachten Sie, dass der Name einer Datenbank immer mit dem Paketnamen (in
+unserem Beispiel `xyz00`) gefolgt von einem Unterstrich beginnen muss.
+Es darf kein Minuszeichen nach dem Paketnamen benutzt werden. Zusammen
+mit den Zeichen danach darf der Name der Datenbank höchstens 16 Zeichen
+lang sein, zum Beispiel `xyz00_wpressdb` (14 Zeichen).
+:::
+
+::: {#fig-hsadmin-mysql-db-angelegt}
+![Die neue Datenbank erscheint in der
+Liste.](../images/hsadmin-mysql-db-angelegt.*){width="100.0%"}
+:::
+
+```{=latex}
+\clearpage
+```
diff --git a/source/einstieg/domain.md b/source/einstieg/domain.md
new file mode 100644
index 0000000..7896b6b
--- /dev/null
+++ b/source/einstieg/domain.md
@@ -0,0 +1,117 @@
+# Domain anlegen und bestellen
+
+Eine Domain wird in zwei Schritten angelegt:
+
+1.  Die Domain im Web-Paket aufschalten
+2.  Die Domain im Domainbestellsystem bestellen
+
+Aus technischen Gründen ist es sinnvoll, diese Reihenfolge einzuhalten.
+Die automatische Konnektierung einer neu bestellten Domain erfolgt nur,
+wenn sie in HSAdmin bereits angelegt ist.
+
+## Domain in HSAdmin anlegen {#kap-hsadmin-domain-anlegen}
+
+Melden Sie sich in HSAdmin als `Paket-Admin`{.interpreted-text
+role="role"} (im Beispiel: `xyz00`) an. Wechseln Sie in den Bereich
+`Web-Paket`{.interpreted-text role="guilabel"}, wählen Sie Ihr Web-Paket
+aus und öffnen Sie das Menü `Domain`{.interpreted-text role="guilabel"}.
+Die Liste (siehe `fig-hsadmin-domain-anlegen-0`{.interpreted-text
+role="numref"}) ist leer, da noch keine Domain angelegt wurde.
+
+::: {#fig-hsadmin-domain-anlegen-0}
+![Das leere Menü mit den
+Domains.](../images/hsadmin-domain-anlegen-0.*){width="100.0%"}
+:::
+
+Klicken Sie auf das Plus-Symbol
+`Neuen Eintrag anlegen`{.interpreted-text role="guilabel"} und es öffnet
+sich das in `fig-hsadmin-domain-anlegen-1`{.interpreted-text
+role="numref"} gezeigt Menü.
+
+::: {#fig-hsadmin-domain-anlegen-1}
+![Das Menü zur Aufschaltung einer Domain bei
+Hostsharing.](../images/hsadmin-domain-anlegen-1.*){width="100.0%"}
+:::
+
+Tragen Sie hier den Namen der Domain ein, die Sie anlegen wollen und
+wählen Sie den `Domain-Admin`{.interpreted-text role="role"} aus, in
+dessen Benutzerverzeichnis die Verzeichnisse der Domain angelegt werden
+sollen.
+
+::: attention
+::: title
+Attention
+:::
+
+In diesem Menü ist der Benutzer, mit dem Sie sich eingeloggt haben,
+vorausgewählt. Wenn dies der Paket-Admin (z.B. `xyz00`) ist, wählen Sie
+den gewünschten Domain-Admin aus.
+:::
+
+Bestätigen Sie die Eingaben mit `OK`{.interpreted-text role="guilabel"}.
+
+Damit ist die Domain in dem Web-Paket `xyz00` technisch angelegt. Sie
+erscheint in der Liste im Menü `Domain`{.interpreted-text
+role="guilabel"}.
+
+::: {#fig-hsadmin-domain-anlegen-2}
+![Die neu angelegte Domain erscheint in der
+Liste.](../images/hsadmin-domain-anlegen-2.*){width="100.0%"}
+:::
+
+Wenn Sie die Domain auswählen und das Editier-Symbol
+`Ausgewählten Eintrag bearbeiten`{.interpreted-text role="guilabel"}
+anklicken, können Sie die eben erstellte Domain bearbeiten.
+`fig-hsadmin-domain-bearbeiten`{.interpreted-text role="numref"} zeigt
+das Bearbeitungsmenü.
+
+::: {#fig-hsadmin-domain-bearbeiten}
+![Das Bearbeitungsmenü einer
+Domain.](../images/hsadmin-domain-bearbeiten.*){width="100.0%"}
+:::
+
+Das Menü zeigt den Domainnamen, den Domain-Admin, das Erstellungsdatum,
+die Domain-Optionen (siehe `kap-domain-optionen`{.interpreted-text
+role="numref"}) und die gültigen Subdomains (siehe
+`kap-ref-subdomains`{.interpreted-text role="numref"}). Ändern Sie hier
+zunächst nichts.
+
+Wenn Sie im Feld `gültige Subdomains`{.interpreted-text role="guilabel"}
+ein `*` als Wildcard eintragen, können Sie sehr einfach leichtgewichtige
+Subdomains erzeugen. Was innerhalb von HSAdmin als leichtgewichtige
+Subdomain bezeichnet wird, erfahren Sie in
+`kap-ref-subdomains`{.interpreted-text role="numref"}
+
+::: only
+html
+
+### Videoanleitung
+:::
+
+```{=html}
+<video width="786" height="590" controls src="https://media.hostsharing.net/Domain-einrichten.webm"></video>
+```
+## Domain im Domainbestellsystem bestellen
+
+Anschließend kann die Domain hs-example.de unter dem Link
+<https://www.domain-bestellsystem.de> bestellt werden. Die Login-Daten
+dafür wurden Ihnen auf einem separatem Weg mitgeteilt.
+
+## Domain löschen
+
+Beim Löschen einer Domain gehen Sie am besten folgendermaßen vor.
+
+1.  Die Domain im Domainbestellsystem löschen
+2.  Die Domain in HSAdmin löschen
+
+Es ist die umgekehrte Reihenfolge wie bei der Bestellung einer Domain.
+
+Wenn Sie eine Domain an einen anderen Domainverwalter übertragen wollen,
+müssen Sie die Domain im Domainbestellsystem *in den Transfer geben*.
+Löschen Sie die Domain in HSAdmin erst, wenn die Löschung der Domain
+erfolgt ist bzw. wenn die Domain transferiert und bei einem anderen
+Hoster aufgeschaltet wurde.
+
+```{=latex}
+\clearpage
+```
diff --git a/source/einstieg/email.md b/source/einstieg/email.md
new file mode 100644
index 0000000..b18de0e
--- /dev/null
+++ b/source/einstieg/email.md
@@ -0,0 +1,271 @@
+# E-Mail einrichten
+
+In diesem Kapitel werden zwei E-Mail-Adressen für eine neue Domain
+angelegt:
+
+-   Die erste E-Mail-Adresse wird einem Postfach im Webpaket zugeordnet
+-   Die zweite E-Mail-Adresse wird einer externen E-Mail-Adresse
+    zugeordnet.
+
+## E-Mail-Adresse für Postfach im Webpaket {#kap-postfach-anlegen}
+
+Wir werden zunächst ein neues Postfach für Peter Mustermann anlegen und
+dieses Postfach danach einer neu eingerichteten E-Mail-Adresse zuordnen.
+
+### Neuen E-Mail-Benutzer anlegen
+
+Melden Sie sich als `Paket-Admin`{.interpreted-text role="role"} (in
+unserem Beispiel `xyz00`) bei HSAdmin an. Klicken Sie auf das Webpaket,
+in dem Sie einen neuen E-Mail-Benutzer anlegen möchten, in unserem
+Beispiel ist das `xyz00`, und gehen Sie dann in den Bereich
+`Benutzer/Postfach`{.interpreted-text role="guilabel"}. Klicken Sie auf
+das Plussymbol für `Neuen Eintrag anlegen`{.interpreted-text
+role="guilabel"}.
+
+Tragen Sie anschließend die Zugangsdaten des neuen E-Mail-Benutzers ein.
+In unserem Beispiel in
+`fig-hsadmin-pa-postfach-anlegen`{.interpreted-text role="numref"}
+lautet der Benutzernamen `xyz00-mail_pm`.
+
+::: {#fig-hsadmin-pa-postfach-anlegen}
+![Die Angaben für ein neues
+Postfach.](../images/hsadmin-pa-postfach-anlegen.*){width="100.0%"}
+:::
+
+E-Mail-Benutzer bekommen keine Shell zugeordnet. Stattdessen wird beim
+Einloggen das Programm `/usr/bin/passwd`{.interpreted-text role="file"}
+gestartet. Speichern Sie den neuen Eintrag mit `OK`{.interpreted-text
+role="guilabel"}. Das neue Konto erscheint nun in der Liste der
+Benutzer.
+
+::: {#fig-hsadmin-pa-postfach-angelegt}
+![Das Postfach für Peter Mustermann erscheint in der
+Liste.](../images/hsadmin-pa-postfach-angelegt.*){width="100.0%"}
+:::
+
+### Neues Postfach einer neuen E-Mail-Adresse zuordnen
+
+Wir werden nun für Peter Mustermann eine neue E-Mail-Adresse anlegen und
+das neue Postfach dieser Adresse zuordnen.
+
+Melden Sie sich als `Paket-Admin`{.interpreted-text role="role"} (in
+unserem Beispiel `xyz00`) bei HSAdmin an. Gehen Sie nach dem Einloggen
+in den Bereich `Domain`{.interpreted-text role="guilabel"}, in dem Ihre
+Domains aufgeführt sind.
+
+Wählen Sie die Domain aus, für die Sie eine E-Mail-Adresse einrichten
+wollen. Im Hauptfenster werden die wesentlichen Informationen zur
+ausgewählten Domain angezeigt (siehe (siehe
+`fig-hsadmin-pa-domain-info`{.interpreted-text role="numref"})
+
+::: {#fig-hsadmin-pa-domain-info}
+![Die Informationen zur Domain werden
+angezeigt](../images/hsadmin-pa-domain-info.*){width="100.0%"}
+:::
+
+Klicken Sie auf das Menü `E-Mail-Adresse`{.interpreted-text
+role="guilabel"}, damit die E-Mail-Adressen angezeigt werden, die
+bereits für die Domain eingerichtet wurden (siehe
+`fig-hsadmin-pa-domain-emails`{.interpreted-text role="numref"}).
+
+::: {#fig-hsadmin-pa-domain-emails}
+![Die bereits angelegten
+E-Mail-Adressen.](../images/hsadmin-pa-domain-emails.*){width="100.0%"}
+:::
+
+Drei E-Mail-Adressen werden automatisch angelegt, wenn Sie eine Domain
+eingerichtet haben:
+
+abuse
+
+:   Das ist die Adresse, an die Meldungen bei missbräuchlicher
+    Verwendung der Domain versendet werden. Die vollständige Adresse
+    lautet in unserem Beispiel <abuse@hs-example.de>
+
+postmaster
+
+:   Das ist die Adresse derjenigen Person, die für die E-Mail-Postfächer
+    und das E-Mail-System der Domain verantwortlich ist.
+
+webmaster
+
+:   Das ist die Adresse des Webmasters, der für die Webauftritte unter
+    der Domain technisch verantwortlich ist.
+
+Alle E-Mails an diese Adressen werden in der Voreinstellung an das
+Postfach des zuständigen `Domain-Admin`{.interpreted-text role="role"}
+ausgeliefert.
+
+Klicken Sie nun auf das `+`{.interpreted-text role="guilabel"}-Symbol,
+damit sich das Menü zum Anlegen einer neuen E-Mail-Adresse öffnet.
+
+::: {#fig-hsadmin-email-postfach-anlegen}
+![Anlegen einer E-Mail-Adresse mit
+Postfach](../images/hsadmin-email-postfach-anlegen-1.*){width="100.0%"}
+:::
+
+Die Felder im Einzelnen:
+
+lokaler Teil
+
+:   der Teil der E-Mail-Adresse vor dem @-Zeichen, in unserem Beispiel
+    `pm`.
+
+Subdomain
+
+:   bleibt hier leer, da eine E-Mail-Adresse für die Hauptdomain
+    angelegt wird.
+
+Domain
+
+:   Hier erscheint die Domain, für die die Adresse eingerichtet wird. In
+    unserem Fall: hs-example.de
+
+Postfach/Weiterleitung
+
+:   In den Auswahlmenüs können Sie E-Mail-Adresse oder Postfach
+    auswählen. Im Beispiel leiten wir die E-Mails an das Postfach des
+    Domain-Admin `xyz00-mail_pm`
+
+Bestätigen mit dem Button `OK`{.interpreted-text role="guilabel"}.
+
+Die neue E-Mail-Adresse wird nun in der Liste aufgeführt.
+
+::: {#fig-hsadmin-email-postfach-angelegt}
+![Die neue E-Mail-Adresse ist angelegt und erscheint in der
+Liste](../images/hsadmin-email-postfach-angelegt.*){width="100.0%"}
+:::
+
+Peter Mustermann ist nun unter der Adresse `pm@hs-example.de` erreichbar
+und kann die Mails mit seinem neuen E-Mail-Konto abrufen.
+
+In `kap-emails-lesen`{.interpreted-text role="numref"} wird beschrieben,
+wie Peter Mustermann seine Mails über ein Webinterface oder mit Hilfe
+eines E-Mail-Programms lesen kann.
+
+```{=latex}
+\clearpage
+```
+::: only
+html
+
+### Videoanleitung
+
+```{=html}
+<video width="786" height="590" controls src="https://media.hostsharing.net/E-Mail-Adresse-und-Postfach-einrichten.webm"></video>
+```
+:::
+
+## E-Mail-Adresse mit Weiterleitung an externe Mail-Adresse
+
+Um eine weitere E-Mail-Adresse anzulegen die E-Mails an eine *externe*
+E-Mail-Adresse leitet, wird in der Eingabemaske bei:
+Postfach/Weiterleitung: *E-Mail-Adresse* ausgewählt und dahinter dann
+die externe Mail-Adresse, hier <peter@mustermann.de>, eingetragen.
+
+::: {#fig-hsadmin-email-weiterleitung-1}
+![Eingehende E-Mails sollen an eine externe E-Mail-Adresse
+weitergeleitet
+werden.](../images/hsadmin-email-weiterleitung-anlegen.*){width="100.0%"}
+:::
+
+Liste der angelegten E-Mail-Adressen:
+
+::: {#fig-hsadmin-email-weiterleitung-2}
+![Auch die zweite neue E-Mail-Adresse erscheint in der
+Liste](../images/hsadmin-email-weiterleitung-angelegt.*){width="100.0%"}
+:::
+
+```{=latex}
+\clearpage
+```
+::: todo
+MOS: Die erste E-Mail-Adresse <pm@hs-example.de> steht beim Screenshot
+nicht mehr in der Liste (sondern <info@hs-example.de>)
+:::
+
+## E-Mail-Alias einrichten {#kap-email-alias}
+
+Wenn Sie mehrere Domains mit jeweils einem Domain-Admin verwalten, so
+landen E-Mails an die zwingend vorgegebenen Systemempfänger `abuse@`,
+`postmaster@` und `webmaster@` in der Voreinstellung im Postfach des
+jeweiligen Domain-Admin. All diese Postfächer regelmäßig zu
+kontrollieren, ist aufwändig. Deshalb gibt es bei Hostsharing die
+Möglichkeit E-Mail-Aliase einzurichten. Da ein E-Mail-Alias bei der
+Mailzustellung bevorzugt behandelt wird, können Sie unter dem Namen der
+Domain-Admins ein E-Mail-Alias einrichten und zum Beispiel an das
+Postfach des Paket-Admins weiterleiten oder die E-Mail-Adresse des
+Verantwortlichen.
+
+Rufen Sie dazu HSAdmin unter `https://admin.hostsharing.net` auf und
+gehen Sie in den Bereich `Web-Paket`{.interpreted-text role="guilabel"}.
+Wählen Sie das entsprechende Web-Paket aus und öffnen Sie, wie in
+`fig-hsadmin-email-alias-1`{.interpreted-text role="numref"} gezeigt,
+den Reiter `E-Mail-Alias`{.interpreted-text role="guilabel"}.
+
+::: {#fig-hsadmin-email-alias-1}
+![Der Reiter E-Mail-Alias in
+HSAdmin](../images/hsadmin-email-alias-1.*){width="100.0%"}
+:::
+
+Klicken Sie auf das Pluszeichen, um ein neues E-Mail-Alias hinzuzufügen.
+Es öffnet sich das in `fig-hsadmin-email-alias-2`{.interpreted-text
+role="numref"} gezeigte Formular. Das Kürzel für das Web-Paket ist
+bereits in das Formularfeld eingetragen.
+
+::: {#fig-hsadmin-email-alias-2}
+![Das Formular zum Hinzufügen eines neuen Alias. Das Paketkürzel ist
+bereits eingetragen.](../images/hsadmin-email-alias-2.*){width="100.0%"}
+:::
+
+Sie können eine E-Mail-Adresse angeben wie in
+`fig-hsadmin-email-alias-3`{.interpreted-text role="numref"}.
+
+::: {#fig-hsadmin-email-alias-3}
+![Umleitung an eine
+E-Mail-Adresse](../images/hsadmin-email-alias-3.*){width="100.0%"}
+:::
+
+Sie können aber auch das Postfach eines anderen Benutzers eintragen; in
+`fig-hsadmin-email-alias-4`{.interpreted-text role="numref"}
+beispielsweise das Postfach des Paket-Admins. Das Formularfeld bietet
+Ihnen alle verfügbaren Postfächer zur Auswahl an.
+
+::: {#fig-hsadmin-email-alias-4}
+![Umleitung an ein
+Postfach](../images/hsadmin-email-alias-4.*){width="100.0%"}
+:::
+
+Und zu guter Letzt können Sie auch an ein anderes E-Mail-Alias umleiten.
+Bestätigen Sie Ihre Eingabe mit `OK`{.interpreted-text role="guilabel"}.
+Das neue Alias erscheint anschließend in der Liste (siehe
+`fig-hsadmin-email-alias-5`{.interpreted-text role="numref"}).
+
+::: {#fig-hsadmin-email-alias-5}
+![](../images/hsadmin-email-alias-5.*)
+:::
+
+Gehen Sie beim Anlegen von E-Mail-Aliases systematisch vor, damit Sie in
+komplexen Situationen nicht den Überblick verlieren. Leiten Sie E-Mails
+an Domain-Admins beispielsweise immer an den Paket-Admin weiter oder an
+denjenigen, der für die Domain verantwortlich ist. Das System ist sehr
+flexibel, sodass Sie die Verantwortlichkeiten gut abbilden können und
+auch für spezielle Wünsche Ihrer Benutzer immer eine gute Lösung finden.
+
+::: admonition
+Hinweis
+
+Nutzen Sie E-Mail-Aliases möglichst nicht, um E-Mails, die an eine
+Funktionsadresse wie `sekretariat@` oder `vertriebsteam@` geht, an
+einzelne Benutzer weiterzuleiten. In diesem Fall ist es übersichtlicher,
+wenn Sie bei der Einrichtung der E-Mail-Adresse gleich mehrere
+Postfächer als Ziel angeben. Alternativ können Sie auch einen Benutzer
+einrichten (zum Beispiel für das Sekretariat `xyz00-sek`) und im
+Heimverzeichnis des Benutzers eine `.forward`{.interpreted-text
+role="file"}-Datei pflegen, die die E-Mail-Adresse aller Empfänger
+enthält.
+:::
+
+```{=latex}
+\clearpage
+```
diff --git a/source/einstieg/index.md b/source/einstieg/index.md
new file mode 100644
index 0000000..e3b7768
--- /dev/null
+++ b/source/einstieg/index.md
@@ -0,0 +1,23 @@
+# Einführung in HSAdmin {#kap-hsadmin-einstieg}
+
+![image](../images/header/nachhaltigkeit.png)
+
+Für einen erfolgreichen Start mit Hostsharing wird hier schrittweise
+gezeigt, wie ein Benutzer eine Domain mit E-Mail-Adresse und eine
+Datenbank in einem neuen Web-Paket angelegt wird. Die Einrichtung
+erfolgt mit dem Webfrontend von `HSAdmin`{.interpreted-text
+role="program"}. Freunde der Konsole können alle Schritte mit der
+CLI-Variante `hsscript`{.interpreted-text role="program"} erledigen.
+
+::: only
+html
+
+## Rundgang durch HSAdmin
+:::
+
+```{=html}
+<video width="786" height="590" controls src="https://media.hostsharing.net/Erster-Rundgang-HSAdmin.webm"></video>
+```
+::: {.toctree maxdepth="1"}
+passwort benutzer-anlegen domain webspace ssh-key email datenbank
+:::
diff --git a/source/einstieg/passwort.md b/source/einstieg/passwort.md
new file mode 100644
index 0000000..0d023cf
--- /dev/null
+++ b/source/einstieg/passwort.md
@@ -0,0 +1,127 @@
+# Erstes Einloggen und Änderung des Passworts {#kap-erstes-einloggen}
+
+Wir gehen im Folgenden davon aus, dass der Service für Sie ein Web-Paket
+eingerichtet hat und Sie per E-Mail die Zugangsdaten bekommen haben. In
+der Regel wird der Service Ihnen den Benutzernamen des
+`Paket-Admin`{.interpreted-text role="role"} zusenden. Sie erkennen dies
+daran, dass der Benutzername sich aus der Mitgliederkennung und einer
+Zahl zusammensetzt. In unserem Beispiel ist das `xyz00`.
+
+::: hint
+::: title
+Hint
+:::
+
+Sie werden auf der Hostsharing-Plattform mit verschiedenen Benutzernamen
+arbeiten, von denen einige genau definierte Rollen auf der Plattform
+ausüben. Ausführlich werden die Benutzerrollen in
+`kap-benutzerrollen`{.interpreted-text role="numref"} beschrieben.
+:::
+
+## Änderung des Passworts
+
+Zunächst sollten Sie das Passwort, das Sie vom Service erhalten haben,
+ändern. Rufen Sie in Ihrem Browser <https://admin.hostsharing.net> auf,
+um sich in `HSAdmin`{.interpreted-text role="program"} einzuloggen. Sie
+sehen das in Abb. `fig-hsadmin-login-xyz00`{.interpreted-text
+role="numref"} gezeigte Login-Fenster von HSAdmin.
+
+::: {#fig-hsadmin-login-xyz00}
+![Das Login-Fenster von
+HSAdmin](../images/hsadmin-login-xyz00.*){width="70.0%"}
+:::
+
+Loggen Sie sich mit den Zugangsdaten ein, die Sie vom Service erhalten
+haben.
+
+Nach dem Einloggen werden Sie zu dem in Abb.
+`fig-hsadmin-start-paketadmin`{.interpreted-text role="numref"}
+dargestellten Startbildschirm von HSAdmin weitergeleitet.
+
+::: {#fig-hsadmin-start-paketadmin}
+![Der Startbildschirm von HSAdmin nach dem Einloggen als
+Paket-Admin.](../images/hsadmin-start-paketadmin.*){width="100.0%"}
+:::
+
+In HSAdmin gibt es zwei Bereiche zwischen denen Sie hin- und
+hernavigieren können:
+
+Web-Paket
+
+:   Hinter diesem Menü finden Sie alle Ihre Web-Pakete. In unserem
+    Beispiel ist dies nur ein Web-Paket mit dem Namen `xyz00`. In diesem
+    Menü können Sie Benutzer, Domains, Datenbanken und
+    Datenbank-Benutzer anlegen sowie E-Mail-Aliase vergeben.
+
+Domain
+
+:   Unter diesem Menü verwalten Sie die E-Mail-Adressen in Ihren
+    Domains. Eventuell ist hier bereits eine Beispiel-Domain
+    eingerichtet.
+
+Rechts oben sehen Sie einen Link mit der Bezeichnung `xyz00`. Dies ist
+der Benutzername, mit dem Sie sich eingeloggt haben. Nach einem Klick
+auf den Link öffnet sich das in Abb.
+`fig-hsadmin-pa-bearbeiten`{.interpreted-text role="numref"} gezeigte
+Bearbeitungsmenü für den Benutzer.
+
+::: {#fig-hsadmin-pa-bearbeiten}
+![Dialog zum Ändern des
+Passworts](../images/hsadmin-pa-bearbeiten.*){width="100.0%"}
+:::
+
+Geben Sie ein neues Passwort ein und bestätigen Sie die Änderung mit
+einem Klick auf OK.
+
+::: only
+html
+
+### Videoanleitung
+:::
+
+```{=html}
+<video width="786" height="590" controls src="https://media.hostsharing.net/Passwort-des-Paketbenutzers-aendern.webm"></video>
+```
+## Einloggen mit dem Mitglieds-Account {#kap-einloggen-mitglied}
+
+Eventuell hat Ihnen der Service auch die Zugangsdaten für einen
+Benutzernamen mitgeteilt hat, der nur aus drei Buchstaben besteht. Es
+handelt sich dabei um Ihren
+`Mitglieds-Account <Mitglied>`{.interpreted-text role="role"}. Ändern
+Sie auch in diesem Fall sofort das Passwort, indem Sie sich mit diesem
+Benutzer einloggen, auf die Benutzerkennung rechts oben klicken und wie
+im letzten Abschnitt beschrieben ein neues Passwort eingeben.
+
+::: {#fig-hsadmin-mitglied-webpaket-benutzer}
+![Der Begrüßungsbildschirm von HSAdmin, wenn Sie als Mitglied eingeloggt
+sind.](../images/hsadmin-mitglied-start.*)
+:::
+
+Wenn Sie als Mitglied eingeloggt sind, ist das linke Navigationsmenü um
+einen Eintrag erweitert:
+
+Kunde/Mitglied
+
+:   In diesem Menü finden Sie Ihre Mitgliedsdaten. Sie können hier zum
+    Beispiel Ihre Anschrift oder Kontoverbindung ändern.
+
+Wenn Sie als Mitglied eingeloggt sind, können Sie auch das Passwort des
+Paket-Admin verändern. Gehen Sie dazu in den Bereich Web-Paket, wählen
+Sie Ihr Web-Paket aus und gehen Sie im rechten Feld in das Menü
+`Benutzer/Postfach`{.interpreted-text role="guilabel"}. Wählen Sie dort
+den Paket-Admin `xyz00` aus.
+
+::: {#fig-hsadmin-mitglied-webpaket-benutzer-auswaehlen}
+![Der ausgewählte Paket-Admin ist farbig
+hinterlegt.](../images/hsadmin-mitglied-webpaket-benutzer-auswaehlen.*){width="100.0%"}
+:::
+
+Klicken Sie in der Symbolleiste auf das Bearbeitungssymbol, sodass sich
+das Menü öffnet, in dem Sie ein neues Passwort eingeben können.
+
+::: {#fig-hsadmin-mitglied-webpaket-benutzer-passwort-aendern}
+![Das Menü zur Bearbeitung eines
+Benutzers.](../images/hsadmin-mitglied-webpaket-benutzer-passwort-aendern.*){width="100.0%"}
+:::
+
+Bestätigung mit dem `OK`{.interpreted-text role="guilabel"}-Button.
diff --git a/source/einstieg/ssh-key.md b/source/einstieg/ssh-key.md
new file mode 100644
index 0000000..aa62ddb
--- /dev/null
+++ b/source/einstieg/ssh-key.md
@@ -0,0 +1,42 @@
+# Hochladen des SSH-Keys {#kap-ssh-key-hochladen}
+
+Sie können sich ohne Eingabe eines Passworts als
+`Domain-Admin`{.interpreted-text role="role"} einloggen, wenn Sie Ihren
+öffentlichen SSH-Key in das Benutzerverzeichnis des Domain-Admins
+hochladen.
+
+Wenn Sie noch keinen SSH-Key haben, können Sie ihn unter Mac OS X und
+Linux mit diesem Befehl in Ihrem Heimverzeichnis erzeugen:
+
+``` console
+$ ssh-keygen -b 4096 
+```
+
+Der Befehl gibt eine Reihe von Meldungen aus. So werden Sie
+beispielsweise aufgefordert eine Passphrase einzugeben. Dies ist das
+Passwort, mit dem Sie Ihren SSH-Schlüssel beim Einsatz entsperren.
+Wählen Sie eine Phrase, die Sie sich gut merken können, da Sie sie
+häufig benötigen werden. Zur Sicherheit müssen Sie die Passphrase
+zweimal eingeben. Anschließend informiert Sie das Programm, dass Ihr
+geheimer Schlüssel in der Datei `~/.ssh/id_rsa`{.interpreted-text
+role="file"} und ihr öffentlicher Schlüssel in der Datei
+`~/.ssh/id_rsa.pub`{.interpreted-text role="file"} gespeichert wurden.
+
+Nach der Erzeugung des Schlüssels können Sie sich das neue Verzeichnis
+anschauen.
+
+``` console
+$ ls .ssh/
+id_rsa  id_rsa.pub 
+```
+
+Nun können Sie Ihren öffentlichen Schlüssel in das Heimverzeichnis des
+Domain-Admin kopieren. Unter Linux und anderen Unix-Systemen geht dies
+mit dem Befehl `ssh-copy-id`{.interpreted-text role="command"}:
+
+``` console
+$ ssh-copy-id -i ~/.ssh/id_rsa.pub xyz00-doms@xyz00.hostsharing.net
+```
+
+Um unter Windows einen SSH-Key zu erzeugen und hochzuladen, können Sie
+das Programm [PuTTY](https://www.putty.org/) nutzen.
diff --git a/source/einstieg/webspace.md b/source/einstieg/webspace.md
new file mode 100644
index 0000000..81f9036
--- /dev/null
+++ b/source/einstieg/webspace.md
@@ -0,0 +1,216 @@
+# Webspace einrichten
+
+Ihre Webanwendungen -- im einfachsten Fall statische HTML-Seiten --
+richten Sie in dem Heimverzeichnis des jeweiligen
+`Domain-Admin`{.interpreted-text role="role"} ein.
+
+Loggen Sie sich dazu mit Hilfe von `ssh`{.interpreted-text
+role="command"} ein:
+
+``` console
+$ ssh xyz00-doms@xyz00.hostsharing.net
+```
+
+Sie erreichen alle Benutzerverzeichnisse über die Adresse des jeweiligen
+Pakets. In unserem Beispiel ist das
+`xyz00.hostsharing.net`{.interpreted-text role="file"}. Nach dem
+Einloggen finden Sie die im nächsten Abschnitt beschriebene
+Ordnerstruktur vor.
+
+## Ordnerstruktur {#kap-einstieg-ordnerstruktur}
+
+Die exemplarische Struktur des Home-Verzeichnisses eines
+`Domain-Admin`{.interpreted-text role="role"} sieht folgendermaßen aus:
+
+    ├── doms
+    │   ├── hs-example.de
+    │   │   ├── app
+    │   │   ├── app-ssl
+    │   │   ├── cgi
+    │   │   ├── cgi-ssl
+    │   │   ├── etc
+    │   │   │   └── pri.hs-example.de
+    │   │   ├── fastcgi
+    │   │   │   └── phpstub
+    │   │   ├── fastcgi-ssl
+    │   │   │   └── phpstub
+    │   │   ├── htdocs
+    │   │   │   └── .htaccess
+    │   │   ├── htdocs-ssl
+    │   │   │   └── .htaccess
+    │   │   ├── subs
+    │   │   │   ├── www
+    │   │   │   │   └── index.html
+    │   │   │   └── example
+    │   │   ├── subs-ssl
+    │   │   │   └── www
+    │   │   │       └── index.html
+    │   │   └── var
+    │   └── domain2.tld
+    │       ├── app
+    │       └── …
+    ├── etc
+    │   └── config.ini
+    └── Maildir
+
+`~/doms`{.interpreted-text role="file"}
+
+:   Alle dem Domain-Admin zugewiesenen Domains liegen im Verzeichnis
+    `~/doms`{.interpreted-text role="file"}.
+
+`~/doms/hs-example.de`{.interpreted-text role="file"}
+
+:   `hs-example.de` die Beispiel-Domain, für die die Verzeichnisse von
+    HSAdmin automatisch angelegt wurden.
+
+`~/doms/hs-example.de/app`{.interpreted-text role="file"}
+
+:   Dieses Verzeichnis ist als `PassengerAppRoot` des
+    Apache-Webserver-Moduls [Phusion
+    Passenger](https://www.phusionpassenger.com/) konfiguriert.
+
+`~/doms/hs-example.de/app-ssl`{.interpreted-text role="file"}
+
+:   Auch dieses Verzeichnis ist als `PassengerAppRoot` des
+    Apache-Webserver-Moduls konfiguriert. Es wird für https-Zugriffe
+    genutzt.
+
+`~/doms/hs-example.de/cgi`{.interpreted-text role="file"}
+
+:   Dies ist das Basisverzeichnis für CGI-Skripte. Ein Alias bildet
+    HTTP-Requests auf `http://hs-example.de/cgi-bin/` auf dieses
+    Verzeichnisses ab.
+
+`~/doms/hs-example.de/cgi-ssl`{.interpreted-text role="file"}
+
+:   Analog zu `~/doms/hs-example.de/cgi`{.interpreted-text role="file"}
+    ist dies das Basisverzeichnis für CGI-Skripte beim Zugriff via
+    https.
+
+`~/doms/hs-example.de/etc`{.interpreted-text role="file"}
+
+:   Dieses Verzeichnis enthält ggf. das Zonefile, mit dem sich der
+    Nameserver [BIND](http://de.wikipedia.org/wiki/BIND) konfigurieren
+    lässt
+
+`~/doms/hs-example.de/etc/pri.hs-example.de`{.interpreted-text role="file"}
+
+:   Mit dieser Datei können Sie eine Zonendatei für Ihre Domain selbst
+    verwalten. Damit können z.B. einzelne Subdomains auf andere Server
+    umgeleitet oder eigene Mailserver angesprochen werden.
+
+`~/doms/hs-example.de/fastcgi`{.interpreted-text role="file"}
+
+:   Dies ist das Basisverzeichnis für FastCGI-Skripte. Ein Alias bildet
+    HTTP-Requests auf `http://hs-example.de/fastcgi-bin/` auf dieses
+    Verzeichnis ab.
+
+`~/doms/hs-example.de/fastcgi-ssl`{.interpreted-text role="file"}
+
+:   Analog zu `~/doms/hs-example.de/fastcgi`{.interpreted-text
+    role="file"} ist dies das Basisverzeichnis für FastCGI-Skripte bei
+    https-Zugriffen. Ein Alias bildet HTTP-Requests auf
+    `https://hs-example.de/fastcgi-bin/` auf dieses Verzeichnis ab.
+
+`~/doms/hs-example.de/htdocs`{.interpreted-text role="file"}
+
+:   Dieses Verzeichnis ist als `DocumentRoot` des Apache Webserver
+    konfiguriert. Es dient auch zur Aufnahme statischer Inhalte im
+    Zusammenhang mit der Nutzung von Phusion Passenger zur Auslieferung
+    der statischen Dateien.
+
+`~/doms/hs-example.de/htdocs/.htaccess`{.interpreted-text role="file"}
+
+:   In der Standardkonfiguration enthält diese Datei die Weiterleitung
+    auf die `www`-Subdomain:
+
+        Redirect permanent / http://www.hs-example.de/
+
+    Die verwendeten Regeln werden auf **alle** Subdomains von
+    `hs-example.de` angewendet. In der `.htaccess` können
+
+    -   eigene Fehlerseiten definiert,
+    -   MIME-Typen zugewiesen,
+    -   Passwortschutz eingerichtet,
+    -   Weiterleitungen durchgeführt werden.
+
+`~/doms/hs-example.de/htdocs-ssl`{.interpreted-text role="file"}
+
+:   Analog zu `~/doms/hs-example.de/htdocs`{.interpreted-text
+    role="file"} ist dieses Verzeichnis als `DocumentRoot` des Apache
+    Webserver für Zugriffe via https konfiguriert.
+
+`~/doms/hs-example.de/subs`{.interpreted-text role="file"}
+
+:   Dieses Verzeichnis enthält alle Subdomains. Hier findet sich auch
+    die Subdomain *www.hs-example.de*.
+
+`~/doms/hs-example.de/subs/example`{.interpreted-text role="file"}
+
+:   Dies ist ein Beispiel für eine Subdomain, die Sie einfach selbst
+    anlegen können. Sie müssen hierzu nur im Verzeichnis
+    `subs`{.interpreted-text role="file"} ein Verzeichnis mit dem Namen
+    der gewünschten Subdomain anlegen und anschließend die Dateien in
+    das Verzeichnis übertragen.
+
+`~/doms/hs-example.de/subs/www`{.interpreted-text role="file"}
+
+:   Dieses Verzeichnis wird automatisch angelegt und üblicherweise vom
+    Webserver angesprochen, wenn keine Subdomain explizit genannt wird.
+    Die Adresse `http://hs-example.de` verweist üblicherweise auf
+    `http://www.hs-example.de`.
+
+`~/doms/hs-example.de/subs-ssl`{.interpreted-text role="file"}
+
+:   Analog zu `~/doms/hs-example.de/subs`{.interpreted-text role="file"}
+    enthält dieses Verzeichnis alle Subdomains auf die via https
+    zugegriffen wird.
+
+`~/doms/hs-example.de/var`{.interpreted-text role="file"}
+
+:   In diesem Verzeichnis werden in der Nacht die Log-Dateien mit den
+    Zugriffen auf die Domain in gepackter Form bereitgestellt, wenn dies
+    in `/home/pacs/xyz00/etc/config.ini` entsprechend angegeben ist.
+
+## Zugangsdaten und Einstellungen
+
+Sie können Dateien mit einem FTP-Programm wie
+`FileZilla`{.interpreted-text role="program"},
+`WinSCP`{.interpreted-text role="program"} oder `scp`{.interpreted-text
+role="command"} in das Web-Paket kopieren. Sie benötigen dazu die
+gleichen Zugangsdaten wie beim Einloggen via `ssh`{.interpreted-text
+role="command"}.
+
+Server:
+
+:   xyz00.hostsharing.net
+
+Benutzer:
+
+:   xyz00-doms
+
+Passwort:
+
+:   PASSWORT
+
+![Eingabe der Zugangsdaten in
+Filezilla.](../images/ftp-filezilla.jpg){width="70.0%"}
+
+Wechseln Sie in den Ordner
+`~/doms/hs-example.de/subs/www`{.interpreted-text role="file"}, um zum
+Beispiel statische Webseiten hochzuladen.
+
+![Wechsel in das Verzeichnis
+`www`.](../images/ftp-filezilla-www.jpg){width="70.0%"}
+
+Auf der Kommandozeile geben Sie folgende Befehle ein:
+
+``` console
+$ cd ~/website-dateien
+$ scp -r . xyz00-doms@xyz00.hostsharing.net:/doms/hs-example.de/subs-ssl/www
+```
+
+Die Dateien in dem lokalen Ordner `website-dateien`{.interpreted-text
+role="file"} werden dadurch rekursiv in das Verzeichnis
+`~/doms/hs-example.de/subs-ssl/www`{.interpreted-text role="file"} des
+Domain-Admin kopiert.
diff --git a/source/glossar.md b/source/glossar.md
new file mode 100644
index 0000000..886ff55
--- /dev/null
+++ b/source/glossar.md
@@ -0,0 +1,126 @@
+# Glossar {#kap-glossar}
+
+::: glossary
+
+sorted
+
+:   
+
+```{=html}
+<!-- -->
+```
+
+SCP
+
+:   Secure CoPy (Abk. SCP) ist ein ein Programm zur verschlüsselten
+    Übertragung von Daten.
+
+Grace Period
+
+:   Frist nach Überschreitung des Softlimit bis das Hardlimit der Quota
+    erreicht ist.
+
+Quota
+
+:   Begrenzung des Speicherplatzes für einen Nutzer oder einer Gruppe.
+
+.htaccess
+
+:   Die Datei ist eine Konfigurationsdatei auf dem Webserver, in der
+    verzeichnisbezogene Regeln aufgestellt werden können.
+
+Benutzer
+
+:   Benutzer sind Unix-, Shell-, FTP- und E-Mail-Nutzer.
+
+Paket-Admin
+
+:   Ein Benutzer, der Administrator eines Web-Pakets ist.
+
+Domain-Admin
+
+:   Ein Benutzer, dem mindestens eine Domain zugeordnet ist.
+
+Domain-Bestell-System
+
+:   Webfrontend zur Registrierung von Domains
+
+Domain-Registrierung
+
+:   Der Vorgang, um eine Domain zu registrieren.
+
+Domain-Transfer
+
+:   Umzug einer Domain zu einem anderen Registrar/Provider. Es wird der
+    Eintrag in der Registry-Datenbank geändert, der definiert, welcher
+    Registrar für diese Domain und deren Inhaber zuständig ist.
+
+E-Mail-Alias
+
+:   Virtuelle E-Mail-Empfänger für spezielle Aufgaben. Ein E-Mail-Alias
+    ist eine E-Mail-Adresse zur Weiterleitung von E-Mails.
+
+extern registrierte Domain/Sub-Domain
+
+:   Die Domain oder Sub-Domain ist bei einem anderen Registrar/Provider
+    registriert. Die damit verbundenen Dienste sollen von der
+    Hostsharing eG erbracht werden.
+
+Greylisting
+
+:   Greylisting ist eine Form der Spam-Bekämpfung, bei der die erste
+    E-Mail von unbekannten Absendern zunächst abgewiesen und erst nach
+    einem weiteren Zustellversuch angenommen wird.
+
+Hive
+
+:   Bezeichnet eine virtuelle Maschine.
+
+Host
+
+:   Bezeichnet eine physikalische Maschine.
+
+HSAdmin
+
+:   Verwaltungstool der Hostsharing eG.
+
+Mitgliedsaccount
+
+:   Account zur Verwaltung der Mitgliedschaft in der Genossenschaft.
+
+shell
+
+:   Unix-Shell, Traditionelle Benutzerschnittstelle unter Unix oder
+    ähnlichen Betriebssystemen.
+
+Sub-Domain
+
+:   Eine Sub-Domain ist eine Domain, die unterhalb einer anderen liegt
+    (z.B. test.example.com und www.example.com liegen unerhalb von
+    example.com)
+
+SSI
+
+:   Server Side Includes sind in Dokumente eingebettete Skript-Befehle,
+    die auf einem Webserver ausgeführt werden, bevor das Dokument an den
+    Client ausgeliefert wird.
+
+xyz00
+
+:   Synonym für ein Web-Paket.
+
+xyz00\_
+
+:   Synonym: Präfix für einen Datenbanknamen oder einen Datenbanknutzer.
+
+xyz
+
+:   Synonym für einen Mitgliedsnamen.
+
+Vacation
+
+:   In diesem Zusammenhang steht Vacation für eine Abwesenheit eines
+    E-Mail-Empfängers. Ein gleichnamiges Programm kann
+    Abwesenheitsbenachrichtigungen an die Versender von E-Mail an den
+    abwesenden Empfänger versenden.
+:::
diff --git a/source/index.md b/source/index.md
new file mode 100644
index 0000000..8085930
--- /dev/null
+++ b/source/index.md
@@ -0,0 +1,55 @@
+# Handbuch für Anwender
+
+Die im Jahr 2000 gegründete Hostsharing eG ist eine Genossenschaft für
+Webhosting und IT-Services. Wir verstehen uns als eine Gemeinschaft, die
+im Interesse ihrer Mitglieder und mit den genossenschaftlichen
+Prinzipien der Selbsthilfe, der Selbstverwaltung und der
+Selbstverantwortung die folgenden Ziele verfolgt:
+
+-   digitale Souveränität
+-   digitale Nachhaltigkeit
+-   digitale Exzellenz
+
+Wir legen Wert auf Transparenz, Datensicherheit und Datenschutz.
+Erfahren Sie mehr über Hostsharing auf <https://www.hostsharing.net>.
+
+Dieses Handbuch richtet sich an Anwender, welche ihre Internetprojekte
+bei der Hostsharing eG betreiben möchten. Es bietet einen Überblick über
+die Infrastruktur, eine Einführung in deren Nutzung sowie eine
+Beschreibung typischer Prozesse.
+
+::: tip
+::: title
+Tip
+:::
+
+Sie können das Handbuch auch als PDF
+[herunterladen](https://doc.hostsharing.net/Hostsharing-Benutzerhandbuch.pdf).
+:::
+
+Unser besonderer Dank gilt allen, die zu diesem Handbuch beigetragen
+haben, insbesondere:
+
+> -   Purodha Blissenbach
+> -   Christian Günter
+> -   Michael Hierweck
+> -   Peter Hormanns
+> -   Uwe Müller
+> -   Veit Schiele
+> -   Dominic Schlegel
+> -   Lars Trebing
+> -   Jan Ulrich Hasecke
+
+::: {.toctree maxdepth="3" numbered=""}
+einfuehrung/index einstieg/index mail/index referenz/index
+plattform/index
+
+glossar
+:::
+
+::: only
+html
+
+-   `genindex`{.interpreted-text role="ref"}
+-   `modindex`{.interpreted-text role="ref"}
+:::
diff --git a/source/mail/index.md b/source/mail/index.md
new file mode 100644
index 0000000..b3281d2
--- /dev/null
+++ b/source/mail/index.md
@@ -0,0 +1,268 @@
+# E-Mails senden und empfangen {#kap-emails-lesen}
+
+Wenn Sie bei Hostsharing ein E-Mail-Postfach haben, können Sie auf die
+Mailfunktionen entweder mit einem E-Mail-Programm wie Thunderbird
+zugreifen oder Sie lesen, schreiben und verwalten Ihre E-Mails im
+Webbrowser über das Webmail-Interface von Hostsharing. Wie Sie dabei
+jeweils vorgehen, wird in den folgenden beiden Abschnitten erklärt.
+
+Wir benutzen dabei die folgenden Zugangsdaten.
+
+-   E-Mail-Adresse: <pm@hs-example.de>
+-   Benutzername: xyz00-mail_pm
+-   Passwort: \*\*\*\*
+-   IMAP-Server: xyz00.hostsharing.net
+-   SMTP-Server: xyz00.hostsharing.net
+
+E-Mail-Adresse:
+
+:   Das Anlegen einer E-Mail-Adresse und die Zuweisung zu einem Postfach
+    wird in `kap-postfach-anlegen`{.interpreted-text role="numref"}
+    beschrieben.
+
+Benutzername:
+
+:   Das Anlegen eines E-Mail-Benutzers wird ebenfalls in
+    `kap-postfach-anlegen`{.interpreted-text role="numref"} erklärt.
+
+Passwort:
+
+:   Dies ist das Passwort, das dem E-Mail-Benutzer vergeben wird.
+
+IMAP-Server:
+
+:   Der Name des Mail-Eingangsservers ergibt sich aus dem Paketnamen. Es
+    handelt sich immer um eine Subdomain der Domain `hostsharing.net`.
+
+SMTP-Server:
+
+:   Auch der Name des Ausgangsserver ergibt sich aus dem Paketnamen. Die
+    Adresse ist mit der Adresse des IMAP-Servers identisch.
+
+## Webmail einrichten
+
+Eine besonders bequeme Art, E-Mails zu lesen und zu schreiben, ist das
+Webinterface von Hostsharing. Hostsharing setzt dafür das
+Open-Source-Programm [Roundcube Webmail](https://roundcube.net/) ein.
+Sie benötigen zur Nutzung nur den Benutzernamen für das Postfach und das
+entsprechende Passwort. Geben Sie im Webbrowser die Adresse
+<https://webmail.hostsharing.net> ein. Wie in
+`fig-webmail-login`{.interpreted-text role="numref"} gezeigt werden Sie
+aufgefordert Ihren Benutzernamen und Ihr Passwort einzugeben.
+
+::: {#fig-webmail-login}
+![Login des
+Webmail-Interface](../images/webmail-login.*){width="100.0%"}
+:::
+
+Wenn Sie sich das erste Mal mit dem Benutzernamen einloggen, werden Sie
+aufgefordert, Ihre Absenderkennung zu vervollständigen. Vorausgefüllt
+ist der Benutzername für das E-Mail-Konto (`xyz00-mail_pm`) sowie das
+Postfach des E-Mail-Benutzers (`xyz00-mail_pm@xyz00.hostsharing.net`).
+Beide Angaben werden Sie normalerweise so nicht nutzen wollen.
+
+::: {#fig-webmail-individualisierung-1}
+![Individualisierung des
+Kontos](../images/webmail-individualisierung-1.*){width="100.0%"}
+:::
+
+Tragen Sie deshalb hier zum Beispiel Ihren Namen und die E-Mail-Adresse
+ein, unter der Sie erreichbar sind. In unserem Beispiel sind dies, wie
+in `fig-webmail-individualisierung-2`{.interpreted-text role="numref"}
+gezeigt der Name ›Peter Mustermann‹ und die E-Mailadresse
+›pm\@hs-example.de‹
+
+::: {#fig-webmail-individualisierung-2}
+![Individualisierung des
+Kontos](../images/webmail-individualisierung-2.*){width="100.0%"}
+:::
+
+Nach der Vervollständigung steht Ihnen die Weboberfläche von Roundcube
+zur Verfügung.
+
+::: {#fig-webmail-oberflaeche}
+![Die Benutzeroberfläche von
+Webmail.](../images/webmail-oberflaeche.*){width="100.0%"}
+:::
+
+Hinweise zur Bedienung von Roundcube finden Sie im Hostsharing Wiki auf
+der Seite: <https://wiki.hostsharing.net/index.php?title=Roundcube>
+
+## Mail-Client einrichten
+
+Hostsharing unterstützt die Auto-Konfiguration von E-Mail-Clients durch
+die Protokolle [Autoconfig](https://en.wikipedia.org/wiki/Autoconfig)
+und Autodiscover. Um einen E-Mail-Client zu konfigurieren, ist daher oft
+nur die Eingabe der E-Mail-Adresse und des Passworts notwendig. Alles
+andere handelt Ihr E-Mail-Client automatisch mit der
+E-Mail-Infrastruktur von Hostsharing aus.
+
+Falls dies nicht auf Anhieb funktioniert, finden Sie in
+`kap-ref-mailautoconfig`{.interpreted-text role="numref"} mögliche
+Ursachen. Eventuell wurde die Domain nicht so konfiguriert, dass sie die
+Funktion unterstützt.
+
+Im Folgenden beschreiben wir, wie Sie in einem solchen Fall die
+notwendigen Informationen mit der Hand eingeben können.
+
+### E-Mails über IMAP abrufen
+
+Um Mails mit Hilfe eines Desktop-Clients wie Thunderbird zu empfangen
+und um Mails zu versenden, benötigen Sie bei manueller Eingabe der
+Konfiguration auch die Angaben zum IMAP- und zum SMTP-Server.
+
+Im Folgenden spielen wir das Anlegen eines neuen Kontos im Programm
+Thunderbird durch:
+
+Gehen Sie in das Menü
+`Bearbeiten --> Konto-Einstellungen`{.interpreted-text
+role="menuselection"}, um zu den Konto-Einstellungen zu gelangen.
+Anschließend klicken Sie auf das Menü
+`Konto-Aktionen --> E-Mail-Konto hinzufügen...`{.interpreted-text
+role="menuselection"}, damit sich der in
+`fig-mail-client-1`{.interpreted-text role="numref"} gezeigte Dialog zum
+Anlegen eines neuen E-Mail-Kontos öffnet.
+
+::: {#fig-mail-client-1}
+![Eingabe von E-Mail-Adresse und
+Passwort](../images/mail-client-1.*){width="100.0%"}
+:::
+
+Geben Sie dort Ihren Namen, die E-Mail-Adresse und das Passwort des
+E-Mail-Benutzers ein und klicken Sie auf `Weiter`{.interpreted-text
+role="guilabel"}.
+
+::: {#fig-mail-client-2}
+![Die automatisch ermittelten
+Zugangsdaten](../images/mail-client-2.*){width="100.0%"}
+:::
+
+Thunderbird und andere E-Mail-Clients schließen aus der E-Mail-Adresse
+auf die Zugangsdaten. Die ermittelten bzw. geratenen Zugangsdaten werden
+in `fig-mail-client-2`{.interpreted-text role="numref"} angezeigt. Die
+automatische Konfiguration hat nur dann funktioniert, wenn als
+Posteingangs- und Postausgangsserver eine Adresse in der Form
+`xyz00.hostsharing.net` gefunden wurde. Wenn dies der Fall ist, können
+Sie auf `Fertig`{.interpreted-text role="guilabel"} klicken. Wenn
+Thunderbird einen anderen Servernamen, z.B. wie in der Abbildung unter
+Verwendung Ihrer Domain, angibt, müssen Sie die richtigen Daten manuell
+eingeben.
+
+Klicken Sie dazu auf `Manuell bearbeiten`{.interpreted-text
+role="guilabel"}, damit sich das in
+`fig-mail-client-3`{.interpreted-text role="numref"} gezeigte Formular
+öffnet.
+
+::: {#fig-mail-client-3}
+![Das Formular für die manuelle Eingabe der
+Zugangsdaten](../images/mail-client-3.*){width="100.0%"}
+:::
+
+Geben Sie in dieses Formular, wie in
+`fig-mail-client-4`{.interpreted-text role="numref"} gezeigt, die
+richtigen Zugangsdaten für den IMAP-Server, den SMTP-Server und den
+Benutzernamen ein.
+
+::: {#fig-mail-client-4}
+![Geben Sie den Benutzernamen des E-Mail-Kontos und den richtigen Server
+an.](../images/mail-client-4.*){width="100.0%"}
+:::
+
+Bestätigen Sie die Eingabe mit einem Klick auf
+`Fertig`{.interpreted-text role="guilabel"}.
+
+### E-Mails über POP3 abrufen
+
+Sie können E-Mails auch über POP3 abrufen. Benutzen Sie dazu den Port
+110 für STARTTLS oder 995 für SSL/TLS. Die übrigen Zugangsdaten bleiben
+gleich. Folgen Sie den Anweisungen Ihrer E-Mail-Software.
+
+::: admonition
+Weitere Informationen
+
+Hostsharing unterstützt verschlüsselte Verbindungen über STARTTLS und
+SSL/TLS auf unterschiedlichen Ports. Lesen Sie dazu
+`kap-ref-maileingang`{.interpreted-text role="numref"} und
+`kap-ref-mailausgang`{.interpreted-text role="numref"}.
+:::
+
+## E-Mail-Passwort ändern
+
+E-Mail-Benutzer können ihr Passwort über HSAdmin und teilweise auch per
+SSH ändern. Falls dem E-Mail-Benutzer vom Paket-Admin als Shell das
+Programm `/bin/false`{.interpreted-text role="program"} zugeteilt wurde,
+lässt sich das Passwort nur über HSAdmin ändern. Hat der E-Mail-Benutzer
+dagegen als Shell das Programm `/usr/bin/passwd`{.interpreted-text
+role="program"}, so kann er sein Passwort auch per SSH ändern. Die
+Hintergründe werden in `kap-benutzerrechte`{.interpreted-text
+role="numref"} erklärt.
+
+### E-Mail-Passwort in HSAdmin ändern
+
+Der Benutzer meldet sich mit seinem E-Mail-Benutzername in HSAdmin an.
+Anschließend klickt er oben rechts auf seinen Benutzernamen. Es öffnet
+sich ein Menü, in dem ein neues Passwort eingetragen werden kann. Die
+Prozedur wurde bereits in `kap-erstes-einloggen`{.interpreted-text
+role="numref"} beschrieben.
+
+::: only
+html
+
+```{=html}
+<video width="786" height="590" controls src="https://media.hostsharing.net/Passwort-fuer-E-Mail-Benutzer-via-HSAdmin-aendern.webm"></video>
+```
+:::
+
+### E-Mail-Passwort per SSH ändern
+
+Der Benutzer meldet sich per SSH im Webpaket an und ändert mit dem
+Programm `passwd`{.interpreted-text role="program"} sein Passwort. Falls
+der E-Mail-Benutzer eine interaktive Shell hat, muss er dazu das
+Programm eigens aufrufen. Wurde ihm jedoch lediglich das Programm
+`/usr/bin/passwd`{.interpreted-text role="program"} zugewiesen, öffnet
+sich statt einer interaktiven Sitzung sofort das Programm
+`passwd`{.interpreted-text role="program"}:
+
+``` text
+$ ssh xyz00-mail@xyz00.hostsharing.net
+xyz00-mail@xyz00.hostsharing.net's password:
+```
+
+Nach Eingabe des aktuellen Passworts wird sofort
+`passwd`{.interpreted-text role="program"} gestartet und erneut das
+aktuelle Passwort abgefragt:
+
+``` text
+Changing password for xyz00-mail.
+Current password: 
+```
+
+Nach einer erneuten Eingabe des aktuellen Passworts kann der Benutzer
+zweimal ein neues eingeben. Anschließend erscheint eine Erfolgsmeldung
+und die Verbindung wird geschlossen:
+
+``` text
+New password: 
+Retype new password: 
+passwd: password updated successfully
+Connection to xyz00.hostsharing.net closed.
+```
+
+Damit ist das neue Passwort gesetzt.
+
+::: attention
+::: title
+Attention
+:::
+
+Bitte vergessen Sie nicht das neue Passwort in Ihr E-Mail-Programm
+einzutragen.
+:::
+
+::: only
+html
+
+```{=html}
+<video width="786" height="590" controls src="https://media.hostsharing.net/Passwort-fuer-E-Mail-Benutzer-via-SSH-aendern.webm"></video>
+```
+:::
diff --git a/source/plattform/backup.md b/source/plattform/backup.md
new file mode 100644
index 0000000..66f5b5a
--- /dev/null
+++ b/source/plattform/backup.md
@@ -0,0 +1,12 @@
+# Backup
+
+Hostsharing führt täglich Sicherungen der Daten der Produktivsysteme
+durch. Die Datensicherungen werden in einem vom Produktivrechenzentrum
+rund 5 km entfernten Rechenzentrum aufbewahrt. Die Datenübertragung
+zwischen den Standorten erfolgt ssh-verschlüsselt über eigene Leitungen.
+Die Backups jedes Produktivsystems werden separat archiviert und können
+nur von diesem System zur Rücksicherung angefordert werden. Ferner wird
+gewährleistet, dass Backups nicht nachträglich kompromittiert werden
+können.
+
+In der Regel werden mindestens 15 Backups vorgehalten.
diff --git a/source/plattform/index.md b/source/plattform/index.md
new file mode 100644
index 0000000..50b351b
--- /dev/null
+++ b/source/plattform/index.md
@@ -0,0 +1,8 @@
+# Managed Operations Platform
+
+In diesem Kapitel beschreiben wir Komponenten der Managed Operations
+Platform.
+
+::: {.toctree maxdepth="1"}
+rechenzentren netze redundanz replikation monitoring backup
+:::
diff --git a/source/plattform/monitoring.md b/source/plattform/monitoring.md
new file mode 100644
index 0000000..c7676c7
--- /dev/null
+++ b/source/plattform/monitoring.md
@@ -0,0 +1,12 @@
+# Monitoring
+
+Es werden folgende Dienste/Services/Kenngrößen überwacht:
+
+-   HTTP (Webserver)
+-   Mailsystem (SMTP, POP3, IMAP)
+-   Datenbanken (MySQL, PostgreSQL)
+-   Serverlast
+-   Festplatten (Speicherplatzauslastung)
+
+Unter <https://status.hostsharing.net> können der Status und evtl.
+Meldungen der Hostmaster nachgelesen werden.
diff --git a/source/plattform/netze.md b/source/plattform/netze.md
new file mode 100644
index 0000000..ed2c374
--- /dev/null
+++ b/source/plattform/netze.md
@@ -0,0 +1,45 @@
+# Netze
+
+## Separierte Netzwerke
+
+Die Aufteilung in private, abgeschottete Netze (VLANs) zwischen den
+Managed Servern eines Nutzers erlaubt effiziente und sichere
+Verbindungen.
+
+Dabei wird zwischen den folgenden Netzen unterschieden, die nicht nur
+durch VLANs, sondern zusätzlich durch Verkabelung und separate Switches
+oder Router getrennt sind:
+
+Frontend-Netzwerk
+
+:   Dieses Netzwerk ist für allgemeine Anfragen gedacht. Die Firewall
+    erlaubt aktuell den Zugang zu allen Adressen in diesem Netzwerk.
+    Mittelfristig ist geplant, nur beabsichtigt belegte Ports
+    freizugeben.
+
+Server-Netzwerk
+
+:   Physikalisch getrenntes Netzwerk zur Kommunikation der Anwendungen
+    untereinander. In diesem Netzwerk lassen sich VLANs aufschalten, um
+    den Traffic zwischen verschiedenen Anwendungskomponenten sicher
+    übertragen zu können. Darüberhinaus können auch verschiedene
+    Traffic-Arten einer Anwendung separiert werden, so z.B. die
+    Verbindung einer Anwendung zur Datenbank von derjenigen zu einem
+    Cache oder Load-Balancer.
+
+Speichernetzwerk
+
+:   Dieses Netzwerk wird verwendet für Storage-Traffic. Es basiert auf
+    dedizierten Punkt-zu-Punkt-Verkabelungen, die von außen nicht
+    erreichbar sind. Das Netzwerk nutzt private IPv4-Adressen und ist
+    nicht nur von außen nicht erreichbar, sondern auch nur zugänglich
+    für die Backup-Server, nicht jedoch für die Managed Server.
+
+Management-Netzwerk
+
+:   Dieses physikalische Netzwerk wird verwendet für den Zugang zu
+    IPMI-Controllern (Intelligent Platform Management Interface
+    Controller), RAC (Remote Access Controller), Switches und Routern.
+    Es verwendet private IPv4-Adressen, die von außen nicht erreichbar
+    sind. Es wird auch noch verfügbar sein, wenn Probleme in den anderen
+    Netzen auftauchen.
diff --git a/source/plattform/rechenzentren.md b/source/plattform/rechenzentren.md
new file mode 100644
index 0000000..5a00013
--- /dev/null
+++ b/source/plattform/rechenzentren.md
@@ -0,0 +1,37 @@
+# Rechenzentren
+
+## Berlin, primärer Standort
+
+Die Hostsharing eG betreibt ihre Community Cloud im [Berlin 1 Data
+Center](https://www.e-shelter.de/de/location/berlin-1-data-center) von
+NTT Global Data Centers. Das Rechenzentrum ist nach ISO 9001, ISO 27001
+und ISO 50001 zertifiziert.
+
+Wachschutz
+
+:   Das Rechenzentrum wird durch ein 7-stufiges Sicherheitssystem vor
+    unbefugtem Zutritt geschützt. Wachschutz und Sicherheitspersonal
+    sind 24 Stunden am Tag anwesend, an 365 Tagen im Jahr.
+
+Betriebssicherheit
+
+:   Ebenfalls rund um die Uhr an sieben Tagen in der Woche vor Ort ist
+    kompetentes Betriebspersonal, das die ausfallkritische Infrastruktur
+    überwacht. Bei einer Störung kann es sofort eingreifen, sodass
+    Ausfälle verhindert und maximale Verfügbarkeit gewährleistet ist.
+
+    Das Rechenzentrum bietet standardmäßig Tier 3. Auf Anfrage kann
+    Hostsharing Tier 4 gewährleisten.
+
+Georedundanz
+
+:   Das Berlin 1 Data Center ist eins von 160 Rechenzentren von NTT in
+    über 20 Ländern. Auf Anfrage können mit dem Rechenzentrumsbetreiber
+    georedundante Lösungen realisiert werden.
+
+## Berlin, sekundärer Standort
+
+Hostsharing erstellt jeden Tag eine Datensicherung (Backup) in einem
+zweiten, entfernten Rechenzentrum. Es ist nach ISO/IEC 27001:2013
+zertifiziert und wird von der Firma [I/P/B Internet Provider in Berlin
+GmbH](https://www.ipb.de/) betrieben.
diff --git a/source/plattform/redundanz.md b/source/plattform/redundanz.md
new file mode 100644
index 0000000..6ba4634
--- /dev/null
+++ b/source/plattform/redundanz.md
@@ -0,0 +1,10 @@
+# Redundanz
+
+Hostsharing hält Hardware und aktive Netzwerkkomponenten, welche für den
+Produktiv-Betrieb erforderlich sind, redundant vor. Entsprechendes gilt
+für die Netzwerk- und Stromverkabelung.
+
+Auch die Stromversorgung und Peerings mit den Carrieren sind redundant
+ausgelegt, letztere sogar mehrfach. So hat das Versagen einer einzelnen
+Komponente -- abgesehen von Umschaltzeiten -- keine Auswirkungen auf den
+Produktivbetrieb.
diff --git a/source/plattform/replikation.md b/source/plattform/replikation.md
new file mode 100644
index 0000000..55a30dd
--- /dev/null
+++ b/source/plattform/replikation.md
@@ -0,0 +1,11 @@
+# Replikation
+
+Hostsharing repliziert mit Hilfe der Software DRBD die
+Festplatteninhalte aller Produktivsysteme in Echtzeit auf ein
+Standby-System (RAID 1 über das Netzwerk).
+
+Auf diese Weise stellt Hostsharing sicher, dass im Fall eines
+Hardwareschadens der Betrieb mit allen persistent gespeicherten Daten
+unverzüglich fortgesetzt werden kann, ohne dass durch das Einspielen des
+Backups Datenänderungen, die sich in der Zwischenzeit ergeben haben -
+etwa eingegangene E-Mails oder Datenbanktransaktionen - verloren gehen.
diff --git a/source/referenz/backup.md b/source/referenz/backup.md
new file mode 100644
index 0000000..75a47a2
--- /dev/null
+++ b/source/referenz/backup.md
@@ -0,0 +1,52 @@
+# Backup {#kap-backup}
+
+Hostsharing führt nächtliche Sicherungen der Daten durch. In der Regel
+können jeweils mindestens die letzten 15 nächtlichen Datensicherungen
+wiederhergestellt werden.
+
+In der Datensicherung enthalten sind:
+
+-   die Paket-Konfiguration
+-   die Dateien im Paket selbst, sofern diese nicht vom Paket-Admin
+    explizit ausgeschlossen wurden
+-   die zum Paket gehörigen Datenbanken
+-   die zum Paket gehörigen eingegangenen E-Mails
+-   die Logfiles
+
+::: attention
+::: title
+Attention
+:::
+
+In der Datensicherung sind **nicht** enthalten:
+
+-   ausgehende, aber noch nicht versandte E-Mails
+-   eingehende, aber noch nicht im Postfach abgelegte E-Mails
+-   Dateien in Verzeichnissen für temporäre Daten
+:::
+
+## Datenbanken
+
+Unmittelbar vor Beginn der Sicherung der Daten des Dateisystems werden
+MySQL-, PostgreSQL-Datenbanken und `crontab`{.interpreted-text
+role="file"}-Dateien in das Verzeichnis
+`/home/pacs/xyz00/.bak/`{.interpreted-text role="file"} gesichert. Diese
+Sicherungen fließen in die nachfolgende Dateisystemsicherung ein. Die
+Rücksicherung von Datenbanken erfolgt durch den Paket-Admin auf Basis
+der im Verzeichnis `/home/pacs/xyz00/.bak/`{.interpreted-text
+role="file"} abgelegten Datenbanksicherungen.
+
+## Rücksicherung
+
+Für die Rücksicherung der Datenbestände ist ein Rücksicherungsauftrag
+für die betroffene Sicherungsdatei in Auftrag zu geben. Der
+Rücksicherungsauftrag erfolgt per E-Mail an <service@hostsharing.net>
+und beinhaltet folgende Angaben:
+
+-   das betreffende Webpaket,
+-   den Pfad des rückzusichernden Verzeichnisses oder alternativ den
+    Pfad und den Dateinamen der rückzusichernden Datei
+-   sowie das Datum des angeforderten Sicherungslaufs.
+
+Die Rücksicherung wird vom Service unter:
+`/home/restore/YYY-MM-DD`{.interpreted-text role="file"} bereitgestellt.
diff --git a/source/referenz/benutzer/index.md b/source/referenz/benutzer/index.md
new file mode 100644
index 0000000..1d97da2
--- /dev/null
+++ b/source/referenz/benutzer/index.md
@@ -0,0 +1,89 @@
+# Benutzerrollen {#kap-benutzerrollen}
+
+Um Dienste, Programme und Dämonprozesse sicher voneinander zu trennen,
+laufen sie im Debian-Betriebssystem unter verschiedenen Benutzern mit
+jeweils klar definierten Rechten. Dies gilt auch für die Aufgaben, die
+man als Nutzer der Plattform in seinem Web-Paket erledigt. Wer mit der
+Managed Operations Platform Webanwendungen betreibt, muss im Laufe der
+Zeit zahlreiche Benutzer anlegen. Jeder Benutzer erfüllt eine spezielle
+Rolle. Die Rollen werden durch die Vergabe von Rechten auf
+Betriebssystemebene definiert. Für Personen, die bisher noch nicht mit
+Unix-Systemen und dem Konzept unterschiedlicher Benutzer gearbeitet
+haben, stellt dieses Mehrbenutzerkonzept am Anfang eine Hürde dar.
+Ausführliche Unix-Kenntnisse sind nicht erforderlich, um auf der
+Hostsharing-Plattform Benutzer anzulegen, da das Verwaltungswerkzeug
+`HSAdmin`{.interpreted-text role="program"} diese Aufgabe vereinfacht.
+Da in diesem Handbuch die Kenntnis der Rollen an vielen Stellen
+vorausgesetzt wird, werden sie in diesem Kapitel ausführlich
+beschrieben.
+
+# Benutzerrechte {#kap-benutzerrechte}
+
+HSAdmin bietet uns die Möglichkeit, dem Benutzer eine Login-Shell für
+interaktive Sitzungen zuzuordnen oder genau dies zu verhindern. Wir
+haben die Wahl zwischen den Kommandointerpretern
+`bash`{.interpreted-text role="program"}, `csh`{.interpreted-text
+role="program"}, `ksh`{.interpreted-text role="program"},
+`tcsh`{.interpreted-text role="program"} oder `zsh`{.interpreted-text
+role="program"} und den Programmen `false`{.interpreted-text
+role="program"}, `passwd`{.interpreted-text role="program"} und
+`scponly`{.interpreted-text role="program"}. Abb.
+`fig-hsadmin-shell`{.interpreted-text role="numref"} zeigt das
+entsprechende Menü.
+
+::: {#fig-hsadmin-shell}
+![Das Auswahlmenü mit den Shell- und
+Kommando-Interpretern.](../../images/hsadmin-benutzershells.*){width="100.0%"}
+:::
+
+/bin/false
+
+:   Benutzer, denen das Programm `/bin/false`{.interpreted-text
+    role="program"} als Shell zugeordnet wird, können sich nicht in
+    ihrem Account einloggen und eine interaktive Sitzung starten. Diese
+    Einstellung eignet sich für Systembenutzer, die Programme im
+    Webpaket ausführen. sich aber nicht von außen einloggen sollen. Dies
+    können auch Mail-Benutzer sein.
+
+/bin/bash
+
+:   Die
+    [Bourne-Again-Shell](https://manpages.debian.org/buster/bash/bash.1.en.html).
+    Auf vielen Linuxsystemen ist dies die Standard-Shell.
+
+/bin/csh
+
+:   Die [C-Shell](https://manpages.debian.org/buster/csh/csh.1.en.html).
+
+/bin/ksh
+
+:   Die
+    [Korn-Shell](https://manpages.debian.org/buster/ksh/ksh.1.en.html).
+
+/bin/tcsh
+
+:   Eine [erweiterte
+    C-Shell](https://manpages.debian.org/buster/tcsh/tcsh.1.en.html).
+
+/bin/zsh
+
+:   Die
+    [Z-Shell](https://manpages.debian.org/buster/zsh-common/zsh.1.en.html).
+
+/usr/bin/passwd
+
+:   Benutzer, denen das Programm `/usr/bin/passwd`{.interpreted-text
+    role="program"} zugeordnet wird, können beim Versuch, sich mit
+    `ssh`{.interpreted-text role="program"} einzuloggen, ihr Passwort
+    ändern. Eine interaktive Sitzung können sie jedoch nicht starten.
+    Dies ist sinnvoll, um Benutzern ein größeres Maß an Vertraulichkeit
+    ihrer Kommunikation zu ermöglichen. Der Paket-Admin setzt für den
+    E-Mail-Benutzer zwar ein initiales Passwort, der Benutzer kann dies
+    aber sogleich ändern, sodass der Paket-Admin den E-Mail-Verkehr des
+    Benutzers nicht unbemerkt mitlesen kann.
+
+/usr/bin/scponly
+
+:   Diese Zuordnung ermöglicht dem Benutzer den Gebrauch der Programme
+    `scp`{.interpreted-text role="program"} und `sftp`{.interpreted-text
+    role="program"}. Eine interaktive Sitzung ist nicht möglich.
diff --git a/source/referenz/datenbanken/datenbank-webfrontend.md b/source/referenz/datenbanken/datenbank-webfrontend.md
new file mode 100644
index 0000000..b1524f0
--- /dev/null
+++ b/source/referenz/datenbanken/datenbank-webfrontend.md
@@ -0,0 +1,7 @@
+# Datenbank-Webfrontend
+
+Für angelegte Datenbanken stehen folgende Webfrontends zur Verfügung:
+
+MySQL [phpMyAdmin](https://phpmyadmin.hostsharing.net/current).
+
+PostgreSQL [phpPgAdmin](https://phppgadmin.hostsharing.net/current).
diff --git a/source/referenz/datenbanken/datenbank-zugriff.md b/source/referenz/datenbanken/datenbank-zugriff.md
new file mode 100644
index 0000000..af74e60
--- /dev/null
+++ b/source/referenz/datenbanken/datenbank-zugriff.md
@@ -0,0 +1,12 @@
+# Datenbankzugriff
+
+Der Zugriff erfolgt über folgende Hosts und Ports:
+
++-----------+-----------+------+
+| Datenbank | Hostnamen | Port |
++===========+===========+======+
+| > MySQL   | localhost | 3306 |
++-----------+-----------+------+
+| P         | localhost | 5432 |
+| ostgreSQL |           |      |
++-----------+-----------+------+
diff --git a/source/referenz/datenbanken/datenbanken-nutzer.md b/source/referenz/datenbanken/datenbanken-nutzer.md
new file mode 100644
index 0000000..3ac2465
--- /dev/null
+++ b/source/referenz/datenbanken/datenbanken-nutzer.md
@@ -0,0 +1,21 @@
+# Datenbanken und Nutzer
+
+Datenbanknutzer haben eine eigene Nutzerverwaltung und sind unabhängig
+von der Vergabe von Rechten auf Betriebsystemebene.
+
+## Verwaltung der Datenbanken und Datenbanknutzer
+
+Die Verwaltung von Datenbanken und
+`Nutzern<../benutzer/index>`{.interpreted-text role="doc"} erfolgt mit
+`HSAdmin`{.interpreted-text role="term"} über ein Webfrontend oder über
+die `shell`{.interpreted-text role="term"}.
+
+## Rechte
+
+Datenbanknutzern müssen initial die gewünschten Rechte an den
+entsprechenden Datenbanken vergeben werden.
+
+## Name
+
+-   Datenbanknutzer haben immer den Präfix `xyz00_`.
+-   Datenbanken haben immer den Präfix `xyz00_`.
diff --git a/source/referenz/datenbanken/index.md b/source/referenz/datenbanken/index.md
new file mode 100644
index 0000000..67ffb02
--- /dev/null
+++ b/source/referenz/datenbanken/index.md
@@ -0,0 +1,19 @@
+# Datenbanken {#kap-ref-db}
+
+Jeder `Hive`{.interpreted-text role="term"} hat einen eigenen MySQL- und
+PostgreSQL-Datenbankserver. Daraus ergibt sich, dass der jeweilige
+MySQL- und PostgreSQL-Server von allen auf einem Hive eingerichteten
+`Web-Paketen<../webpaket/index>`{.interpreted-text role="doc"} gemeinsam
+genutzt wird.
+
+Der externe Zugriff auf die Datenbanken ist über einen SSH-Tunnel
+möglich.
+
+Inhalt:
+
+::: {.toctree maxdepth="1                
+
+datenbanken-nutzer
+datenbank-zugriff
+datenbank-webfrontend"}
+:::
diff --git a/source/referenz/domain/domain-optionen.md b/source/referenz/domain/domain-optionen.md
new file mode 100644
index 0000000..465e18b
--- /dev/null
+++ b/source/referenz/domain/domain-optionen.md
@@ -0,0 +1,89 @@
+# Domain-Optionen {#kap-domain-optionen}
+
+Bei Aufschaltung einer Domain können verschiedene Optionen gesetzt
+werden.
+
+Greylisting
+
+:   Greylisting ist eine Form der Spam-Bekämpfung bei E-Mails.
+    Nachrichten von unbekannten Absendern werden zunächst abgewiesen und
+    erst nach einem weiteren Zustellversuch angenommen. Da viele Spammer
+    nur einen Zustellversuch unternehmen, können Sie mit dieser Option
+    das Spam-Aufkommen in den Postfächern der Domain spürbar reduzieren.
+    Allerdings müssen Sie damit rechnen, Mails von unbekannten Absendern
+    erst nach einer gewissen Wartezeit zu erhalten. Falls der Absender
+    einen fehlerhaft konfigurierten Mailserver hat, kann es sein, dass
+    er keinen zweiten Zustellversuch unternimmt, sodass Sie die E-Mail
+    gar nicht bekommen.
+
+Multiviews
+
+:   Wenn diese Option eingeschaltet ist, berücksichtigt der Webserver
+    Browsereinstellungen und kann je nachdem unterschiedliche Dateien
+    ausliefern. Die Möglichkeiten sind in der Dokumentation zu
+    [mod_mime](http://httpd.apache.org/docs/current/mod/mod_autoindex.html)
+    und
+    [mod_negotiation](http://httpd.apache.org/docs/current/mod/mod_negotiation.html)
+    beschrieben.
+
+Indexes
+
+:   Wenn diese Option eingeschaltet ist, erzeugt der Webserver für
+    Verzeichnisse, die keine Index-Datei (`index.html`{.interpreted-text
+    role="file"}) enthalten eine Liste mit den Inhalten des
+    Verzeichnisses. Weitere Informationen zu dieser Funktion des
+    Webservers finden Sie in der Dokumentation von
+    [mod_autoindex](http://httpd.apache.org/docs/current/mod/mod_autoindex.html).
+    Ist die Option nicht gesetzt, erhält der Browser stattdessen eine
+    404-Fehlermeldung. Sie können diese Einstellung durch eine
+    `.htaccess`{.interpreted-text role="file"}-Datei im Verzeichnis
+    überschreiben. Lesen Sie dazu `kap-htaccess`{.interpreted-text
+    role="numref"}.
+
+Fallback auf htdocs/htdocs-ssl
+
+:   Wenn diese Option aktiviert ist, werden Browser-Anfragen an eine
+    nicht aufgeschaltete Subdomain (`blog.hs-example.de`) an die
+    Hauptdomain weitergeleitet. In diesem Fall an `hs-example.de`. Falls
+    die Option nicht gesetzt ist, erhält der Browser stattdessen eine
+    404-Fehlermeldung.
+
+Includes
+
+:   Wenn diese Option gesetzt ist, unterstützt der Webserver SSI (Server
+    Side Includes). Weitere Informationen dazu finden Sie in der
+    Dokumentation von
+    [mod_includes](http://httpd.apache.org/docs/current/mod/mod_include.html)
+
+Backup-MX für externen Mailserver
+
+:   Wenn diese Option eingeschaltet ist, nehmen die E-Mail-Server von
+    Hostsharing als sogenannter Backup-MX E-Mails für einen SMTP-Server
+    an, der unabhängig betrieben wird. Für diese Funktion muss die
+    Zone-Datei angepasst werden. Lesen Sie dazu
+    `kap-ref-zonefile`{.interpreted-text role="numref"}.
+
+Let\'s Encrypt-Zertifikat
+
+:   Wenn diese Option aktiviert ist, wird automatisch ein kostenloses
+    LE-Zertifikat generiert und regelmäßig verlängert. Sie können Ihre
+    Website dann so konfigurieren, dass der Datentransfer zu den
+    Browsern über eine verschlüsselte Verbindung (`https`) erfolgt.
+
+E-Mail Auto-Konfiguration
+
+:   Bei Aktivierung dieser Option reicht es bei den meisten
+    E-Mail-Programmen (die \"autoconfig\" oder \"autodiscover\"
+    unterstützen), E-Mail-Adresse und Passwort zur Konfiguration
+    anzugeben. Dazu muss der E-Mail-Adresse ein eindeutiges
+    E-Mail-Postfach bei Hostsharing zugeordnet sein.
+
+Domain Keys (DKIM)
+
+:   Durch das Aktiveren dieser Option werden DKIM-Signaturen für
+    ausgehende E-Mails mit Absendern dieser E-Mail-Domain aktiviert. Vor
+    der Aktivierung muss der öffentliche Schlüssel des Domain Key in der
+    DNS Zone der Domain veröffentlicht werden. Das Zonefile muss dazu
+    die Zeile `{DKIM_RR}` enthalten. Die Option ist (ab 1.9.2021) bei
+    neu angelegten Domains in der Voreinstellung aktiviert und der
+    öffentliche Schlüssel wird automatisch hinterlegt.
diff --git a/source/referenz/domain/domainverwaltung.md b/source/referenz/domain/domainverwaltung.md
new file mode 100644
index 0000000..08e5e63
--- /dev/null
+++ b/source/referenz/domain/domainverwaltung.md
@@ -0,0 +1,114 @@
+# Domainverwaltung
+
+## Registrierung und Aufschaltung
+
+Die Domainverwaltung ist in zwei voneinander unabhängige
+Aufgabenbereiche unterteilt:
+
+### Domaineinrichtung und -konfiguration in einem Web-Paket
+
+Die Einrichtung und Konfiguration erfolgt mit dem Werkzeug
+`HSAdmin`{.interpreted-text role="term"}. Die Benutzung von HSAdmin über
+das Webinterface unter admin.hostsharing.net wird in
+`kap-hsadmin-einstieg`{.interpreted-text role="numref"} beschrieben, die
+Syntax der Kommandozeilen-Variante `hsscript`{.interpreted-text
+role="command"} in `kap-hsadmin`{.interpreted-text role="numref"}.
+
+Aufgaben der Domainverwaltung werden vom `Paket-Admin`{.interpreted-text
+role="role"} oder vom `Mitglieds-Account <Mitglied>`{.interpreted-text
+role="role"} wahrgenommen.
+
+### Vergabe von Aufträgen an eine Registrierungsstelle
+
+Die Vergabe von Aufträgen (z.B. Registrierung, Transfer) an eine
+Registrierungsstelle ist nur über das
+[Webfrontend](https://www.domain-bestellsystem.de/) des
+`Domain-Bestell-System`{.interpreted-text role="term"} möglich und
+erfolgt mit Hilfe der `Reseller-ID`{.interpreted-text role="role"}.
+
+::: note
+::: title
+Note
+:::
+
+Die Anzahl der pro Tag möglichen Registrierungen ist beschränkt, um
+Missbrauch vorzubeugen. Nach Rücksprache kann das Limit erhöht werden.
+:::
+
+::: warning
+::: title
+Warning
+:::
+
+Der Nutzer ist für sämtliche Aktivitäten im Domainbestellsystem
+juristisch eigenverantwortlich.
+:::
+
+::: tip
+::: title
+Tip
+:::
+
+Wenn Sie eine Domain neu registrieren, schalten Sie diese erst in
+HSAdmin auf, bevor Sie sie im Domainbestellsystem registrieren. Die
+Konnektierung erfolgt dann in der Regel problemlos. Wenn Sie umgekehrt
+vorgehen, müssen Sie im Domainbestellsystem die Konnektierung neu
+anstoßen.
+:::
+
+## Bestehende Domain einem neuen Domain-Admin zuordnen
+
+Um eine Domain einem anderen `Domain-Admin`{.interpreted-text
+role="role"} zuzuordnen und damit im Dateisystem zu verschieben, wird
+sie über HSAdmin gelöscht und neu angelegt.
+
+::: warning
+::: title
+Warning
+:::
+
+Beim Löschen einer Domain in HSAdmin werden alle Dateien im Webspace
+komplett gelöscht. Sichern Sie also vorher alle Daten in einem von der
+Löschung nicht betroffenen Verzeichnis (zum Beispiel mit
+`tar`{.interpreted-text role="command"}). Es gehen auch die Mailadressen
+der betreffenden Domain verloren und müssen an neuer Stelle neu angelegt
+werden.
+:::
+
+Der Prozess des Verschiebens läuft im Großen und Ganzen folgendermaßen
+ab:
+
+1.  Sichern aller Daten im Ordner `doms/example.de`{.interpreted-text
+    role="file"} des alten Domain-Admin
+2.  Löschen der Domain in HSAdmin
+3.  Neuanlage eines neuen Domain-Admin in HSAdmin
+4.  Neuanlage der Domain in HSAdmin
+5.  Rückspielen der gesicherten Daten in den neu erstellen Ordner
+    `doms/example.de`{.interpreted-text role="file"} des neuen
+    Domain-Admin
+
+## Bestehende Domain in ein anderes Web-Paket verschieben
+
+Um eine Domain in ein anderes Web-Paket zu verschieben, wird sie im
+alten Web-Paket gelöscht und im neuen neu angelegt. Gehen Sie dabei im
+Prinzip genau so vor wie im Abschnitt zuvor.
+
+1.  Sichern aller Daten im Ordner `doms/example.de`{.interpreted-text
+    role="file"} des alten Domain-Admin im alten Web-Paket
+2.  Löschen der Domain `example.de` in HSAdmin im alten Web-Paket
+3.  Neuanlage eines neuen Domain-Admin im neuen Web-Paket
+4.  Neuanlage der Domain `example.de` im neuen Web-Paket
+5.  Rückspielen der gesicherten Daten in den neu erstellen Ordner
+    `doms/example.de`{.interpreted-text role="file"} des neuen
+    Domain-Admin im neuen Web-Paket
+
+::: tip
+::: title
+Tip
+:::
+
+Wenn Sie unsicher sind, wenden Sie sich an den Service unter
+<service@hostsharing.net>. Der [Webmaster on Demand]() kann eine Domain
+mit minimalen Ausfallzeiten für Sie bei aufwandsabhängiger Abrechnung
+verschieben.
+:::
diff --git a/source/referenz/domain/index.md b/source/referenz/domain/index.md
new file mode 100644
index 0000000..7b0e238
--- /dev/null
+++ b/source/referenz/domain/index.md
@@ -0,0 +1,58 @@
+# Domains {#kap-ref-domain}
+
+Die Domainverwaltung bei Hostsharing ist in zwei unabhängige Bereiche
+aufgeteilt.
+
+1.  Die Domaineinrichtung in einem Web-Paket. Dies geschieht mit
+    HSAdmin. Die Benutzung der Weboberfläche wird in
+    `kap-hsadmin-einstieg`{.interpreted-text role="numref"}, speziell in
+    `kap-hsadmin-domain-anlegen`{.interpreted-text role="numref"}
+    beschrieben. Die Nutzung des Kommandozeilen-Tools von HSAdmin
+    erklärt `kap-hsadmin`{.interpreted-text role="numref"}
+2.  Die Domainregistrierung im Domainbestellsystems von Partnergate zur
+    Konnektierung, also der eigentlichen Registrierung von Domains bei
+    einem Registrar. Das Domainbestellsystem dient auch zur Vergabe
+    weiterer Aufträgen an Registrierungstellen. Jedes Mitglied von
+    Hostsharing erhält für dieses Domainbestellsystem Zugangsdaten. Sie
+    bestehen aus der `Reseller-ID`{.interpreted-text role="role"} und
+    einem Passwort.
+
+Hostsharing gibt seinen Mitgliedern bei der Verwaltung von Domains große
+Freiheiten, da beide Bereiche nicht zwingend zusammen genutzt werden
+müssen. Sie können Domains über das Domainbestellsystem registrieren und
+bei anderen Hostern betreiben. Sie können Domains, die Sie bei anderen
+Hostern registriert haben, bei Hostsharing betreiben.
+
+Die Verwaltung einer Domain umfasst:
+
+-   Domain aufschalten
+    (`Domainverwaltung<domainverwaltung>`{.interpreted-text
+    role="doc"}),
+-   `Domain-Registrierung`{.interpreted-text role="term"},
+-   `Domain-Transfer`{.interpreted-text role="term"} zur Hostsharing eG,
+-   Extern registrierte Domain aufschalten,
+-   Extern registrierte `Sub-Domain`{.interpreted-text role="term"}
+    aufschalten,
+-   Domain neu zuordnen (`Domain-Admin`{.interpreted-text role="role"}
+    neu zuordnen oder Zuordnung zu einem
+    `Web-Paket<../webpaket/index>`{.interpreted-text role="doc"}
+    ändern),
+-   Sub-Domain neu zuordnen (`Domain-Admin`{.interpreted-text
+    role="role"} neu zuordnen oder Zuordnung zu einem
+    `Web-Paket<../webpaket/index>`{.interpreted-text role="doc"}
+    ändern),
+-   Lokale Sub-Domain separat aufschalten,
+-   Verwaltung des `Zonefile<../zonefile/index>`{.interpreted-text
+    role="doc"},
+-   Verwaltung der Domain-Daten (z.B. Domain-Handle, Kontaktdaten),
+-   Transfer zu einem anderen Provider,
+-   Domain löschen/kündigen.
+
+Inhalt:
+
+::: {.toctree maxdepth="1                
+
+domainverwaltung
+subdomains
+domain-optionen"}
+:::
diff --git a/source/referenz/domain/subdomains.md b/source/referenz/domain/subdomains.md
new file mode 100644
index 0000000..627a425
--- /dev/null
+++ b/source/referenz/domain/subdomains.md
@@ -0,0 +1,46 @@
+# Subdomain {#kap-ref-subdomains}
+
+Subdomains sind Domains unterhalb der Hauptdomain. Auch `www` ist eine
+Subdomain. Als Subdomain der Hauptdomain `hs-example.de` wird eine
+Website unter dieser Subdomain im Browser über die Adresse
+`www.hs-example.de` aufgerufen. Die Subdomain `test` würde man über die
+Adresse `test.hs-example.de` erreichen.
+
+Sie können bei Hostsharing beliebig viele Subdomains einrichten. Es gibt
+zwei Methoden Subdomains anzulegen:
+
+1.  Leichtgewichtige Subdomains
+2.  Aufgeschaltete Subdomains
+
+## Leichtgewichtige Subdomain
+
+Eine Subdomains wird bei Hostsharing *leichtgewichtig* genannt, wenn sie
+durch ein Unterverzeichnis von
+`~/doms/example.com/subs/`{.interpreted-text role="file"} definiert
+wurde. Dies ist die einfachste Art und Weise, um Subdomains zu
+erstellen. Für jede Subdomain wird ein Ordner im Verzeichnis
+`subs`{.interpreted-text role="file"} erstellt.
+
+Leichtgewichtige Subdomains sollten nur verwendet werden, wenn eine
+einzelne Anwendung zur Verwaltung aller dieser Subdomains verwendet
+wird. Das kann zum Beispiel ein CMS oder eine
+Multisite-Wordpress-Installation sein.
+
+Wenn unterschiedliche Anwendungen unter Subdomains betrieben werden,
+sollte
+
+-   für jede Subdomain ein eigener `Domain-Admin`{.interpreted-text
+    role="role"} angelegt
+-   und jede Subdomain jeweils beim entsprechenden Domain-Admin
+    aufgeschaltet werden.
+
+## Aufgeschaltete Subdomain
+
+Eine Subdomain wird bei Hostsharing wie die Hauptdomain aufgeschaltet
+(siehe `kap-hsadmin-domain-anlegen`{.interpreted-text role="numref"}).
+Eine Subdomain wie `blog.hs-example.de` kann im gleichen Web-Paket
+aufgeschaltet werden wie die Hauptdomain oder in einem anderen. Es ist
+Best-Practice bei Hostsharing für jede aufgeschaltete Domain -- also
+auch für jede aufgeschaltete Subdomain -- einen
+`Domain-Admin`{.interpreted-text role="role"} anzulegen und die Domain
+bzw. Subdomain diesem Domain-Admin zuzuordnen.
diff --git a/source/referenz/email/autoconfig.md b/source/referenz/email/autoconfig.md
new file mode 100644
index 0000000..f0b8efa
--- /dev/null
+++ b/source/referenz/email/autoconfig.md
@@ -0,0 +1,39 @@
+# E-Mail Auto-Konfiguration {#kap-ref-mailautoconfig}
+
+Die Domain-Option \"E-Mail Auto-Konfiguration\" ermöglicht das einfache
+Konfigurieren der E-Mail-Clients mit den Daten des Posteingangs- und
+Postausgangsservers. Wird diese Domain-Option für z.B. `example.com`
+aktiviert, und ist der E-Mail-Adresse `fred@example.com` (evtl. nach
+mehreren Weiterleitungen) bei Hostsharing genau ein Postfach zugeordnet,
+dann reicht es bei den gängigsten E-Mail-Clients aus, zur Einrichtung
+des Postfaches die E-Mail-Adresse und das jeweilige Passwort anzugeben.
+Die restlichen Einstellungen (Server, Postfach/Benutzername, Protokoll,
+Port etc.) werden automatisch durch den E-Mail-Client von Hostsharing
+abgerufen und sodann automatisch konfiguriert.
+
+Dies vereinfacht aus Nutzersicht die Einrichtung eines
+Hostsharing-Postfaches im eigenen E-Mail-Client erheblich.
+
+Das Verfahren kann aus mehreren Gründen scheitern:
+
+-   Der E-Mail-Client des Nutzers unterstützt \"autoconfig\" und
+    \"autodiscover\" nicht. Thunderbird ab Version 3.1 und Outlook ab
+    Version 2007 sollten funktionieren.
+-   Die Domain-Option `E-Mail Auto-Konfiguration` (siehe
+    `kap-domain-optionen`{.interpreted-text role="numref"}) wurde erst
+    *nach* einem gescheiterten Konfigurationsversuch gesetzt (sie sollte
+    *vorher* gesetzt werden). Vor allem Microsoft-Produkte cachen das
+    Abfrageergebnis für eine E-Mail-Adresse ca. zwei Wochen in einer
+    Microsoft-Cloud, so dass weitere automatische Konfigurationsversuche
+    erst nach Ablauf dieser (langen) Zeit erfolgreich sind. In diesem
+    Fall hilft nur, die Einstellungen im E-Mail-Client per Hand
+    vorzunehmen.
+-   In der Domain wird ein *eigenes* Zonenfile verwendet, in dem die
+    nötigen Einträge (`MAILSERVICES_RR` und `AUTODISCOVER_RR`, siehe
+    `kap-ref-zonefile-platzhalter`{.interpreted-text role="numref"})
+    fehlen. Dann müssen sie per Hand ergänzt werden.
+
+::: todo
+Nachträgliche Aktivierung von autoconfig/autodiscover beschreiben.
+Hinweis das Outlook Versionen das nicht unterstützen.
+:::
diff --git a/source/referenz/email/emailalias-paketuser.md b/source/referenz/email/emailalias-paketuser.md
new file mode 100644
index 0000000..d09e5af
--- /dev/null
+++ b/source/referenz/email/emailalias-paketuser.md
@@ -0,0 +1,9 @@
+# E-Mail-Alias und Paketnutzer
+
+Ein E-Mail-Alias ist eine E-Mail-Adresse zur Weiterleitung von E-Mails.
+
+Ein `E-Mail-Alias`{.interpreted-text role="term"} in der
+E-Mail-Konfiguration hat Vorrang vor einem Paketnutzer gleichen Namens.
+Implementiert der `E-Mail-Alias`{.interpreted-text role="term"} eine
+Weiterleitung, gehen in diesem Fall in der Mailbox des Paketnutzers
+keine E-Mails ein.
diff --git a/source/referenz/email/index.md b/source/referenz/email/index.md
new file mode 100644
index 0000000..24606fd
--- /dev/null
+++ b/source/referenz/email/index.md
@@ -0,0 +1,37 @@
+# E-Mail
+
+Jeder `Benutzer<../benutzer/index>`{.interpreted-text role="doc"} im
+`Web-Paket<../webpaket/index>`{.interpreted-text role="doc"} besitzt ein
+E-Mail-Konto und kann E-Mail senden und empfangen. E-Mails werden
+unterhalb des Verzeichnisses `~/Maildir` abgelegt. Der Name des Ordners
+`Maildir` darf nicht verändert werden.
+
+Jedes E-Mail-Konto ist POP3- und IMAP-fähig.
+
+Hostsharing bietet folgende Konfigurationsmöglichkeiten:
+
+-   Anlegen und Löschen von E-Mail-Adressen
+-   Anlegen und Löschen von
+    `E-Mail-Aliasen <E-Mail-Alias>`{.interpreted-text role="term"}
+-   Einrichtung von E-Mail-Weiterleitungen
+-   Automatisches Versenden einer E-Mail-Bestätigung
+    (`Vacation`{.interpreted-text role="term"})
+-   Automatisches Filtern und Bearbeiten von E-Mails über
+    [Managesieve](https://wiki.hostsharing.net/index.php?title=Sieve)
+    oder
+    [Procmail](https://wiki.hostsharing.net/index.php?title=Procmail)
+-   Mit E-Mail-Aliasen kann die Zustellung von Nachrichten in die
+    Postfächer der Benutzer gesteuert werden.
+-   E-Mail-Konten bei anderen Anbietern abfragen
+-   Einrichtung von Mailinglisten
+
+Der Zugriff auf das E-Mail-Konto erfolgt über einen beliebigen
+E-Mail-Client oder über `Webmail <webmail>`{.interpreted-text
+role="doc"}.
+
+Inhalt:
+
+::: {.toctree maxdepth="1"}
+posteingangsserver postausgangsserver size-email emailalias-paketuser
+webmail autoconfig
+:::
diff --git a/source/referenz/email/postausgangsserver.md b/source/referenz/email/postausgangsserver.md
new file mode 100644
index 0000000..944a225
--- /dev/null
+++ b/source/referenz/email/postausgangsserver.md
@@ -0,0 +1,38 @@
+# Postausgangsserver {#kap-ref-mailausgang}
+
+Für jedes Webpaket steht ein Postausgangsserver für reguäre E-Mails und
+ein Postausgangsserver für den Massenversand von E-Mails bereit.
+
+Unter Massenversand wird der Versand von Newslettern,
+Forenbenachrichtungen, der Betrieb von Mailinglisten und ähnliche
+Nutzungen im Rahmen des Zulässigen verstanden. Wählen Sie bei solchen
+Massenaussendungen bitte möglichst den Postausgangsserver für den
+Massenversand, da Sie so mithelfen, die Reputation unserer normalen
+Ausgangsserver hoch zu halten.
+
+Angaben für den Postausgangsserver:
+
+  -------------------------------------------------------------------------------------
+  Postausgangsserver      Postfach/Benutzername   Protokoll   Port         Port SSL/TLS
+                                                              STARTTLS     
+  ----------------------- ----------------------- ----------- ------------ ------------
+  xyz00.hostsharing.net   xyz00-mailbox           SMTP        587 oder 25  465
+
+  -------------------------------------------------------------------------------------
+
+Die Konfigurationsvariante SMTP über Port 587 mit STARTTLS wird
+empfohlen.
+
+Angaben für den Postausgangsserver für den Massenversand:
+
+  -------------------------------------------------------------------------------------
+  Postausgangsserver      Postfach/Benutzername   Protokoll   Port         Port SSL/TLS
+                                                              STARTTLS     
+  ----------------------- ----------------------- ----------- ------------ ------------
+  xyz00.hostsharing.net   xyz00-mailbox           SMTP        4587 oder    1465
+                                                              4025         
+
+  -------------------------------------------------------------------------------------
+
+Die Konfigurationsvariante SMTP über Port 4587 mit STARTTLS wird
+empfohlen.
diff --git a/source/referenz/email/posteingangsserver.md b/source/referenz/email/posteingangsserver.md
new file mode 100644
index 0000000..f7b4fae
--- /dev/null
+++ b/source/referenz/email/posteingangsserver.md
@@ -0,0 +1,15 @@
+# Posteingangsserver {#kap-ref-maileingang}
+
+Angaben für den Posteingangsserver:
+
+  -------------------------------------------------------------------------------------
+  Posteingangsserver      Postfach/Benutzername   Protokoll   Port         Port SSL/TLS
+                                                              STARTTLS     
+  ----------------------- ----------------------- ----------- ------------ ------------
+  xyz00.hostsharing.net   xyz00-mailbox           POP3        110          995
+
+  xyz00.hostsharing.net   xyz00-mailbox           IMAP        143          993
+  -------------------------------------------------------------------------------------
+
+Die Konfigurationsvariante IMAP über Port 143 mit STARTTLS wird
+empfohlen.
diff --git a/source/referenz/email/size-email.md b/source/referenz/email/size-email.md
new file mode 100644
index 0000000..3c0f7e3
--- /dev/null
+++ b/source/referenz/email/size-email.md
@@ -0,0 +1,7 @@
+# Größenbeschränkung einer E-Mail
+
+Die E-Mail-Server akzeptieren E-Mails bis zu einer maximalen Größe von
+128 MB. Dateianhänge sollten daher die Größe von ca. 90 MB nicht
+überschreiten. Allgemeine Informationen zur [Größenbeschränkung von
+E-Mails](https://wiki.hostsharing.net/index.php?title=Gr%C3%B6%C3%9Fenbeschr%C3%A4nkung_von_E-Mails)
+im Wiki der Hostsharing-Mitglieder.
diff --git a/source/referenz/email/webmail.md b/source/referenz/email/webmail.md
new file mode 100644
index 0000000..2593550
--- /dev/null
+++ b/source/referenz/email/webmail.md
@@ -0,0 +1,7 @@
+# Webmail
+
+Hostsharing betreibt eine zentrale
+[Webmail-Installation](https://webmail.hostsharing.net). Informationen
+zur Einrichtung sind im Wiki der Mitglieder unter
+[Webmail](https://wiki.hostsharing.net/index.php?title=Webmail) zu
+finden.
diff --git a/source/referenz/hostkeys.md b/source/referenz/hostkeys.md
new file mode 100644
index 0000000..a2037c2
--- /dev/null
+++ b/source/referenz/hostkeys.md
@@ -0,0 +1,123 @@
+# SSH-Hostkeys
+
+Wenn Sie sich zum ersten Mal mit der Secure Shell
+(`ssh`{.interpreted-text role="command"}) bei Hostsharing anmelden,
+fragt das Programm nach, ob Sie dem Hostkey des Servers vertrauen
+möchten. Das Hostsharing-System identifiziert sich Ihnen gegenüber mit
+dem Fingerabdruck des Hostkeys. Die Meldung sieht folgendermaßen aus:
+
+``` console
+$ ssh xyz00@xyz00.hostsharing.net
+The authenticity of host 'xyz00.hostsharing.net (2a01:37:1000::53df:4fb1:0)' can't be established.
+RSA key fingerprint is SHA256:rPqZO8FA+FQW/rQ1itbuNF9uWmBH82MSQp44fR1v6tQ.
+Are you sure you want to continue connecting (yes/no)? 
+```
+
+In der zweiten Zeile der Meldung zeigt die Secure Shell den
+Fingerabdruck des Servers an:
+`SHA256:rPqZO8FA+FQW/rQ1itbuNF9uWmBH82MSQp44fR1v6tQ` Diesen können Sie
+mit dem in der folgenden Liste aufgeführten Fingerabdruck vergleichen,
+um sicherzugehen, dass Sie sich wirklich auf einem Server der
+Hostsharing eG anmelden. Wenn die Fingerabdrücke übereinstimmen, können
+Sie die Frage mit [yes]{.title-ref} beantworten. Die Secure Shell setzt
+dann den Prozess des Einloggens fort und fragt nach dem Passwort für den
+angegebenen Benutzer.
+
+    SHA256:N1CtFnS1BwJrYoXUqZO61SM8RIpkfdhPOw+XVOaiYQo h01.hostsharing.net (RSA)
+    SHA256:HVgsVWEw6pxUFPGEIIuZOrd9bBiGQu0jVoq+sDFqpGk h02.hostsharing.net (RSA)
+    SHA256:bvMneyMq4dM0gCNtgVUfXAsh2JcWl0XXt4da6JI2wcI h03.hostsharing.net (RSA)
+    SHA256:SF8/6oeb6aNO0iOgfprrQ7E+IJaoEBw2nAArW9o1jF0 h04.hostsharing.net (RSA)
+    SHA256:oOarqh+jQBINNvFiFlg9Xvgf/kcT0LGfPvxnlZ685AA h05.hostsharing.net (RSA)
+    SHA256:r6gz+eduk6Fmj+UqCLbX8bN5VDZ6JZ8o9AXJsdOZBEQ h06.hostsharing.net (RSA)
+    SHA256:8/JolH0E37TGePP6vm92APo9klaXOBPkA1nM8C+SR+I h07.hostsharing.net (RSA)
+    SHA256:AOvcGrr+x496rN7GeKZUIBJdyhaCcWc8SoL0wBcHoR8 h08.hostsharing.net (RSA)
+
+    SHA256:YUntE5eqb6NSrZTY96i/B3C7dvWkoTyRjOdbonyXqKA h11.hostsharing.net (RSA)
+    SHA256:uADmSWGXZX0y+uUg/2UgMKgc9sOovg15KbZK2rAfnfY h12.hostsharing.net (RSA)
+    SHA256:YKe7xwXraKoUO5n+unZsMrbA4VlJX21tTaSq/1FenWc h13.hostsharing.net (RSA)
+    SHA256:QXVugsok7f+lz2p784LU4J/ad9/eTmxj2IyVAmPQ5f0 h14.hostsharing.net (RSA)
+    SHA256:zCth18agkjju4+qRsvJhOH2eYasjQsbrepTb6xUWNv4 h15.hostsharing.net (RSA)
+    SHA256:pDPLmEB7FZ2/diAVSW5Dyz4fDAk2ooht7lEojO0u6i8 h16.hostsharing.net (RSA)
+    SHA256:VmoYwYOovJfIaSCWAaw6ibvte69tZknzqwUCQbDtnbk h17.hostsharing.net (RSA)
+    SHA256:I3oYA4H8fobTTR4T8Td+3+uJXIZgfr9RNYzoRWsW3A8 h18.hostsharing.net (RSA)
+
+    SHA256:xh2Yy20Ksn4NaoE0c9qFQc7UffiFZwjE8LI2MqgCnu0 h20.hostsharing.net (RSA)
+    SHA256:fFpK8WhB4uT5kupdU3ZZzaedeUZUubReoEiZ1qTwib0 h21.hostsharing.net (RSA)
+    SHA256:bro6uRAAnLZnrvEr9D2Am7lnLChOsokACOHg+bL4wtg h22.hostsharing.net (RSA)
+    SHA256:pd3TSPdt/JJOEASMgqS09pOra7X4/W42so3MQ9DhLzY h23.hostsharing.net (RSA)
+    SHA256:0Xf3sWXjuNOsTmycGsnUOa6uDs6j2zg9bDVMKK4/K4k h24.hostsharing.net (RSA)
+
+    SHA256:gTLnnTDiiAPLzPZI8ZNQ8pwKBTqEkW2Hh7tS/UZgheE h30.hostsharing.net (RSA)
+    SHA256:g0aiLcfknMr+r1JsQj/A18odKbK3tZ8kN2YgkMdpU6g h31.hostsharing.net (RSA)
+    SHA256:Jsmjp/Pm/+2azIYhZddSJ9F5l8ROkMLSKadxtIF3ovs h32.hostsharing.net (RSA)
+    SHA256:t8dXxStA4IBaeeQLx/0RDWH2OdJGm0yjHyrZS8xGAzc h33.hostsharing.net (RSA)
+    SHA256:2KMOx41kEP1iVNQ7pjf9ff+CxQ3CnQ41bgb9tJIuuD4 h34.hostsharing.net (RSA)
+    SHA256:oD61B3ZGW+F776ppQy+GSKyAdYAdjqXo7aHPZZT+Cl4 h35.hostsharing.net (RSA)
+    SHA256:pcn07clyBQ93z4H9yyjpYVmcaP/tmL8dXXN8uUIxfZ0 h36.hostsharing.net (RSA)
+    SHA256:QJMaX7rUz+YHdjqutCP6LT/gWgPL14KtCHM47re5/As h37.hostsharing.net (RSA)
+    SHA256:gAW61QQv4dEyjY1V11YdWULD8tYOcRSOkxZbCNJJhU8 h38.hostsharing.net (RSA)
+    SHA256:z92YxH/cKI7+2yZnH1QH0b/wuaBOaVnUxlz2hsxZK0s h39.hostsharing.net (RSA)
+
+    SHA256:P24ABx/GFTMnYCUfzpnTRoObArjy13CT40o2e5/1tq8 h40.hostsharing.net (RSA)
+    SHA256:NDRW1c7gxS3GsGWkoSGd+g9ryu8atfYwYvvhbyetXj8 h41.hostsharing.net (RSA)
+    SHA256:IPbPxK+TDPhZKyNrmmQ4zuLA4SOwRh1Lqpbi74Lieg4 h42.hostsharing.net (RSA)
+    SHA256:xRAscjEwJd5fP3pW5yDh1FVhL5sAZYPCqdsdRzBjLQU h43.hostsharing.net (RSA)
+    SHA256:77phLJuhe7GQqFiZ9rRaAMABEPULJc7sr4efey+XIL8 h44.hostsharing.net (RSA)
+
+    SHA256:ues/X3zvkHY9D17zpcPyRiGyq/vmUhDJQK3ODqZj0hE h50.hostsharing.net (RSA)
+    SHA256:Z/jJ3t/ISdXmU7BCtxK+nXqYwVMK7GcuHrBaun9V83M h51.hostsharing.net (RSA)
+    SHA256:6OXalNTTqZ7RlStdoUx8WVWZuzHr46xbRX+XizsF9eM h52.hostsharing.net (RSA)
+    SHA256:E178kADy/6ef9l84goS+0XVNsyVp2XnHKBk/QjhiMms h54.hostsharing.net (RSA)
+    SHA256:YH4QNO7QLWKr3UTIX8A/5uZvI8zEPMTdoaok4QhtXCU h59.hostsharing.net (RSA)
+
+    SHA256:VQa9kcj80wxW/RyGkpAmjRKZU8IQzepNenGSkDOK4/o h60.hostsharing.net (RSA)
+    SHA256:VqzCGfUXG5PRoJztxla1NhQZo1Uo7osiwYQ37NvqfYk h61.hostsharing.net (RSA)
+    SHA256:OPfU11pHC3qtHyOegF4h3fvZNgI6wDhZQ5lQ3tZHWJg h62.hostsharing.net (RSA)
+    SHA256:k5m0KARxN1Xmf0NnV1h9ztWKzVBs7N7/dzgV75+sqRM h63.hostsharing.net (RSA)
+    SHA256:vA65yRKft1a6doum6jdLm+Up5u9YHlMmmFnZ4mSw4TU h64.hostsharing.net (RSA)
+    SHA256:fvpgXIQCYMk9RQaXcEvjUKf+EbSIMXu/rNm7DrDJP8E h67.hostsharing.net (RSA)
+    SHA256:2V1PLyWI8hGTtlODD33I2G4342Vw1pBwYuBSCiHkVv4 h68.hostsharing.net (RSA)
+
+    SHA256:qs/SSkPIH4WZak1/sFSD5XWrk+fJLQSBAz+mbbjp0Yg h70.hostsharing.net (RSA)
+    SHA256:b158PhXSeEPoVNTS9ifEjfs3ZU6FjksWLOQyBf+4vmA h71.hostsharing.net (RSA)
+    SHA256:LBc6PBLyz4Q20J7I8tzz1Vb7rcUhRr1Cm9pM+ru2D3E h72.hostsharing.net (RSA)
+    SHA256:5xMCpXiFyhP7SuqDqDRy9hm0Vw9usqH6f/5GkNA6SiA h73.hostsharing.net (RSA)
+    SHA256:c6ciBK7eciSilcs1e7tNMUA6xLiXiedRcV78brB6/hI h74.hostsharing.net (RSA)
+    SHA256:Qwix7tr1RcK8yppfG58KM9DMZO+LS+uZbKl2GSCob1I h75.hostsharing.net (RSA)
+    SHA256:JLo/6ezAxCmouKmtTu9vsZ276TjvotcYje9uwaKnNFU h76.hostsharing.net (RSA)
+    SHA256:tSg96I1l6JUP8yUPIzsy3bbMWvfNwwBGUaNf5vNGV0I h79.hostsharing.net (RSA)
+
+    SHA256:eVyAJ/wA/goxwNrwhbS8Qw0mAaj0X/+dx3k5TL6hSYU h80.hostsharing.net (RSA)
+    SHA256:JqpaMMumkFdqQF3YYdqPbnkXReBralBNzr2DcokPmec h81.hostsharing.net (RSA)
+    SHA256:C1niDEd/8JyaDoLBA3Ak34o7xce6o4lfuk+X6H0IAfE h82.hostsharing.net (RSA)
+    SHA256:JHPJTq4mqdzXktiE7aopf4PM0Ve4y2mDE0ReEDiTFkI h83.hostsharing.net (RSA)
+    SHA256:bNR5bPNQ7mMQ+uD+yRakH7pML5m6xf0yB8nVodPzA2Y h84.hostsharing.net (RSA)
+    SHA256:3LGhMnZNFP+ClkqsG8X1X7r149Rq9hK06d5GyN2i6WE h85.hostsharing.net (RSA)
+    SHA256:TXEFHfmEAkwQ+8H7BAYes+cVk7hiVL9wO4prQgO7Lg0 h86.hostsharing.net (RSA)
+    SHA256:1Cl+C6nVzg8kGjZYHJQJR0zJ4skjWbhywwbfBzb4/+A h87.hostsharing.net (RSA)
+    SHA256:OHAYV/r5EMdEEsO7n9ZfKq0To/kZ6g9IxQ17TI58yIE h88.hostsharing.net (RSA)
+    SHA256:buSwCu/6FDbEJfQfrvjKcDZGT+gZYMgg6THI7e26sPo h89.hostsharing.net (RSA)
+
+    SHA256:QZ6sHxJMueXFOYwbN/r4Awnx+Nl/VCJddZnlckFAJ+M h90.hostsharing.net (RSA)
+    SHA256:MnnyrqLYnY04iyM930hFSMDHP6+9pzcZOa4cQTtTCi0 h91.hostsharing.net (RSA)
+    SHA256:7QZ54GTzdmOBZ9Uhc09ljjPyhLIB3udUSkjtoTnGaEI h92.hostsharing.net (RSA)
+    SHA256:ifHlyDjiJ2OTJq5+M3YnP/nlXIQcKlQbRs51okAfWHI h93.hostsharing.net (RSA)
+    SHA256:8NFXZyUVkEgCQZV7+LV8m3HI5aOqwi7zdbg+2aHtnUQ h95.hostsharing.net (RSA)
+    SHA256:rPqZO8FA+FQW/rQ1itbuNF9uWmBH82MSQp44fR1v6tQ h97.hostsharing.net (RSA)
+    SHA256:N0iSQTm3AFAhdgQ4OhSptQ0vhuURPUyAt33L72ZeLM8 h98.hostsharing.net (RSA)
+
+Den Namen des Servers, auf dem Ihr Web-Paket liegt, erfahren Sie in
+HSAdmin. Gehen Sie dazu in den Bereich `Web-Paket`{.interpreted-text
+role="guilabel"}, wählen Sie Ihr Web-Paket aus (in unserem Beispiel
+`xyz00`). Es öffnet sich rechts der Reiter `Web-Paket`{.interpreted-text
+role="guilabel"} und es werden Informationen zu Ihrem Paket angezeigt.
+In der Zeile Server/Hive finden Sie die Bezeichnung des Servers, auf dem
+Ihr Webpaket sich befindet.
+
+::: {#fig_hsadmin-paket-info}
+![Informationen über das Web-Paket.](../images/hsadmin-paket-infos.*)
+:::
+
+In unserem Beispiel müssten Sie den Fingerabdruck von
+h97.hostsharing.net mit dem von der Secure Shell angezeigten
+vergleichen.
diff --git a/source/referenz/hsadmin/domain.md b/source/referenz/hsadmin/domain.md
new file mode 100644
index 0000000..afa9635
--- /dev/null
+++ b/source/referenz/hsadmin/domain.md
@@ -0,0 +1,150 @@
+# Modul domain {#kap-modul-domain}
+
+## Funktionen
+
+::: option
+domain.search
+
+Suche Domain nach den im Befehlsausdruck angegebenen Feldern und Werten
+:::
+
+::: option
+domain.add
+
+Füge eine neue Domain nach den im Befehlsausdruck angegebenen Feldern
+und Werten hinzu.
+:::
+
+::: option
+domain.update
+
+Aktualisiere eine Domain nach den im Befehlsausdruck angegebenen Feldern
+und Werten.
+:::
+
+::: option
+domain.remove
+
+Lösche eine Domain nach den im Befehlsausdruck angegebenen Feldern und
+Werten.
+:::
+
+## Editierbare Felder
+
+Das HSAdmin-Modul `domain` kann entsprechend der folgenden Befehlssyntax
+von `HSAdmin`{.interpreted-text role="command"} Felder setzen oder
+verändern:
+
+    domain.function({where:{field:'value',...}, set:{field:'value',...}})
+
+Im Modul `domain` stehen folgende Felder zur Verfügung.
+
+name
+
+:   Name einer Domain
+
+user
+
+:   Name des Domain-Admins
+
+validsubdomainnames
+
+:   leichtgewichtige Subdomains in diesem Virtual-Host des Webservers,
+    gültige Werte: `*` für beliebige Subdomains oder eine
+    kommaseparierte Liste: `www,blog,other`
+
+greylisting
+
+:   E-Mails werden verzögert durch den Mailserver angenommen, siehe
+    `Greylisting`{.interpreted-text role="term"}. Ist die Option
+    deaktivert, werden E-Mails ohne Verzögerung angenommen.
+
+multiviews
+
+:   Der Webserver berücksichtigt Einstellungen im Browser beim Abruf
+    einer Domain (z.B. eine bevorzugte Sprache). Die Option kann mit
+    einer `.htaccess`{.interpreted-text role="term"}-Datei für jedes
+    Verzeichnis konfiguriert werden.
+
+indexes
+
+:   Der Webserver erzeugt für Verzeichnisse, die keine eigene
+    Index-Datei enthalten, eine Liste mit den im Verzeichnis enthaltenen
+    Dateien. Ist die Option deaktiviert, wird ein Fehler 303 ausgegeben.
+    Die Option kann mit einer .htaccess-Datei für jedes Verzeichnis
+    konfiguriert werden.
+
+htdocsfallback
+
+:   Der Webserver leitet auf die Hauptdomain, wenn keine Sub-Domain
+    angelegt ist. Ist die Option deaktivert, wird ein Fehler 404
+    ausgegeben: Seite nicht gefunden.
+
+includes
+
+:   Der Webserver erkennt `SSI`{.interpreted-text role="term"}-Komandos
+    und -Dateien. Die Option kann mit einer .htaccess-Datei für jedes
+    Verzeichnis konfiguriert werden.
+
+backupmxforexternalmx
+
+:   Der Paket-Hive wird als Weiterleitung (transport) beim
+    Mail-In-Server eingetragen. Ist die Option aktiv, ist der
+    Hostsharing-Mail-In-Server Backup-MX. Der eigentliche Mailserver
+    befindet sich außerhalb der Infrastruktur von Hostsharing (z.B.
+    anderer Provider, DSL-Anschluss mit fester IP)
+
+letsencrypt
+
+:   Es wird automatisch ein TLS Zertifikat für diese Domain und alle im
+    Feld „validsubdomainnames" angegebenen Subdomains erzeugt
+
+autoconfig
+
+:   Eine Unterstützung für die Konfiguration von E-Mail-Programmen durch
+    die Verfahren \"Autoconfig\" (Mozilla) und \"Autodiscover\"
+    (Microsoft) wird für die Domain eingeschaltet
+
+::: note
+::: title
+Note
+:::
+
+Die Option `backupmxforexternalmx` erfordert Änderungen am
+`Zonefile<../zonefile/index>`{.interpreted-text role="doc"} einer
+Domain.
+:::
+
+## Beispiele
+
+Mit dem folgenden Befehl schalten wir die Domain `hs-example.de` auf und
+ordnen Sie dem Domain-Admin `xyz00-hsexample` zu.
+
+``` console
+xyz00@hsadmin> domain.add({set:{name:'hs-example.de',user:'xyz00-hsexample'}})
+```
+
+Mit dem Befehl `domain.search`{.interpreted-text role="option"} werden
+alle Informationen zu einer Domain angezeigt. Die gesuchte Domain wird
+mit dem Befehlsausdruck `where` ausgewählt.
+
+``` console
+xyz00@hsadmin> domain.search({where:{name:'hs-example.de'}})
+```
+
+Und mit dem Befehl `domain.remove`{.interpreted-text role="option"}
+können wir eine Domain entfernen.
+
+``` console
+xyz00@hsadmin> domain.remove({where:{name:'hs-example.de'}})
+```
+
+Mit dem Befehl `domain.update`{.interpreted-text role="option"} lassen
+sich die Einstellungen für eine Domain verändern. Bei einer Änderung der
+Domain-Optionen, wie im folgenden Beispiel, müssen immer alle Optionen
+angegeben werden, die gesetzt sein sollen, da der Befehl die bereits
+gesetzten Domain-Optionen komplett überschreibt.
+
+``` console
+xyz00@hsadmin> domain.update({where:{name:'hs-example.de'},set:{domainoptions:['htdocsfallback','indexes','greylisting','letsencrypt','autoconfig']}})
+```
diff --git a/source/referenz/hsadmin/emailaddress.md b/source/referenz/hsadmin/emailaddress.md
new file mode 100644
index 0000000..101ae32
--- /dev/null
+++ b/source/referenz/hsadmin/emailaddress.md
@@ -0,0 +1,135 @@
+# Modul emailaddress {#kap-modul-emailaddress}
+
+## Funktionen
+
+::: option
+emailaddress.search
+
+Suche E-Mail-Adresse nach den im Befehlsausdruck angegebenen Feldern und
+Werten
+:::
+
+::: option
+emailaddress.add
+
+Füge eine neue E-Mail-Adresse nach den im Befehlsausdruck angegebenen
+Feldern und Werten hinzu.
+:::
+
+::: option
+emailaddress.update
+
+Aktualisiere eine E-Mail-Adresse nach den im Befehlsausdruck angegebenen
+Feldern und Werten.
+:::
+
+::: option
+emailaddress.remove
+
+Lösche eine E-Mail-Adresse nach den im Befehlsausdruck angegebenen
+Feldern und Werten.
+:::
+
+## Editierbare Felder
+
+Das HSAdmin-Modul `emailaddress` kann entsprechend der folgenden
+Befehlssyntax von `HSAdmin`{.interpreted-text role="command"} Felder
+setzen oder verändern:
+
+    emailaddress.function({where:{field:'value',...}, set:{field:'value',...}})
+
+Im Modul `emailaddress` stehen folgende Felder zur Verfügung.
+
+domain
+
+:   Name einer Domain
+
+localpart
+
+:   Bezeichnung für den lokalen Teil einer E-Mail-Adresse: der Teil vor
+    `@`.
+
+target
+
+:   Ziel einer E-Mail-Adresse, mehrere Ziele werden durch Kommata
+    getrennt
+
+## Beispiele
+
+Mit dem folgenden Befehl erhalten Sie eine Liste aller E-Mail-Adressen
+der Domain `hs-example.de`.
+
+``` console
+xyz00@hsadmin> emailaddress.search({where:{domain:"hs-example.de"}})
+```
+
+Mit folgendem Befehl lässt sich eine neue E-Mail-Adresse einrichten und
+einem Postfach zuordnen:
+
+``` console
+xyz00@hsadmin> emailaddress.add ({set:{domain:'hs-example.de',localpart:'info',target:'xyz00-hs_example.de'}})
+```
+
+Das Programm gibt dann folgende Meldung als Quittierung des Befehls
+zurück:
+
+``` console
+[
+   {
+      admin:'xyz00-doms',
+      domain:'hs-example.de',
+      emailaddress:'info@hs-example.de',
+      fulldomain:'hs-example.de',
+      id:'88747',
+      localpart:'info',
+      pac:'xyz00',
+      target:[
+         'xyz00-hs_example.de'
+      ]
+   }
+]
+```
+
+Wenn später einmal der Wunsch aufkommt, die eintreffenden E-Mails
+stattdessen an eine externe E-Mail-Adresse weiterzuleiten, kann man den
+Eintrag aktualisieren. Das Ziel (`target`) lässt sich entweder ändern:
+
+``` console
+xyz00@hsadmin> emailaddress.update ({where:{domain:'hs-example.de',localpart:'info'}, set:{target:'andere@mail.de'}})
+[
+   {
+      admin:'xyz00-doms',
+      domain:'hs-example.de',
+      emailaddress:'info@hs-example.de',
+      fulldomain:'hs-example.de',
+      id:'88747',
+      localpart:'info',
+      pac:'xyz00',
+      target:[
+         'andere@mail.de'
+      ]
+   }
+]
+```
+
+Oder man ergänzt die neue E-Mail-Adresse, indem man sie zusätzlich
+einfügt. Mehrere Ziele werden mit Kommata abgegrenzt.
+
+``` console
+xyz00@hsadmin> emailaddress.update ({where:{domain:'hs-example.de',localpart:'info'}, set:{target:'andere@mail.de,xzy00-hs_example.de'}})
+[
+   {
+      admin:'xyz00-doms',
+      domain:'hs-example.de',
+      emailaddress:'info@hs-example.de',
+      fulldomain:'hs-example.de',
+      id:'88747',
+      localpart:'info',
+      pac:'xyz00',
+      target:[
+         'andere@mail.de',
+         'xzy00-hs_example.de'
+      ]
+   }
+]
+```
diff --git a/source/referenz/hsadmin/emailaliases.md b/source/referenz/hsadmin/emailaliases.md
new file mode 100644
index 0000000..61dd652
--- /dev/null
+++ b/source/referenz/hsadmin/emailaliases.md
@@ -0,0 +1,83 @@
+# Modul emailalias {#kap-modul-emailalias}
+
+Mit diesem Modul können Sie ein E-Mail-Alias setzen. Ein typischer
+Anwendungsfall wird in `kap-email-alias`{.interpreted-text
+role="numref"} beschrieben.
+
+## Funktionen
+
+::: option
+emailalias.search
+
+Suche E-Mail-Alias nach den im Befehlsausdruck angegebenen Feldern und
+Werten
+:::
+
+::: option
+emailalias.add
+
+Füge eine neue E-Mail-Alias nach den im Befehlsausdruck angegebenen
+Feldern und Werten hinzu.
+:::
+
+::: option
+emailalias.update
+
+Aktualisiere eine E-Mail-Alias nach den im Befehlsausdruck angegebenen
+Feldern und Werten.
+:::
+
+::: option
+emailalias.remove
+
+Lösche eine E-Mail-Alias nach den im Befehlsausdruck angegebenen Feldern
+und Werten.
+:::
+
+## Editierbare Felder
+
+Das HSAdmin-Modul `emailalias` kann entsprechend der folgenden
+Befehlssyntax von `HSAdmin`{.interpreted-text role="command"} Felder
+setzen oder verändern:
+
+    emailalias.function({where:{field:'value',...}, set:{field:'value',...}})
+
+Im Modul `emailalias` stehen folgende Felder zur Verfügung.
+
+name
+
+:   Name des E-Mail-Alias
+
+target
+
+:   Ziel einer E-Mail-Adresse; mehrere Ziele werden durch Kommata
+    getrennt
+
+## Beispiele
+
+Das folgende E-Mail-Alias überschreibt die Voreinstellung für den
+Paket-Admin `xyz00`. E-Mails an diesen Benutzer landen nicht mehr in
+seinem Postfach, sondern werden an die E-Mailadresse
+`webmaster@hs-example.de` weitergeleitet.
+
+``` console
+xyz00@hsadmin> emailalias.add ({set:{name:'xyz00',target:'webmaster@hs-example.de'}})
+```
+
+In dem nächsten beiden Beispielen wird zunächst nach der Konfiguration
+für das E-Mail-Alias `xyz00` gesucht. Anschließend wird ein Postfach
+`xyz00-mailbox` zusätzlich zu der bereits eingetragenen E-Mail-Adresse
+hinzugefügt. Da das Programm die Felder komplett überschreibt, müssen
+alle Werte angegeben werden.
+
+``` console
+xyz00@hsadmin> emailalias.search ({where:{name:'xyz00'}})
+xyz00@hsadmin> emailalias.update ({where:{name:'xyz00'},set:{target:'xyz00-mailbox,webmaster@hs-example.de'}})
+```
+
+Im letzten Beispiel wird das E-Mail-Alias wieder gelöscht, sodass
+E-Mails an den Paket-Admin wieder an sein Postfach ausgeliefert werden.
+
+``` console
+xyz00@hsadmin> emailalias.remove ({where:{name:'xyz00'}})
+```
diff --git a/source/referenz/hsadmin/index.md b/source/referenz/hsadmin/index.md
new file mode 100644
index 0000000..e06917e
--- /dev/null
+++ b/source/referenz/hsadmin/index.md
@@ -0,0 +1,66 @@
+# HSAdmin {#kap-hsadmin}
+
+HSAdmin ist ein Werkzeug zur Verwaltung von Nutzern, E-Mail-Adressen,
+E-Mail-Aliases, Domains, Datenbanken und Datenbank-Nutzern. Die
+Bedienung erfolgt über ein Webfrontend, das in
+`kap-hsadmin-einstieg`{.interpreted-text role="numref"} vorgestellt
+wird.
+
+In diesem Kapitel geht es um den HSAdmin-Client
+`hsscript`{.interpreted-text role="command"}, der in der Konsole benutzt
+wird.
+
+::: program
+hsscript
+:::
+
+HSAdmin verfügt über folgende Module:
+
+  ----------------------------------------------------------------------------------------------
+  Modul                                                Erläuterung
+  ---------------------------------------------------- -----------------------------------------
+  `user<user>`{.interpreted-text role="doc"}           Modul zur Nutzerverwaltung
+
+  `mysqldb<mysqldb>`{.interpreted-text role="doc"}     Modul zur Verwaltung von
+                                                       MySQL-Datenbanken
+
+  `mysqluser<mysqluser>`{.interpreted-text role="doc"} Modul zur Verwaltung vom
+                                                       MySQL-Datenbanknutzern
+
+  `postgresqldb<postgresqldb>`{.interpreted-text       Modul zur Verwaltung von
+  role="doc"}                                          PostgreSQL-Datenbanken
+
+  `postgresqluser<postgresqluser>`{.interpreted-text   Modul zur Verwaltung von
+  role="doc"}                                          PostgreSQL-Datenbanknutzern
+
+  `emailaddress<emailaddress>`{.interpreted-text       Modul zur Verwaltung von E-Mail-Adressen
+  role="doc"}                                          
+
+  `emailalias<emailaliases>`{.interpreted-text         Modul zur Verwaltung von E-Mail-Aliasen
+  role="doc"}                                          
+
+  `domain<domain>`{.interpreted-text role="doc"}       Modul zur Verwaltung von Domains in einem
+                                                       Web-Paket
+
+  `q<q>`{.interpreted-text role="doc"}                 Modul zur Suche von Systemaufträgen von
+                                                       HSAdmin
+  ----------------------------------------------------------------------------------------------
+
+Die HSAdmin-Module verfügen über folgenden Funktionen:
+
+  ---------------------------------
+  Funktion         Erläuterung
+  ---------------- ----------------
+  search           suchen
+
+  add              hinzufügen
+
+  update           aktualisieren
+
+  remove           löschen
+  ---------------------------------
+
+::: {.toctree maxdepth="1"}
+syntax user domain mysqldb mysqluser postgresqldb postgresqluser
+emailaddress emailaliases q skript webfrontend
+:::
diff --git a/source/referenz/hsadmin/mysqldb.md b/source/referenz/hsadmin/mysqldb.md
new file mode 100644
index 0000000..39c99ad
--- /dev/null
+++ b/source/referenz/hsadmin/mysqldb.md
@@ -0,0 +1,79 @@
+# Modul mysqldb {#kap-modul-mysqldb}
+
+## Funktionen
+
+::: option
+mysqldb.search
+
+Suche Datenbank nach den im Befehlsausdruck angegebenen Feldern und
+Werten
+:::
+
+::: option
+mysqldb.add
+
+Füge eine neue Datenbank nach den im Befehlsausdruck angegebenen Feldern
+und Werten hinzu.
+:::
+
+::: option
+mysqldb.update
+
+Aktualisiere eine Datenbank nach den im Befehlsausdruck angegebenen
+Feldern und Werten.
+:::
+
+::: option
+mysqldb.remove
+
+Lösche eine Datenbank nach den im Befehlsausdruck angegebenen Feldern
+und Werten.
+:::
+
+## Editierbare Felder
+
+Das HSAdmin-Modul `mysqldb` kann entsprechend der folgenden
+Befehlssyntax von `HSAdmin`{.interpreted-text role="command"} Felder
+setzen oder verändern:
+
+    mysqldb.function({where:{field:'value',...}, set:{field:'value',...}})
+
+Im Modul `mysqldb` stehen folgende Felder zur Verfügung.
+
+name
+
+:   Datenbankname (z.B. xyz00_abc)
+
+owner
+
+:   Datenbanknutzer (z.B. xyz00_owner)
+
+encoding
+
+:   Zeichensatz der Datenbank (Standard ist UTF-8)
+
+## Beispiele
+
+Im ersten Beispiel erzeugen wir eine Datenbank mit dem Namen `xyz00_abc`
+und legen als Besitzer den Datenbanknutzer `xyz00_owner` fest.
+
+``` console
+xyz00@hsadmin> mysqldb.add ({set:{name:'xyz00_abc',owner:'xyz00_owner'}})
+```
+
+Bevor man Änderungen an einem Datensatz vornimmt, kann man sich alle
+Eigenschaften einer Datenbank mit dem Befehl
+`mysqldb.search`{.interpreted-text role="option"} anzeigen lassen. Die
+gewünschte Datenbank wird mit dem Befehlsausdruck `where` ausgewählt.
+
+``` console
+xyz00@hsadmin> mysqldb.search ({where:{name:'xyz00_abc'}})
+```
+
+Und mit dem Befehl `mysqldb.remove`{.interpreted-text role="option"}
+können Datenbanken gelöscht werden. Die gewünschte Datenbank wird erneut
+mit dem Befehlsausdruck `where` ausgewählt.
+
+``` console
+xyz00@hsadmin> mysqldb.remove ({where:{name:'xyz00_abc'}})
+```
diff --git a/source/referenz/hsadmin/mysqluser.md b/source/referenz/hsadmin/mysqluser.md
new file mode 100644
index 0000000..dd0b7a8
--- /dev/null
+++ b/source/referenz/hsadmin/mysqluser.md
@@ -0,0 +1,79 @@
+# Modul mysqluser {#kap-modul-mysqluser}
+
+## Funktionen
+
+::: option
+mysqluser.search
+
+Suche Datenbank-Benutzer nach den im Befehlsausdruck angegebenen Feldern
+und Werten
+:::
+
+::: option
+mysqluser.add
+
+Füge einen neuen Datenbank-Benutzer nach den im Befehlsausdruck
+angegebenen Feldern und Werten hinzu.
+:::
+
+::: option
+mysqluser.update
+
+Aktualisiere einen Datenbank-Benutzer nach den im Befehlsausdruck
+angegebenen Feldern und Werten.
+:::
+
+::: option
+mysqluser.remove
+
+Lösche einen Datenbank-Benutzer nach den im Befehlsausdruck angegebenen
+Feldern und Werten.
+:::
+
+## Editierbare Felder
+
+Das HSAdmin-Modul `mysqluser` kann entsprechend der folgenden
+Befehlssyntax von `HSAdmin`{.interpreted-text role="command"} Felder
+setzen oder verändern:
+
+    mysqluser.function({where:{field:'value',...}, set:{field:'value',...}})
+
+Im Modul `mysqluser` stehen folgende Felder zur Verfügung.
+
+name
+
+:   Name des Datenbank-Benutzers (z.B. `xyz00_owner`)
+
+password
+
+:   Passwort des Datenbank-Benutzers
+
+## Beispiele
+
+Im ersten Beispiel fügen wir dem System den Datenbank-Benutzer
+`xyz00_owner` hinzu und geben ihm ein Passwort.
+
+``` console
+xyz00@hsadmin> mysqluser.add({set:{name:'xyz00_owner',password:'!1?2-3aBc'}})
+```
+
+In den folgenden beiden Beispielen lassen wir uns zunächst mit dem
+Befehl `mysqluser.search`{.interpreted-text role="option"} die
+Informationen zu einem Benutzer anzeigen, den wir mit dem
+Befehlsausdruck `where` auswählen. Anschließend entfernen wir diesen
+Nutzer mit dem Befehl `mysqluser.remove`{.interpreted-text
+role="option"}.
+
+``` console
+xyz00@hsadmin> mysqluser.search({where:{name:'xyz00_owner'}})
+xyz00@hsadmin> mysqluser.remove({where:{name:'xyz00_owner'}})
+```
+
+Im letzten Beispiel aktualieren wir einen Benutzereintrag mit dem Befehl
+`mysqluser.update`{.interpreted-text role="option"}. Der Benutzer wird
+mit `where` ausgesucht, anschließend bekommt er mit `set` ein neues
+Passwort.
+
+``` console
+xyz00@hsadmin> mysqluser.update({where:{name:'xyz00_owner'},set:{password:'neues-passwort'}})
+```
diff --git a/source/referenz/hsadmin/postgresqldb.md b/source/referenz/hsadmin/postgresqldb.md
new file mode 100644
index 0000000..cb92d65
--- /dev/null
+++ b/source/referenz/hsadmin/postgresqldb.md
@@ -0,0 +1,72 @@
+# Modul postgresqldb {#kap-modul-postgresqldb}
+
+## Funktionen
+
+::: option
+postgresqldb.search
+
+Suche Datenbank nach den im Befehlsausdruck angegebenen Feldern und
+Werten
+:::
+
+::: option
+postgresqldb.add
+
+Füge eine neue Datenbank nach den im Befehlsausdruck angegebenen Feldern
+und Werten hinzu.
+:::
+
+::: option
+postgresqldb.update
+
+Aktualisiere eine Datenbank nach den im Befehlsausdruck angegebenen
+Feldern und Werten.
+:::
+
+::: option
+postgresqldb.remove
+
+Lösche eine Datenbank nach den im Befehlsausdruck angegebenen Feldern
+und Werten.
+:::
+
+## Editierbare Felder
+
+Das HSAdmin-Modul `postgresqldb` kann entsprechend der folgenden
+Befehlssyntax von `HSAdmin`{.interpreted-text role="command"} Felder
+setzen oder verändern:
+
+    postgresqldb.function({where:{field:'value',...}, set:{field:'value',...}})
+
+Im Modul `postgresqldb` stehen folgende Felder zur Verfügung.
+
+name
+
+:   Datenbankname (z.B. xyz00_abc)
+
+owner
+
+:   Datenbanknutzer (z.B. xyz00_owner)
+
+encoding
+
+:   Zeichensatz der Datenbank (Standard ist UTF-8)
+
+## Beispiele
+
+Im ersten Beispiel erzeugen wir die Datenbank `xyz00_abc` und übergeben
+ihr als Besitzer den Datenbanknutzer `xyz00_owner`.
+
+``` console
+xyz00@hsadmin> postgresqldb.add({set:{name:'xyz00_abc',owner:'xyz00_owner'}})
+```
+
+Die den beiden folgenden Beispielen lassen wir uns zunächst mit
+`postgresqldb.search`{.interpreted-text role="option"} Informationen zur
+Datenbank `xyz00_abc` anzeigen. Anschließend löschen wir sie mit
+`postgresqldb.remove`{.interpreted-text role="option"}.
+
+``` console
+xyz00@hsadmin> postgresqldb.search({where:{name:'xyz00_abc'}})
+xyz00@hsadmin> postgresqldb.remove({where:{name:'xyz00_abc'}})
+```
diff --git a/source/referenz/hsadmin/postgresqluser.md b/source/referenz/hsadmin/postgresqluser.md
new file mode 100644
index 0000000..d634839
--- /dev/null
+++ b/source/referenz/hsadmin/postgresqluser.md
@@ -0,0 +1,83 @@
+# Modul postgresqluser {#kap-modul-postgresqluser}
+
+## Funktionen
+
+::: option
+postgresqluser.search
+
+Suche Datenbank-Benutzer nach den im Befehlsausdruck angegebenen Feldern
+und Werten
+:::
+
+::: option
+postgresqluser.add
+
+Füge einen neuen Datenbank-Benutzer nach den im Befehlsausdruck
+angegebenen Feldern und Werten hinzu.
+:::
+
+::: option
+postgresqluser.update
+
+Aktualisiere einen Datenbank-Benutzer nach den im Befehlsausdruck
+angegebenen Feldern und Werten.
+:::
+
+::: option
+postgresqluser.remove
+
+Lösche einen Datenbank-Benutzer nach den im Befehlsausdruck angegebenen
+Feldern und Werten.
+:::
+
+## Editierbare Felder
+
+Das HSAdmin-Modul `postgresqluser` kann entsprechend der folgenden
+Befehlssyntax von `HSAdmin`{.interpreted-text role="command"} Felder
+setzen oder verändern:
+
+    postgresqluser.function({where:{field:'value',...}, set:{field:'value',...}})
+
+Im Modul `postgresqluser` stehen folgende Felder zur Verfügung.
+
+name
+
+:   Name des Datenbank-Benutzers (z.B. `xyz00_owner`)
+
+password
+
+:   Passwort des Datenbank-Benutzers
+
+## Beispiele
+
+Im ersten Beispiel fügen wir dem System den Datenbank-Benutzer
+`xyz00_owner` hinzu und geben ihm ein Passwort.
+
+``` console
+xyz00@hsadmin> postgresqluser.add ({set:{name:'xyz00_owner',password:'!1?2-3aBc'}})
+```
+
+Mit `postgresqluser.search`{.interpreted-text role="option"} können wir
+die Eigenschaften eines Benutzers anzeigen. Der gewünschte Benutzer wird
+mit `where` ausgewählt.
+
+``` console
+xyz00@hsadmin> postgresqluser.search ({where:{name:'xyz00_owner'}})
+```
+
+Mit `postgresqluser.update`{.interpreted-text role="option"} können
+Eigenschaften eines Benutzers verändert werden. Der gewünschte Benutzer
+wird mit `where` ausgewählt. Anschliend wird in unserem Beispiel mit
+`set` ein neues Passwort gesetzt.
+
+``` console
+xyz00@hsadmin> postgresqluser.update ({where:{name:'xyz00_owner'},set:{password:'neues-passwort'}})
+```
+
+Und zuletzt können Datenbank-Benutzer auch wieder gelöscht werden. Dazu
+benutzen wir den Befehl `postgresqluser.remove`{.interpreted-text
+role="option"}. Der zu löschende Benutzer wird mit `where` ausgewählt.
+
+``` console
+xyz00@hsadmin> postgresqluser.remove ({where:{name:'xyz00_owner'}})
+```
diff --git a/source/referenz/hsadmin/q.md b/source/referenz/hsadmin/q.md
new file mode 100644
index 0000000..1f53220
--- /dev/null
+++ b/source/referenz/hsadmin/q.md
@@ -0,0 +1,22 @@
+# Modul q {#kap-modul-q}
+
+## Funktionen
+
+::: option
+q.search
+
+Das HSAdmin-Modul hat nur die Funktion `search`. Hiermit ist die Ausgabe
+der bereits ausgeführten HSAdmin-Aktionen möglich. Die Ausgabe zeigt an,
+ob eine Aktion erfolgreich abgeschlossen werden konnte oder ob beim
+Ausrollen der Konfiguration auf den Server Fehler aufgetreten sind. Im
+Erfolgsfall wird als Status \'done\' angezeigt. Wenn Fehler aufgetreten
+sind wird der Status \'error\' ausgegeben. Daneben wird eine interne
+Fehlermeldung im Feld \'exception\' angezeigt. Wenden Sie sich im
+Fehlerfall bitte an den Service.
+:::
+
+## Beispiele
+
+``` console
+$  q.search ({where:{user:'xyz00'}})
+```
diff --git a/source/referenz/hsadmin/skript.md b/source/referenz/hsadmin/skript.md
new file mode 100644
index 0000000..1a2f9c2
--- /dev/null
+++ b/source/referenz/hsadmin/skript.md
@@ -0,0 +1,294 @@
+# HSAdmin über Skripte steuern {#kap-hsscript-skript}
+
+In `kap-hsadmin-syntax`{.interpreted-text role="numref"} wurde die
+Option `-f`{.interpreted-text role="option"} erwähnt, die gesetzt werden
+kann, um HSAdmin eine Datei zu übergeben, in der sich die Befehle
+befinden. Die Option ermöglicht es, ohne großen Aufwand Skriptdateien zu
+pflegen, mit denen wiederkehrende Aufgaben bequem erledigt werden
+können. Dieses Kapitel zeigt, wie Sie die Anlage einer neuen
+Wordpress-Website mit Hilfe eines solchen Skripts vereinfachen können.
+
+Bevor Sie die eigentliche Wordpress-Software installiert, müssen mehrere
+Schritte auf der Hostsharing-Plattform erledigt sein.
+
+1.  Es existiert ein `Domain-Admin`{.interpreted-text role="role"} bzw.
+    es wird ein neuer Domain-Admin angelegt.
+2.  Es wird eine Domain erstellt und dem Domain-Admin zugewiesen.
+3.  Es wird ein `Datenbank-Nutzer`{.interpreted-text role="role"}
+    angelegt.
+4.  Es wird eine Datenbank angelegt und dem Datenbank-Nutzer zugewiesen.
+
+Mit der folgenden Skript-Datei kann man diese vier Schritte mit einem
+Befehl ausführen.
+
+``` {.text linenos=""}
+user.add ({set:{name:'xyz00-domains',comment:'Domain-Admin',password:'!1?2-3aBc',shell:'/bin/bash'}})
+domain.add ({set:{name:'beispiel.de',user:'xyz00-domains'}})
+mysqluser.add  ({set:{name:'xyz00_owner',password:'?2?3-4cVg'}})
+mysqldb.add ({set:{name:'xyz00_abc',owner:'xyz00_owner'}})
+```
+
+In Zeile 1 wird der Domain-Admin erzeugt, in Zeile 2 die Domain
+`beispiel.de` angelegt, in Zeile 3 der Datenbank-Nutzer und in Zeile 4
+die Datenbank. Es ist möglich, die Datei lesbarer zu formatieren, indem
+man jedem Key-Value-Paar eine eigene Zeile zuweist.
+
+``` {.text linenos=""}
+user.add ({set:{
+name:'xyz00-domains',
+comment:'Domain-Admin',
+password:'!1?2-3aBc',
+shell:'/bin/bash'
+}})
+domain.add ({set:{
+name:'beispiel.de',
+user:'xyz00-domains'
+}})
+mysqluser.add ({set:{
+name:'xyz00_owner',
+password:'?2?3-4cVg'
+}})
+mysqldb.add ({set:{
+name:'xyz00_abc',
+owner:'xyz00_owner'
+}})
+```
+
+Wenn Sie die Datei unter dem Namen `befehlsskript.txt`{.interpreted-text
+role="file"} im Verzeichnis des `Paket-Admin`{.interpreted-text
+role="role"} speichern, können Sie alle Befehle mit einem HSAdmin-Aufruf
+abarbeiten:
+
+``` console
+xyz00@h50:~$ hsscript -f befehlsskript.txt
+```
+
+Wenn Sie beispielsweise häufig Wordpress-Websites installieren, können
+Sie für jede Website eine solche Befehlsdatei anlegen und unter einem
+sinnvollen Namen (z.B. `wordpress-beispiel_de.txt`{.interpreted-text
+role="file"}) abspeichern.
+
+::: admonition
+Beachten Sie die richtige Reihenfolge
+
+Bei der Anlage von Benutzern, Datenbanken und Domains ist die im
+Beispiel gezeigt Reihenfolge einzuhalten. Um eine Domain anzulegen, muss
+der Domain-Admin bereits existieren. Eine Datenbank kann nur erzeugt
+werden, wenn der Datenbank-Nutzer bereits angelegt ist.
+
+Beim Löschen müssen Sie die Reihenfolge umkehren: Datenbank löschen,
+Datenbank-Nutzer löschen, Domain löschen, Domain-Admin löschen.
+:::
+
+Noch bequemer ist es, die notwendigen Benutzer, Domains und Datenbanken
+mit Hilfe eines ausführlicheren JS-Skripts oder über die Python-API
+anzulegen.
+
+## HSAdmin mit Javascript ansprechen
+
+Im Folgenden zeigen wir zwei JS-Skripts, die in der Regel im Verzeichnis
+des `Paket-Admin`{.interpreted-text role="role"} mit dessen
+Benutzerrechten aufgerufen werden. Mit dem ersten Skript erstellen wir
+eine Domain und weisen ihr einen eigenen Domain-Admin zu, dessen Name
+aus dem Namen der Domain abgeleitet wird. Mit dem zweiten Skript
+erzeugen wir eine Datenbank und einen Datenbank-Nutzer, sodass wir unter
+der gewünschten Domain zum Beispiel eine PHP-Anwendung wie Wordpress
+einrichten können.
+
+### JS-Skript zur Anlage einer Domain
+
+Ein Skript, um eine Domain mit einem gesonderten Domain-Admin anzulegen,
+könnte so aussehen:
+
+::: {.literalinclude linenos=""}
+createdomainandadmin.js
+:::
+
+Die Funktion `pwGen()` erzeugt ein achtstelliges Passwort aus einer
+Reihe von vorgegebenen Zeichen. Empfehlenswert sind längere Passworte.
+Die Funktion `createDomainAndDomainAdmin(args)` erzeugt die Domain und
+den Domain-Admin. Der Namen des Domain-Admin ergibt sich aus dem Namen
+der Domain. Bei einer Domain, die einen Bindestrich enthält, muss dieser
+durch einen Unterstrich ersetzt werden, da Benutzernamen nur einen
+Bindestrich enthalten dürfen.
+
+Das Skript wird im Benutzerverzeichnis des Paket-Admin gespeichert und
+ausführbar gemacht:
+
+``` console
+xyz00@h50:~$ chmod u+x createdomainandadmin.js
+```
+
+Anschließend können Sie es folgendermaßen aufrufen:
+
+``` console
+xyz00@h50:~$ ./createdomainandadmin.js my-domain.de
+created domain my-domain.de with domainadmin xyz00-my_domain.de and password slo%haY=
+```
+
+Wenn Sie alle Domains mit einem einzigen Domain-Admin verwalten, können
+Sie den Benutzernamen des Domain-Admin hart kodieren. Zeile 18 lautet
+dann:
+
+::: {.literalinclude lines="18"}
+createdomain.js
+:::
+
+### JS-Skript zur Anlage einer Datenbank
+
+Das Skript zur Anlage einer Datenbank und eines Datenbank-Nutzers sieht
+ähnlich aus.
+
+::: {.literalinclude linenos=""}
+createuseranddb.js
+:::
+
+Die Funktion `createMySQLUserAndDB(args)` erzeugt den Datenbank-Nutzer
+und die Datenbank. Da sich Datenbank und Datenbank-Nutzer nicht in die
+Quere kommen, haben sie der Einfachheit halber den gleichen Namen.
+
+Beim Aufruf des Skripts muss eine Zeichenkette übergeben werden, die
+Bestandteil der Namen von Datenbank und Datenbank-Nutzer wird.
+
+``` console
+xyz00@h50:~$ ./createuseranddb.js my_domain_wordpress
+created user and database xyz00_my_domain_wordpress with password 4fo=s3xY
+```
+
+::: attention
+::: title
+Attention
+:::
+
+Merken Sie sich die Passworte, da Sie diese später benötigen. Bei einer
+Datenbank-Anwendungen müssen Sie bei der Konfiguration den
+Datenbank-Benutzer und sein Passwort angeben.
+:::
+
+## Nutzung der Python-API {#kap-python-api}
+
+Sie können HSAdmin auch remote über die Python-API des Programms
+ansprechen. Das ermöglicht es Ihnen von einem entfernten Rechner aus
+HSAdmin zu bedienen. Um mit der Python-API zu arbeiten müssen Sie
+zunächst die Python-Bindings für HSAdmin installieren.
+
+### Installation von hs.admin.api
+
+Wir installieren die Python-Bindings in einer virtuellen
+Python-Umgebung, sodass wir diese zunächst einrichten und aktivieren.
+
+``` console
+$ python3 -m venv /hsadmin
+$ . /hsadmin/bin/activate
+```
+
+Anschließend klonen wir die Python-Bindings und installieren sie.
+
+``` console
+$ git clone https://dev.hostsharing.net//r/ansible/hs.admin.api.git
+$ cd hs.admin.api
+$ python setup.py install 
+```
+
+Nun steht uns das Modul mit dem Python-Bindings in der virtuellen
+Umgebung zur Verfügung, sodass wir es in einem Skript importieren
+können.
+
+### Python-Skript
+
+Um die API in einem Skript nutzen zu können, müssen wir mit folgendem
+Code ein API-Objekt erzeugen.
+
+::: {.literalinclude linenos="" lines="1-9"}
+createdomain.py
+:::
+
+Nun ist es möglich, mit der üblichen Syntax HSAdmin im Skript
+anzusprechen.
+
+Mit diesen beiden Befehlen legen wir beispielsweise einen Domain-Admin
+und eine neue Domain an.
+
+::: {.literalinclude lines="11-12"}
+createdomain.py
+:::
+
+Eine Datenbank lässt sich folgendermaßen anlegen.
+
+::: {.literalinclude lines="11-12"}
+createuseranddb.py
+:::
+
+Nun wollen wir diese Befehle in ein Skript einbauen, das noch einige
+andere nützliche Dinge für uns erledigt. Reseller und Webmaster, die
+viele Anwendungen betreuen, buchen häufig mehrere Pakete bei
+Hostsharing, sodass sie gerne ein Skript hätten, dem sie auch das Kürzel
+für das Paket übergeben können, in dem sie eine Domain mit Datenbank
+einrichten möchten. Außerdem wäre es hilfreich, wenn das Skript dafür
+sorgt, dass Benutzernamen und Datenbankenname immer nach einem
+einheitlichen Schema erzeugt werden, sodass die Orientierung leichter
+fällt. In unserem Beispielskript übergeben wir daher dem Skript drei
+Argumente:
+
+1.  das Kürzel für das Paket
+2.  den Domainnamen
+3.  eine Projekt-ID
+
+Die Projekt-ID darf nicht mehr als 10 Zeichen umfassen, da sie zusammen
+mit dem fünfstelligen Paketkürzel in den Namen für Datenbank und
+Datenbank-Nutzer verwendet wird. Diese dürfen aber nicht länger als 16
+Zeichen sein. Als Schema für eine Projekt-ID kommt also beispielsweise
+eine Kombination aus einer Kundennummer und einer Abkürzung in Frage.
+Wir verwenden in unserem Beispiel dafür eine dreistellige Kundennummer
+und die Abkürzung `wp` für Wordpress. Die Elemente trennen wir mit dem
+Unterstrich, da nur dieser als Namensbestandteil erlaubt ist.
+
+Wenn wir für den Kunden mit der Kundennummer 23 im Paket `xyz00` eine
+Domain für einen Wordpress-Blog einrichten möchten, lautet der Aufruf
+des Skripts folgendermaßen:
+
+``` console
+$ python createall.py xyz00 hs-example.de 023_wp
+```
+
+Der Code des Skripts sieht so aus:
+
+::: {.literalinclude linenos=""}
+createall.py
+:::
+
+In den ersten fünf Zeilen importieren wir einige Module bzw. Funktionen,
+die wir benötigen. In den Zeilen 7 bis 9 lesen wir die übergebenen
+Argumente aus und speichern die Werte in entsprechenden Variablen.
+
+Um das API-Objekt zu erzeugen, benötigen wir das Passwort für den
+übergebenen Paket-Admin. Wir lesen in Zeile 11 das Passwort aus dem
+verschlüsselten Passwort-Tresor des Kommandozeilenprogramms
+`pass`{.interpreted-text role="command"} aus und speichern es in der
+Variablen `pw`. Weitere Informationen zu dem Programm finden Sie auf der
+Website <https://www.passwordstore.org/>. Sie können natürlich andere
+Programme wählen, um ein Passwort aus einem Passwort-Tresor auszulesen.
+Falls Sie nur ein Paket bei Hostsharing verwalten, können Sie das
+Passwort auch direkt ins Skript eintragen. Aus Sicherheitsgründen
+sollten Sie dies möglichst vermeiden.
+
+Anschließend erzeugt das Skript das API-Objekt, wobei es als Credentials
+den Namen des Paket-Admin und sein Passwort übergibt. Der Namen des
+Paket-Admin ist identisch mit dem Paket, in dem die Domain angelegt
+werden soll.
+
+Danach wird ein Zufallsgenerator definiert, mit die Passworte erzeugt
+werden, die später benötigt werden. In Zeile 27 und 28 werden die
+Passworte für den Domain-Admin und den Datenbank-Nutzer erzeugt und in
+Variablen gespeichert. Direkt anschließend erzeugt das Skript aus den
+beim Aufruf übergebenen Werten die Namen für den Domain-Admin, den
+Datenbank-Nutzer und die Datenbank.
+
+In den Zeilen 33 bis 36 werden der Domain-Admin, die Domain, den
+Datenbank-Nutzer und die Datenbank angelegt.
+
+Und zum Schluss gibt das Skript alle Daten aus.
+
+Idealerweise würde ein solches Skript die neuen Benutzernamen mit den
+jeweiligen Passworten in den Passwort-Tresor eintragen, sodass dies
+nicht mit der Hand erledigt werden muss.
diff --git a/source/referenz/hsadmin/syntax.md b/source/referenz/hsadmin/syntax.md
new file mode 100644
index 0000000..ee6376b
--- /dev/null
+++ b/source/referenz/hsadmin/syntax.md
@@ -0,0 +1,65 @@
+# Syntax {#kap-hsadmin-syntax}
+
+Die Funktionen von HSAdmin können über das Kommandozeilenprogramm
+`hsscript`{.interpreted-text role="command"} aufgerufen werden, welches
+Befehle per Parameter, Dateiübergabe oder interaktiv entgegennimmt. Der
+Aufruf erfolgt nach folgender Syntax:
+
+``` console
+$ hsscript -u <Benutzer> -e <Befehl>...
+```
+
+Die folgenden Optionen können übergeben werden.
+
+::: option
+-u \--user
+
+Benutzer, welcher zur Authentifizierung und Autorisierung verwendet
+werden soll, zum Beispiel `xyz00`.
+:::
+
+::: option
+-r \--runas
+
+Benutzer, mit dessen Rechten der Befehl ausgeführt werden soll, zum
+Beispiel `xzy00-doms`.
+:::
+
+::: option
+-e \--expr
+
+Der Befehl, der ausgeführt werden soll. Er setzt sich aus einer Reihe
+von Parametern zusammen. Der Befehl hat folgende Syntax:
+
+    module.function({where:{field:'value',...}, set:{field:'value',...}}) 
+
+  --------------------------------------------------------------------------
+  Parameter   Erläuterung
+  ----------- --------------------------------------------------------------
+  module      Modul, dessen Funktion aufgerufen werden soll (z.B. `user`
+              oder `mysqldb`)
+
+  function    Funktion, welche aufgerufen werden soll (`search`, `add`,
+              `update`, `remove`)
+
+  where       selektiert nach Wert eines oder mehrerer Felder
+
+  set         setzt oder aktualisiert den Wert eines oder mehrerer Felder
+  --------------------------------------------------------------------------
+
+Die Module und Funktionen werden in den folgenden Kapiteln erklärt.
+:::
+
+::: option
+-f \--file
+
+Datei, aus welcher Befehle gelesen und ausgeführt werden sollen. Lesen
+Sie dazu `kap-hsscript-skript`{.interpreted-text role="numref"}.
+:::
+
+::: option
+-i \--interactive
+
+Das Programm startet im interaktiven Modus. Die Befehle können am
+Kommandozeilen-Prompt eingegeben werden.
+:::
diff --git a/source/referenz/hsadmin/user.md b/source/referenz/hsadmin/user.md
new file mode 100644
index 0000000..780541b
--- /dev/null
+++ b/source/referenz/hsadmin/user.md
@@ -0,0 +1,105 @@
+# Modul user {#kap-modul-user}
+
+## Funktionen
+
+::: option
+user.search
+
+Suche Benutzer nach den im Befehlsausdruck angegebenen Feldern und
+Werten
+:::
+
+::: option
+user.add
+
+Füge einen neuen Benutzer nach den im Befehlsausdruck angegebenen
+Feldern und Werten hinzu.
+:::
+
+::: option
+user.update
+
+Aktualisiere einen Benutzer nach den im Befehlsausdruck angegebenen
+Feldern und Werten.
+:::
+
+::: option
+user.remove
+
+Lösche einen Benutzer nach den im Befehlsausdruck angegebenen Feldern
+und Werten.
+:::
+
+## Editierbare Felder
+
+Das HSAdmin-Modul `user` kann entsprechend der folgenden Befehlssyntax
+von `HSAdmin`{.interpreted-text role="command"} Felder setzen oder
+verändern:
+
+    user.function({where:{field:'value',...}, set:{field:'value',...}})
+
+Im Modul `user` stehen folgende Felder zur Verfügung.
+
+name
+
+:   Benutzerkennung (z.B. xyz00-abc)
+
+comment
+
+:   Kommentar, in dem zum Beispiel die Funktion des Benutzers
+    beschrieben werden kann
+
+password
+
+:   Das Passwort
+
+shell
+
+:   Die zugewiesene Shell (z.B. `/bin/bash`)
+
+quota_softlimit
+
+:   Das zugewiesene `Quota`{.interpreted-text role="term"} in Megabyte
+
+quote_hardlimit
+
+:   Grenze der `Grace Period`{.interpreted-text role="term"}, bis zu der
+    Überschreitungen des Softlimit toleriert werden. Angabe in Megabyte
+
+## Beispiele
+
+In einer interaktiven Sitzung wird mit folgendem Befehl der neue
+Benutzer `xyz00-mustermann` angelegt.
+
+``` console
+xyz00@hsadmin> user.add ({set:{name:'xyz00-mustermann',comment:'Max Mustermann',password:'!1?2-3aBc',shell:'/bin/bash'}})
+```
+
+Man kann alle Informationen zu einem Nutzer abfragen:
+
+``` console
+xyz00@hsadmin> user.search ({where:{name:'xyz00-mustermann'}})
+```
+
+Einstellungen können nachträglich verändert werden. Dafür wird der
+Befehl `user.update`{.interpreted-text role="option"} benutzt. Im
+Befehlsausdruck wird zunächst mit `where` nach einem Datensatz gesucht,
+auf den mit `set` die Veränderung angewendet wird. Im ersten Beispiel
+wird für den Benutzer `xyz00-mustermann` ein neues Passwort gesetzt. Im
+zweiten Beispiel bekommt der Benutzer eine andere Shell zugewiesen und
+im dritten wird ein Quota gesetzt.
+
+``` console
+xyz00@hsadmin> user.update ({where:{name:'xyz00-mustermann'},set:{password:'neues-passwort'}})
+xyz00@hsadmin> user.update ({where:{name:'xyz00-mustermann'},set:{shell:'/bin/zsh'}})
+xyz00@hsadmin> user.update ({where:{name:'xyz00-mustermann'},set:{quota_softlimit:'50',quota_hardlimit:'75'}})
+```
+
+Natürlich können wir Benutzer mit Hilfe des Kommandozeilen-Tools auch
+wieder entfernen. Im folgenden Beispiel wird der Benutzer
+`xyz00-mustermann` mit dem Befehl `user.remove`{.interpreted-text
+role="option"} gelöscht.
+
+``` console
+xyz00@hsadmin> user.remove ({where:{name:'xyz00-mustermann'}})
+```
diff --git a/source/referenz/hsadmin/webfrontend.md b/source/referenz/hsadmin/webfrontend.md
new file mode 100644
index 0000000..c792d32
--- /dev/null
+++ b/source/referenz/hsadmin/webfrontend.md
@@ -0,0 +1,8 @@
+# HSAdmin-Webfrontend
+
+HSAdmin verfügt über ein Webfrontend <https://admin.hostsharing.net> zur
+Verwaltung eines
+`Web-Pakets</referenz/webpaket/index>`{.interpreted-text role="doc"}.
+
+Die Bedienung wurde in `kap-hsadmin-einstieg`{.interpreted-text
+role="numref"} beschrieben.
diff --git a/source/referenz/htaccess.md b/source/referenz/htaccess.md
new file mode 100644
index 0000000..b0934ac
--- /dev/null
+++ b/source/referenz/htaccess.md
@@ -0,0 +1,94 @@
+# htaccess {#kap-htaccess}
+
+Das Verhalten des Apache Webservers lässt sich durch
+`.htaccess`{.interpreted-text role="file"}-Dateien im Verzeichnis einer
+Domain steuern. Die zentrale Konfiguration lässt sich damit für einzelne
+Verzeichnisse überschreiben. Eine `.htaccess`{.interpreted-text
+role="file"}-Datei wirkt sich auf das Verzeichnis aus, in dem sie sich
+befindet, und auf alle Unterverzeichnisse. Konfigurationen, die es
+ermöglichen, dass der Webserver Rechte anderer User erhalten kann, sind
+dabei nicht erlaubt.
+
+## Bereiche einer Website mit Passwort schützen
+
+Ein typischer Anwendungsfall ist der Schutz eines bestimmten
+Verzeichnisses mit einem Passwort. Dazu muss zunächst eine
+Passwort-Datei mit dem Namen `.htpasswd`{.interpreted-text role="file"}
+im `etc`{.interpreted-text role="file"}-Verzeichnis der Domain angelegt
+werden. Dies erfolgt mit dem Programm `htpasswd`{.interpreted-text
+role="command"}.
+
+``` console
+xyz00-doms@h97:~$ cd ~/doms/hs-example.de/etc
+xyz00-doms@h97:~$ htpasswd -c .htpasswd peter
+New password: *****
+Re-type new password: *****
+xyz00-doms@h97:~$
+```
+
+Statt der Sternchen geben Sie das gewünschte Passwort ein. Es wird
+verschlüsselt gespeichert. Die Option `-c` wird nur bei der ersten
+Anlage der Passwort-Datei gesetzt. Wenn ein Passwort für einen zweiten
+Benutzer eingerichtet wird, muss `htpasswd`{.interpreted-text
+role="command"} ohne die Option aufgerufen werden, da sonst die Datei
+komplett überschrieben würde und das Passwort für den ersten Benutzer
+verloren ginge.
+
+``` console
+xyz00-doms@h97:~$ cd ~/doms/hs-example.de/etc
+xyz00-doms@h97:~$ htpasswd .htpasswd paula
+New password: *****
+Re-type new password: *****
+xyz00-doms@h97:~$
+```
+
+Diese Passwort-Datei kann nun für beliebige Verzeichnisse der Domain
+genutzt werden. Um ein Verzeichnis mit einem Passwort zu schützen, legen
+Sie dazu einfach eine `htaccess`{.interpreted-text role="file"}-Datei
+mit folgendem Inhalt in dem betreffenden Verzeichnis an.
+
+``` text
+order allow,deny
+allow from all
+require valid-user
+Authname "Privater Bereich. Bitte melden Sie sich an."
+Authtype Basic
+AuthUserFile /home/doms/hs-example.de/etc/.htpasswd
+```
+
+Beim Aufruf des Bereichs im Webbrowser wird der Besucher aufgefordert,
+den Benutzernamen (in unserem Beispiel `peter` oder `paula`) sowie das
+jeweilige Passwort einzugeben.
+
+## Weiterleitungen (Redirects)
+
+Ein anderer typischer Anwendungsfall sind Redirects. Weiterleitungen
+werden benötigt, wenn alte Inhalte verschoben werden, sodass sie unter
+einer neuen Webadresse erreichbar sind. Weiterleitungen verhindern, dass
+Links, die von anderen Webseiten auf den verschobenen Inhalt gesetzt
+wurden, ins Leere gehen. Dazu können Sie eine
+`htaccess`{.interpreted-text role="file"}-Datei im obersten Verzeichnis
+anlegen, in dem Sie alle Weiterleitungen aufführen.
+
+``` text
+Redirect permanent /alte-url-1/ /neue-url-1/ 
+Redirect permanent /alte-url-2/ /neue-url-2/
+Redirect permanent /alte-url-3/ /neue-url-3/
+```
+
+## Eigene 404-Datei festlegen
+
+Wenn ein Benutzer auf Ihrer Website eine ungültige Webadresse aufruft,
+zeigt der Browser eine 404-Meldung an. Sie können diese Standardanzeige
+anpassen, indem Sie den Webserver anweisen, bei einem 404-Fehler eine
+besondere Webseite anzuzeigen.
+
+``` text
+ErrorDocument 403 /404.html
+```
+
+Weitere Möglichkeiten, das Verhalten des Webservers über
+`htaccess`{.interpreted-text role="file"}-Dateien zu steuern, finden Sie
+in der [Apache-Dokumentation](https://httpd.apache.org/docs/2.4/). Eine
+deutschsprachige Anleitung und Beispielkonfigurationen finden Sie unter:
+<https://wiki.selfhtml.org/wiki/Webserver/htaccess>
diff --git a/source/referenz/index.md b/source/referenz/index.md
new file mode 100644
index 0000000..db950ac
--- /dev/null
+++ b/source/referenz/index.md
@@ -0,0 +1,12 @@
+# Referenz {#kap-referenz}
+
+![image](../images/header/exzellenz.png)
+
+In diesem Kapitel werden die Dienste und Funktionen der Managed
+Operations Platform von Hostsharing dokumentiert.
+
+::: {.toctree maxdepth="1"}
+benutzer/index webpaket/index domain/index email/index datenbanken/index
+tls/index zonefile/index hsadmin/index htaccess php logging/index backup
+wartungsfenster hostkeys
+:::
diff --git a/source/referenz/logging/index.md b/source/referenz/logging/index.md
new file mode 100644
index 0000000..18d2113
--- /dev/null
+++ b/source/referenz/logging/index.md
@@ -0,0 +1,70 @@
+# Logging {#kap-logging}
+
+## Traffic {#kap-traffic}
+
+Im Web-Paket wird jeden Monat eine Traffic-Log-Datei für den erzeugten
+Traffic erzeugt, die den Verbrauch eines jeden Tages pro Zeile enthält.
+Der Traffic setzt sich aus HTTP-, FTP- und Mail-Traffic (POP3, IMAP)
+zusammen. Bei Überschreitung des gebuchten Traffics wird der
+`Paket-Admin`{.interpreted-text role="role"} automatisch per E-Mail
+informiert.
+
+Der Traffic für einzelne Benutzer innerhalb eines Pakets kann nicht
+beschränkt werden.
+
+## Traffic-Log-File {#kap-traffic-log}
+
+Der im Web-Paket erzeugte Traffic wird dem Paket-Admin unter
+`/home/pacs/xyz00/var/traffic-iptables-YYYY-MM.log`{.interpreted-text
+role="file"} zugänglich gemacht. Das Logfile hat folgenden Aufbau:
+
++-----+----+-------+-------+--------+---------+-----+--------+-----+
+| Da  | P  | M     | Tages | Traffi | IP-     | T   | IP-A   | T   |
+| tum | ak | onats | limit | csumme | Adresse | raf | dresse | raf |
+|     | et | limit |       |        | 1       | fic | 2      | fic |
+|     |    |       |       |        |         | 1   |        | 2   |
++=====+====+=======+=======+========+=========+=====+========+=====+
+| 2   | x  | >     | 34    | >      | 83.223  | 89. |        | 0.  |
+| 020 | yz | 10240 | 1.333 | 89.367 | .79.125 | 367 |        | 000 |
+| -01 | 00 |       |       |        |         |     |        |     |
+| -01 |    |       |       |        |         |     |        |     |
++-----+----+-------+-------+--------+---------+-----+--------+-----+
+
+Die Bedeutung der einzelnen Spalten:
+
+`Datum:` Datum der Messung
+
+`Paket:` Name des Web-Pakets
+
+`Monatslimit:` Gebuchter Gesamttraffic pro Monat in Megabyte
+
+`Tageslimit:` Tägliches Traffic-Kontingent bei gleichmäßigem Verbrauch
+in Megabyte
+
+`Trafficsumme:` Gesamtsumme des angefallenen Traffics am angegebenen Tag
+in Megabyte
+
+`IP-Adresse 1:` Primäre IP-Adresse des Web-Pakets
+
+`Traffic 1:` Über die primäre IP-Adresse angefallener Traffic in
+Megabyte
+
+`IP-Adresse 2:` Sekundäre IP-Adresse des Web-Pakets
+
+`Traffic 2:` Über die sekundäre IP-Adresse angefallener Traffic in
+Megabyte
+
+## HTTP-Log {#kap-http-log}
+
+Das in kurzen Abständen aktualisierte Logfile
+`web.log`{.interpreted-text role="file"} des Webservers steht im
+Paketverzeichnis `/home/pacs/xyz00/var/`{.interpreted-text role="file"}
+dem Paket-Admin zur Verfügung. Aus dem Logfile werden nach Ablauf des
+Tages einzelne Logfiles für alle abgerufenen Domains und Sub-Domains
+generiert und unter
+`/home/pacs/xyz00/var/web-www.example.org-YYYYMMDD-HHMI.log.gz`{.interpreted-text
+role="file"} gespeichert. Diese Dateien werden 48 Tage archiviert und
+nach Ablauf dieser Frist automatisch gelöscht. Das Error-Logfile
+`web.err` des Webservers steht unter
+`/home/pacs/xyz00/var`{.interpreted-text role="file"} dem Paket-Admin
+zur Verfügung.
diff --git a/source/referenz/php.md b/source/referenz/php.md
new file mode 100644
index 0000000..38e56a9
--- /dev/null
+++ b/source/referenz/php.md
@@ -0,0 +1,61 @@
+# PHP {#kap-php}
+
+PHP ist standardmäßig über FastCGI konfiguriert. In den Ordnern
+`fastcgi` und `fastcgi-ssl` unterhalb des Domainordners findet sich eine
+phpstub-Datei; der Webserver liefert php-Dateien mit den Rechten des
+Users aus.
+
+## Eigene PHP Konfiguration
+
+Im Ordner `fastcgi` oder `fastcgi-ssl` wird die Datei php.ini angelegt.
+In dieser Datei werden die Änderungen gegenüber den Standardwerten
+eingetragen.
+
+Eine Übersicht über die Standardwerte von PHP können unter
+`/etc/php/7.4/cgi/php.ini`{.interpreted-text role="file"} eingesehen
+werden.
+
+## PHP Prozesse stoppen
+
+Nach Änderungen an der php.ini müssen alle PHP-Prozesse gestoppt werden:
+
+``` console
+$ killall php -u $USER
+```
+
+## phpstub
+
+Die Datei `phpstub` ist standardmäßig vorhanden, alternativ kann sie aus
+dem Ordner `/usr/local/src/phpstub` wiederhergestellt werden.
+
+## Vorinstallierte PHP Version wechseln
+
+Hostsharing bietet neben der vom Betriebssystem vorinstallierten
+Standardversion 7.4 auch PHP 7.0, 7.1, 7.2, und 7.3 an.
+
+Um die Version zu wechseln, genügt es, den jeweiligen phpstub
+auszutauschen. Version 7.3 liegt unter
+`/usr/local/src/phpstub/phpstub73`{.interpreted-text role="file"}; das
+Versionformat ist entsprechend
+`/usr/local/src/phpstub/phpstubXX`{.interpreted-text role="file"}.
+
+### phpstub für PHP 7.3 kopieren
+
+``` console
+$ cp /usr/local/src/phpstub/phpstub73 ~/doms/example.com/fastcgi/
+$ cp /usr/local/src/phpstub/phpstub73 ~/doms/example.com/fastcgi-ssl/
+```
+
+### phpstub für PHP 7.3 aktivieren
+
+In der jeweiligen .htaccess eines Ordners genügt es, die PHP
+Dateizuordnung zu überschreiben:
+
+    AddType application/x-httpd-php73 .php
+    Action application/x-httpd-php73 /fastcgi-bin/phpstub73
+
+Damit wird für den aktuellen Ordner und alle Unterordner PHP 7.3
+verwendet.
+
+Auf die gleiche Weise können auch PHP 7.2, PHP 7.1 oder PHP 7.0
+aktiviert werden
diff --git a/source/referenz/tls/eigene-tls-zertifikate.md b/source/referenz/tls/eigene-tls-zertifikate.md
new file mode 100644
index 0000000..243af2d
--- /dev/null
+++ b/source/referenz/tls/eigene-tls-zertifikate.md
@@ -0,0 +1,17 @@
+# Zertifikate einer Zertifizierungsstelle
+
+Für die Installation eines Zertifikate einer Zertifizierungsstelle muss
+der `Paket-Admin`{.interpreted-text role="role"} einen ›Private Key‹ und
+einen CSR (Certificate Signing Request) erzeugen. Die Vorgehensweise ist
+in der Regel auf den Webseiten der Zertifizierungsstelle beschrieben.
+Weitere Hinweise sind im Hostsharing Wiki unter
+[TLS/SSL](https://wiki.hostsharing.net/index.php?title=TLS_/_SSL)
+beschrieben.
+
+Für die Aktivierung des Zertifikates wird ein Auftrag an
+<service@hostsharing.net> gesendet. Die Aktivierung des Zertifikats
+durch den Service ist kostenpflichtig.
+
+::: todo
+Evtl. ausführlich beschreiben und aus Wiki übernehmen.
+:::
diff --git a/source/referenz/tls/filemap-mit-ssl.md b/source/referenz/tls/filemap-mit-ssl.md
new file mode 100644
index 0000000..8227f55
--- /dev/null
+++ b/source/referenz/tls/filemap-mit-ssl.md
@@ -0,0 +1,49 @@
+# Filemapping mit TLS
+
+In der folgenden Grafik ist der Entscheidungsweg beschrieben, der
+durchlaufen wird, um einem anfragenden Browser die richtige Datei
+auszuliefern. Die Website wird über `https` aufgerufen, sodass TLS aktiv
+ist.
+
+::: graphviz
+filemap-mit-tls.dot
+:::
+
+Zunächst wird für die Anfrage
+`https://www.example.com/<path>`{.interpreted-text role="file"} der
+Virtual Host gesucht, der zum FQDN (Fully Qualified Domain Name) passt.
+Anschließend entscheiden folgende Fragen über den weiteren Verlauf des
+Entscheidungswegs.
+
+1.  Starten wir mit cgi-ssl?
+
+    > a.  Ja: Das Verzeichnis `cgi-ssl`{.interpreted-text role="file"}
+    >     wird zum Wurzelverzeichnis und eine passende Datei daraus wird
+    >     ausgeliefert.
+    > b.  Nein: Weiter zu Frage 2
+
+2.  Starten wir mit fastcgi-ssl?
+
+    > a.  Ja: Das Verzeichnis `fastcgi-ssl`{.interpreted-text
+    >     role="file"} wird zum Wurzelverzeichnis und eine passende
+    >     Datei daraus wird ausgeliefert.
+    > b.  Nein aber es gibt einen FQDN-Treffer, deshalb wird
+    >     `htdocs-ssl`{.interpreted-text role="file"} zum
+    >     Wurzelverzeichnis und eine passende Datei daraus ausgeliefert.
+    >     Ist das nicht der Fall geht es weiter zu Frage 3.
+
+3.  Gibt es eine passende Sub-Domain?
+
+    > a.  Ja: Das Verzeichnis `subs-ssl`{.interpreted-text role="file"}
+    >     wird zum Wurzelverzeichnis und eine passende Datei daraus wird
+    >     ausgeliefert.
+    > b.  Nein: Weiter zu Frage 4
+
+4.  Ist das Verzeichnis `htdocs-ssl`{.interpreted-text role="file"} als
+    Fallback konfiguriert?
+
+    > a.  Ja: Das Verzeichnis `htdocs-ssl`{.interpreted-text
+    >     role="file"} wird zum Wurzelverzeichnis und eine passende
+    >     Datei daraus ausgeliefert.
+    > b.  Nein: Es wurde nichts gefunden. Wir liefern die Fehlermeldung
+    >     404 aus.
diff --git a/source/referenz/tls/filemap-ohne-ssl.md b/source/referenz/tls/filemap-ohne-ssl.md
new file mode 100644
index 0000000..110eee5
--- /dev/null
+++ b/source/referenz/tls/filemap-ohne-ssl.md
@@ -0,0 +1,48 @@
+# Filemapping ohne TLS
+
+In der folgenden Grafik ist der Entscheidungsweg beschrieben, der
+durchlaufen wird, um einem anfragenden Browser die richtige Datei
+auszuliefern. TLS ist nicht aktiv.
+
+::: graphviz
+filemap-ohne-tls.dot
+:::
+
+Zunächst wird für die Anfrage
+`http://www.example.com/<path>`{.interpreted-text role="file"} der
+Virtual Host gesucht, der zum FQDN (Fully Qualified Domain Name) passt.
+Anschließend entscheiden folgende Fragen über den weiteren Verlauf des
+Entscheidungswegs.
+
+1.  Starten wir mit cgi-bin?
+
+    > a.  Ja: Das Verzeichnis `cgi-bin`{.interpreted-text role="file"}
+    >     wird zum Wurzelverzeichnis und eine passende Datei daraus wird
+    >     ausgeliefert.
+    > b.  Nein: Weiter zu Frage 2
+
+2.  Starten wir mit fastcgi?
+
+    > a.  Ja: Das Verzeichnis `fastcgi`{.interpreted-text role="file"}
+    >     wird zum Wurzelverzeichnis und eine passende Datei daraus wird
+    >     ausgeliefert.
+    > b.  Nein aber es gibt einen FQDN-Treffer, deshalb wird
+    >     `htdocs`{.interpreted-text role="file"} zum Wurzelverzeichnis
+    >     und eine passende Datei daraus ausgeliefert. Ist das nicht der
+    >     Fall geht es weiter zu Frage 3.
+
+3.  Gibt es eine passende Sub-Domain?
+
+    > a.  Ja: Das Verzeichnis `subs`{.interpreted-text role="file"} wird
+    >     zum Wurzelverzeichnis und eine passende Datei daraus wird
+    >     ausgeliefert.
+    > b.  Nein: Weiter zu Frage 4
+
+4.  Ist das Verzeichnis `htdocs`{.interpreted-text role="file"} als
+    Fallback konfiguriert?
+
+    > a.  Ja: Das Verzeichnis `htdocs`{.interpreted-text role="file"}
+    >     wird zum Wurzelverzeichnis und eine passende Datei daraus
+    >     ausgeliefert.
+    > b.  Nein: Es wurde nichts gefunden. Wir liefern die Fehlermeldung
+    >     404 aus.
diff --git a/source/referenz/tls/index.md b/source/referenz/tls/index.md
new file mode 100644
index 0000000..9af55f3
--- /dev/null
+++ b/source/referenz/tls/index.md
@@ -0,0 +1,21 @@
+# TLS Zertifikate
+
+Transport Layer Security (TLS) ist ein Verschlüsselungsprotokoll zur
+sicheren Datenübertragung im Internet. Die Vorgängerbezeichnung lautete
+Secure Sockets Layer (SSL).
+
+Beim Anlegen einer Domain in HSAdmin kann als Domain-Option ein
+Let\'s-Encrypt-Zertifikat erstellt werden (vgl. dazu
+`kap-hsadmin-domain-anlegen`{.interpreted-text role="numref"} und
+`kap-domain-optionen`{.interpreted-text role="numref"}). Daten können so
+ohne weitere Vorbereitung über HTTPS ausgeliefert werden.
+
+::: {.toctree maxdepth="1                
+
+standard
+varianten 
+eigene-tls-zertifikate
+letsencrypt
+filemap-ohne-ssl
+filemap-mit-ssl"}
+:::
diff --git a/source/referenz/tls/letsencrypt.md b/source/referenz/tls/letsencrypt.md
new file mode 100644
index 0000000..e30c82c
--- /dev/null
+++ b/source/referenz/tls/letsencrypt.md
@@ -0,0 +1,45 @@
+# Let´s Encrypt einrichten {#kap-le-einrichten}
+
+Wenn Sie bei der Aufschaltung der Domain noch kein Let\'s Encrypt
+Zertifikat eingerichtet haben, können Sie dies nachträglich erledigen.
+
+Melden Sie sich mit dem Benutzernamen Ihres
+`Paket-Admin`{.interpreted-text role="role"} beim Webfrontend von
+HSAdmin unter <https://admin.hostsharing.net> an. Wählen Sie im linken
+Feld den Eintrag `Web-Paket`{.interpreted-text role="guilabel"} aus. Im
+rechten Feld aktivieren Sie den Reiter `Domain`{.interpreted-text
+role="guilabel"} und wählen anschließend die Domain aus, für die Sie
+Let\'s Encrypt einrichten möchten.
+
+Klicken Sie anschließend das Editier-Symbol
+`Ausgewählten Eintrag bearbeiten`{.interpreted-text role="guilabel"}, um
+das Bearbeitungsmenü zu öffnen:
+
+![](../../images/hsadmin-domain-anlegen-2.*)
+
+Setzen Sie anschließend im Feld `Domain-Optionen`{.interpreted-text
+role="guilabel"} das Häkchen bei
+`Let's Encrypt-Zertifikat`{.interpreted-text role="guilabel"}. Speichern
+Sie die Einstellung mit einem Klick auf den Button
+`OK`{.interpreted-text role="guilabel"}.
+
+![](../../images/hsadmin-domain-bearbeiten.*)
+
+Sie können jede Subdomain, für die ein Let\'s-Encrypt-Zertifikat
+erstellt werden soll, einzeln in der Liste
+`gültige Subdomains`{.interpreted-text role="guilabel"} eintragen.
+Alternativ können Sie das Wildcard-Symbol `*` benutzen; dann wird ein
+Wildcard-Zertifikat ausgestellt, das für jede leichtgewichtige Subdomain
+gültig ist. Für einzeln aufgeschaltete Subdomains müssen Sie Let\'s
+Encrypt gesondert aktivieren.
+
+Bis zur Zertifizierung vergehen normalerweise nur 2-3 Minuten, es kann
+jedoch auch bis zu 36 Std dauern.
+
+Wenn die Domain oder Subdomain nicht bei Hostsharing verwaltet wird,
+muss beim Domainverwalter eine Nameserver-Delegation auf die drei
+DNS-Server von Hostsharing eingerichtet sein, damit
+Let\'s-Encrypt-Zertifikate genutzt werden können. Die Nameserver, die an
+der entsprechenden Stelle eingetragen werden müssen, heißen
+`dns1.hostsharing.net`, `dns2.hostsharing.net` und
+`dns3.hostsharing.net`.
diff --git a/source/referenz/tls/standard.md b/source/referenz/tls/standard.md
new file mode 100644
index 0000000..f5f7687
--- /dev/null
+++ b/source/referenz/tls/standard.md
@@ -0,0 +1,14 @@
+# Standardkonfiguration {#kap-tls-standardkonfiguration}
+
+Pro aufgeschalteter Domain ist ein Zertifikat möglich .
+
+TLS-Inhalte werden durch die Verzeichnisse
+
+-   cgi-ssl
+-   fastcgi-ssl
+-   htdocs-ssl
+
+von Nicht-TLS-Inhalten getrennt. Die Ordnerstruktur im Verzeichnis eines
+`Domain-Admin`{.interpreted-text role="role"} wird in
+`kap-einstieg-ordnerstruktur`{.interpreted-text role="numref"}
+beschrieben.
diff --git a/source/referenz/tls/varianten.md b/source/referenz/tls/varianten.md
new file mode 100644
index 0000000..af4423e
--- /dev/null
+++ b/source/referenz/tls/varianten.md
@@ -0,0 +1,24 @@
+# Mögliche Varianten
+
+## TLS-Seiten und Nicht-TLS-Seiten in einem Verzeichnis
+
+Sollen TLS- und Nicht-TLS-Seiten innerhalb eines Verzeichnis verwaltet
+werden, können die TLS-Verzeichnisse gelöscht und symbolische Links auf
+Nicht-TLS Verzeichnisse angelegt werden. Dies gilt selektiv auch für
+Unterverzeichnisse. Symbolische Links erlauben es, Seiten mit und ohne
+TLS abzurufen.
+
+::: todo
+Mit einem Beispiel erklären
+:::
+
+## Automatisch auf TLS
+
+Soll nur auf bestimmten Seiten der Zugriff mit TLS erlaubt und
+automatisch auf TLS umgeschaltet werden, muss dies in einer
+entsprechenden .htaccess-Datei für die betroffenen Verzeichnisse
+konfiguriert werden.
+
+::: todo
+Mit einem Beispiel erklären
+:::
diff --git a/source/referenz/wartungsfenster.md b/source/referenz/wartungsfenster.md
new file mode 100644
index 0000000..d1e8e8e
--- /dev/null
+++ b/source/referenz/wartungsfenster.md
@@ -0,0 +1,26 @@
+# Wartungsfenster
+
+Es gibt Standard-Wartungsfenster von 1 bis 2 Uhr (*früh*) und von 4 bis
+5 Uhr (*spät*). Hives/Server mit ungeraden Nummern (h01, h03, ... h99)
+werden im Rahmen des frühen Wartungsfensters gewartet, Hives/Server mit
+geraden Nummern (h02, h04, ... h98) werden im späten Wartungsfenster
+gewartet.
+
+Im Fall von Managed Servern haben die Mitglieder folgende
+Wahlmöglichkeiten:
+
+-   Tausch des Wartungsfensters *früh* gegen *spät* oder umgekehrt. Die
+    Festlegung kann individuell je Managed Server getroffen werden.
+    Dieser Service ist kostenfrei.
+
+-   Vereinbarung individueller Wartungsfenster, Vorankündigungsfristen,
+    Absprachen und Vorgehensweisen. Die Berechnung erfolgt dann abhängig
+    vom konkreten Aufwand im Wartungsfall gemäß unseres gültigen
+    Abrechnungssatzes.
+
+    Mit dieser Änderung ermöglichen wir den Mitgliedern weitreichende
+    Flexibilität und die Möglichkeit, individuelle Prozesse verbindlich
+    festzulegen.
+
+Selbstverständlich werden auch im Falle der kostenfreien Standardwartung
+angemessene Ankündigungsfristen eingehalten.
diff --git a/source/referenz/webpaket/index.md b/source/referenz/webpaket/index.md
new file mode 100644
index 0000000..49233c2
--- /dev/null
+++ b/source/referenz/webpaket/index.md
@@ -0,0 +1,55 @@
+# Web-Paket {#kap-webpaket}
+
+Die Mitglieder von Hostsharing nutzen die Managed Operations Platform,
+indem sie ein oder mehrere Web-Pakete buchen. Technisch gesehen ist ein
+Web-Paket eine UNIX-Nutzer-Gruppe. Alle Web-Pakete sind damit durch
+gesonderte Zugriffsrechte gegeneinander abgeschottet. Mit seinem
+Mitglieds-Account hat das Mitglied Zugriff auf alle seine Web-Pakete und
+kann sie in HSAdmin verwalten. Der Paket-Admin hat nur Zugriff auf sein
+eigenes Web-Paket.
+
+Ein Web-Paket hat einen definierten Leistungsumfang, der durch Optionen
+jederzeit erweitert werden kann. Die konkrete Staffelung der Optionen
+wird auf folgenden Webseiten beschrieben:
+
+1.  Leistungsumfang [Managed
+    Webspace](https://www.hostsharing.net/angebote/managed-webspace/)
+2.  Leistungsumfang [Managed
+    Server](https://www.hostsharing.net/angebote/managed-server/)
+
+Die Web-Pakete werden nach einem einheitlichen Muster bezeichnet. Dieses
+besteht aus einem dreistelligen Präfix und einem zweistelligen Zähler
+(z.B xyz00). Das Präfix kann frei gewählt werden, falls es noch nicht
+vergeben ist. Mit ihm wird das Mitglied identifiziert. Es dient daher
+auch als Benutzername für den Mitglieds-Account (vgl.
+`kap-benutzerrollen`{.interpreted-text role="numref"})
+
+Aus der Paket-Bezeichnung (xyz00) ergeben sich weitere Benennungen:
+
+-   der Name des `Paket-Admins <Paket-Admin>`{.interpreted-text
+    role="role"}: Er lautet wie das Web-Paket, in diesem Beispiel
+    `xyz00`.
+-   das Paketverzeichnis `/home/pacs/xyz00/`; es ist daher auch das
+    Benutzerverzeichnis des Paket-Admin.
+
+Ein Web-Paket enthält in der Regel:
+
+-   die Verzeichnisse von Benutzern, deren Struktur von der jeweiligen
+    Rolle des Benutzers abhängig ist
+-   die genutzten `Datenbanken<../datenbanken/index>`{.interpreted-text
+    role="doc"}
+-   die aufgeschalteten `Domains<../domain/index>`{.interpreted-text
+    role="doc"}
+
+Jedes Web-Paket hat eine initial angelegte Verzeichnisstruktur. Die
+Verzeichnisstruktur entspricht der dem jeweiligen Nutzer zugesprochenen
+Rolle. Die Verzeichnisstrukturen von `Paket-Admin`{.interpreted-text
+role="role"}, `Domain-Admin`{.interpreted-text role="role"} und
+`E-Mail-Benutzer`{.interpreted-text role="role"} werden im Folgenden
+beschrieben.
+
+::: {.toctree maxdepth="1" hidden="verzeichnisebenen-paket-admin
+verzeichnisebenen-domain-admin
+verzeichnisebenen-email-nutzer
+speicherbelegung"}
+:::
diff --git a/source/referenz/webpaket/speicherbelegung.md b/source/referenz/webpaket/speicherbelegung.md
new file mode 100644
index 0000000..1923772
--- /dev/null
+++ b/source/referenz/webpaket/speicherbelegung.md
@@ -0,0 +1,44 @@
+# Speicherbelegung {#kap-quota}
+
+Jedem Web-Paket steht nur ein begrenzter Speicher zur Verfügung. Der
+tatsächlich belegte Speicher darf den gebuchten nicht dauerhaft
+überschreiten.
+
+Zum belegten Speicher zählen neben den sichtbaren Dateien in
+`/home/pacs/xyz00`{.interpreted-text role="file"}, die Sicherungen der
+Datenbanken unter `/home/pacs/xyz00/.bak/`{.interpreted-text
+role="file"} sowie gegebenenfalls Dateien in
+`/home/restore`{.interpreted-text role="file"} oder temporäre Daten im
+Verzeichnis `/tmp`.
+
+Die Speicherbegrenzung für ein Web-Paket ist unter Linux durch ein Quota
+für die Gruppe `xyz00` realisiert. Die aktuelle Belegung lässt sich mit
+dem Kommando
+
+``` console
+$ quota -gs
+```
+
+ermitteln. Die Ausgabe
+
+``` console
+Disk quotas for group xyz00 (gid 999999): 
+   Filesystem   space   quota   limit   grace   files   quota   limit   grace
+   /dev/vda2    5587M   6144M   9216M            103k   6292k   6292k     
+```
+
+bedeutet:
+
+-   Es sind 5587 MB von 6144 MB belegt
+-   Temporär dürfen bis zu 9216 MB in Anspruch genommen werden
+-   Außerdem sind 103.000 Dateien angelegt worden
+-   Die maximale Anzahl der Dateien ist auf 6.292.000 beschränkt
+-   Sobald das Quota überschritten wird, würde unter `grace` die
+    verbleibende Zeit angezeigt, innerhalb derer wieder das Quota
+    unterschritten sein muss. Sonst wird das Paket gesperrt, das heißt
+    es können keine Dateien mehr angelegt werden, E-Mails werden nicht
+    mehr zugestellt.
+
+Falls Sie dauerhaft mehr Speicherplatz benötigen, können Sie diesen
+jederzeit hinzubuchen. Wenden Sie sich dazu an den
+[Service](mailto:service@hostsharing.net).
diff --git a/source/referenz/webpaket/verzeichnisebenen-domain-admin.md b/source/referenz/webpaket/verzeichnisebenen-domain-admin.md
new file mode 100644
index 0000000..f560cea
--- /dev/null
+++ b/source/referenz/webpaket/verzeichnisebenen-domain-admin.md
@@ -0,0 +1,155 @@
+# Verzeichnisebene Domain-Admin
+
+Man kann sich als Domain-Admin in seinem Web-Paket per SSH
+folgendermaßen anmelden. Unter der Annahme, dass der Domain-Admin für
+die Domain `hs-example.de` angelegt wurde und sein Benutzername
+`xyz00-hs_example.de` ist, lautet der Befehl zum Anmelden
+folgendermaßen:
+
+``` console
+$ ssh xyz00-hs_example.des@xyz00.hostsharing.net
+```
+
+Danach können die Verzeichnisse mit dem Befehl `ls`{.interpreted-text
+role="command"} angezeigt werden.
+
+``` console
+xyz00-doms@h05:~$ ls -a
+```
+
+Das Home-Verzeichnis des
+`Domain-Admins <Domain-Admin>`{.interpreted-text role="role"} umfasst
+folgende Verzeichnisse:
+
+::: tabularcolumns
+llllL
+:::
+
+  -----------------------------------------------------------------------------------------
+  Berechtigungen    Nutzer                Gruppe   Ordner    Erläuterung
+  ----------------- --------------------- -------- --------- ------------------------------
+  dr-xr-x\--T       httpd                 xyz00    doms      Ablage der Domains dieses
+                                                             Domain-Admins.
+
+  drwx\-\-\-\-\--   xyz00-hs_example.de   xyz00    Maildir   Mailordner des Domain-Admins.
+  -----------------------------------------------------------------------------------------
+
+  : Verzeichnisstruktur des Domain-Admin
+
+Unterhalb des Ordners *doms* findet sich für jede Domain ein weiterer
+Ordner mit dem Namen der Domain, zum Beispiel *example.com*, und darin
+befindet sich die Verzeichnisstruktur für die jeweilige Domain:
+
+```{=latex}
+\begin{small}
+```
+::: tabularcolumns
+llllL
+:::
+
++----+-----+---+---+--------------------------------------------------+
+| Be | Nut | G | O | Erläuterung                                      |
+| re | zer | r | r |                                                  |
+| ch |     | u | d |                                                  |
+| ti |     | p | n |                                                  |
+| gu |     | p | e |                                                  |
+| ng |     | e | r |                                                  |
+| en |     |   |   |                                                  |
++====+=====+===+===+==================================================+
+| dr | x   | x | c | Ablage für CGI-Skripte zur Generierung           |
+| wx | yz0 | y | g | dynamischer Webseiten in einem Webserver.        |
+| r- | 0-h | z | i |                                                  |
+| xr | s_e | 0 |   |                                                  |
+| -x | xam | 0 |   |                                                  |
+|    | ple |   |   |                                                  |
+|    | .de |   |   |                                                  |
++----+-----+---+---+--------------------------------------------------+
+| dr | x   | x | c | > Ablage für CGI-Skripte zur Generierung         |
+| wx | yz0 | y | g | > dynamischer Webseiten, die verschlüsselt       |
+| r- | 0-h | z | i | > ausgeliefert werden (siehe auch                |
+| xr | s_e | 0 | - | > `TLS</referenz/tls/index>`{.interpreted-text   |
+| -x | xam | 0 | s | > role="doc"}).                                  |
+|    | ple |   | s |                                                  |
+|    | .de |   | l |                                                  |
++----+-----+---+---+--------------------------------------------------+
+| dr | x   | x | f | Ablage für Fast-CGI-Programme zur Generierung    |
+| wx | yz0 | y | a | dynamischer Webseiten in einem Webserver.        |
+| r- | 0-h | z | s |                                                  |
+| xr | s_e | 0 | t |                                                  |
+| -x | xam | 0 | c |                                                  |
+|    | ple |   | g |                                                  |
+|    | .de |   | i |                                                  |
++----+-----+---+---+--------------------------------------------------+
+| dr | x   | x | f | > Ablage für Fast-CGI-Programme zur Generierung  |
+| wx | yz0 | y | a | > dynamischer Webseiten, die verschlüsselt       |
+| r- | 0-h | z | s | > ausgeliefert werden                            |
+| xr | s_e | 0 | t |                                                  |
+| -x | xam | 0 | c |                                                  |
+|    | ple |   | g |                                                  |
+|    | .de |   | i |                                                  |
+|    |     |   | - |                                                  |
+|    |     |   | s |                                                  |
+|    |     |   | s |                                                  |
+|    |     |   | l |                                                  |
++----+-----+---+---+--------------------------------------------------+
+| dr | x   | x | h | Ablage für die Daten einer Webseite, wenn diese  |
+| wx | yz0 | y | t | unverschlüsselt ausgeliefert werden soll.        |
+| r- | 0-h | z | d |                                                  |
+| xr | s_e | 0 | o |                                                  |
+| -x | xam | 0 | c |                                                  |
+|    | ple |   | s |                                                  |
+|    | .de |   |   |                                                  |
++----+-----+---+---+--------------------------------------------------+
+| dr | x   | x | s | Ablage für Sub-Domain aus htdocs, wenn diese     |
+| wx | yz0 | y | u | unverschlüsselt ausgeliefert werden soll.        |
+| r- | 0-h | z | b |                                                  |
+| xr | s_e | 0 | s |                                                  |
+| -x | xam | 0 |   |                                                  |
+|    | ple |   |   |                                                  |
+|    | .de |   |   |                                                  |
++----+-----+---+---+--------------------------------------------------+
+| dr | x   | x | h | Ablage für die Daten einer Webseite, wenn diese  |
+| wx | yz0 | y | t | verschlüsselt ausgeliefert werden soll (siehe    |
+| r- | 0-h | z | d | auch                                             |
+| xr | s_e | 0 | o | `TLS</referenz/tls/index>`{.interpreted-text     |
+| -x | xam | 0 | c | role="doc"}).                                    |
+|    | ple |   | s |                                                  |
+|    | .de |   | - |                                                  |
+|    |     |   | s |                                                  |
+|    |     |   | s |                                                  |
+|    |     |   | l |                                                  |
++----+-----+---+---+--------------------------------------------------+
+| dr | x   | x | s | Ablage für Sub-Domain aus htdocs-ssl, wenn diese |
+| wx | yz0 | y | u | verschlüsselt ausgeliefert werden soll.          |
+| r- | 0-h | z | b |                                                  |
+| xr | s_e | 0 | s |                                                  |
+| -x | xam | 0 | - |                                                  |
+|    | ple |   | s |                                                  |
+|    | .de |   | s |                                                  |
+|    |     |   | l |                                                  |
++----+-----+---+---+--------------------------------------------------+
+| dr | x   | x | e | Ablage für domaineigene Konfigurationsdateien    |
+| wx | yz0 | y | t | (z.B. eigenes                                    |
+| r- | 0-h | z | c | `Zonef                                           |
+| xr | s_e | 0 |   | ile</referenz/zonefile/index>`{.interpreted-text |
+| -x | xam | 0 |   | role="doc"}).                                    |
+|    | ple |   |   |                                                  |
+|    | .de |   |   |                                                  |
++----+-----+---+---+--------------------------------------------------+
+| dr | x   | x | v | Ablage für Logfiles.                             |
+| wx | yz0 | y | a |                                                  |
+| r- | 0-h | z | r |                                                  |
+| xr | s_e | 0 |   |                                                  |
+| -x | xam | 0 |   |                                                  |
+|    | ple |   |   |                                                  |
+|    | .de |   |   |                                                  |
++----+-----+---+---+--------------------------------------------------+
+
+: Verzeichnisstruktur einer Domain
+
+```{=latex}
+\end{small}
+```
+Die Verzeichnisstruktur wird auch in
+`kap-einstieg-ordnerstruktur`{.interpreted-text role="numref"}
+beschrieben.
diff --git a/source/referenz/webpaket/verzeichnisebenen-email-nutzer.md b/source/referenz/webpaket/verzeichnisebenen-email-nutzer.md
new file mode 100644
index 0000000..1ac18e4
--- /dev/null
+++ b/source/referenz/webpaket/verzeichnisebenen-email-nutzer.md
@@ -0,0 +1,19 @@
+# Verzeichnisebene E-Mail-Nutzer
+
+Das Home-Verzeichnis eines
+`E-Mail-Benutzers<E-Mail-Benutzer>`{.interpreted-text role="role"}
+umfasst nur sein Postfach:
+
+::: tabularcolumns
+llllL
+:::
+
++--------------+-----------+------+-------+---------------------------+
+| Be           | Nutzer    | Gr   | O     | Erläuterung               |
+| rechtigungen |           | uppe | rdner |                           |
++==============+===========+======+=======+===========================+
+| dr           | > x       | > x  | Ma    | Mailordner des            |
+| wxr\-\-\-\-- | yz00-mail | yz00 | ildir | E-Mail-Nutzers.           |
++--------------+-----------+------+-------+---------------------------+
+
+: Verzeichnisstruktur eines E-Mail-Benutzers
diff --git a/source/referenz/webpaket/verzeichnisebenen-paket-admin.md b/source/referenz/webpaket/verzeichnisebenen-paket-admin.md
new file mode 100644
index 0000000..cb2b12b
--- /dev/null
+++ b/source/referenz/webpaket/verzeichnisebenen-paket-admin.md
@@ -0,0 +1,54 @@
+# Verzeichnisebene Paket-Admin
+
+Man kann sich als Paket-Admin in seinem Web-Paket per SSH folgendermaßen
+anmelden:
+
+``` console
+$ ssh xyz00@xyz00.hostsharing.net
+```
+
+Danach können die Verzeichnisse mit dem Befehl `ls`{.interpreted-text
+role="command"} angezeigt werden.
+
+``` console
+xyz00@h05:~$ ls -a
+```
+
+Das Home-Verzeichnis des `Paket-Admins<Paket-Admin>`{.interpreted-text
+role="role"} umfasst initial folgende Verzeichnisse:
+
+::: tabularcolumns
+llllL
+:::
+
++---------+----+----+-----+------------------------------------------+
+| Berecht | Nu | Gr | Ord | Erläuterung                              |
+| igungen | tz | up | ner |                                          |
+|         | er | pe |     |                                          |
++=========+====+====+=====+==========================================+
+| drwx\-  | x  | x  | .   | > Ablage komprimierter Backups der       |
+| \-\-\-- | yz | yz | bak | > Datenbanken und Cronjobs.              |
+|         | 00 | 00 |     |                                          |
++---------+----+----+-----+------------------------------------------+
+| dr-x    | h  | x  | d   | > Ablage der Paketdomain                 |
+| r-x\--T | tt | yz | oms | > xyz00.hostsharing.net.                 |
+|         | pd | 00 |     |                                          |
++---------+----+----+-----+------------------------------------------+
+| d       | x  | x  | etc | > Ablage für eigene                      |
+| rwx\-\- | yz | yz |     | > Konfigurationsdateien.                 |
+| \-\-\-- | 00 | 00 |     |                                          |
++---------+----+----+-----+------------------------------------------+
+| drw     | x  | x  | us  | > Ablage der angelegten Nutzer           |
+| xr-xr-x | yz | yz | ers |                                          |
+|         | 00 | 00 |     |                                          |
++---------+----+----+-----+------------------------------------------+
+| drwxr   | x  | x  | var | > Ablage von Logfiles (z.B. Web-Logs,    |
+| -x\-\-- | yz | yz |     | > Traffic-Logs)                          |
+|         | 00 | 00 |     |                                          |
++---------+----+----+-----+------------------------------------------+
+| d       | x  | x  | M   | > Mailordner des                         |
+| rwx\-\- | yz | yz | ail | > `Paket-Admin`{.interpreted-text        |
+| \-\-\-- | 00 | 00 | dir | > role="role"}.                          |
++---------+----+----+-----+------------------------------------------+
+
+: Verzeichnisstruktur des Paket-Admins
diff --git a/source/referenz/zonefile/eigenes-zonefile-deaktivieren.md b/source/referenz/zonefile/eigenes-zonefile-deaktivieren.md
new file mode 100644
index 0000000..3e2e00d
--- /dev/null
+++ b/source/referenz/zonefile/eigenes-zonefile-deaktivieren.md
@@ -0,0 +1,5 @@
+# Eigenes Zonefile deaktivieren
+
+Im Verzeichnis `~/doms/example.com/etc/` das vorhandene Zonefile
+(pri.example.com) leeren (0 Bytes). Das leere Zonefile wird durch einen
+Robot gelöscht und es gilt das Standardzonefile.
diff --git a/source/referenz/zonefile/eigenes-zonefile.md b/source/referenz/zonefile/eigenes-zonefile.md
new file mode 100644
index 0000000..9e7a3e8
--- /dev/null
+++ b/source/referenz/zonefile/eigenes-zonefile.md
@@ -0,0 +1,29 @@
+# Eigenes Zonefile
+
+Es kann für jede aufgeschaltete
+`Domain<../domain/index>`{.interpreted-text role="doc"} jeweils ein
+eigenes Zonefiles angelegt werden. In der Regel ist dies nur bei
+folgenden Anforderungen notwendig:
+
+-   Webseiten zu einer Domain oder Sub-Domain bei einem anderen Hoster
+    oder auf einem eigenen Server anbieten
+-   Dienste (z.B. E-Mail) bei einem anderen Anbieter betreiben
+
+In eigenen Zonefiles sollten Platzhalter verwendet werden. Diese
+Platzhalter ermöglichen das Ändern der DNS-Konfiguration seitens
+Hostsharing, ohne dass der Domain-Admin sein Zonefile anpassen muss. Das
+Zonefile für die Domain `example.com` wird als im Verzeichnis
+`~/doms/example.com/etc/` als Datei `pri.example.com` abgelegt und
+einige Minuten nach dem Speichern automatisch aktiv.
+
+> ::: warning
+> ::: title
+> Warning
+> :::
+>
+> Das unsachgemäße Erstellen oder Fehler im eigenen Zonefile können zur
+> Nichterreichbarkeit der Domain und zum Verlust von E-Mails führen!
+> :::
+
+Im Wiki der Mitglieder finden sich [Beispiele für eigene
+Zonefiles](https://wiki.hostsharing.net/index.php?title=Simple_Zonefile_Howto).
diff --git a/source/referenz/zonefile/expandiertes-standard-zonefile.md b/source/referenz/zonefile/expandiertes-standard-zonefile.md
new file mode 100644
index 0000000..61c0dd4
--- /dev/null
+++ b/source/referenz/zonefile/expandiertes-standard-zonefile.md
@@ -0,0 +1,36 @@
+# Das expandierte Standardzonefile
+
+:
+
+    $TTL 6H
+    example.com. IN SOA h00.hostsharing.net. hostmaster.hostsharing.net. (
+            1303649373      ; serial secs since Jan 1 1970  
+            6H              ; refresh (>=10000)
+            1H              ; retry (>=1800)
+            1W              ; expire
+            1H              ; minimum
+            )
+
+    example.com.    IN      NS      dns1.hostsharing.net.
+    example.com.    IN      NS      dns2.hostsharing.net.
+    example.com.    IN      NS      dns3.hostsharing.net.
+    example.com.    IN      MX      30 mailin1.hostsharing.net.
+    example.com.    IN      MX      30 mailin2.hostsharing.net.
+    example.com.    IN      MX      30 mailin3.hostsharing.net.
+    example.com.    IN      A       83.223.95.160
+    example.com.    IN      AAAA    2a01:37:1000::53df:5bfc:0
+    _imap._tcp.example.com.              IN      SRV     1 0 143 xyz00.hostsharing.net.
+    _imaps._tcp.example.com.             IN      SRV     2 0 993 xyz00.hostsharing.net.
+    _pop3._tcp.example.com.              IN      SRV     3 0 110 xyz00.hostsharing.net.
+    _pop3s._tcp.example.com.             IN      SRV     4 0 995 xyz00.hostsharing.net.
+    _submission._tcp.example.com.        IN      SRV     0 0 587 xyz00.hostsharing.net.
+    _autodiscover._tcp.example.com.      IN      SRV     0 0 443 example.com.
+    autodiscover.example.com.            IN      A       0.0.0.0
+    autodiscover.example.com.            IN      AAAA    ::
+    example.com.    IN      TXT     "v=spf1 include:spf.hostsharing.net ?all"
+    *.example.com.  IN      MX      30 mailin1.hostsharing.net.
+    *.example.com.  IN      MX      30 mailin2.hostsharing.net.
+    *.example.com.  IN      MX      30 mailin3.hostsharing.net.
+    *.example.com.  IN      A       83.223.95.160
+    *.example.com.  IN      AAAA    2a01:37:1000::53df:5bfc:0
+    *.example.com.  IN      TXT     "v=spf1 include:spf.hostsharing.net ?all"
diff --git a/source/referenz/zonefile/expansion-platzhalter.md b/source/referenz/zonefile/expansion-platzhalter.md
new file mode 100644
index 0000000..891ceeb
--- /dev/null
+++ b/source/referenz/zonefile/expansion-platzhalter.md
@@ -0,0 +1,88 @@
+# Expansion der Platzhalter
+
+Der Platzhalter für das Gesamtzonefile {DEFAULT_ZONFILE} wird in drei
+Schritten folgendermaßen expandiert. Zunächst werden die komplexen
+Platzhalter ersetzt. :
+
+    {DOM_HOSTNAME}. IN SOA {SOA_HOSTNAME}. {SOA_EMAIL}. (
+            {SIO}           ; serial secs since Jan 1 1970
+            {REFRESH}       ; refresh (>=10000)
+            {RETRY}     ; retry (>=1800)
+            {EXPIRE}    ; expire
+        {MINIMUM}   ; minimum
+        )
+    {DOM_HOSTNAME}.     IN  NS  {DNS1_HOSTNAME}.
+    {DOM_HOSTNAME}.     IN  NS  {DNS2_HOSTNAME}.
+    {DOM_HOSTNAME}.     IN  NS  {DNS3_HOSTNAME}.
+
+    {DOM_HOSTNAME}.     IN  MX  30 {MX1_HOSTNAME}.
+    {DOM_HOSTNAME}.     IN  MX  30 {MX2_HOSTNAME}.
+    {DOM_HOSTNAME}.     IN  MX  30 {MX3_HOSTNAME}.
+
+    {DOM_HOSTNAME}.     IN  A   {DOM_IP4NUMBER}
+    {DOM_HOSTNAME}.     IN  AAAA    {DOM_IP6NUMBER}
+
+    _imap._tcp.{DOM_HOSTNAME}.          IN  SRV 1 0 143 {PAC_HOSTNAME}.
+    _imaps._tcp.{DOM_HOSTNAME}.         IN  SRV 2 0 993 {PAC_HOSTNAME}.
+    _pop3._tcp.{DOM_HOSTNAME}.          IN  SRV 3 0 110 {PAC_HOSTNAME}.
+    _pop3s._tcp.{DOM_HOSTNAME}.         IN  SRV 4 0 995 {PAC_HOSTNAME}.
+    _submission._tcp.{DOM_HOSTNAME}.    IN  SRV 0 0 587 {PAC_HOSTNAME}.
+
+    _autodiscover._tcp.{DOM_HOSTNAME}.  IN  SRV 0 0 443 {DOM_HOSTNAME}.
+    autodiscover.{DOM_HOSTNAME}.        IN  A   0.0.0.0
+    autodiscover.{DOM_HOSTNAME}.        IN  AAAA    ::
+
+    {DOM_HOSTNAME}.     IN  TXT "v=spf1 include:spf.hostsharing.net ?all"
+
+    *.{DOM_HOSTNAME}.   IN  MX  30 {MX1_HOSTNAME}.
+    *.{DOM_HOSTNAME}.   IN  MX  30 {MX2_HOSTNAME}.
+    *.{DOM_HOSTNAME}.   IN  MX  30 {MX3_HOSTNAME}.
+
+    *.{DOM_HOSTNAME}.   IN  A   {DOM_IP4NUMBER}
+    *.{DOM_HOSTNAME}.   IN  AAAA    {DOM_IP6NUMBER}
+
+    *.{DOM_HOSTNAME}.   IN  TXT "v=spf1 include:spf.hostsharing.net ?all"
+
+Anschließend werden die atomaren Platzhalter ersetzt. :
+
+    $TTL 6H
+
+    <FQDN>. IN SOA <HIVE>.hostsharing.net. hostmaster.hostsharing.net. (
+            <SEKUNDEN>  ; serial secs since Jan 1 1970
+            6H      ; refresh (>=10000)
+            1H      ; retry (>=1800)
+            1W      ; expire
+            1H      ; minimum
+            )
+
+    <FQDN>.     IN  NS  dns1.hostsharing.net.
+    <FQDN>.     IN  NS  dns2.hostsharing.net.
+    <FQDN>.     IN  NS  dns3.hostsharing.net.
+
+    <FQDN>.     IN  MX  30 mail1.hostsharing.net.
+    <FQDN>.     IN  MX  30 mail2.hostsharing.net.
+    <FQDN>.     IN  MX  30 mail3.hostsharing.net.
+
+    _imap._tcp.<FQDN>.          IN  SRV 1 0 143 <PAC>.hostsharing.net.
+    _imaps._tcp.<FQDN>.         IN  SRV 2 0 993 <PAC>.hostsharing.net.
+    _pop3._tcp.<FQDN>.          IN  SRV 3 0 110 <PAC>.hostsharing.net.
+    _pop3s._tcp.<FQDN>.         IN  SRV 4 0 995 <PAC>.hostsharing.net.
+    _submission._tcp.<FQDN>.    IN  SRV 0 0 587 <PAC>.hostsharing.net.
+
+    _autodiscover._tcp.<FQDN>.  IN  SRV 0 0 443 <FQDN>.
+    autodiscover.<FQDN>.        IN  A   0.0.0.0
+    autodiscover.<FQDN>.        IN  AAAA    \:\:
+
+    <FQDN>.     IN  A   <IPv4>
+    <FQDN>.     IN  AAAA    <IPv6>
+
+    <FQDN>.     IN  TXT "v=spf1 include:spf.hostsharing.net ?all"
+
+    *.<FQDN>.   IN  MX  30 mail1.hostsharing.net.
+    *.<FQDN>.   IN  MX  30 mail2.hostsharing.net.
+    *.<FQDN>.   IN  MX  30 mail3.hostsharing.net.
+
+    *.<FQDN>.   IN  A   <IPv4>
+    *.<FQDN>.   IN  AAAA    <IPv6>
+
+    *.<FQDN>.   IN  TXT "v=spf1 include:spf.hostsharing.net ?all"
diff --git a/source/referenz/zonefile/index.md b/source/referenz/zonefile/index.md
new file mode 100644
index 0000000..5e12017
--- /dev/null
+++ b/source/referenz/zonefile/index.md
@@ -0,0 +1,20 @@
+# Zonefile {#kap-ref-zonefile}
+
+Das Zonefile enthält die Konfiguration des Domain Name Service (DNS)
+einer Domain. Im Zonefile wird hinterlegt, welche Hostnamen innerhalb
+einer Domain existieren, auf welche IP-Adressen diese zeigen und welches
+Mailsystem für eine Domain zuständig ist. Das Standardzonefile ist für
+jede Domain unter `/etc/bind/pri.example.com` zu finden.
+
+Es ist möglich, ein
+`eigenes Zonefile<eigenes-zonefile>`{.interpreted-text role="doc"} für
+eine Domain einzusetzen. Dabei können und sollen Platzhalter verwendet
+werden, die es ermöglichen, einen jeweils spezifischen Teil eines
+Zonefile zu ändern.
+
+Inhalt:
+
+::: {.toctree maxdepth="1"}
+expandiertes-standard-zonefile platzhalter expansion-platzhalter
+eigenes-zonefile kontrolle-aenderungen eigenes-zonefile-deaktivieren
+:::
diff --git a/source/referenz/zonefile/kontrolle-aenderungen.md b/source/referenz/zonefile/kontrolle-aenderungen.md
new file mode 100644
index 0000000..e864323
--- /dev/null
+++ b/source/referenz/zonefile/kontrolle-aenderungen.md
@@ -0,0 +1,34 @@
+# Kontrolle der Änderungen
+
+Durchgeführte Änderungen am Zonefile können mit Hilfe der Logdatei
+named.log überprüft werden:
+
+``` console
+$ tail -f /var/log/named/named.log 
+$ tail -f /var/log/named/named.log | grep example.com
+```
+
+Nach einer erfolgreichen Übertragung der DNS Zone zu den drei
+DNS-Servern finden sich in der Log-Datei etwa die folgenden sechs
+Zeilen:
+
+``` console
+18-Dec-2019 12:06:27.997 info: client 83.223.95.201#53191 (example.com): transfer of 'example.com/IN': AXFR-style IXFR started (serial 1576667187)
+18-Dec-2019 12:06:27.998 info: client 83.223.95.201#53191 (example.com): transfer of 'example.com/IN': AXFR-style IXFR ended
+18-Dec-2019 12:06:28.517 info: client 83.223.78.230#37959 (example.com): transfer of 'example.com/IN': AXFR-style IXFR started (serial 1576667187)
+18-Dec-2019 12:06:28.517 info: client 83.223.78.230#37959 (example.com): transfer of 'example.com/IN': AXFR-style IXFR ended
+18-Dec-2019 12:06:28.568 info: client 176.9.242.51#40371 (example.com): transfer of 'example.com/IN': AXFR-style IXFR started (serial 1576667187)
+18-Dec-2019 12:06:28.569 info: client 176.9.242.51#40371 (example.com): transfer of 'example.com/IN': AXFR-style IXFR ended
+```
+
+Zur Überprüfung von Änderungen am Zonefile kann zusätzlich die
+Seriennummer in den DNS-Servern mit der aktuellen Seriennummer im
+Zonefile verglichen werden:
+
+``` console
+$ dig -t SOA @dns1.hostsharing.net example.com 
+$ cat /etc/bind/pri.example.com
+```
+
+Es findet sich jeweils die Seriennummer (im obigen Log-Auszug die
+\'1576667187\') im SOA Record.
diff --git a/source/referenz/zonefile/platzhalter.md b/source/referenz/zonefile/platzhalter.md
new file mode 100644
index 0000000..4351ce4
--- /dev/null
+++ b/source/referenz/zonefile/platzhalter.md
@@ -0,0 +1,90 @@
+# Platzhalter {#kap-ref-zonefile-platzhalter}
+
+    Platzhalter             expandiert zu
+
+    {DEFAULT_ZONEFILE}      {HEADER}
+                            {SOA_RR}
+                            {NS_RR}
+                            {MX_RR} 
+                            {A_RR}
+                            {AAAA_RR}
+                            {MAILSERVICES_RR}
+                            {AUTODISCOVER_RR}
+                            {SPF_RR}
+                            {DKIM_RR}
+                            {WILDCARD_MX_RR}
+                            {WILDCARD_A_RR}
+                            {WILDCARD_AAAA_RR}
+                            {WILDCARD_SPF_RR}
+
+    {HEADER}                $TTL {TTL}
+
+    {SOA_RR}                {DOM_HOSTNAME}. IN SOA {SOA_HOSTNAME}. {SOA_EMAIL}. (
+                                    {SIO}       ; serial secs since Jan 1 1970
+                                    {REFRESH}   ; refresh (>=10000)
+                                    {RETRY}     ; retry (>=1800)
+                                    {EXPIRE}    ; expire
+                                    {MINIMUM}   ; minimum
+                            )   
+
+    {NS_RR}                 {DOM_HOSTNAME}.     IN  NS  {DNS1_HOSTNAME}.
+                            {DOM_HOSTNAME}.     IN  NS  {DNS2_HOSTNAME}.
+                            {DOM_HOSTNAME}.     IN  NS  {DNS3_HOSTNAME}.
+
+    {MX_RR}                 {DOM_HOSTNAME}.     IN  MX  30 {MX1_HOSTNAME}.
+                            {DOM_HOSTNAME}.     IN  MX  30 {MX2_HOSTNAME}.
+                            {DOM_HOSTNAME}.     IN  MX  30 {MX3_HOSTNAME}.
+
+    {A_RR}                  {DOM_HOSTNAME}.     IN  A   {DOM_IP4NUMBER}
+
+    {AAAA_RR}               {DOM_HOSTNAME}.     IN  AAAA    {DOM_IP6NUMBER}
+
+
+    {MAILSERVICES_RR}       _imap._tcp.{DOM_HOSTNAME}.              IN      SRV     1 0 143 {PAC_HOSTNAME}.
+                            _imaps._tcp.{DOM_HOSTNAME}.             IN      SRV     2 0 993 {PAC_HOSTNAME}.
+                            _pop3._tcp.{DOM_HOSTNAME}.              IN      SRV     3 0 110 {PAC_HOSTNAME}.
+                            _pop3s._tcp.{DOM_HOSTNAME}.             IN      SRV     4 0 995 {PAC_HOSTNAME}.
+                            _submission._tcp.{DOM_HOSTNAME}.        IN      SRV     0 0 587 {PAC_HOSTNAME}.
+
+    {AUTODISCOVER_RR}       _autodiscover._tcp.{DOM_HOSTNAME}.      IN      SRV     0 0 443 {DOM_HOSTNAME}.
+                            autodiscover.{DOM_HOSTNAME}.            IN      A       0.0.0.0
+                            autodiscover.{DOM_HOSTNAME}.            IN      AAAA    ::
+
+    {SPF_RR}                {DOM_HOSTNAME}.     IN      TXT  "v=spf1 include:spf.hostsharing.net -all"
+
+    {WILDCARD_MX_RR}        *.{DOM_HOSTNAME}.   IN  MX  30 {MX1_HOSTNAME}.
+                            *.{DOM_HOSTNAME}.   IN  MX  30 {MX2_HOSTNAME}.
+                            *.{DOM_HOSTNAME}.   IN  MX  30 {MX3_HOSTNAME}.
+
+    {WILDCARD_A_RR}         *.{DOM_HOSTNAME}.   IN  A   {DOM_IP4NUMBER}
+
+    {WILDCARD_AAAA_RR}      *.{DOM_HOSTNAME}.   IN  AAAA    {DOM_IP6NUMBER}
+
+    {WILDCARD_SPF_RR}       *.{DOM_HOSTNAME}.   IN      TXT  "v=spf1 include:spf.hostsharing.net ?all"
+
+    {DKIM_RR}               default._domainkey  IN      TXT  "v=DKIM1; h=sha256; k=rsa; s=email; p=MIIB..."
+
+    {TTL}                   6H
+    {SOA_HOSTNAME}          <HIVE>.hostsharing.net
+    {SOA_EMAIL}             hostmaster.hostsharing.net
+    {SIO}                   <SEKUNDEN>
+    {REFRESH}               6H
+    {RETRY}                 1H
+    {EXPIRE}                1W
+    {MINIMUM}               1H
+
+Folgende Werte werden von Hostsharing verwaltet:
+
+`<SEKUNDEN>` für die Anzahl der Sekunden, welche seit dem 01.01.1970
+vergangen sind
+
+`<FQDN>` für den vollständigen, qualifizierten Domainnamen der Domain,
+z.B. `example.com`
+
+`<IPv4>` für die der Domain zugewiesene IPv4-Adresse
+
+`<IPv6>` für die der Domain zugewiesene IPv6-Adresse
+
+`<HIVE>` für den Server, auf dem die Domain gehostet ist, z.B. `h20`
+
+`<PAC>` für das Paket, dem die Domain zugeordnet ist, z.B. `xyz00`

--
Gitblit v1.9.3