<!DOCTYPE html>
|
<html lang="de"><head>
|
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
|
<meta name="description" content="<p>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.</p>">
|
<meta name="DC.description" content="<p>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.</p>">
|
<meta name="DC.title" content="Managed Operations Platform">
|
<meta name="author" content="">
|
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
|
<meta name="twitter:card" content="summary_large_image">
|
<meta name="twitter:image" content="https://www.hostsharing.net/images/hostsharing-logo.jpg">
|
|
<meta name="twitter:title" content="Managed Operations Platform">
|
<meta name="twitter:description" content="<p>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.</p>">
|
<meta property="og:title" content="Managed Operations Platform">
|
<meta property="og:description" content="<p>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.</p>">
|
<meta property="og:type" content="article">
|
<meta property="og:url" content="">
|
<meta property="og:image" content="https://www.hostsharing.net/images/hostsharing-logo.jpg">
|
<meta itemprop="name" content="Managed Operations Platform">
|
<meta itemprop="description" content="<p>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.</p>">
|
<meta itemprop="image" content="https://www.hostsharing.net/images/hostsharing-logo.jpg">
|
<meta itemprop="image" content="https://www.hostsharing.net/images/hostsharing-logo.jpg">
|
<meta itemprop="keywords" content="">
|
<title>Managed Operations Platform</title>
|
<link rel="icon" href="https://www.hostsharing.net/hs-theme/hostsharing/img/favicon.ico">
|
<link rel="shortcut icon" href="https://www.hostsharing.net/hs-theme/hostsharing/img/favicon.ico">
|
<link rel="stylesheet" href="https://www.hostsharing.net/hs-theme/optimized/optimized.min.css">
|
<link href="https://www.hostsharing.net/optimized/optimized.min.css" rel="stylesheet">
|
</head>
|
<body class="documentation">
|
<nav class="navbar navbar-expand-xl navbar-light fixed-top">
|
<div class="container">
|
<a class="navbar-brand" href="https://www.hostsharing.net/"><img src="https://www.hostsharing.net/hs-theme/hostsharing/img/logo.svg" alt="Hostsharing eG – Genossenschaftliches Webhosting"></a>
|
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Navigation umschalten">
|
<span class="navbar-toggler-icon"></span>
|
</button>
|
<div class="collapse navbar-collapse" id="navbarSupportedContent">
|
<ul class="navbar-nav ml-auto">
|
<li class="nav-item dropdown">
|
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown-ccc" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Cooperative Community Cloud</a>
|
<div class="dropdown-menu" aria-labelledby="navbarDropdown-ccc">
|
<a class="dropdown-item" href="https://www.hostsharing.net/ziele/">Ziele</a>
|
<a class="dropdown-item" href="https://www.hostsharing.net/vorteile/">Vorteile</a>
|
<a class="dropdown-item" href="https://www.hostsharing.net/features/">Plattform</a>
|
<a class="dropdown-item" href="https://www.hostsharing.net/hosting/">Lösungen</a>
|
<div class="dropdown-divider"></div>
|
<a class="dropdown-item" href="https://www.hostsharing.net/genossenschaft">Genossenschaft</a>
|
<a class="dropdown-item" href="https://www.hostsharing.net/referenzen">Mitglieder</a>
|
<a class="dropdown-item" href="https://www.hostsharing.net/team">Team</a>
|
<div class="dropdown-divider"></div>
|
<a class="dropdown-item" href="https://www.hostsharing.net/genossenschaft/mitgliedschaft">Mitglied werden</a>
|
</div>
|
</li>
|
<li class="nav-item dropdown">
|
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown-hosting" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Hosting</a>
|
<div class="dropdown-menu" aria-labelledby="navbarDropdown-hosting">
|
<a class="dropdown-item" href="https://www.hostsharing.net/angebote/">Übersicht</a>
|
<div class="dropdown-divider"></div>
|
<a class="dropdown-item" href="https://www.hostsharing.net/angebote/managed-webspace">Managed Webspace</a>
|
<a class="dropdown-item" href="https://www.hostsharing.net/angebote/managed-server/">Managed Server</a>
|
<a class="dropdown-item" href="https://www.hostsharing.net/angebote/cloud-server/">Cloud Server</a>
|
<div class="dropdown-divider"></div>
|
<a class="dropdown-item" href="https://www.hostsharing.net/angebote/domains">Domains</a>
|
</div>
|
</li>
|
<li class="nav-item dropdown">
|
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown-service" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Service</a>
|
<div class="dropdown-menu" aria-labelledby="navbarDropdown-service">
|
<a class="dropdown-item" href="https://www.hostsharing.net/service/">Übersicht</a>
|
<div class="dropdown-divider"></div>
|
<a class="dropdown-item" href="https://www.hostsharing.net/service/sla-service-level-agreements/">Service Level Agreements</a>
|
<a class="dropdown-item" href="https://www.hostsharing.net/service/webmaster-as-a-service/">Webmaster as a Service</a>
|
<a class="dropdown-item" href="https://www.hostsharing.net/service/webmaster-on-demand/">Webmaster on Demand</a>
|
<div class="dropdown-divider"></div>
|
<a class="dropdown-item" href="https://www.hostsharing.net/service/installationsservice/">Installationsservice</a>
|
<a class="dropdown-item" href="https://www.hostsharing.net/service/umzugsservice/">Umzugsservice</a>
|
</div>
|
</li>
|
<li class="nav-item dropdown">
|
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown-bbb" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">BigBlueButton</a>
|
<div class="dropdown-menu" aria-labelledby="navbarDropdown-bbb">
|
<a class="dropdown-item" href="https://www.hostsharing.net/bigbluebutton/">Übersicht</a>
|
<div class="dropdown-divider"></div>
|
<a class="dropdown-item" href="https://www.hostsharing.net/bigbluebutton/bbb-meeting/">BBB Meeting</a>
|
<a class="dropdown-item" href="https://www.hostsharing.net/bigbluebutton/bbb-conference/">BBB Conference</a>
|
<a class="dropdown-item" href="https://www.hostsharing.net/bigbluebutton/bbb-server/">BBB Server</a>
|
</div>
|
</li>
|
<li class="nav-item dropdown">
|
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown-aktuell" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">News</a>
|
<div class="dropdown-menu" aria-labelledby="navbarDropdown-aktuell">
|
<a class="dropdown-item" href="https://www.hostsharing.net/blog/">Blog</a>
|
<a class="dropdown-item" href="https://www.hostsharing.net/termine/">Termine</a>
|
<div class="dropdown-divider"></div>
|
<a class="dropdown-item" href="https://www.hostsharing.net/newsletter/">Newsletter</a>
|
</div>
|
</li>
|
<li class="nav-item dropdown">
|
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown-kontakt" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Kontakt</a>
|
<div class="dropdown-menu" aria-labelledby="navbarDropdown-kontakt">
|
<a class="dropdown-item" href="https://www.hostsharing.net/webform/contact">Kontakt</a>
|
<div class="dropdown-divider"></div>
|
<a class="dropdown-item" href="https://www.hostsharing.net/datenschutz-webangebot/">Datenschutz Web-Angebot</a>
|
<a class="dropdown-item" href="https://www.hostsharing.net/datenschutz-social-media/">Datenschutz Social Media</a>
|
<div class="dropdown-divider"></div>
|
<a class="dropdown-item" href="https://www.hostsharing.net/impressum/">Impressum</a>
|
</div>
|
</li>
|
<li class="nav-item">
|
<a class="nav-link" href="https://www.hostsharing.net/intern/"><i class="fas fa-portrait fa-lg" aria-label="Login zum Mitgliederbereich"></i></a>
|
</li>
|
</ul>
|
<form method="get" action="https://search.hostsharing.net/search" role="search" class="form-inline">
|
<div class="input-group ml-2">
|
<input name="q" class="form-control" type="search" placeholder="Suchen…" aria-label="Suchen">
|
<div class="input-group-append">
|
<button type="submit" class="btn btn-secondary">
|
<i class="fa fa-search" aria-label="Suchen"></i>
|
</button>
|
</div>
|
</div>
|
</form>
|
</div>
|
</div>
|
</nav>
|
<main class="container">
|
<div class="row mb-4">
|
<div class="col-12 mt-5 mb-4">
|
<h1 class="display-4 text-primary">Managed Operations Platform</h1>
|
<h2 class="display-6 text-secondary">Handbuch für Anwender</h2>
|
<p class="lead mt-4 mb-1"><p>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.</p> Unser 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.</p>
|
</div>
|
</div>
|
|
<div class="row">
|
<div class="col-lg-8 order-lg-1">
|
<aside class="jumbotron shadow-sm">
|
<div class="container">
|
<div class="row">
|
<div class="col-4">
|
<a href="">
|
<img
|
class="img-fluid"
|
src=""
|
alt=""
|
title=""
|
</a>
|
</div>
|
<div class="col-sm-6 col-8 align-self-end">
|
<a
|
class="btn btn-lg btn-success"
|
href="benutzerhandbuch.pdf"
|
<i class="fas fa-angle-right" aria-hidden="true">PDF herunterladen</i
|
></a>
|
</div>
|
</div>
|
</div>
|
</aside>
|
<div class="content clearfix">
|
|
<section id="kap-einfuehrung" class="level1">
|
<h1>Einleitung</h1>
|
<div class="intro">
|
<p>Hostsharing betreibt seine Cooperative Community Cloud auf Basis
|
einer hochverfügbaren und redundant ausgelegten Cloud Infrastructure.
|
Auf dieser Infrastruktur baut die <a
|
href="https://www.hostsharing.net/features/">Managed Operations
|
Platform</a> auf, die den Betrieb von Webanwendungen durch zahlreiche
|
Features unterstützt. Das Handbuch erklärt die Nutzung dieser
|
Features.</p>
|
</div>
|
<figure>
|
<img src="images/ccc.svg" style="width:100.0%"
|
alt="Schematische Darstellung der Architektur und Leistungen" />
|
<figcaption aria-hidden="true">Schematische Darstellung der
|
Architektur und Leistungen</figcaption>
|
</figure>
|
<p>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 Videokonferenzdienste ergänzt und durch passende Beratungs- und
|
Unterstützungsleistungen abgerundet.</p>
|
<section id="web-pakete" class="level2">
|
<h2>Web-Pakete</h2>
|
<p>Die Mitglieder nutzen die Managed Operations Platform in Form von
|
Web-Paketen.</p>
|
<p>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.</p>
|
<p>Ein Web-Paket ermöglicht die Nutzung von:</p>
|
<ul>
|
<li>Web-Anwendungen</li>
|
<li>Daemons</li>
|
<li>E-Mail-Infrastruktur</li>
|
<li>Domains und Subdomains</li>
|
<li>TLS-Verschlüsselung</li>
|
<li>Datenbanken</li>
|
<li>verschiedenen Programmiersprachen</li>
|
</ul>
|
<p>Web-Pakete eignen sich zum Betrieb eines oder mehrerer
|
Internetangebote. Jedes Mitglied kann beliebig viele Web-Pakete
|
bestellen und verwalten.</p>
|
<p>Ein Web-Paket kann einzeln als <a
|
href="https://www.hostsharing.net/angebote/managed-webspace/">Managed
|
Webspace</a> gebucht werden. Auf einem <a
|
href="https://www.hostsharing.net/angebote/managed-server/">Managed
|
Server</a> können ein oder mehrere Web-Pakete betrieben werden.</p>
|
</section>
|
<section id="managed-webspace" class="level2">
|
<h2>Managed Webspace</h2>
|
<p><img src="images/icons/icon-managedwebspace.svg"
|
style="width:30.0%" /></p>
|
<p>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.</p>
|
<p>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.</p>
|
</section>
|
<section id="managed-server" class="level2">
|
<h2>Managed Server</h2>
|
<figure>
|
<img src="images/icons/icon-managedserver.svg" style="width:30.0%"
|
alt="image" />
|
<figcaption aria-hidden="true">image</figcaption>
|
</figure>
|
<p>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.</p>
|
<p>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.</p>
|
<p>Mehrere Mitglieder können sich einen Managed Server teilen. Ein
|
Reselling an Endkunden ist möglich.</p>
|
</section>
|
<section id="best-practice" class="level2">
|
<h2>Best Practice</h2>
|
<p>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.</p>
|
<section id="pro-anwendung-ein-benutzer" class="level3">
|
<h3>Pro Anwendung ein Benutzer</h3>
|
<p>Wenn auf einem Linux-Betriebssystem zwei Anwendungen (A und B)
|
unter verschiedenen Benutzern (<code>xyz00-a</code> und
|
<code>xyz00-b</code>) laufen, sind sie in gewisser Hinsicht
|
gegeneinander abgeschottet. Wenn es einem Angreifer gelingt, durch
|
eine Sicherheitslücke in Anwendung A die Benutzerrechte von
|
<code>xyz00-a</code> zu erlangen, kann er mit diesen Rechten im
|
Heimverzeichnis von <code>xyz00-a</code> jeden beliebigen Schaden
|
anrichten. Im Heimverzeichnis von <code>xyz00-b</code> besitzt er
|
jedoch keine Lese- und Schreibrechte, sodass er dort auch keine
|
Schäden verursachen kann.</p>
|
<p>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 <code
|
class="interpreted-text" role="numref">kap-benutzerrollen</code>
|
ausführlich erklärt.</p>
|
</section>
|
</section>
|
<section id="weitere-informationsquellen" class="level2">
|
<h2>Weitere Informationsquellen</h2>
|
<p>Wenn Ihnen dieses Handbuch nicht weiterhilft, können Sie die
|
folgenden Informationsquellen nutzen.</p>
|
<dl>
|
<dt>Das Hostsharing Wiki</dt>
|
<dd>
|
<p>Das <a
|
href="https://wiki.hostsharing.net/index.php?title=Hauptseite">Hostsharing
|
Wiki</a> wird von den Mitgliedern der Hostsharing eG gepflegt. Es
|
enthält vor allem <a
|
href="https://wiki.hostsharing.net/index.php?title=Kategorie:Installationsanleitungen">Installationsanleitungen</a>
|
für die diversen Webanwendungen, die unsere Mitglieder auf der Managed
|
Operations Platform betreiben.</p>
|
</dd>
|
<dt>Die Support-Mailingliste</dt>
|
<dd>
|
<p>Die Mitglieder der Hostsharing eG helfen sich gegenseitig auf der
|
<a
|
href="https://lists.hostsharing.net/mailman/listinfo/support">Support-Mailingliste</a>.
|
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.</p>
|
</dd>
|
<dt>Der Hostsharing-Service</dt>
|
<dd>
|
<p>Falls Sie ein besonderes Problem mit Ihrem Web-Paket haben, können
|
Sie per E-Mail den <a
|
href="service@hostsharing.net">Hostsharing-Service</a> direkt fragen.
|
In dringenden Fällen können Sie den Service auch telefonisch unter der
|
Nummer +49 40 2093313-11 erreichen.</p>
|
</dd>
|
</dl>
|
</section>
|
</section>
|
<section id="kap-hsadmin-einstieg" class="level1">
|
<h1>Einführung in HSAdmin</h1>
|
<p>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 <code>HSAdmin</code>.
|
Freunde der Konsole können alle Schritte mit der CLI-Variante
|
<code>hsscript</code> erledigen.</p>
|
<section id="rundgang-durch-hsadmin" class="level2">
|
<h2>Rundgang durch HSAdmin</h2>
|
<video
|
width="786"
|
height="590" controls
|
<source src="https://media.hostsharing.net/Erster-Rundgang-HSAdmin.webm" type="video/webm">
|
<source src="https://media.hostsharing.net/Erster-Rundgang-HSAdmin.mp4" type="video/webm">
|
>
|
Ihr Browser unterstützt keine Videos.
|
</video>
|
</section>
|
<section id="kap-erstes-einloggen" class="level2">
|
<h2>Erstes Einloggen und Änderung des Passworts</h2>
|
<p>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 <code class="interpreted-text" role="role">Paket-Admin</code>
|
zusenden. Sie erkennen dies daran, dass der Benutzername sich aus der
|
Mitgliederkennung und einer Zahl zusammensetzt. In unserem Beispiel
|
ist das <code>xyz00</code>.</p>
|
<div class="hint">
|
<p>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 im
|
Abschnitt <a href="#kap-benutzerrollen">Benutzerrollen</a>
|
beschrieben.</p>
|
</div>
|
<section id="änderung-des-passworts" class="level3">
|
<h3>Änderung des Passworts</h3>
|
<p>Zunächst sollten Sie das Passwort, das Sie vom Service erhalten
|
haben, ändern. Rufen Sie in Ihrem Browser <a
|
href="https://admin.hostsharing.net"
|
class="uri">https://admin.hostsharing.net</a> auf, um sich in
|
<code>HSAdmin</code> einzuloggen (siehe Abbildung <a
|
href="#fig-hsadmin-login-xyz00">Das Login-Fenster von
|
HSADmin</a>).</p>
|
<div id="fig-hsadmin-login-xyz00">
|
<figure>
|
<img src="images/hsadmin-login-xyz00.jpg" style="width:70.0%"
|
alt="Das Login-Fenster von HSAdmin" />
|
<figcaption aria-hidden="true">Das Login-Fenster von
|
HSAdmin</figcaption>
|
</figure>
|
</div>
|
<p>Loggen Sie sich mit den Zugangsdaten ein, die Sie vom Service
|
erhalten haben.</p>
|
<p>Nach dem Einloggen werden Sie zum Startbildschirm von HSAdmin
|
weitergeleitet (vgl. Abb. <a href="#fig-hsadmin-start-paketadmin">Der
|
Startbildschirm von HSAdmin nach dem Einloggen als Paket-Admin.</a>
|
dargestellten weitergeleitet.</p>
|
<div id="fig-hsadmin-start-paketadmin">
|
<figure>
|
<img src="images/hsadmin-start-paketadmin.jpg" style="width:100.0%"
|
alt="Der Startbildschirm von HSAdmin nach dem Einloggen als Paket-Admin." />
|
<figcaption aria-hidden="true">Der Startbildschirm von HSAdmin nach
|
dem Einloggen als Paket-Admin.</figcaption>
|
</figure>
|
</div>
|
<p>In HSAdmin gibt es zwei Bereiche zwischen denen Sie hin- und
|
hernavigieren können:</p>
|
<dl>
|
<dt>Web-Paket</dt>
|
<dd>
|
<p>Hinter diesem Menü finden Sie alle Ihre Web-Pakete. In unserem
|
Beispiel ist dies nur ein Web-Paket mit dem Namen <code>xyz00</code>.
|
In diesem Menü können Sie Benutzer, Domains, Datenbanken und
|
Datenbank-Benutzer anlegen sowie E-Mail-Aliase vergeben.</p>
|
</dd>
|
<dt>Domain</dt>
|
<dd>
|
<p>Unter diesem Menü verwalten Sie die E-Mail-Adressen in Ihren
|
Domains. Eventuell ist hier bereits eine Beispiel-Domain
|
eingerichtet.</p>
|
</dd>
|
</dl>
|
<p>Rechts oben sehen Sie einen Link mit der Bezeichnung
|
<code>xyz00</code>. Dies ist der Benutzername, mit dem Sie sich
|
eingeloggt haben. Nach einem Klick auf den Link öffnet sich das
|
Bearbeitungsmenü für den Benutzer (siehe Abb. <a
|
href="#fig-hsadmin-pa-bearbeiten">Dialog zum Ändern des
|
Passworts</a>).</p>
|
<div id="fig-hsadmin-pa-bearbeiten">
|
<figure>
|
<img src="images/hsadmin-pa-bearbeiten.jpg" style="width:100.0%"
|
alt="Dialog zum Ändern des Passworts" />
|
<figcaption aria-hidden="true">Dialog zum Ändern des
|
Passworts</figcaption>
|
</figure>
|
</div>
|
<p>Geben Sie ein neues Passwort ein und bestätigen Sie die Änderung
|
mit einem Klick auf OK.</p>
|
<video
|
width="786"
|
height="590"
|
controls
|
<source src="https://media.hostsharing.net/Passwort-des-Paketbenutzers-aendern.webm" type="video/webm">
|
<source src="https://media.hostsharing.net/Passwort-des-Paketbenutzers-aendern.mp4" type="video/mp4">
|
>
|
</video>
|
</section>
|
<section id="kap-einloggen-mitglied" class="level3">
|
<h3>Einloggen mit dem Mitglieds-Account</h3>
|
<p>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. Ä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.</p>
|
<div id="fig-hsadmin-mitglied-webpaket-benutzer">
|
<figure>
|
<img src="images/hsadmin-mitglied-start.jpg" style="width:100.0%"
|
alt="Der Begrüßungsbildschirm von HSAdmin, wenn Sie als Mitglied eingeloggt sind." />
|
<figcaption aria-hidden="true">Der Begrüßungsbildschirm von HSAdmin,
|
wenn Sie als Mitglied eingeloggt sind.</figcaption>
|
</figure>
|
</div>
|
<p>Wenn Sie als Mitglied eingeloggt sind, ist das linke
|
Navigationsmenü um einen Eintrag erweitert:</p>
|
<dl>
|
<dt>Kunde/Mitglied</dt>
|
<dd>
|
<p>In diesem Menü finden Sie Ihre Mitgliedsdaten. Sie können hier zum
|
Beispiel Ihre Anschrift oder Kontoverbindung ändern.</p>
|
</dd>
|
</dl>
|
<p>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ü
|
<code>Benutzer/Postfach</code>. Wählen Sie dort den Paket-Admin
|
<code>xyz00</code> aus.</p>
|
<div id="fig-hsadmin-mitglied-webpaket-benutzer-auswaehlen">
|
<figure>
|
<img src="images/hsadmin-mitglied-webpaket-benutzer-auswaehlen.jpg"
|
style="width:100.0%"
|
alt="Der ausgewählte Paket-Admin ist farbig hinterlegt." />
|
<figcaption aria-hidden="true">Der ausgewählte Paket-Admin ist farbig
|
hinterlegt.</figcaption>
|
</figure>
|
</div>
|
<p>Klicken Sie in der Symbolleiste auf das Bearbeitungssymbol. Es
|
öffnet sich ein Menü, in dem Sie ein neues Passwort eingeben
|
können.</p>
|
<div id="fig-hsadmin-mitglied-webpaket-benutzer-passwort-aendern">
|
<figure>
|
<img
|
src="images/hsadmin-mitglied-webpaket-benutzer-passwort-aendern.jpg"
|
style="width:100.0%"
|
alt="Das Menü zur Bearbeitung eines Benutzers." />
|
<figcaption aria-hidden="true">Das Menü zur Bearbeitung eines
|
Benutzers.</figcaption>
|
</figure>
|
</div>
|
<p>Bestätigung mit dem <code>OK</code>-Button.</p>
|
</section>
|
</section>
|
<section id="domain-benutzer-anlegen" class="level2">
|
<h2>Domain-Benutzer anlegen</h2>
|
<p>Bevor wir eine Domain aufschalten, müssen wir einen Benutzer mit
|
der Rolle <code>Domain-Admin</code> anlegen. Rufen Sie dazu das
|
Webfrontend von HSAdmin über den Link <a
|
href="https://admin.hostsharing.net"
|
class="uri">https://admin.hostsharing.net</a> auf und loggen Sie sich
|
mit der Benutzerkennung des <code>Paket-Admin</code> ein. In unserem
|
Beispiel ist das <code>xyz00</code>.</p>
|
<p>Gehen Sie in den Bereich <code>Web-Paket</code> und dort in das
|
Menü <code>Benutzer/Postfach</code>. Klicken Sie nun auf das
|
Plus-Symbol <code>Neuen Eintrag anlegen</code>. Es öffnet sich das
|
Menü zum Anlegen eines neuen Benutzers (siehe Abbildung <a
|
href="#fig-domain-admin-anlegen">Das Menü zum Anlegen eines neuen
|
Benutzers</a>).</p>
|
<figure>
|
<img src="images/hsadmin-da-anlegen-1.jpg" style="width:100.0%"
|
alt="Das Menü zum Anlegen eines neuen Benutzers." />
|
<figcaption aria-hidden="true">Das Menü zum Anlegen eines neuen
|
Benutzers.</figcaption>
|
</figure>
|
<p>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. <code>xyz00</code>) 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 <code>xyz00-domain</code> nennen.
|
Wenn der Benutzer mehrere Domains verwalten soll, kann sein Name zur
|
verständlichen Kennzeichung <code>xyz00-doms</code> 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 <code>xyz00-hs_example.de</code>. Wir
|
empfehlen aus Sicherheitsgründen für jede Domain einen eigenen
|
Domain-Admin anzulegen. Im Abschnitt <a
|
href="#kap-hsscript-skript">HSADmin über Skripte steuern</a> erfahren
|
Sie, wie Sie mit Hilfe eines Skripts die Anlage neuer Domains und
|
neuer Domain-Admins vereinfachen können.</p>
|
<div class="admonition">
|
<p>Beachten Sie die Namenskonvention</p>
|
<p>Alle Benutzernamen beginnen mit dem Kürzel für das Paket, in
|
unserem Beispiel <code>xyz00</code>. Ergänzungen können mit einem
|
Bindestrich abgetrennt werden wie zum Beispiel in dem Benutzernamen
|
für den Domain-Admin <code>xyz00-doms</code>. 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:
|
<code>xyz00-example_de</code>, <code>xyz00-example.de</code> oder
|
<code>xyz00-hs_example.de</code>.</p>
|
</div>
|
<p>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 im Abschnitt <a
|
href="#kap-benutzerrollen">Benutzerrollen</a>.</p>
|
<p>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 <code>/doms</code>. 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.</p>
|
<p>In Abb. <a href="#fig-domain-admin-ausgefuellt">Das ausgefüllte
|
Formular zur Anlage eines Benutzers.</a> sehen Sie ein Beispiel mit
|
dem Benutzernamen <code>xyz00-doms</code>.</p>
|
<figure>
|
<img src="images/hsadmin-da-anlegen-2.jpg" style="width:100.0%"
|
alt="Das ausgefüllte Formular zur Anlage eines Benutzers." />
|
<figcaption aria-hidden="true">Das ausgefüllte Formular zur Anlage
|
eines Benutzers.</figcaption>
|
</figure>
|
<p>Bei der Anlage eines Benutzers müssen Sie folgendes
|
berücksichtigen:</p>
|
<dl>
|
<dt>Benutzer/Postfach</dt>
|
<dd>
|
<p>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.</p>
|
</dd>
|
<dt>Passwort</dt>
|
<dd>
|
<p>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.</p>
|
</dd>
|
<dt>Kurzbeschreibung</dt>
|
<dd>
|
<p>In der Kurzbeschreibung können Sie Informationen vermerken, die
|
Ihnen helfen, den Benutzer zuzuordnen.</p>
|
</dd>
|
<dt>Shell-/Kommando-Interpreter</dt>
|
<dd>
|
<p>Domain-Admins benötigen eine Shell. Wählen Sie deshalb zum Beispiel
|
<code>/bin/bash</code> aus.</p>
|
</dd>
|
<dt>Quota (Soft-Limit)</dt>
|
<dd>
|
<p>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 im Abschnitt <a
|
href="#kap-quota">Speicherbelegung</a>. Wenn Sie nichts eintragen,
|
wird kein gesondertes Quota für den Benutzer gesetzt. Lassen Sie die
|
beiden Felder im Zweifelsfall leer.</p>
|
</dd>
|
<dt>Quota (Hard-Limit)</dt>
|
<dd>
|
<p>Das Hard-Limit des Quota.</p>
|
</dd>
|
</dl>
|
<p>Bestätigen Sie die Anlage mit <code>OK</code>.</p>
|
<p>Nach der Anlage erscheint der neue Benutzer in der Liste des Menüs
|
<code>Benutzer/Postfach</code>.</p>
|
<div id="fig-domain-admin-angelegt">
|
<figure>
|
<img src="images/hsadmin-da-anlegen-3.jpg" style="width:100.0%"
|
alt="Der neue Domain-Admin ist angelegt." />
|
<figcaption aria-hidden="true">Der neue Domain-Admin ist
|
angelegt.</figcaption>
|
</figure>
|
</div>
|
<div class="admonition">
|
<p>Best Practice</p>
|
<p>Legen Sie für jede Domain einen gesonderten Domain-Admin an. Nutzen
|
Sie dabei zum Beispiel das Namensschema
|
<code>xyz00-hs_example.de</code>.</p>
|
</div>
|
</section>
|
<section id="domain-anlegen-und-bestellen" class="level2">
|
<h2>Domain anlegen und bestellen</h2>
|
<p>Eine Domain wird in zwei Schritten angelegt:</p>
|
<ol type="1">
|
<li>Die Domain im Web-Paket aufschalten</li>
|
<li>Die Domain im Domainbestellsystem bestellen</li>
|
</ol>
|
<p>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.</p>
|
<section id="kap-hsadmin-domain-anlegen" class="level3">
|
<h3>Domain in HSAdmin anlegen</h3>
|
<p>Melden Sie sich in HSAdmin als Paket-Admin (im Beispiel:
|
<code>xyz00</code>) an. Wechseln Sie in den Bereich
|
<code>Web-Paket</code>, wählen Sie Ihr Web-Paket aus und öffnen Sie
|
das Menü <code>Domain</code>. Die Liste (siehe Abb. <a
|
href="#fig-hsadmin-domain-anlegen-0">Das leere Menü mit den
|
Domains</a> ist leer, da noch keine Domain angelegt wurde.</p>
|
<div id="fig-hsadmin-domain-anlegen-0">
|
<figure>
|
<img src="images/hsadmin-domain-anlegen-0.jpg" style="width:100.0%"
|
alt="Das leere Menü mit den Domains." />
|
<figcaption aria-hidden="true">Das leere Menü mit den
|
Domains.</figcaption>
|
</figure>
|
</div>
|
<p>Klicken Sie auf das Plus-Symbol <code>Neuen Eintrag anlegen</code>.
|
Es öffnet sich das Menü zum Aufschalten einer Domain (siehe Abb. <a
|
href="#%60fig-hsadmin-domain-anlegen-1">Das Menü zur Aufschaltung
|
einer Domain</a>).</p>
|
<div id="fig-hsadmin-domain-anlegen-1">
|
<figure>
|
<img src="images/hsadmin-domain-anlegen-1.jpg" style="width:100.0%"
|
alt="Das Menü zur Aufschaltung einer Domain bei Hostsharing." />
|
<figcaption aria-hidden="true">Das Menü zur Aufschaltung einer Domain
|
bei Hostsharing.</figcaption>
|
</figure>
|
</div>
|
<p>Tragen Sie hier den Namen der Domain ein, die Sie anlegen wollen
|
und wählen Sie den Domain-Admin aus, in dessen Benutzerverzeichnis die
|
Verzeichnisse der Domain angelegt werden sollen.</p>
|
<div class="attention">
|
<p>In diesem Menü ist der Benutzer, mit dem Sie sich eingeloggt haben,
|
vorausgewählt. Wenn dies der Paket-Admin (z.B. <code>xyz00</code>)
|
ist, wählen Sie den gewünschten Domain-Admin aus.</p>
|
</div>
|
<p>Bestätigen Sie die Eingaben mit <code>OK</code>.</p>
|
<p>Damit ist die Domain in dem Web-Paket <code>xyz00</code> technisch
|
angelegt. Sie erscheint in der Liste im Menü <code>Domain</code>
|
(siehe Abb. <a href="#fig-hsadmin-domain-anlegen-2">Die neu angelegte
|
Domain erscheint in der Liste</a>).</p>
|
<div id="fig-hsadmin-domain-anlegen-2">
|
<figure>
|
<img src="images/hsadmin-domain-anlegen-2.jpg" style="width:100.0%"
|
alt="Die neu angelegte Domain erscheint in der Liste." />
|
<figcaption aria-hidden="true">Die neu angelegte Domain erscheint in
|
der Liste.</figcaption>
|
</figure>
|
</div>
|
<p>Wenn Sie die Domain auswählen und das Editier-Symbol
|
<code>Ausgewählten Eintrag bearbeiten</code> anklicken, können Sie die
|
eben erstellte Domain bearbeiten (siehe Abb. <a
|
href="#fig-hsadmin-domain-bearbeiten">Das Bearbeitungsmenü einer
|
Domain</a>).</p>
|
<div id="fig-hsadmin-domain-bearbeiten">
|
<figure>
|
<img src="images/hsadmin-domain-bearbeiten.jpg" style="width:100.0%"
|
alt="Das Bearbeitungsmenü einer Domain." />
|
<figcaption aria-hidden="true">Das Bearbeitungsmenü einer
|
Domain.</figcaption>
|
</figure>
|
</div>
|
<p>Das Menü zeigt den Domainnamen, den Domain-Admin, das
|
Erstellungsdatum, die Domain-Optionen (siehe Abschnitt <a
|
href="#kap-domain-optionen">Domain-Optionen</a> und die gültigen
|
Subdomains (siehe Abschnitt <a
|
href="#kap-ref-subdomains">Subdomains</a>. Ändern Sie hier zunächst
|
nichts.</p>
|
<p>Wenn Sie im Feld <code>gültige Subdomains</code> ein <code>*</code>
|
als Wildcard eintragen, können Sie sehr einfach leichtgewichtige
|
Subdomains erzeugen. Was innerhalb von HSAdmin als leichtgewichtige
|
Subdomain bezeichnet wird, erfahren Sie im Abschnitt <a
|
href="#kap-ref-subdomains">Subdomains</a>.</p>
|
<video
|
width="786"
|
height="590"
|
controls
|
<source src="https://media.hostsharing.net/Domain-einrichten.webm" type="video/webm">
|
<source src="https://media.hostsharing.net/Domain-einrichten.mp4" type="video/mp4">
|
>
|
</video>
|
</section>
|
<section id="domain-im-domainbestellsystem-bestellen" class="level3">
|
<h3>Domain im Domainbestellsystem bestellen</h3>
|
<p>Anschließend kann die Domain hs-example.de unter dem Link <a
|
href="https://www.domain-bestellsystem.de"
|
class="uri">https://www.domain-bestellsystem.de</a> bestellt werden.
|
Die Login-Daten dafür wurden Ihnen auf einem separatem Weg
|
mitgeteilt.</p>
|
</section>
|
<section id="domain-löschen" class="level3">
|
<h3>Domain löschen</h3>
|
<p>Beim Löschen einer Domain gehen Sie am besten folgendermaßen
|
vor.</p>
|
<ol type="1">
|
<li>Die Domain im Domainbestellsystem löschen</li>
|
<li>Die Domain in HSAdmin löschen</li>
|
</ol>
|
<p>Es ist die umgekehrte Reihenfolge wie bei der Bestellung einer
|
Domain.</p>
|
<p>Wenn Sie eine Domain an einen anderen Domainverwalter übertragen
|
wollen, müssen Sie die Domain im Domainbestellsystem <em>in den
|
Transfer geben</em>. Löschen Sie die Domain in HSAdmin erst, wenn die
|
Löschung der Domain erfolgt ist beziehungsweise wenn die Domain
|
transferiert und bei einem anderen Hoster aufgeschaltet wurde.</p>
|
</section>
|
</section>
|
<section id="webspace-einrichten" class="level2">
|
<h2>Webspace einrichten</h2>
|
<p>Ihre Webanwendungen – im einfachsten Fall statische HTML-Seiten –
|
richten Sie in dem Heimverzeichnis des jeweiligen Domain-Admin
|
ein.</p>
|
<p>Loggen Sie sich dazu mit Hilfe von <code>ssh</code> ein:</p>
|
<pre class="console"><code>$ ssh xyz00-doms@xyz00.hostsharing.net</code></pre>
|
<p>Sie erreichen alle Benutzerverzeichnisse über die Adresse des
|
jeweiligen Pakets. In unserem Beispiel ist das
|
<code>xyz00.hostsharing.net</code>. Nach dem Einloggen finden Sie die
|
im nächsten Abschnitt beschriebene Ordnerstruktur vor.</p>
|
<section id="kap-einstieg-ordnerstruktur" class="level3">
|
<h3>Ordnerstruktur</h3>
|
<p>Die exemplarische Struktur des Home-Verzeichnisses eines
|
Domain-Admins sieht folgendermaßen aus:</p>
|
<pre><code>├── 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</code></pre>
|
<dl>
|
<dt><code>~/doms</code></dt>
|
<dd>
|
<p>Alle dem Domain-Admin zugewiesenen Domains liegen im Verzeichnis
|
<code>~/doms</code>.</p>
|
</dd>
|
<dt><code>~/doms/hs-example.de</code></dt>
|
<dd>
|
<p><code>hs-example.de</code> die Beispiel-Domain, für die die
|
Verzeichnisse von HSAdmin automatisch angelegt wurden.</p>
|
</dd>
|
<dt><code>~/doms/hs-example.de/app</code></dt>
|
<dd>
|
<p>Dieses Verzeichnis ist als <code>PassengerAppRoot</code> des
|
Apache-Webserver-Moduls <a
|
href="https://www.phusionpassenger.com/">Phusion Passenger</a>
|
konfiguriert.</p>
|
</dd>
|
<dt><code>~/doms/hs-example.de/app-ssl</code></dt>
|
<dd>
|
<p>Auch dieses Verzeichnis ist als <code>PassengerAppRoot</code> des
|
Apache-Webserver-Moduls konfiguriert. Es wird für https-Zugriffe
|
genutzt.</p>
|
</dd>
|
<dt><code>~/doms/hs-example.de/cgi</code></dt>
|
<dd>
|
<p>Dies ist das Basisverzeichnis für CGI-Skripte. Ein Alias bildet
|
HTTP-Requests auf <code>http://hs-example.de/cgi-bin/</code> auf
|
dieses Verzeichnisses ab.</p>
|
</dd>
|
<dt><code>~/doms/hs-example.de/cgi-ssl</code></dt>
|
<dd>
|
<p>Analog zu <code>~/doms/hs-example.de/cgi</code> ist dies das
|
Basisverzeichnis für CGI-Skripte beim Zugriff via https.</p>
|
</dd>
|
<dt><code>~/doms/hs-example.de/etc</code></dt>
|
<dd>
|
<p>Dieses Verzeichnis enthält ggf. das Zonefile, mit dem sich der
|
Nameserver <a href="http://de.wikipedia.org/wiki/BIND">BIND</a>
|
konfigurieren lässt</p>
|
</dd>
|
<dt><code>~/doms/hs-example.de/etc/pri.hs-example.de</code></dt>
|
<dd>
|
<p>Mit dieser Datei können Sie eine Zonendatei für Ihre Domain selbst
|
verwalten. Damit können zum Beispiel einzelne Subdomains auf andere
|
Server umgeleitet oder eigene Mailserver angesprochen werden.</p>
|
</dd>
|
<dt><code>~/doms/hs-example.de/fastcgi</code></dt>
|
<dd>
|
<p>Dies ist das Basisverzeichnis für FastCGI-Skripte. Ein Alias bildet
|
HTTP-Requests auf <code>http://hs-example.de/fastcgi-bin/</code> auf
|
dieses Verzeichnis ab.</p>
|
</dd>
|
<dt><code>~/doms/hs-example.de/fastcgi-ssl</code></dt>
|
<dd>
|
<p>Analog zu <code>~/doms/hs-example.de/fastcgi</code> ist dies das
|
Basisverzeichnis für FastCGI-Skripte bei https-Zugriffen. Ein Alias
|
bildet HTTP-Requests auf
|
<code>https://hs-example.de/fastcgi-bin/</code> auf dieses Verzeichnis
|
ab.</p>
|
</dd>
|
<dt><code>~/doms/hs-example.de/htdocs</code></dt>
|
<dd>
|
<p>Dieses Verzeichnis ist als <code>DocumentRoot</code> des Apache
|
Webserver konfiguriert. Es dient auch zur Aufnahme statischer Inhalte
|
im Zusammenhang mit der Nutzung von Phusion Passenger zur Auslieferung
|
der statischen Dateien.</p>
|
</dd>
|
<dt><code>~/doms/hs-example.de/htdocs/.htaccess</code></dt>
|
<dd>
|
<p>In der Standardkonfiguration enthält diese Datei die Weiterleitung
|
auf die <code>www</code>-Subdomain:</p>
|
<pre><code>Redirect permanent / http://www.hs-example.de/</code></pre>
|
<p>Die verwendeten Regeln werden auf <strong>alle</strong> Subdomains
|
von <code>hs-example.de</code> angewendet. In der
|
<code>.htaccess</code> können</p>
|
<ul>
|
<li>eigene Fehlerseiten definiert,</li>
|
<li>MIME-Typen zugewiesen,</li>
|
<li>Passwortschutz eingerichtet,</li>
|
<li>Weiterleitungen durchgeführt werden.</li>
|
</ul>
|
</dd>
|
<dt><code>~/doms/hs-example.de/htdocs-ssl</code></dt>
|
<dd>
|
<p>Analog zu <code>~/doms/hs-example.de/htdocs</code> ist dieses
|
Verzeichnis als <code>DocumentRoot</code> des Apache Webserver für
|
Zugriffe via https konfiguriert.</p>
|
</dd>
|
<dt><code>~/doms/hs-example.de/subs</code></dt>
|
<dd>
|
<p>Dieses Verzeichnis enthält alle Subdomains. Hier findet sich auch
|
die Subdomain <em>www.hs-example.de</em>.</p>
|
</dd>
|
<dt><code>~/doms/hs-example.de/subs/example</code></dt>
|
<dd>
|
<p>Dies ist ein Beispiel für eine Subdomain, die Sie einfach selbst
|
anlegen können. Sie müssen hierzu nur im Verzeichnis <code>subs</code>
|
ein Verzeichnis mit dem Namen der gewünschten Subdomain anlegen und
|
anschließend die Dateien in das Verzeichnis übertragen.</p>
|
</dd>
|
<dt><code>~/doms/hs-example.de/subs/www</code></dt>
|
<dd>
|
<p>Dieses Verzeichnis wird automatisch angelegt und üblicherweise vom
|
Webserver angesprochen, wenn keine Subdomain explizit genannt wird.
|
Die Adresse <code>http://hs-example.de</code> verweist üblicherweise
|
auf <code>http://www.hs-example.de</code>.</p>
|
</dd>
|
<dt><code>~/doms/hs-example.de/subs-ssl</code></dt>
|
<dd>
|
<p>Analog zu <code>~/doms/hs-example.de/subs</code> enthält dieses
|
Verzeichnis alle Subdomains auf die via https zugegriffen wird.</p>
|
</dd>
|
<dt><code>~/doms/hs-example.de/var</code></dt>
|
<dd>
|
<p>In diesem Verzeichnis werden in der Nacht die Log-Dateien mit den
|
Zugriffen auf die Domain in gepackter Form bereitgestellt, wenn dies
|
in <code>/home/pacs/xyz00/etc/config.ini</code> entsprechend angegeben
|
ist.</p>
|
</dd>
|
</dl>
|
</section>
|
<section id="zugangsdaten-und-einstellungen" class="level3">
|
<h3>Zugangsdaten und Einstellungen</h3>
|
<!-- todo Das ist altbacken. Kommandozeile erklären -->
|
<p>Sie können Dateien mit einem FTP-Programm wie
|
<code>FileZilla</code>, <code>WinSCP</code> oder <code>scp</code> in
|
das Web-Paket kopieren. Sie benötigen dazu die gleichen Zugangsdaten
|
wie beim Einloggen via <code>ssh</code>.</p>
|
<dl>
|
<dt>Server:</dt>
|
<dd>
|
<p>xyz00.hostsharing.net</p>
|
</dd>
|
<dt>Benutzer:</dt>
|
<dd>
|
<p>xyz00-doms</p>
|
</dd>
|
<dt>Passwort:</dt>
|
<dd>
|
<p>PASSWORT</p>
|
</dd>
|
</dl>
|
<figure>
|
<img src="images/ftp-filezilla.jpg" style="width:70.0%"
|
alt="Eingabe der Zugangsdaten in Filezilla." />
|
<figcaption aria-hidden="true">Eingabe der Zugangsdaten in
|
Filezilla.</figcaption>
|
</figure>
|
<p>Wechseln Sie in den Ordner
|
<code>~/doms/hs-example.de/subs/www</code>, um zum Beispiel statische
|
Webseiten hochzuladen.</p>
|
<figure>
|
<img src="images/ftp-filezilla-www.jpg" style="width:70.0%"
|
alt="Wechsel in das Verzeichnis www." />
|
<figcaption aria-hidden="true">Wechsel in das Verzeichnis
|
<code>www</code>.</figcaption>
|
</figure>
|
<p>Auf der Kommandozeile geben Sie folgende Befehle ein:</p>
|
<pre class="console"><code>$ cd ~/website-dateien
|
$ scp -r . xyz00-doms@xyz00.hostsharing.net:/doms/hs-example.de/subs-ssl/www</code></pre>
|
<p>Die Dateien in dem lokalen Ordner <code>website-dateien</code>
|
werden dadurch rekursiv in das Verzeichnis
|
<code>~/doms/hs-example.de/subs-ssl/www</code> des Domain-Admin
|
kopiert.</p>
|
</section>
|
</section>
|
<section id="kap-ssh-key-hochladen" class="level2">
|
<h2>Hochladen des SSH-Keys</h2>
|
<p>Sie können sich ohne Eingabe eines Passworts als Domain-Admin
|
einloggen, wenn Sie Ihren öffentlichen SSH-Key in das
|
Benutzerverzeichnis des Domain-Admins hochladen.</p>
|
<p>Wenn Sie noch keinen SSH-Key haben, können Sie ihn unter Mac OS X
|
und Linux mit diesem Befehl in Ihrem Heimverzeichnis erzeugen:</p>
|
<pre class="console"><code>$ ssh-keygen -b 4096 </code></pre>
|
<p>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 <code>~/.ssh/id_rsa</code> und ihr
|
öffentlicher Schlüssel in der Datei <code>~/.ssh/id_rsa.pub</code>
|
gespeichert wurden.</p>
|
<p>Nach der Erzeugung des Schlüssels können Sie sich das neue
|
Verzeichnis anschauen.</p>
|
<pre class="console"><code>$ ls .ssh/
|
id_rsa id_rsa.pub </code></pre>
|
<p>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 <code>ssh-copy-id</code>:</p>
|
<pre class="console"><code>$ ssh-copy-id -i ~/.ssh/id_rsa.pub xyz00-doms@xyz00.hostsharing.net</code></pre>
|
<p>Um unter Windows einen SSH-Key zu erzeugen und hochzuladen, können
|
Sie das Programm <a href="https://www.putty.org/">PuTTY</a>
|
nutzen.</p>
|
</section>
|
<section id="e-mail-einrichten" class="level2">
|
<h2>E-Mail einrichten</h2>
|
<p>In diesem Kapitel werden zwei E-Mail-Adressen für eine neue Domain
|
angelegt:</p>
|
<ul>
|
<li>Die erste E-Mail-Adresse wird einem Postfach im Webpaket
|
zugeordnet</li>
|
<li>Die zweite E-Mail-Adresse wird einer externen E-Mail-Adresse
|
zugeordnet.</li>
|
</ul>
|
<section id="kap-postfach-anlegen" class="level3">
|
<h3>E-Mail-Adresse für Postfach im Webpaket</h3>
|
<p>Wir werden zunächst ein neues Postfach für Peter Mustermann anlegen
|
und dieses Postfach danach einer neu eingerichteten E-Mail-Adresse
|
zuordnen.</p>
|
<section id="neuen-e-mail-benutzer-anlegen" class="level4">
|
<h4>Neuen E-Mail-Benutzer anlegen</h4>
|
<p>Melden Sie sich als Paket-Admin (in unserem Beispiel
|
<code>xyz00</code>) bei HSAdmin an. Klicken Sie auf das Webpaket, in
|
dem Sie einen neuen E-Mail-Benutzer anlegen möchten, in unserem
|
Beispiel ist das <code>xyz00</code>, und gehen Sie dann in den Bereich
|
<code>Benutzer/Postfach</code>. Klicken Sie auf das Plussymbol für
|
<code>Neuen Eintrag anlegen</code>.</p>
|
<p>Tragen Sie anschließend die Zugangsdaten des neuen E-Mail-Benutzers
|
ein. In Abb. <a href="#fig-hsadmin-pa-postfach-anlegen">Die Angaben
|
für ein neues Postfach</a> lautet der Benutzernamen
|
<code>xyz00-mail_pm</code>.</p>
|
<div id="fig-hsadmin-pa-postfach-anlegen">
|
<figure>
|
<img src="images/hsadmin-pa-postfach-anlegen.jpg" style="width:100.0%"
|
alt="Die Angaben für ein neues Postfach." />
|
<figcaption aria-hidden="true">Die Angaben für ein neues
|
Postfach.</figcaption>
|
</figure>
|
</div>
|
<p>E-Mail-Benutzer bekommen keine Shell zugeordnet. Stattdessen wird
|
beim Einloggen das Programm <code>/usr/bin/passwd</code> gestartet.
|
Speichern Sie den neuen Eintrag mit <code>OK</code>. Das neue Konto
|
erscheint nun in der Liste der Benutzer.</p>
|
<div id="fig-hsadmin-pa-postfach-angelegt">
|
<figure>
|
<img src="images/hsadmin-pa-postfach-angelegt.jpg"
|
style="width:100.0%"
|
alt="Das Postfach für Peter Mustermann erscheint in der Liste." />
|
<figcaption aria-hidden="true">Das Postfach für Peter Mustermann
|
erscheint in der Liste.</figcaption>
|
</figure>
|
</div>
|
</section>
|
<section id="neues-postfach-einer-neuen-e-mail-adresse-zuordnen"
|
class="level4">
|
<h4>Neues Postfach einer neuen E-Mail-Adresse zuordnen</h4>
|
<p>Wir werden nun für Peter Mustermann eine neue E-Mail-Adresse
|
anlegen und das neue Postfach dieser Adresse zuordnen.</p>
|
<p>Melden Sie sich als Paket-Admin (in unserem Beispiel
|
<code>xyz00</code>) bei HSAdmin an. Gehen Sie nach dem Einloggen in
|
den Bereich <code>Domain</code>, in dem Ihre Domains aufgeführt
|
sind.</p>
|
<p>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 Abb. <a
|
href="#fig-hsadmin-pa-domain-info">Die Informationen zur
|
Domain</a>).</p>
|
<div id="fig-hsadmin-pa-domain-info">
|
<figure>
|
<img src="images/hsadmin-pa-domain-info.jpg" style="width:100.0%"
|
alt="Die Informationen zur Domain werden angezeigt" />
|
<figcaption aria-hidden="true">Die Informationen zur Domain werden
|
angezeigt</figcaption>
|
</figure>
|
</div>
|
<p>Klicken Sie auf das Menü <code>E-Mail-Adresse</code>, damit die
|
E-Mail-Adressen angezeigt werden, die bereits für die Domain
|
eingerichtet wurden (siehe Abb. <a
|
href="#fig-hsadmin-pa-domain-emails">Bereits angelegte
|
E-Mail-Adressen</a>).</p>
|
<div id="fig-hsadmin-pa-domain-emails">
|
<figure>
|
<img src="images/hsadmin-pa-domain-emails.jpg" style="width:100.0%"
|
alt="Die bereits angelegten E-Mail-Adressen." />
|
<figcaption aria-hidden="true">Die bereits angelegten
|
E-Mail-Adressen.</figcaption>
|
</figure>
|
</div>
|
<p>Drei E-Mail-Adressen werden automatisch angelegt, wenn Sie eine
|
Domain eingerichtet haben:</p>
|
<dl>
|
<dt>abuse</dt>
|
<dd>
|
<p>Das ist die Adresse, an die Meldungen bei missbräuchlicher
|
Verwendung der Domain versendet werden. Die vollständige Adresse
|
lautet in unserem Beispiel <a href="mailto:abuse@hs-example.de"
|
class="email">abuse@hs-example.de</a></p>
|
</dd>
|
<dt>postmaster</dt>
|
<dd>
|
<p>Das ist die Adresse derjenigen Person, die für die
|
E-Mail-Postfächer und das E-Mail-System der Domain verantwortlich
|
ist.</p>
|
</dd>
|
<dt>webmaster</dt>
|
<dd>
|
<p>Das ist die Adresse des Webmasters, der für die Webauftritte unter
|
der Domain technisch verantwortlich ist.</p>
|
</dd>
|
</dl>
|
<p>Alle E-Mails an diese Adressen werden in der Voreinstellung an das
|
Postfach des zuständigen Domain-Admin ausgeliefert.</p>
|
<p>Klicken Sie nun auf das <code>+</code>-Symbol, damit sich das Menü
|
zum Anlegen einer neuen E-Mail-Adresse öffnet.</p>
|
<div id="fig-hsadmin-email-postfach-anlegen">
|
<figure>
|
<img src="images/hsadmin-email-postfach-anlegen-1.jpg"
|
style="width:100.0%"
|
alt="Anlegen einer E-Mail-Adresse mit Postfach" />
|
<figcaption aria-hidden="true">Anlegen einer E-Mail-Adresse mit
|
Postfach</figcaption>
|
</figure>
|
</div>
|
<p>Die Felder im Einzelnen:</p>
|
<dl>
|
<dt>lokaler Teil</dt>
|
<dd>
|
<p>der Teil der E-Mail-Adresse vor dem @-Zeichen, in unserem Beispiel
|
<code>pm</code>.</p>
|
</dd>
|
<dt>Subdomain</dt>
|
<dd>
|
<p>bleibt hier leer, da eine E-Mail-Adresse für die Hauptdomain
|
angelegt wird.</p>
|
</dd>
|
<dt>Domain</dt>
|
<dd>
|
<p>Hier erscheint die Domain, für die die Adresse eingerichtet wird.
|
In unserem Fall: hs-example.de</p>
|
</dd>
|
<dt>Postfach/Weiterleitung</dt>
|
<dd>
|
<p>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 <code>xyz00-mail_pm</code></p>
|
</dd>
|
</dl>
|
<p>Bestätigen mit dem Button <code>OK</code>.</p>
|
<p>Die neue E-Mail-Adresse wird nun in der Liste aufgeführt.</p>
|
<div id="fig-hsadmin-email-postfach-angelegt">
|
<figure>
|
<img src="images/hsadmin-email-postfach-angelegt.jpg"
|
style="width:100.0%"
|
alt="Die neue E-Mail-Adresse ist angelegt und erscheint in der Liste" />
|
<figcaption aria-hidden="true">Die neue E-Mail-Adresse ist angelegt
|
und erscheint in der Liste</figcaption>
|
</figure>
|
</div>
|
<p>Peter Mustermann ist nun unter der Adresse
|
<code>pm@hs-example.de</code> erreichbar und kann die Mails mit seinem
|
neuen E-Mail-Konto abrufen.</p>
|
<p>In Abschnitt <a href="#kap-emails-lesen">E-Mails senden und
|
empfangen</a> wird beschrieben, wie Peter Mustermann seine Mails über
|
ein Webinterface oder mit Hilfe eines E-Mail-Programms lesen kann.</p>
|
<video
|
width="786"
|
height="590"
|
controls
|
<source src="https://media.hostsharing.net/E-Mail-Adresse-und-Postfach-einrichten.webm" type="video/webm">
|
<source src="https://media.hostsharing.net/E-Mail-Adresse-und-Postfach-einrichten.mp4" type="video/mp4">
|
>
|
</video>
|
</section>
|
</section>
|
<section id="e-mail-adresse-mit-weiterleitung-an-externe-mail-adresse"
|
class="level3">
|
<h3>E-Mail-Adresse mit Weiterleitung an externe Mail-Adresse</h3>
|
<p>Um eine weitere E-Mail-Adresse anzulegen die E-Mails an eine
|
<em>externe</em> E-Mail-Adresse leitet, wird in der Eingabemaske bei:
|
Postfach/Weiterleitung: <em>E-Mail-Adresse</em> ausgewählt und
|
dahinter dann die externe Mail-Adresse, hier <a
|
href="mailto:peter@mustermann.de"
|
class="email">peter@mustermann.de</a>, eingetragen.</p>
|
<div id="fig-hsadmin-email-weiterleitung-1">
|
<figure>
|
<img src="images/hsadmin-email-weiterleitung-anlegen.jpg"
|
style="width:100.0%"
|
alt="Eingehende E-Mails sollen an eine externe E-Mail-Adresse weitergeleitet werden." />
|
<figcaption aria-hidden="true">Eingehende E-Mails sollen an eine
|
externe E-Mail-Adresse weitergeleitet werden.</figcaption>
|
</figure>
|
</div>
|
<p>Liste der angelegten E-Mail-Adressen:</p>
|
<div id="fig-hsadmin-email-weiterleitung-2">
|
<figure>
|
<img src="images/hsadmin-email-weiterleitung-angelegt.jpg"
|
style="width:100.0%"
|
alt="Auch die zweite neue E-Mail-Adresse erscheint in der Liste" />
|
<figcaption aria-hidden="true">Auch die zweite neue E-Mail-Adresse
|
erscheint in der Liste</figcaption>
|
</figure>
|
</div>
|
<!--
|
MOS: Die erste E-Mail-Adresse <pm@hs-example.de> steht beim Screenshot
|
nicht mehr in der Liste (sondern <info@hs-example.de>)
|
-->
|
</section>
|
<section id="kap-email-alias" class="level3">
|
<h3>E-Mail-Alias einrichten</h3>
|
<p>Wenn Sie mehrere Domains mit jeweils einem Domain-Admin verwalten,
|
so landen E-Mails an die zwingend vorgegebenen Systemempfänger
|
<code>abuse@</code>, <code>postmaster@</code> und
|
<code>webmaster@</code> 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.</p>
|
<p>Rufen Sie dazu HSAdmin unter
|
<code>https://admin.hostsharing.net</code> auf und gehen Sie in den
|
Bereich <code>Web-Paket</code>. Wählen Sie das entsprechende Web-Paket
|
aus und öffnen Sie den Reiter <code>E-Mail-Alias</code> (siehe Abb. <a
|
href="#fig-hsadmin-email-alias-1">Der Reiter E-Mail-Alias in
|
HSAdmin</a>).</p>
|
<div id="fig-hsadmin-email-alias-1">
|
<figure>
|
<img src="images/hsadmin-email-alias-1.jpg" style="width:100.0%"
|
alt="Der Reiter E-Mail-Alias in HSAdmin" />
|
<figcaption aria-hidden="true">Der Reiter E-Mail-Alias in
|
HSAdmin</figcaption>
|
</figure>
|
</div>
|
<p>Klicken Sie auf das Pluszeichen, um ein neues E-Mail-Alias
|
hinzuzufügen. Es öffnet sich das in Abb. <a
|
href="#fig-hsadmin-email-alias-2">Das Formular zum Hinzufügen eines
|
neuen Alias</a> gezeigte Formular. Das Kürzel für das Web-Paket ist
|
bereits in das Formularfeld eingetragen.</p>
|
<div id="fig-hsadmin-email-alias-2">
|
<figure>
|
<img src="images/hsadmin-email-alias-2.jpg" style="width:100.0%"
|
alt="Das Formular zum Hinzufügen eines neuen Alias. Das Paketkürzel ist bereits eingetragen." />
|
<figcaption aria-hidden="true">Das Formular zum Hinzufügen eines neuen
|
Alias. Das Paketkürzel ist bereits eingetragen.</figcaption>
|
</figure>
|
</div>
|
<p>Sie können eine E-Mail-Adresse angeben (siehe Abb. <a
|
href="#fig-hsadmin-email-alias-3">Umleitung an eine
|
E-Mail-Adresse</a>).</p>
|
<div id="fig-hsadmin-email-alias-3">
|
<figure>
|
<img src="images/hsadmin-email-alias-3.jpg" style="width:100.0%"
|
alt="Umleitung an eine E-Mail-Adresse" />
|
<figcaption aria-hidden="true">Umleitung an eine
|
E-Mail-Adresse</figcaption>
|
</figure>
|
</div>
|
<p>Sie können aber auch das Postfach eines anderen Benutzers
|
eintragen; in Abb. <a href="#fig-hsadmin-email-alias-4">Umleitung an
|
ein Postfach</a> beispielsweise das Postfach des Paket-Admins. Das
|
Formularfeld bietet Ihnen alle verfügbaren Postfächer zur Auswahl
|
an.</p>
|
<div id="fig-hsadmin-email-alias-4">
|
<figure>
|
<img src="images/hsadmin-email-alias-4.jpg" style="width:100.0%"
|
alt="Umleitung an ein Postfach" />
|
<figcaption aria-hidden="true">Umleitung an ein Postfach</figcaption>
|
</figure>
|
</div>
|
<p>Und zu guter Letzt können Sie auch an ein anderes E-Mail-Alias
|
umleiten. Bestätigen Sie Ihre Eingabe mit <code>OK</code>. Das neue
|
Alias erscheint anschließend in der Liste (siehe Abb. <a
|
href="#fig-hsadmin-email-alias-5">Die Alias-Liste</a>).</p>
|
<div id="fig-hsadmin-email-alias-5">
|
<figure>
|
<img src="images/hsadmin-email-alias-5.jpg" style="width:100.0%"
|
alt="Die Alias-Liste" />
|
<figcaption aria-hidden="true">Die Alias-Liste</figcaption>
|
</figure>
|
</div>
|
<p>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.</p>
|
<div class="admonition">
|
<p>Nutzen Sie E-Mail-Aliases möglichst nicht, um E-Mails, die an eine
|
Funktionsadresse wie <code>sekretariat@</code> oder
|
<code>vertriebsteam@</code> 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 <code>xyz00-sek</code>) und im Heimverzeichnis des
|
Benutzers eine <code>.forward</code>-Datei pflegen, die die
|
E-Mail-Adresse aller Empfänger enthält.</p>
|
</div>
|
</section>
|
</section>
|
<section id="datenbank-einrichten" class="level2">
|
<h2>Datenbank einrichten</h2>
|
<p>Wenn Sie für eine Webanwendung eine MySQL- oder
|
PostgreSQL-Datenbank benötigen, können Sie die Datenbank und den
|
Datenbanknutzer in <code>HSAdmin</code> anlegen.</p>
|
<div class="hint">
|
<p>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.</p>
|
</div>
|
<p>Beim Anlegen einer Datenbank ist die Reihenfolge entscheidend:</p>
|
<ol type="1">
|
<li>Zunächst den Datenbanknutzer anlegen, den Verwalter der jeweiligen
|
Datenbank</li>
|
<li>die Datenbank anlegen.</li>
|
</ol>
|
<video
|
width="640"
|
height="480"
|
controls
|
<source src="https://media.hostsharing.net/Datenbank-anlegen.webm" type="video/webm">
|
<source src="https://media.hostsharing.net/Datenbank-anlegen.mp4" type="video/mp4">
|
>
|
</video>
|
<section id="datenbanknutzer-anlegen" class="level4">
|
<h4>Datenbanknutzer anlegen</h4>
|
<p>Melden Sie sich mit dem Paket-Admin (<code>xyz00</code>) bei
|
HSAdmin unter <a href="https://admin.hostsharing.net"
|
class="uri">https://admin.hostsharing.net</a> an und gehen Sie in den
|
Bereich <code>Web-Paket</code>.</p>
|
<p>Klicken Sie das Menü <code>MySQL-Benutzer</code> an. Es wird die
|
Liste der MySQL-Benutzer angezeigt (siehe Abb. <a
|
href="#fig-hsadmin-mysql-benutzer">Das Menü MySQL-Benutzer</a>). Es
|
ist leer.</p>
|
<div id="fig-hsadmin-mysql-benutzer">
|
<figure>
|
<img src="images/hsadmin-mysql-benutzer.jpg" style="width:100.0%"
|
alt="Das Menü MySQL-Benutzer mit der leeren Liste der Datenbanknutzer." />
|
<figcaption aria-hidden="true">Das Menü <code>MySQL-Benutzer</code>
|
mit der leeren Liste der Datenbanknutzer.</figcaption>
|
</figure>
|
</div>
|
<p>Klicken Sie auf das Plus-Icon <code>Neuen Eintrag anlegen</code>.
|
Es erscheint folgende Eingabemaske:</p>
|
<div id="fig-hsadmin-mysql-benutzer-anlegen">
|
<figure>
|
<img src="images/hsadmin-mysql-benutzer-anlegen.jpg"
|
style="width:100.0%"
|
alt="Das Menü zum Anlegen eines Datenbanknutzers." />
|
<figcaption aria-hidden="true">Das Menü zum Anlegen eines
|
Datenbanknutzers.</figcaption>
|
</figure>
|
</div>
|
<p>Die Felder werden wie folgt ausgefüllt:</p>
|
<dl>
|
<dt>MySQL-Benutzer:</dt>
|
<dd>
|
<p>xyz00_dbuser</p>
|
</dd>
|
<dt>Passwort:</dt>
|
<dd>
|
<p>****</p>
|
</dd>
|
</dl>
|
<p>Merken Sie sich den Benutzernamen und das Passwort, da Sie beides
|
bei der Konfiguration Ihrer Webanwendung benötigen.</p>
|
<p>Mit dem Button <code>OK</code> wird der Eintrag gespeichert.</p>
|
<p>Der neue Datenbanknutzer erscheint nun in der Liste des Menüs
|
<code>MySQL-Benutzer</code>.</p>
|
<div id="fig-hsadmin-mysql-benutzer-angelegt">
|
<figure>
|
<img src="images/hsadmin-mysql-benutzer-angelegt.jpg"
|
style="width:100.0%"
|
alt="Der neu angelegte Datenbanknutzer erscheint in der Liste." />
|
<figcaption aria-hidden="true">Der neu angelegte Datenbanknutzer
|
erscheint in der Liste.</figcaption>
|
</figure>
|
</div>
|
<div class="attention">
|
<p>Beachten Sie, dass der Name eines Datenbankbenutzers immer mit dem
|
Paketnamen (in unserem Beispiel <code>xyz00</code>) 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 <code>xyz00_wordpress</code> (15 Zeichen).</p>
|
</div>
|
</section>
|
<section id="datenbank-anlegen" class="level4">
|
<h4>Datenbank anlegen</h4>
|
<p>Nun können Sie die Datenbank für Ihre Webanwendung anlegen. Gehen
|
Sie in das Menü <code>MySQL-Datenbank</code>. Die Liste der
|
Datenbanken ist noch leer. Klicken Sie auf das Plus-Icon
|
<code>Neuen Eintrag anlegen</code>.</p>
|
<p>Es öffnet sich das Menü zum Anlegen einer Datenbank.</p>
|
<div id="fig-hsadmin-mysql-db-anlegen">
|
<figure>
|
<img src="images/hsadmin-mysql-db-anlegen.jpg" style="width:100.0%"
|
alt="Das Menü zum Anlegen einer Datenbank." />
|
<figcaption aria-hidden="true">Das Menü zum Anlegen einer
|
Datenbank.</figcaption>
|
</figure>
|
</div>
|
<p>Die Felder hier:</p>
|
<dl>
|
<dt>MySQL-Datenbank</dt>
|
<dd>
|
<p>xyz00_dbmysql</p>
|
</dd>
|
<dt>MySQL-Benutzer</dt>
|
<dd>
|
<p>xyz00_dbuser</p>
|
</dd>
|
<dt>Zeichenkodierung</dt>
|
<dd>
|
<p>UTF8</p>
|
</dd>
|
</dl>
|
<p>Mit dem Button <code>OK</code> wird der Eintrag gespeichert. Die
|
neue Datenbank erscheint in der Liste der Datenbanken.</p>
|
<div class="attention">
|
<p>Beachten Sie, dass der Name einer Datenbank immer mit dem
|
Paketnamen (in unserem Beispiel <code>xyz00</code>) 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
|
<code>xyz00_wpressdb</code> (14 Zeichen).</p>
|
</div>
|
<div id="fig-hsadmin-mysql-db-angelegt">
|
<figure>
|
<img src="images/hsadmin-mysql-db-angelegt.jpg" style="width:100.0%"
|
alt="Die neue Datenbank erscheint in der Liste." />
|
<figcaption aria-hidden="true">Die neue Datenbank erscheint in der
|
Liste.</figcaption>
|
</figure>
|
</div>
|
</section>
|
</section>
|
</section>
|
<section id="kap-emails-lesen" class="level1">
|
<h1>E-Mails senden und empfangen</h1>
|
<p>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.</p>
|
<p>Wir benutzen dabei die folgenden Zugangsdaten.</p>
|
<ul>
|
<li>E-Mail-Adresse: <a href="mailto:pm@hs-example.de"
|
class="email">pm@hs-example.de</a></li>
|
<li>Benutzername: xyz00-mail_pm</li>
|
<li>Passwort: ****</li>
|
<li>IMAP-Server: xyz00.hostsharing.net</li>
|
<li>SMTP-Server: xyz00.hostsharing.net</li>
|
</ul>
|
<dl>
|
<dt>E-Mail-Adresse:</dt>
|
<dd>
|
<p>Das Anlegen einer E-Mail-Adresse und die Zuweisung zu einem
|
Postfach wird im Abschnitt <a href="#kap-postfach-anlegen">Postfach
|
anlegen</a> beschrieben.</p>
|
</dd>
|
<dt>Benutzername:</dt>
|
<dd>
|
<p>Das Anlegen eines E-Mail-Benutzers wird ebenfalls im Abschnitt <a
|
href="#kap-postfach-anlegen">Postfach anlegen</a> erklärt.</p>
|
</dd>
|
<dt>Passwort:</dt>
|
<dd>
|
<p>Dies ist das Passwort, das dem E-Mail-Benutzer vergeben wird.</p>
|
</dd>
|
<dt>IMAP-Server:</dt>
|
<dd>
|
<p>Der Name des Mail-Eingangsservers ergibt sich aus dem Paketnamen.
|
Es handelt sich immer um eine Subdomain der Domain
|
<code>hostsharing.net</code>.</p>
|
</dd>
|
<dt>SMTP-Server:</dt>
|
<dd>
|
<p>Auch der Name des Ausgangsserver ergibt sich aus dem Paketnamen.
|
Die Adresse ist mit der Adresse des IMAP-Servers identisch.</p>
|
</dd>
|
</dl>
|
<section id="webmail-einrichten" class="level2">
|
<h2>Webmail einrichten</h2>
|
<p>Eine besonders bequeme Art, E-Mails zu lesen und zu schreiben, ist
|
das Webinterface von Hostsharing. Hostsharing setzt dafür das
|
Open-Source-Programm <a href="https://roundcube.net/">Roundcube
|
Webmail</a> ein. Sie benötigen zur Nutzung nur den Benutzernamen für
|
das Postfach und das entsprechende Passwort. Geben Sie im Webbrowser
|
die Adresse <a href="https://webmail.hostsharing.net"
|
class="uri">https://webmail.hostsharing.net</a> ein. Wie in <code
|
class="interpreted-text" role="numref">fig-webmail-login</code>
|
gezeigt werden Sie aufgefordert Ihren Benutzernamen und Ihr Passwort
|
einzugeben.</p>
|
<div id="fig-webmail-login">
|
<figure>
|
<img src="images/webmail-login.jpg" style="width:100.0%"
|
alt="Login des Webmail-Interface" />
|
<figcaption aria-hidden="true">Login des
|
Webmail-Interface</figcaption>
|
</figure>
|
</div>
|
<p>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
|
(<code>xyz00-mail_pm</code>) sowie das Postfach des E-Mail-Benutzers
|
(<code>xyz00-mail_pm@xyz00.hostsharing.net</code>). Beide Angaben
|
werden Sie normalerweise so nicht nutzen wollen.</p>
|
<div id="fig-webmail-individualisierung-1">
|
<figure>
|
<img src="images/webmail-individualisierung-1.jpg"
|
style="width:100.0%" alt="Individualisierung des Kontos" />
|
<figcaption aria-hidden="true">Individualisierung des
|
Kontos</figcaption>
|
</figure>
|
</div>
|
<p>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 der Abbildung <a
|
href="#fig-webmail-individualisierung-2">Individualisierung des
|
Kontos</a> gezeigt, der Name ›Peter Mustermann‹ und die E-Mailadresse
|
›pm@hs-example.de‹</p>
|
<div id="fig-webmail-individualisierung-2">
|
<figure>
|
<img src="images/webmail-individualisierung-2.jpg"
|
style="width:100.0%" alt="Individualisierung des Kontos" />
|
<figcaption aria-hidden="true">Individualisierung des
|
Kontos</figcaption>
|
</figure>
|
</div>
|
<p>Nach der Vervollständigung steht Ihnen die Weboberfläche von
|
Roundcube zur Verfügung.</p>
|
<div id="fig-webmail-oberflaeche">
|
<figure>
|
<img src="images/webmail-oberflaeche.jpg" style="width:100.0%"
|
alt="Die Benutzeroberfläche von Webmail." />
|
<figcaption aria-hidden="true">Die Benutzeroberfläche von
|
Webmail.</figcaption>
|
</figure>
|
</div>
|
<p>Hinweise zur Bedienung von Roundcube finden Sie im Hostsharing Wiki
|
auf der Seite: <a
|
href="https://wiki.hostsharing.net/index.php?title=Roundcube"
|
class="uri">https://wiki.hostsharing.net/index.php?title=Roundcube</a></p>
|
</section>
|
<section id="mail-client-einrichten" class="level2">
|
<h2>Mail-Client einrichten</h2>
|
<p>Hostsharing unterstützt die Auto-Konfiguration von E-Mail-Clients
|
durch die Protokolle <a
|
href="https://en.wikipedia.org/wiki/Autoconfig">Autoconfig</a> 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.</p>
|
<p>Falls dies nicht auf Anhieb funktioniert, finden Sie im Abschnitt
|
<a href="#">E-Mail Auto-Konfiguration</a>kap-ref-mailautoconfig)
|
mögliche Ursachen. Eventuell wurde die Domain nicht so konfiguriert,
|
dass sie die Funktion unterstützt.</p>
|
<p>Im Folgenden beschreiben wir, wie Sie in einem solchen Fall die
|
notwendigen Informationen mit der Hand eingeben können.</p>
|
<section id="e-mails-über-imap-abrufen" class="level3">
|
<h3>E-Mails über IMAP abrufen</h3>
|
<p>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.</p>
|
<p>Im Folgenden spielen wir das Anlegen eines neuen Kontos im Programm
|
Thunderbird durch:</p>
|
<p>Gehen Sie in das Menü
|
<code>Bearbeiten --> Konto-Einstellungen</code>, um zu den
|
Konto-Einstellungen zu gelangen. Anschließend klicken Sie auf das Menü
|
<code>Konto-Aktionen --> E-Mail-Konto hinzufügen...</code>, damit
|
sich der in Abbildung <a href="#fig-mail-client-1">Eingabe von
|
E-Mail-Adresse und Passwort</a> gezeigte Dialog zum Anlegen eines
|
neuen E-Mail-Kontos öffnet.</p>
|
<div id="fig-mail-client-1">
|
<figure>
|
<img src="images/mail-client-1.jpg" style="width:100.0%"
|
alt="Eingabe von E-Mail-Adresse und Passwort" />
|
<figcaption aria-hidden="true">Eingabe von E-Mail-Adresse und
|
Passwort</figcaption>
|
</figure>
|
</div>
|
<p>Geben Sie dort Ihren Namen, die E-Mail-Adresse und das Passwort des
|
E-Mail-Benutzers ein und klicken Sie auf <code>Weiter</code>.</p>
|
<div id="fig-mail-client-2">
|
<figure>
|
<img src="images/mail-client-2.jpg" style="width:100.0%"
|
alt="Die automatisch ermittelten Zugangsdaten" />
|
<figcaption aria-hidden="true">Die automatisch ermittelten
|
Zugangsdaten</figcaption>
|
</figure>
|
</div>
|
<p>Thunderbird und andere E-Mail-Clients schließen aus der
|
E-Mail-Adresse auf die Zugangsdaten. Die ermittelten bzw. geratenen
|
Zugangsdaten werden in Abbildung <a href="#fig-mail-client-2">Die
|
automatisch ermittelten Zugangsdaten</a> angezeigt. Die automatische
|
Konfiguration hat nur dann funktioniert, wenn als Posteingangs- und
|
Postausgangsserver eine Adresse in der Form
|
<code>xyz00.hostsharing.net</code> gefunden wurde. Wenn dies der Fall
|
ist, können Sie auf <code>Fertig</code> klicken. Wenn Thunderbird
|
einen anderen Servernamen, zum Beispiel wie in der Abbildung unter
|
Verwendung Ihrer Domain, angibt, müssen Sie die richtigen Daten
|
manuell eingeben.</p>
|
<p>Klicken Sie dazu auf <code>Manuell bearbeiten</code>, damit sich
|
das <a href="#fig-mail-client-3">Formular für die manuelle eingabe der
|
Zugangsdaten</a> öffnet.</p>
|
<div id="fig-mail-client-3">
|
<figure>
|
<img src="images/mail-client-3.jpg" style="width:100.0%"
|
alt="Das Formular für die manuelle Eingabe der Zugangsdaten" />
|
<figcaption aria-hidden="true">Das Formular für die manuelle Eingabe
|
der Zugangsdaten</figcaption>
|
</figure>
|
</div>
|
<p>Geben Sie in dieses Formular, wie in der Abbildung gezeigt, die
|
richtigen Zugangsdaten für den IMAP-Server, den SMTP-Server und den
|
Benutzernamen ein.</p>
|
<div id="fig-mail-client-4">
|
<figure>
|
<img src="images/mail-client-4.jpg" style="width:100.0%"
|
alt="Geben Sie den Benutzernamen des E-Mail-Kontos und den richtigen Server an." />
|
<figcaption aria-hidden="true">Geben Sie den Benutzernamen des
|
E-Mail-Kontos und den richtigen Server an.</figcaption>
|
</figure>
|
</div>
|
<p>Bestätigen Sie die Eingabe mit einem Klick auf
|
<code>Fertig</code>.</p>
|
</section>
|
<section id="e-mails-über-pop3-abrufen" class="level3">
|
<h3>E-Mails über POP3 abrufen</h3>
|
<p>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.</p>
|
<div class="admonition">
|
<p>Hostsharing unterstützt verschlüsselte Verbindungen über STARTTLS
|
und SSL/TLS auf unterschiedlichen Ports. Lesen Sie dazu die Abschnitte
|
<a href="#kap-ref-maileingang">Posteingangsserver</a> und <a
|
href="#kap-ref-mailausgang">Postausgangsserver</a></p>
|
</div>
|
</section>
|
</section>
|
<section id="e-mail-passwort-ändern" class="level2">
|
<h2>E-Mail-Passwort ändern</h2>
|
<p>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 <code>/bin/false</code> zugeteilt wurde, lässt sich das
|
Passwort nur über HSAdmin ändern. Hat der E-Mail-Benutzer dagegen als
|
Shell das Programm <code>/usr/bin/passwd</code>, so kann er sein
|
Passwort auch per SSH ändern. Die Hintergründe werden im Abschnitt <a
|
href="#kap-benutzerrechte">Benutzerrechte</a> erklärt.</p>
|
<section id="e-mail-passwort-in-hsadmin-ändern" class="level3">
|
<h3>E-Mail-Passwort in HSAdmin ändern</h3>
|
<p>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 im Abschnitt <a
|
href="#kap-erstes-einloggen">Erstes Einloggen und Änderung des
|
Passworts</a> beschrieben.</p>
|
<video
|
width="786"
|
height="590" controls
|
<source src="https://media.hostsharing.net/Passwort-fuer-E-Mail-Benutzer-via-HSAdmin-aendern.webm" type="video/webm">
|
<source src="https://media.hostsharing.net/Passwort-fuer-E-Mail-Benutzer-via-HSAdmin-aendern.mp4" type="video/mp4">
|
>
|
</video>
|
</section>
|
<section id="e-mail-passwort-per-ssh-ändern" class="level3">
|
<h3>E-Mail-Passwort per SSH ändern</h3>
|
<p>Der Benutzer meldet sich per SSH im Webpaket an und ändert mit dem
|
Programm <code>passwd</code> sein Passwort. Falls der E-Mail-Benutzer
|
eine interaktive Shell hat, muss er dazu das Programm eigens aufrufen.
|
Wurde ihm jedoch lediglich das Programm <code>/usr/bin/passwd</code>
|
zugewiesen, öffnet sich statt einer interaktiven Sitzung sofort das
|
Programm <code>passwd</code>:</p>
|
<pre class="text"><code>$ ssh xyz00-mail@xyz00.hostsharing.net
|
xyz00-mail@xyz00.hostsharing.net's password:</code></pre>
|
<p>Nach Eingabe des aktuellen Passworts wird sofort
|
<code>passwd</code> gestartet und erneut das aktuelle Passwort
|
abgefragt:</p>
|
<pre class="text"><code>Changing password for xyz00-mail.
|
Current password: </code></pre>
|
<p>Nach einer erneuten Eingabe des aktuellen Passworts kann der
|
Benutzer zweimal ein neues eingeben. Anschließend erscheint eine
|
Erfolgsmeldung und die Verbindung wird geschlossen:</p>
|
<pre class="text"><code>New password:
|
Retype new password:
|
passwd: password updated successfully
|
Connection to xyz00.hostsharing.net closed.</code></pre>
|
<p>Damit ist das neue Passwort gesetzt.</p>
|
<div class="attention">
|
<p>Bitte vergessen Sie nicht das neue Passwort in Ihr E-Mail-Programm
|
einzutragen.</p>
|
</div>
|
<video
|
width="786"
|
height="590"
|
controls
|
<source src="https://media.hostsharing.net/Passwort-fuer-E-Mail-Benutzer-via-SSH-aendern.webm" type="video/webm">
|
<source src="https://media.hostsharing.net/Passwort-fuer-E-Mail-Benutzer-via-SSH-aendern.mp4" type="video/mp4">
|
>
|
</video>
|
</section>
|
</section>
|
</section>
|
<section id="kap-referenz" class="level1">
|
<h1>Referenz</h1>
|
<div class="intro">
|
<p>In diesem Kapitel werden die Dienste und Funktionen der Managed
|
Operations Platform von Hostsharing dokumentiert.</p>
|
</div>
|
<section id="kap-benutzerrollen" class="level2">
|
<h2>Benutzerrollen</h2>
|
<p>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
|
<code>HSAdmin</code> diese Aufgabe vereinfacht. Da in diesem Handbuch
|
die Kenntnis der Rollen an vielen Stellen vorausgesetzt wird, werden
|
sie in diesem Kapitel ausführlich beschrieben.</p>
|
</section>
|
<section id="kap-benutzerrechte" class="level2">
|
<h2>Benutzerrechte</h2>
|
<p>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
|
<code>bash</code>, <code>csh</code>, <code>ksh</code>,
|
<code>tcsh</code> oder <code>zsh</code> und den Programmen
|
<code>false</code>, <code>passwd</code> und <code>scponly</code>. Abb.
|
<a href="#fig-hsadmin-shell">Das Auswahlmenü mit den Shell- und
|
Kommando-Interpretern.</a> zeigt das entsprechende Menü.</p>
|
<div id="fig-hsadmin-shell">
|
<figure>
|
<img src="images/hsadmin-benutzershells.jpg" style="width:100.0%"
|
alt="Das Auswahlmenü mit den Shell- und Kommando-Interpretern." />
|
<figcaption aria-hidden="true">Das Auswahlmenü mit den Shell- und
|
Kommando-Interpretern.</figcaption>
|
</figure>
|
</div>
|
<dl>
|
<dt>/bin/false</dt>
|
<dd>
|
<p>Benutzer, denen das Programm <code>/bin/false</code> 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.</p>
|
</dd>
|
<dt>/bin/bash</dt>
|
<dd>
|
<p>Die <a
|
href="https://manpages.debian.org/buster/bash/bash.1.en.html">Bourne-Again-Shell</a>.
|
Auf vielen Linuxsystemen ist dies die Standard-Shell.</p>
|
</dd>
|
<dt>/bin/csh</dt>
|
<dd>
|
<p>Die <a
|
href="https://manpages.debian.org/buster/csh/csh.1.en.html">C-Shell</a>.</p>
|
</dd>
|
<dt>/bin/ksh</dt>
|
<dd>
|
<p>Die <a
|
href="https://manpages.debian.org/buster/ksh/ksh.1.en.html">Korn-Shell</a>.</p>
|
</dd>
|
<dt>/bin/tcsh</dt>
|
<dd>
|
<p>Eine <a
|
href="https://manpages.debian.org/buster/tcsh/tcsh.1.en.html">erweiterte
|
C-Shell</a>.</p>
|
</dd>
|
<dt>/bin/zsh</dt>
|
<dd>
|
<p>Die <a
|
href="https://manpages.debian.org/buster/zsh-common/zsh.1.en.html">Z-Shell</a>.</p>
|
</dd>
|
<dt>/usr/bin/passwd</dt>
|
<dd>
|
<p>Benutzer, denen das Programm <code>/usr/bin/passwd</code>
|
zugeordnet wird, können beim Versuch, sich mit <code>ssh</code>
|
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.</p>
|
</dd>
|
<dt>/usr/bin/scponly</dt>
|
<dd>
|
<p>Diese Zuordnung ermöglicht dem Benutzer den Gebrauch der Programme
|
<code>scp</code> und <code>sftp</code>. Eine interaktive Sitzung ist
|
nicht möglich.</p>
|
</dd>
|
</dl>
|
</section>
|
<section id="kap-webpaket" class="level2">
|
<h2>Web-Paket</h2>
|
<p>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.</p>
|
<p>Ein Web-Paket hat einen definierten Leistungsumfang, der durch
|
Optionen jederzeit erweitert werden kann. Die konkrete Staffelung der
|
Optionen wird auf folgenden Webseiten beschrieben:</p>
|
<ol type="1">
|
<li>Leistungsumfang <a
|
href="https://www.hostsharing.net/angebote/managed-webspace/">Managed
|
Webspace</a></li>
|
<li>Leistungsumfang <a
|
href="https://www.hostsharing.net/angebote/managed-server/">Managed
|
Server</a></li>
|
</ol>
|
<p>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. Abschnitt
|
<a href="#kap-benutzerrollen">Benutzerrollten</a>)</p>
|
<p>Aus der Paket-Bezeichnung (xyz00) ergeben sich weitere
|
Benennungen:</p>
|
<ul>
|
<li>der Name des Paket-Admins: Er lautet wie das Web-Paket, in diesem
|
Beispiel <code>xyz00</code>.</li>
|
<li>das Paketverzeichnis <code>/home/pacs/xyz00/</code>; es ist daher
|
auch das Benutzerverzeichnis des Paket-Admin.</li>
|
</ul>
|
<p>Ein Web-Paket enthält in der Regel:</p>
|
<ul>
|
<li>die Verzeichnisse von Benutzern, deren Struktur von der jeweiligen
|
Rolle des Benutzers abhängig ist</li>
|
<li>die genutzten Datenbanken</li>
|
<li>die aufgeschalteten Domains</li>
|
</ul>
|
<p>Jedes Web-Paket hat eine initial angelegte Verzeichnisstruktur. Die
|
Verzeichnisstruktur entspricht der dem jeweiligen Nutzer
|
zugesprochenen Rolle. Die Verzeichnisstrukturen von Paket-Admin,
|
Domain-Admin und E-Mail-Benutzer werden im Folgenden beschrieben.</p>
|
<section id="verzeichnisebene-paket-admin" class="level3">
|
<h3>Verzeichnisebene Paket-Admin</h3>
|
<p>Man kann sich als Paket-Admin in seinem Web-Paket per SSH
|
folgendermaßen anmelden:</p>
|
<pre class="console"><code>$ ssh xyz00@xyz00.hostsharing.net</code></pre>
|
<p>Danach können die Verzeichnisse mit dem Befehl <code>ls</code>
|
angezeigt werden.</p>
|
<pre class="console"><code>xyz00@h05:~$ ls -a</code></pre>
|
<p>Das Home-Verzeichnis des Paket-Admins umfasst initial folgende
|
Verzeichnisse:</p>
|
<table style="width:100%;">
|
<caption>Verzeichnisstruktur des Paket-Admins</caption>
|
<colgroup>
|
<col style="width: 16%" />
|
<col style="width: 12%" />
|
<col style="width: 12%" />
|
<col style="width: 12%" />
|
<col style="width: 45%" />
|
</colgroup>
|
<thead>
|
<tr class="header">
|
<th style="text-align: left;">Rechte</th>
|
<th style="text-align: left;">Nutzer</th>
|
<th style="text-align: left;">Gruppe</th>
|
<th style="text-align: left;">Ordner</th>
|
<th style="text-align: left;">Erläuterung</th>
|
</tr>
|
</thead>
|
<tbody>
|
<tr class="odd">
|
<td style="text-align: left;"><code>drwx-----</code></td>
|
<td style="text-align: left;">xyz00</td>
|
<td style="text-align: left;">xyz00</td>
|
<td style="text-align: left;">.bak</td>
|
<td style="text-align: left;">Ablage komprimierter Backups der
|
Datenbanken und Cronjobs.</td>
|
</tr>
|
<tr class="even">
|
<td style="text-align: left;"><code>dr-xr-x--T</code></td>
|
<td style="text-align: left;">httpd</td>
|
<td style="text-align: left;">xyz00</td>
|
<td style="text-align: left;">doms</td>
|
<td style="text-align: left;">Ablage der Paketdomain
|
xyz00.hostsharing.net.</td>
|
</tr>
|
<tr class="odd">
|
<td style="text-align: left;"><code>drwx------</code></td>
|
<td style="text-align: left;">xyz00</td>
|
<td style="text-align: left;">xyz00</td>
|
<td style="text-align: left;">etc</td>
|
<td style="text-align: left;">Ablage für eigene
|
Konfigurationsdateien.</td>
|
</tr>
|
<tr class="even">
|
<td style="text-align: left;"><code>drwxr-xr-x</code></td>
|
<td style="text-align: left;">xyz00</td>
|
<td style="text-align: left;">xyz00</td>
|
<td style="text-align: left;">users</td>
|
<td style="text-align: left;">Ablage der angelegten Nutzer</td>
|
</tr>
|
<tr class="odd">
|
<td style="text-align: left;"><code>drwxr-x---</code></td>
|
<td style="text-align: left;">xyz00</td>
|
<td style="text-align: left;">xyz00</td>
|
<td style="text-align: left;">var</td>
|
<td style="text-align: left;">Ablage von Logfiles (z.B. Web-Logs,
|
Traffic-Logs)</td>
|
</tr>
|
<tr class="even">
|
<td style="text-align: left;"><code>drwx------</code></td>
|
<td style="text-align: left;">xyz00</td>
|
<td style="text-align: left;">xyz00</td>
|
<td style="text-align: left;">Maildir</td>
|
<td style="text-align: left;">Mailordner des Paket-Admins.</td>
|
</tr>
|
</tbody>
|
</table>
|
</section>
|
<section id="verzeichnisebene-domain-admin" class="level3">
|
<h3>Verzeichnisebene Domain-Admin</h3>
|
<p>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 <code>hs-example.de</code> angelegt wurde und sein
|
Benutzername <code>xyz00-hs_example.de</code> ist, lautet der Befehl
|
zum Anmelden folgendermaßen:</p>
|
<pre class="console"><code>$ ssh xyz00-hs_example.des@xyz00.hostsharing.net</code></pre>
|
<p>Danach können die Verzeichnisse mit dem Befehl <code>ls</code>
|
angezeigt werden.</p>
|
<pre class="console"><code>xyz00-doms@h05:~$ ls -a</code></pre>
|
<p>Das Home-Verzeichnis des Domain-Admins umfasst folgende
|
Verzeichnisse:</p>
|
<table style="width:100%;">
|
<caption>Verzeichnisstruktur des Domain-Admin</caption>
|
<colgroup>
|
<col style="width: 18%" />
|
<col style="width: 23%" />
|
<col style="width: 11%" />
|
<col style="width: 12%" />
|
<col style="width: 35%" />
|
</colgroup>
|
<thead>
|
<tr class="header">
|
<th style="text-align: left;">Rechte</th>
|
<th style="text-align: left;">Nutzer</th>
|
<th style="text-align: left;">Gruppe</th>
|
<th style="text-align: left;">Ordner</th>
|
<th style="text-align: left;">Erläuterung</th>
|
</tr>
|
</thead>
|
<tbody>
|
<tr class="odd">
|
<td style="text-align: left;"><code>dr-xr-x--T</code></td>
|
<td style="text-align: left;">httpd</td>
|
<td style="text-align: left;">xyz00</td>
|
<td style="text-align: left;">doms</td>
|
<td style="text-align: left;">Ablage der Domains dieses
|
Domain-Admins.</td>
|
</tr>
|
<tr class="even">
|
<td style="text-align: left;"><code>drwx------</code></td>
|
<td style="text-align: left;">xyz00-hs_example.de</td>
|
<td style="text-align: left;">xyz00</td>
|
<td style="text-align: left;">Maildir</td>
|
<td style="text-align: left;">Mailordner des Domain-Admins.</td>
|
</tr>
|
</tbody>
|
</table>
|
<p>Unterhalb des Ordners <em>doms</em> findet sich für jede Domain ein
|
weiterer Ordner mit dem Namen der Domain, zum Beispiel
|
<em>example.com</em>, und darin befindet sich die Verzeichnisstruktur
|
für die jeweilige Domain:</p>
|
<table>
|
<caption>Verzeichnisstruktur einer Domain</caption>
|
<colgroup>
|
<col style="width: 13%" />
|
<col style="width: 19%" />
|
<col style="width: 10%" />
|
<col style="width: 10%" />
|
<col style="width: 45%" />
|
</colgroup>
|
<thead>
|
<tr class="header">
|
<th style="text-align: left;">Rechte</th>
|
<th style="text-align: left;">Nutzer</th>
|
<th style="text-align: left;">Gruppe</th>
|
<th style="text-align: left;">Ordner</th>
|
<th style="text-align: left;">Erläuterung</th>
|
</tr>
|
</thead>
|
<tbody>
|
<tr class="odd">
|
<td style="text-align: left;"><code>drwxr-xr-x</code></td>
|
<td style="text-align: left;">xyz00-hs_example.de</td>
|
<td style="text-align: left;">xyz00</td>
|
<td style="text-align: left;">cgi</td>
|
<td style="text-align: left;">Ablage für CGI-Skripte zur Generierung
|
dynamischer Webseiten in einem Webserver.</td>
|
</tr>
|
<tr class="even">
|
<td style="text-align: left;"><code>drwxr-xr-x</code></td>
|
<td style="text-align: left;">xyz00-hs_example.de</td>
|
<td style="text-align: left;">xyz00</td>
|
<td style="text-align: left;">cgi-ssl</td>
|
<td style="text-align: left;">Ablage für CGI-Skripte zur Generierung
|
dynamischer Webseiten, die verschlüsselt ausgeliefert werden</td>
|
</tr>
|
<tr class="odd">
|
<td style="text-align: left;"><code>drwxr-xr-x</code></td>
|
<td style="text-align: left;">xyz00-hs_example.de</td>
|
<td style="text-align: left;">xyz00</td>
|
<td style="text-align: left;">fastcgi</td>
|
<td style="text-align: left;">Ablage für Fast-CGI-Programme zur
|
Generierung dynamischer Webseiten in einem Webserver.</td>
|
</tr>
|
<tr class="even">
|
<td style="text-align: left;"><code>drwxr-xr-x</code></td>
|
<td style="text-align: left;">xyz00-hs_example.de</td>
|
<td style="text-align: left;">xyz00</td>
|
<td style="text-align: left;">fastcgi-ssl</td>
|
<td style="text-align: left;">Ablage für Fast-CGI-Programme zur
|
Generierung dynamischer Webseiten, die verschlüsselt ausgeliefert
|
werden</td>
|
</tr>
|
<tr class="odd">
|
<td style="text-align: left;"><code>drwxr-xr-x</code></td>
|
<td style="text-align: left;">xyz00-hs_example.de</td>
|
<td style="text-align: left;">xyz00</td>
|
<td style="text-align: left;">htdocs</td>
|
<td style="text-align: left;">Ablage für die Daten einer Webseite,
|
wenn diese unverschlüsselt ausgeliefert werden soll.</td>
|
</tr>
|
<tr class="even">
|
<td style="text-align: left;"><code>drwxr-xr-x</code></td>
|
<td style="text-align: left;">xyz00-hs_example.de</td>
|
<td style="text-align: left;">xyz00</td>
|
<td style="text-align: left;">subs</td>
|
<td style="text-align: left;">Ablage für Sub-Domain aus htdocs, wenn
|
diese unverschlüsselt ausgeliefert werden soll.</td>
|
</tr>
|
<tr class="odd">
|
<td style="text-align: left;"><code>drwxr-xr-x</code></td>
|
<td style="text-align: left;">xyz00-hs_example.de</td>
|
<td style="text-align: left;">xyz00</td>
|
<td style="text-align: left;">htdocs-ssl</td>
|
<td style="text-align: left;">Ablage für die Daten einer Webseite,
|
wenn diese verschlüsselt ausgeliefert werden soll.</td>
|
</tr>
|
<tr class="even">
|
<td style="text-align: left;"><code>drwxr-xr-x</code></td>
|
<td style="text-align: left;">xyz00-hs_example.de</td>
|
<td style="text-align: left;">xyz00</td>
|
<td style="text-align: left;">subs-ssl</td>
|
<td style="text-align: left;">Ablage für Sub-Domain aus htdocs-ssl,
|
wenn diese verschlüsselt ausgeliefert werden soll.</td>
|
</tr>
|
<tr class="odd">
|
<td style="text-align: left;"><code>drwxr-xr-x</code></td>
|
<td style="text-align: left;">xyz00-hs_example.de</td>
|
<td style="text-align: left;">xyz00</td>
|
<td style="text-align: left;">etc</td>
|
<td style="text-align: left;">Ablage für domaineigene
|
Konfigurationsdateien (z.B. eigenes Zonefile.</td>
|
</tr>
|
<tr class="even">
|
<td style="text-align: left;"><code>drwxr-xr-x</code></td>
|
<td style="text-align: left;">xyz00-hs_example.de</td>
|
<td style="text-align: left;">xyz00</td>
|
<td style="text-align: left;">var</td>
|
<td style="text-align: left;">Ablage für Logfiles.</td>
|
</tr>
|
</tbody>
|
</table>
|
<p>Die Verzeichnisstruktur wird auch im Abschnitt <a
|
href="#kap-einstieg-ordnerstruktur">Ordnerstruktur</a>
|
beschrieben.</p>
|
</section>
|
<section id="verzeichnisebene-e-mail-nutzer" class="level3">
|
<h3>Verzeichnisebene E-Mail-Nutzer</h3>
|
<p>Das Home-Verzeichnis eines E-Mail-Benutzers umfasst nur sein
|
Postfach:</p>
|
<table style="width:100%;">
|
<caption>Verzeichnisstruktur eines E-Mail-Benutzers</caption>
|
<colgroup>
|
<col style="width: 20%" />
|
<col style="width: 17%" />
|
<col style="width: 13%" />
|
<col style="width: 14%" />
|
<col style="width: 34%" />
|
</colgroup>
|
<thead>
|
<tr class="header">
|
<th style="text-align: left;">Rechte</th>
|
<th style="text-align: left;">Nutzer</th>
|
<th style="text-align: left;">Gruppe</th>
|
<th style="text-align: left;">Ordner</th>
|
<th style="text-align: left;">Erläuterung</th>
|
</tr>
|
</thead>
|
<tbody>
|
<tr class="odd">
|
<td style="text-align: left;"><code>drwxr-----</code></td>
|
<td style="text-align: left;">xyz00-mail</td>
|
<td style="text-align: left;">xyz00</td>
|
<td style="text-align: left;">Maildir</td>
|
<td style="text-align: left;">Mailordner des E-Mail-Nutzers.</td>
|
</tr>
|
</tbody>
|
</table>
|
</section>
|
<section id="kap-quota" class="level3">
|
<h3>Speicherbelegung</h3>
|
<p>Jedem Web-Paket steht nur ein begrenzter Speicher zur Verfügung.
|
Der tatsächlich belegte Speicher darf den gebuchten nicht dauerhaft
|
überschreiten.</p>
|
<p>Zum belegten Speicher zählen neben den sichtbaren Dateien in
|
<code>/home/pacs/xyz00</code>, die Sicherungen der Datenbanken unter
|
<code>/home/pacs/xyz00/.bak/</code> sowie gegebenenfalls Dateien in
|
<code>/home/restore</code> oder temporäre Daten im Verzeichnis
|
<code>/tmp</code>.</p>
|
<p>Die Speicherbegrenzung für ein Web-Paket ist unter Linux durch ein
|
Quota für die Gruppe <code>xyz00</code> realisiert. Die aktuelle
|
Belegung lässt sich mit dem Kommando</p>
|
<pre class="console"><code>$ quota -gs</code></pre>
|
<p>ermitteln. Die Ausgabe</p>
|
<pre class="console"><code>Disk quotas for group xyz00 (gid 999999):
|
Filesystem space quota limit grace files quota limit grace
|
/dev/vda2 5587M 6144M 9216M 103k 6292k 6292k </code></pre>
|
<p>bedeutet:</p>
|
<ul>
|
<li>Es sind 5587 MB von 6144 MB belegt</li>
|
<li>Temporär dürfen bis zu 9216 MB in Anspruch genommen werden</li>
|
<li>Außerdem sind 103.000 Dateien angelegt worden</li>
|
<li>Die maximale Anzahl der Dateien ist auf 6.292.000 beschränkt</li>
|
<li>Sobald das Quota überschritten wird, würde unter
|
<code>grace</code> 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.</li>
|
</ul>
|
<p>Falls Sie dauerhaft mehr Speicherplatz benötigen, können Sie diesen
|
jederzeit hinzubuchen. Wenden Sie sich dazu an den <a
|
href="mailto:service@hostsharing.net">Service</a>.</p>
|
</section>
|
</section>
|
<section id="kap-ref-domain" class="level2">
|
<h2>Domains</h2>
|
<p>Die Domainverwaltung bei Hostsharing ist in zwei unabhängige
|
Bereiche aufgeteilt.</p>
|
<ol type="1">
|
<li><p>Die Domaineinrichtung in einem Web-Paket. Dies geschieht mit
|
HSAdmin. Die Benutzung der Weboberfläche wird im Abschnitt <a
|
href="#kap-hsadmin-einstieg">Einstieg in HSAdmin</a>, speziell im
|
Abschnitt <a href="#kap-hsadmin-domain-anlegen">Domain in HSAdmin
|
anlegen</a> beschrieben. Die Nutzung des Kommandozeilen-Tools von
|
HSAdmin erklärt Abschnitt <a href="#kap-hsadmin">HSAdmin</a>.</p></li>
|
<li><p>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 und einem Passwort.</p></li>
|
</ol>
|
<p>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.</p>
|
<p>Die Verwaltung einer Domain umfasst:</p>
|
<ul>
|
<li>Domain aufschalten,</li>
|
<li>Domain-Registrierung,</li>
|
<li>Domain-Transfer zur Hostsharing eG,</li>
|
<li>Extern registrierte Domain aufschalten,</li>
|
<li>Extern registrierte Sub-Domain aufschalten,</li>
|
<li>Domain neu zuordnen (Domain-Admin neu zuordnen oder Zuordnung zu
|
einem Web-Paket ändern),</li>
|
<li>Sub-Domain neu zuordnen (Domain-Admin neu zuordnen oder Zuordnung
|
zu einem Web-Paket ändern),</li>
|
<li>Lokale Sub-Domain separat aufschalten,</li>
|
<li>Verwaltung des Zonefile,</li>
|
<li>Verwaltung der Domain-Daten (zum Beispiel Domain-Handle,
|
Kontaktdaten),</li>
|
<li>Transfer zu einem anderen Provider,</li>
|
<li>Domain löschen/kündigen.</li>
|
</ul>
|
<section id="domainverwaltung" class="level3">
|
<h3>Domainverwaltung</h3>
|
<section id="registrierung-und-aufschaltung" class="level4">
|
<h4>Registrierung und Aufschaltung</h4>
|
<p>Die Domainverwaltung ist in zwei voneinander unabhängige
|
Aufgabenbereiche unterteilt:</p>
|
<section id="domaineinrichtung-und--konfiguration-in-einem-web-paket"
|
class="level5">
|
<h5>Domaineinrichtung und -konfiguration in einem Web-Paket</h5>
|
<p>Die Einrichtung und Konfiguration erfolgt mit dem Werkzeug <code
|
class="interpreted-text" role="term">HSAdmin</code>. Die Benutzung von
|
HSAdmin über das Webinterface unter admin.hostsharing.net wird in
|
<code class="interpreted-text"
|
role="numref">kap-hsadmin-einstieg</code> beschrieben, die Syntax der
|
Kommandozeilen-Variante <code class="interpreted-text"
|
role="command">hsscript</code> in <code class="interpreted-text"
|
role="numref">kap-hsadmin</code>.</p>
|
<p>Aufgaben der Domainverwaltung werden vom <code
|
class="interpreted-text" role="role">Paket-Admin</code> oder vom <code
|
class="interpreted-text"
|
role="role">Mitglieds-Account <Mitglied></code>
|
wahrgenommen.</p>
|
</section>
|
<section id="vergabe-von-aufträgen-an-eine-registrierungsstelle"
|
class="level5">
|
<h5>Vergabe von Aufträgen an eine Registrierungsstelle</h5>
|
<p>Die Vergabe von Aufträgen (z.B. Registrierung, Transfer) an eine
|
Registrierungsstelle ist nur über das <a
|
href="https://www.domain-bestellsystem.de/">Webfrontend</a> des <code
|
class="interpreted-text" role="term">Domain-Bestell-System</code>
|
möglich und erfolgt mit Hilfe der <code class="interpreted-text"
|
role="role">Reseller-ID</code>.</p>
|
<div class="note">
|
<p>Die Anzahl der pro Tag möglichen Registrierungen ist beschränkt, um
|
Missbrauch vorzubeugen. Nach Rücksprache kann das Limit erhöht
|
werden.</p>
|
</div>
|
<div class="warning">
|
<p>Der Nutzer ist für sämtliche Aktivitäten im Domainbestellsystem
|
juristisch eigenverantwortlich.</p>
|
</div>
|
<div class="tip">
|
<p>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.</p>
|
</div>
|
</section>
|
</section>
|
<section id="bestehende-domain-einem-neuen-domain-admin-zuordnen"
|
class="level4">
|
<h4>Bestehende Domain einem neuen Domain-Admin zuordnen</h4>
|
<p>Um eine Domain einem anderen <code class="interpreted-text"
|
role="role">Domain-Admin</code> zuzuordnen und damit im Dateisystem zu
|
verschieben, wird sie über HSAdmin gelöscht und neu angelegt.</p>
|
<div class="warning">
|
<p>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
|
<code class="interpreted-text" role="command">tar</code>). Es gehen
|
auch die Mailadressen der betreffenden Domain verloren und müssen an
|
neuer Stelle neu angelegt werden.</p>
|
</div>
|
<p>Der Prozess des Verschiebens läuft im Großen und Ganzen
|
folgendermaßen ab:</p>
|
<ol type="1">
|
<li>Sichern aller Daten im Ordner <code>doms/example.de</code> des
|
alten Domain-Admin</li>
|
<li>Löschen der Domain in HSAdmin</li>
|
<li>Neuanlage eines neuen Domain-Admin in HSAdmin</li>
|
<li>Neuanlage der Domain in HSAdmin</li>
|
<li>Rückspielen der gesicherten Daten in den neu erstellen Ordner
|
<code>doms/example.de</code> des neuen Domain-Admin</li>
|
</ol>
|
</section>
|
<section id="bestehende-domain-in-ein-anderes-web-paket-verschieben"
|
class="level4">
|
<h4>Bestehende Domain in ein anderes Web-Paket verschieben</h4>
|
<p>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.</p>
|
<ol type="1">
|
<li>Sichern aller Daten im Ordner <code>doms/example.de</code> des
|
alten Domain-Admin im alten Web-Paket</li>
|
<li>Löschen der Domain <code>example.de</code> in HSAdmin im alten
|
Web-Paket</li>
|
<li>Neuanlage eines neuen Domain-Admin im neuen Web-Paket</li>
|
<li>Neuanlage der Domain <code>example.de</code> im neuen
|
Web-Paket</li>
|
<li>Rückspielen der gesicherten Daten in den neu erstellen Ordner
|
<code>doms/example.de</code> des neuen Domain-Admin im neuen
|
Web-Paket</li>
|
</ol>
|
<div class="tip">
|
<p>Wenn Sie unsicher sind, wenden Sie sich an den Service unter <a
|
href="mailto:service@hostsharing.net"
|
class="email">service@hostsharing.net</a>. Der <a
|
href="https://www.hostsharing.net/service/webmaster-on-demand">Webmaster
|
on Demand</a> kann eine Domain mit minimalen Ausfallzeiten für Sie bei
|
aufwandsabhängiger Abrechnung verschieben.</p>
|
</div>
|
</section>
|
</section>
|
<section id="kap-ref-subdomains" class="level3">
|
<h3>Subdomain</h3>
|
<p>Subdomains sind Domains unterhalb der Hauptdomain. Auch
|
<code>www</code> ist eine Subdomain. Als Subdomain der Hauptdomain
|
<code>hs-example.de</code> wird eine Website unter dieser Subdomain im
|
Browser über die Adresse <code>www.hs-example.de</code> aufgerufen.
|
Die Subdomain <code>test</code> würde man über die Adresse
|
<code>test.hs-example.de</code> erreichen.</p>
|
<p>Sie können bei Hostsharing beliebig viele Subdomains einrichten. Es
|
gibt zwei Methoden Subdomains anzulegen:</p>
|
<ol type="1">
|
<li>Leichtgewichtige Subdomains</li>
|
<li>Aufgeschaltete Subdomains</li>
|
</ol>
|
<section id="leichtgewichtige-subdomain" class="level4">
|
<h4>Leichtgewichtige Subdomain</h4>
|
<p>Eine Subdomains wird bei Hostsharing <em>leichtgewichtig</em>
|
genannt, wenn sie durch ein Unterverzeichnis von
|
<code>~/doms/example.com/subs/</code> definiert wurde. Dies ist die
|
einfachste Art und Weise, um Subdomains zu erstellen. Für jede
|
Subdomain wird ein Ordner im Verzeichnis <code>subs</code>
|
erstellt.</p>
|
<p>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.</p>
|
<p>Wenn unterschiedliche Anwendungen unter Subdomains betrieben
|
werden, sollte</p>
|
<ul>
|
<li>für jede Subdomain ein eigener <code>Domain-Admin</code>
|
angelegt</li>
|
<li>und jede Subdomain jeweils beim entsprechenden Domain-Admin
|
aufgeschaltet werden.</li>
|
</ul>
|
</section>
|
<section id="aufgeschaltete-subdomain" class="level4">
|
<h4>Aufgeschaltete Subdomain</h4>
|
<p>Eine Subdomain wird bei Hostsharing wie die Hauptdomain
|
aufgeschaltet (siehe Abschnitt <a
|
href="#kap-hsadmin-domain-anlegen">Domain in HSAdmin anlegen</a>).
|
Eine Subdomain wie <code>blog.hs-example.de</code> 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 anzulegen und die Domain bzw. Subdomain diesem
|
Domain-Admin zuzuordnen.</p>
|
</section>
|
</section>
|
<section id="kap-domain-optionen" class="level3">
|
<h3>Domain-Optionen</h3>
|
<p>Bei Aufschaltung einer Domain können verschiedene Optionen gesetzt
|
werden.</p>
|
<dl>
|
<dt>Greylisting</dt>
|
<dd>
|
<p>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.</p>
|
</dd>
|
<dt>Multiviews</dt>
|
<dd>
|
<p>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 <a
|
href="http://httpd.apache.org/docs/current/mod/mod_autoindex.html">mod_mime</a>
|
und <a
|
href="http://httpd.apache.org/docs/current/mod/mod_negotiation.html">mod_negotiation</a>
|
beschrieben.</p>
|
</dd>
|
<dt>Indexes</dt>
|
<dd>
|
<p>Wenn diese Option eingeschaltet ist, erzeugt der Webserver für
|
Verzeichnisse, die keine Index-Datei (<code class="interpreted-text"
|
role="file">index.html</code>) enthalten eine Liste mit den Inhalten
|
des Verzeichnisses. Weitere Informationen zu dieser Funktion des
|
Webservers finden Sie in der Dokumentation von <a
|
href="http://httpd.apache.org/docs/current/mod/mod_autoindex.html">mod_autoindex</a>.
|
Ist die Option nicht gesetzt, erhält der Browser stattdessen eine
|
404-Fehlermeldung. Sie können diese Einstellung durch eine
|
<code>.htaccess</code>-Datei im Verzeichnis überschreiben. Lesen Sie
|
dazu Abschnitt <a href="#kap-htaccess">htaccess</a>.</p>
|
</dd>
|
<dt>Fallback auf htdocs/htdocs-ssl</dt>
|
<dd>
|
<p>Wenn diese Option aktiviert ist, werden Browser-Anfragen an eine
|
nicht aufgeschaltete Subdomain (<code>blog.hs-example.de</code>) an
|
die Hauptdomain weitergeleitet. In diesem Fall an
|
<code>hs-example.de</code>. Falls die Option nicht gesetzt ist, erhält
|
der Browser stattdessen eine 404-Fehlermeldung.</p>
|
</dd>
|
<dt>Includes</dt>
|
<dd>
|
<p>Wenn diese Option gesetzt ist, unterstützt der Webserver SSI
|
(Server Side Includes). Weitere Informationen dazu finden Sie in der
|
Dokumentation von <a
|
href="http://httpd.apache.org/docs/current/mod/mod_include.html">mod_includes</a></p>
|
</dd>
|
<dt>Backup-MX für externen Mailserver</dt>
|
<dd>
|
<p>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 Abschnitt <a
|
href="#kap-ref-zonefile">Zonefile</a>.</p>
|
</dd>
|
<dt>Let's Encrypt-Zertifikat</dt>
|
<dd>
|
<p>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 (<code>https</code>) erfolgt.</p>
|
</dd>
|
<dt>E-Mail Auto-Konfiguration</dt>
|
<dd>
|
<p>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.</p>
|
</dd>
|
<dt>Domain Keys (DKIM)</dt>
|
<dd>
|
<p>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 <code>{DKIM_RR}</code> enthalten. Die Option ist (ab 1.9.2021)
|
bei neu angelegten Domains in der Voreinstellung aktiviert und der
|
öffentliche Schlüssel wird automatisch hinterlegt.</p>
|
</dd>
|
</dl>
|
</section>
|
</section>
|
<section id="e-mail" class="level2">
|
<h2>E-Mail</h2>
|
<p>Jeder Benutzer im Web-Paket besitzt ein E-Mail-Konto und kann
|
E-Mail senden und empfangen. E-Mails werden unterhalb des
|
Verzeichnisses <code>~/Maildir</code> abgelegt. Der Name des Ordners
|
<code>Maildir</code> darf nicht verändert werden.</p>
|
<p>Jedes E-Mail-Konto ist POP3- und IMAP-fähig.</p>
|
<p>Hostsharing bietet folgende Konfigurationsmöglichkeiten:</p>
|
<ul>
|
<li>Anlegen und Löschen von E-Mail-Adressen</li>
|
<li>Anlegen und Löschen von E-Mail-Aliasen</li>
|
<li>Einrichtung von E-Mail-Weiterleitungen</li>
|
<li>Automatisches Versenden einer E-Mail-Bestätigung (Vacation)</li>
|
<li>Automatisches Filtern und Bearbeiten von E-Mails über <a
|
href="https://wiki.hostsharing.net/index.php?title=Sieve">Managesieve</a>
|
oder <a
|
href="https://wiki.hostsharing.net/index.php?title=Procmail">Procmail</a></li>
|
<li>Mit E-Mail-Aliasen kann die Zustellung von Nachrichten in die
|
Postfächer der Benutzer gesteuert werden.</li>
|
<li>E-Mail-Konten bei anderen Anbietern abfragen</li>
|
<li>Einrichtung von Mailinglisten</li>
|
</ul>
|
<p>Der Zugriff auf das E-Mail-Konto erfolgt über einen beliebigen
|
E-Mail-Client oder über Webmail.</p>
|
<section id="kap-ref-maileingang" class="level3">
|
<h3>Posteingangsserver</h3>
|
<p>Angaben für den Posteingangsserver:</p>
|
<table>
|
<caption>Konfiguration Eingangsserver</caption>
|
<colgroup>
|
<col style="width: 31%" />
|
<col style="width: 26%" />
|
<col style="width: 15%" />
|
<col style="width: 13%" />
|
<col style="width: 13%" />
|
</colgroup>
|
<thead>
|
<tr class="header">
|
<th style="text-align: left;">Posteingangsserver</th>
|
<th style="text-align: left;">Postfach/Benutzer</th>
|
<th style="text-align: left;">Protokoll</th>
|
<th style="text-align: left;">STARTTLS</th>
|
<th style="text-align: left;">SSL/TLS</th>
|
</tr>
|
</thead>
|
<tbody>
|
<tr class="odd">
|
<td style="text-align: left;">xyz00.hostsharing.net</td>
|
<td style="text-align: left;">xyz00-mailbox</td>
|
<td style="text-align: left;">POP3</td>
|
<td style="text-align: left;">Port 110</td>
|
<td style="text-align: left;">Port 995</td>
|
</tr>
|
<tr class="even">
|
<td style="text-align: left;">xyz00.hostsharing.net</td>
|
<td style="text-align: left;">xyz00-mailbox</td>
|
<td style="text-align: left;">IMAP</td>
|
<td style="text-align: left;">Port 143</td>
|
<td style="text-align: left;">Port 993</td>
|
</tr>
|
</tbody>
|
</table>
|
<p>Die Konfigurationsvariante IMAP über Port 143 mit STARTTLS wird
|
empfohlen.</p>
|
</section>
|
<section id="kap-ref-mailausgang" class="level3">
|
<h3>Postausgangsserver</h3>
|
<p>Für jedes Webpaket steht ein Postausgangsserver für reguäre E-Mails
|
und ein Postausgangsserver für den Massenversand von E-Mails
|
bereit.</p>
|
<p>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.</p>
|
<p>Angaben für den Postausgangsserver:</p>
|
<table>
|
<caption>Konfiguration Ausgangsserver</caption>
|
<colgroup>
|
<col style="width: 31%" />
|
<col style="width: 26%" />
|
<col style="width: 15%" />
|
<col style="width: 13%" />
|
<col style="width: 13%" />
|
</colgroup>
|
<thead>
|
<tr class="header">
|
<th style="text-align: left;">Posteingangsserver</th>
|
<th style="text-align: left;">Postfach/Benutzer</th>
|
<th style="text-align: left;">Protokoll</th>
|
<th style="text-align: left;">STARTTLS</th>
|
<th style="text-align: left;">SSL/TLS</th>
|
</tr>
|
</thead>
|
<tbody>
|
<tr class="odd">
|
<td style="text-align: left;">xyz00.hostsharing.net</td>
|
<td style="text-align: left;">xyz00-mailbox</td>
|
<td style="text-align: left;">SMTP</td>
|
<td style="text-align: left;">Port 587 oder 25</td>
|
<td style="text-align: left;">Port 465</td>
|
</tr>
|
</tbody>
|
</table>
|
<p>Die Konfigurationsvariante SMTP über Port 587 mit STARTTLS wird
|
empfohlen.</p>
|
<p>Angaben für den Postausgangsserver für den Massenversand:</p>
|
<table>
|
<caption>Konfiguration Ausgangsserver Massenversand</caption>
|
<colgroup>
|
<col style="width: 31%" />
|
<col style="width: 26%" />
|
<col style="width: 15%" />
|
<col style="width: 13%" />
|
<col style="width: 13%" />
|
</colgroup>
|
<thead>
|
<tr class="header">
|
<th style="text-align: left;">Posteingangsserver</th>
|
<th style="text-align: left;">Postfach/Benutzer</th>
|
<th style="text-align: left;">Protokoll</th>
|
<th style="text-align: left;">STARTTLS</th>
|
<th style="text-align: left;">SSL/TLS</th>
|
</tr>
|
</thead>
|
<tbody>
|
<tr class="odd">
|
<td style="text-align: left;">xyz00.hostsharing.net</td>
|
<td style="text-align: left;">xyz00-mailbox</td>
|
<td style="text-align: left;">SMTP</td>
|
<td style="text-align: left;">Port 4587 oder 4025</td>
|
<td style="text-align: left;">Port 1465</td>
|
</tr>
|
</tbody>
|
</table>
|
<p>Die Konfigurationsvariante SMTP über Port 4587 mit STARTTLS wird
|
empfohlen.</p>
|
</section>
|
<section id="größenbeschränkung-einer-e-mail" class="level3">
|
<h3>Größenbeschränkung einer E-Mail</h3>
|
<p>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 <a
|
href="https://wiki.hostsharing.net/index.php?title=Gr%C3%B6%C3%9Fenbeschr%C3%A4nkung_von_E-Mails">Größenbeschränkung
|
von E-Mails</a> im Wiki der Hostsharing-Mitglieder.</p>
|
</section>
|
<section id="e-mail-alias-und-paketnutzer" class="level3">
|
<h3>E-Mail-Alias und Paketnutzer</h3>
|
<p>Ein E-Mail-Alias ist eine E-Mail-Adresse zur Weiterleitung von
|
E-Mails.</p>
|
<p>Ein E-Mail-Alias in der E-Mail-Konfiguration hat Vorrang vor einem
|
Paketnutzer gleichen Namens. Implementiert der E-Mail-Alias eine
|
Weiterleitung, gehen in diesem Fall in der Mailbox des Paketnutzers
|
keine E-Mails ein.</p>
|
<!-- todo: Letzten Satz prüfen -->
|
</section>
|
<section id="webmail" class="level3">
|
<h3>Webmail</h3>
|
<p>Hostsharing betreibt eine zentrale <a
|
href="https://webmail.hostsharing.net">Webmail-Installation</a>.
|
Informationen zur Einrichtung sind im Wiki der Mitglieder unter <a
|
href="https://wiki.hostsharing.net/index.php?title=Webmail">Webmail</a>
|
zu finden.</p>
|
</section>
|
<section id="kap-ref-mailautoconfig" class="level3">
|
<h3>E-Mail Auto-Konfiguration</h3>
|
<p>Die Domain-Option <em>E-Mail Auto-Konfiguration</em> ermöglicht das
|
einfache Konfigurieren der E-Mail-Clients mit den Daten des
|
Posteingangs- und Postausgangsservers. Wird diese Domain-Option für
|
z.B. <code>example.com</code> aktiviert, und ist der E-Mail-Adresse
|
<code>fred@example.com</code> (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.</p>
|
<p>Dies vereinfacht aus Nutzersicht die Einrichtung eines
|
Hostsharing-Postfaches im eigenen E-Mail-Client erheblich.</p>
|
<p>Das Verfahren kann aus mehreren Gründen scheitern:</p>
|
<ul>
|
<li>Der E-Mail-Client des Nutzers unterstützt ›autoconfig‹ und
|
›autodiscover‹ nicht. Thunderbird ab Version 3.1 und Outlook ab
|
Version 2007 sollten funktionieren.</li>
|
<li>Die Domain-Option E-Mail Auto-Konfiguration wurde erst
|
<em>nach</em> einem gescheiterten Konfigurationsversuch gesetzt (sie
|
sollte <em>vorher</em> 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.</li>
|
<li>In der Domain wird ein <em>eigenes</em> Zonenfile verwendet, in
|
dem die nötigen Einträge (<code>MAILSERVICES_RR</code> und
|
<code>AUTODISCOVER_RR</code>, siehe Abschnitt <a
|
href="#kap-ref-zonefile-platzhalter">Platzhalter</a> fehlen. Dann
|
müssen sie per Hand ergänzt werden.</li>
|
</ul>
|
</section>
|
</section>
|
<section id="kap-ref-db" class="level2">
|
<h2>Datenbanken</h2>
|
<p>Jeder Hive 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 gemeinsam genutzt
|
wird.</p>
|
<p>Der externe Zugriff auf die Datenbanken ist über einen SSH-Tunnel
|
möglich.</p>
|
<section id="datenbanken-und-nutzer" class="level3">
|
<h3>Datenbanken und Nutzer</h3>
|
<p>Datenbanknutzer haben eine eigene Nutzerverwaltung und sind
|
unabhängig von der Vergabe von Rechten auf Betriebsystemebene.</p>
|
<section id="verwaltung-der-datenbanken-und-datenbanknutzer"
|
class="level4">
|
<h4>Verwaltung der Datenbanken und Datenbanknutzer</h4>
|
<p>Die Verwaltung von Datenbanken und Nutzern erfolgt mit HSAdmin über
|
ein Webfrontend oder über die <code>shell</code>.</p>
|
</section>
|
<section id="rechte" class="level4">
|
<h4>Rechte</h4>
|
<p>Datenbanknutzern müssen initial die gewünschten Rechte an den
|
entsprechenden Datenbanken vergeben werden.</p>
|
</section>
|
<section id="name" class="level4">
|
<h4>Name</h4>
|
<ul>
|
<li>Datenbanknutzer haben immer den Präfix <code>xyz00_</code>.</li>
|
<li>Datenbanken haben immer den Präfix <code>xyz00_</code>.</li>
|
</ul>
|
</section>
|
</section>
|
<section id="datenbankzugriff" class="level3">
|
<h3>Datenbankzugriff</h3>
|
<p>Der Zugriff erfolgt über folgende Hosts und Ports:</p>
|
<table>
|
<caption>Konfiguration Datenbankzugriff</caption>
|
<thead>
|
<tr class="header">
|
<th style="text-align: left;">Datenbank</th>
|
<th style="text-align: left;">Hostnamen</th>
|
<th style="text-align: left;">Port</th>
|
</tr>
|
</thead>
|
<tbody>
|
<tr class="odd">
|
<td style="text-align: left;">MySQL</td>
|
<td style="text-align: left;">localhost</td>
|
<td style="text-align: left;">3306</td>
|
</tr>
|
<tr class="even">
|
<td style="text-align: left;">PostgreSQL</td>
|
<td style="text-align: left;">localhost</td>
|
<td style="text-align: left;">5432</td>
|
</tr>
|
</tbody>
|
</table>
|
</section>
|
<section id="datenbank-webfrontend" class="level3">
|
<h3>Datenbank-Webfrontend</h3>
|
<p>Für angelegte Datenbanken stehen folgende Webfrontends zur
|
Verfügung:</p>
|
<ul>
|
<li><p>Für MySQL: <a
|
href="https://phpmyadmin.hostsharing.net/current">phpMyAdmin</a>.</p></li>
|
<li><p>Für PostgreSQL: <a
|
href="https://phppgadmin.hostsharing.net/current">phpPgAdmin</a>.</p></li>
|
</ul>
|
</section>
|
</section>
|
<section id="tls-zertifikate" class="level2">
|
<h2>TLS Zertifikate</h2>
|
<p>Transport Layer Security (TLS) ist ein Verschlüsselungsprotokoll
|
zur sicheren Datenübertragung im Internet. Die Vorgängerbezeichnung
|
lautete Secure Sockets Layer (SSL).</p>
|
<p>Beim Anlegen einer Domain in HSAdmin kann als Domain-Option ein
|
Let’s-Encrypt-Zertifikat erstellt werden (vgl. dazu die Abschnitte <a
|
href="#kap-hsadmin-domain-anlegen">Domain in HSAdmin anlegen</a> und
|
<a href="#kap-domain-optionen">Domain-Optionen</a>. Daten können so
|
ohne weitere Vorbereitung über HTTPS ausgeliefert werden.</p>
|
<section id="kap-tls-standardkonfiguration" class="level3">
|
<h3>Standardkonfiguration</h3>
|
<p>Pro aufgeschalteter Domain ist ein Zertifikat möglich .</p>
|
<p>TLS-Inhalte werden durch die Verzeichnisse</p>
|
<ul>
|
<li>cgi-ssl</li>
|
<li>fastcgi-ssl</li>
|
<li>htdocs-ssl</li>
|
</ul>
|
<p>von Nicht-TLS-Inhalten getrennt. Die Ordnerstruktur im Verzeichnis
|
eines Domain-Admin wird in Abschnitt <a
|
href="#kap-einstieg-ordnerstruktur">Ordnerstruktur</a>
|
beschrieben.</p>
|
</section>
|
<section id="mögliche-varianten" class="level3">
|
<h3>Mögliche Varianten</h3>
|
<section id="tls-seiten-und-nicht-tls-seiten-in-einem-verzeichnis"
|
class="level4">
|
<h4>TLS-Seiten und Nicht-TLS-Seiten in einem Verzeichnis</h4>
|
<p>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.</p>
|
<!-- todo: Mit einem Beispiel erklären -->
|
</section>
|
<section id="automatisch-auf-tls" class="level4">
|
<h4>Automatisch auf TLS</h4>
|
<p>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.</p>
|
<!-- todo: Mit einem Beispiel erklären -->
|
</section>
|
</section>
|
<section id="zertifikate-einer-zertifizierungsstelle" class="level3">
|
<h3>Zertifikate einer Zertifizierungsstelle</h3>
|
<p>Für die Installation eines Zertifikate einer Zertifizierungsstelle
|
muss der Paket-Admin 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 <a
|
href="https://wiki.hostsharing.net/index.php?title=TLS_/_SSL">TLS/SSL</a>
|
beschrieben.</p>
|
<p>Für die Aktivierung des Zertifikates wird ein Auftrag an <a
|
href="mailto:service@hostsharing.net"
|
class="email">service@hostsharing.net</a> gesendet. Die Aktivierung
|
des Zertifikats durch den Service ist kostenpflichtig.</p>
|
<!-- Evtl. ausführlich beschreiben und aus Wiki übernehmen. -->
|
</section>
|
<section id="kap-le-einrichten" class="level3">
|
<h3>Let´s Encrypt einrichten</h3>
|
<p>Wenn Sie bei der Aufschaltung der Domain noch kein Let’s Encrypt
|
Zertifikat eingerichtet haben, können Sie dies nachträglich
|
erledigen.</p>
|
<p>Melden Sie sich mit dem Benutzernamen Ihres Paket-Admin beim
|
Webfrontend von HSAdmin unter <a href="https://admin.hostsharing.net"
|
class="uri">https://admin.hostsharing.net</a> an. Wählen Sie im linken
|
Feld den Eintrag <code>Web-Paket</code> aus. Im rechten Feld
|
aktivieren Sie den Reiter <code>Domain</code> und wählen anschließend
|
die Domain aus, für die Sie Let's Encrypt einrichten möchten.</p>
|
<p>Klicken Sie anschließend das Editier-Symbol
|
<code>Ausgewählten Eintrag bearbeiten</code>, um das Bearbeitungsmenü
|
zu öffnen:</p>
|
<figure>
|
<img src="images/hsadmin-domain-anlegen-2.jpg" style="width:100.0%"
|
alt="Domain in HSAdmin auswählen" />
|
<figcaption aria-hidden="true">Domain in HSAdmin
|
auswählen</figcaption>
|
</figure>
|
<p>Setzen Sie anschließend im Feld <code>Domain-Optionen</code> das
|
Häkchen bei <code>Let's Encrypt-Zertifikat</code>. Speichern Sie die
|
Einstellung mit einem Klick auf den Button <code>OK</code>.</p>
|
<figure>
|
<img src="images/hsadmin-domain-bearbeiten.jpg" style="width:100.0%"
|
alt="Das Bearbeitungsformular einer Domain" />
|
<figcaption aria-hidden="true">Das Bearbeitungsformular einer
|
Domain</figcaption>
|
</figure>
|
<p>Sie können jede Subdomain, für die ein Let’s-Encrypt-Zertifikat
|
erstellt werden soll, einzeln in der Liste
|
<code>gültige Subdomains</code> eintragen. Alternativ können Sie das
|
Wildcard-Symbol <code>*</code> 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.</p>
|
<p>Bis zur Zertifizierung vergehen normalerweise nur 2-3 Minuten, es
|
kann jedoch auch bis zu 36 Std dauern.</p>
|
<p>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
|
<code>dns1.hostsharing.net</code>, <code>dns2.hostsharing.net</code>
|
und <code>dns3.hostsharing.net</code>.</p>
|
</section>
|
<section id="filemapping-ohne-tls" class="level3">
|
<h3>Filemapping ohne TLS</h3>
|
<p>In der folgenden Grafik ist der Entscheidungsweg beschrieben, der
|
durchlaufen wird, um einem anfragenden Browser die richtige Datei
|
auszuliefern. TLS ist nicht aktiv.</p>
|
<figure>
|
<img src="images/filemap-ohne-tls.svg" style="width:100.0%"
|
alt="Mapping ohne TLS" />
|
<figcaption aria-hidden="true">Mapping ohne TLS</figcaption>
|
</figure>
|
<p>Zunächst wird für die Anfrage
|
<code>http://www.example.com/<path></code> der Virtual Host
|
gesucht, der zum FQDN (Fully Qualified Domain Name) passt.
|
Anschließend entscheiden folgende Fragen über den weiteren Verlauf des
|
Entscheidungswegs.</p>
|
<ol type="1">
|
<li><p>Starten wir mit cgi-bin?</p>
|
<ol type="a">
|
<li><p>Ja: Das Verzeichnis <code>cgi-bin</code> wird zum
|
Wurzelverzeichnis und eine passende Datei daraus wird
|
ausgeliefert.</p></li>
|
<li><p>Nein: Weiter zu Frage 2</p></li>
|
</ol></li>
|
<li><p>Starten wir mit fastcgi?</p>
|
<ol type="a">
|
<li><p>Ja: Das Verzeichnis <code>fastcgi</code> wird zum
|
Wurzelverzeichnis und eine passende Datei daraus wird
|
ausgeliefert.</p></li>
|
<li><p>Nein aber es gibt einen FQDN-Treffer, deshalb wird
|
<code>htdocs</code> zum Wurzelverzeichnis und eine passende Datei
|
daraus ausgeliefert. Ist das nicht der Fall geht es weiter zu Frage
|
3.</p></li>
|
</ol></li>
|
<li><p>Gibt es eine passende Sub-Domain?</p>
|
<ol type="a">
|
<li><p>Ja: Das Verzeichnis <code>subs</code> wird zum
|
Wurzelverzeichnis und eine passende Datei daraus wird
|
ausgeliefert.</p></li>
|
<li><p>Nein: Weiter zu Frage 4</p></li>
|
</ol></li>
|
<li><p>Ist das Verzeichnis <code>htdocs</code> als Fallback
|
konfiguriert?</p>
|
<ol type="a">
|
<li><p>Ja: Das Verzeichnis <code>htdocs</code> wird zum
|
Wurzelverzeichnis und eine passende Datei daraus
|
ausgeliefert.</p></li>
|
<li><p>Nein: Es wurde nichts gefunden. Wir liefern die Fehlermeldung
|
404 aus.</p></li>
|
</ol></li>
|
</ol>
|
</section>
|
<section id="filemapping-mit-tls" class="level3">
|
<h3>Filemapping mit TLS</h3>
|
<p>In der folgenden Grafik ist der Entscheidungsweg beschrieben, der
|
durchlaufen wird, um einem anfragenden Browser die richtige Datei
|
auszuliefern. Die Website wird über <code>https</code> aufgerufen,
|
sodass TLS aktiv ist.</p>
|
<figure>
|
<img src="images/filemap-mit-tls.svg" style="width:100.0%"
|
alt="Mapping mit TLS" />
|
<figcaption aria-hidden="true">Mapping mit TLS</figcaption>
|
</figure>
|
<p>Zunächst wird für die Anfrage
|
<code>https://www.example.com/<path></code> der Virtual Host
|
gesucht, der zum FQDN (Fully Qualified Domain Name) passt.
|
Anschließend entscheiden folgende Fragen über den weiteren Verlauf des
|
Entscheidungswegs.</p>
|
<ol type="1">
|
<li><p>Starten wir mit cgi-ssl?</p>
|
<ol type="a">
|
<li><p>Ja: Das Verzeichnis <code>cgi-ssl</code> wird zum
|
Wurzelverzeichnis und eine passende Datei daraus wird
|
ausgeliefert.</p></li>
|
<li><p>Nein: Weiter zu Frage 2</p></li>
|
</ol></li>
|
<li><p>Starten wir mit fastcgi-ssl?</p>
|
<ol type="a">
|
<li><p>Ja: Das Verzeichnis <code>fastcgi-ssl</code> wird zum
|
Wurzelverzeichnis und eine passende Datei daraus wird
|
ausgeliefert.</p></li>
|
<li><p>Nein aber es gibt einen FQDN-Treffer, deshalb wird
|
<code>htdocs-ssl</code> zum Wurzelverzeichnis und eine passende Datei
|
daraus ausgeliefert. Ist das nicht der Fall geht es weiter zu Frage
|
3.</p></li>
|
</ol></li>
|
<li><p>Gibt es eine passende Sub-Domain?</p>
|
<ol type="a">
|
<li><p>Ja: Das Verzeichnis <code>subs-ssl</code> wird zum
|
Wurzelverzeichnis und eine passende Datei daraus wird
|
ausgeliefert.</p></li>
|
<li><p>Nein: Weiter zu Frage 4</p></li>
|
</ol></li>
|
<li><p>Ist das Verzeichnis <code>htdocs-ssl</code> als Fallback
|
konfiguriert?</p>
|
<ol type="a">
|
<li><p>Ja: Das Verzeichnis <code>htdocs-ssl</code> wird zum
|
Wurzelverzeichnis und eine passende Datei daraus
|
ausgeliefert.</p></li>
|
<li><p>Nein: Es wurde nichts gefunden. Wir liefern die Fehlermeldung
|
404 aus.</p></li>
|
</ol></li>
|
</ol>
|
</section>
|
</section>
|
<section id="kap-ref-zonefile" class="level2">
|
<h2>Zonefile</h2>
|
<p>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
|
<code>/etc/bind/pri.example.com</code> zu finden.</p>
|
<p>Es ist möglich, ein eigenes Zonefile 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.</p>
|
<section id="das-expandierte-standardzonefile" class="level3">
|
<h3>Das expandierte Standardzonefile</h3>
|
<p>:</p>
|
<pre><code>$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"</code></pre>
|
</section>
|
<section id="kap-ref-zonefile-platzhalter" class="level3">
|
<h3>Platzhalter</h3>
|
<pre><code>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</code></pre>
|
<p>Folgende Werte werden von Hostsharing verwaltet:</p>
|
<p><code><SEKUNDEN></code> für die Anzahl der Sekunden, welche
|
seit dem 01.01.1970 vergangen sind</p>
|
<p><code><FQDN></code> für den vollständigen, qualifizierten
|
Domainnamen der Domain, z.B. <code>example.com</code></p>
|
<p><code><IPv4></code> für die der Domain zugewiesene
|
IPv4-Adresse</p>
|
<p><code><IPv6></code> für die der Domain zugewiesene
|
IPv6-Adresse</p>
|
<p><code><HIVE></code> für den Server, auf dem die Domain
|
gehostet ist, z.B. <code>h20</code></p>
|
<p><code><PAC></code> für das Paket, dem die Domain zugeordnet
|
ist, z.B. <code>xyz00</code></p>
|
</section>
|
<section id="expansion-der-platzhalter" class="level3">
|
<h3>Expansion der Platzhalter</h3>
|
<p>Der Platzhalter für das Gesamtzonefile {DEFAULT_ZONFILE} wird in
|
drei Schritten folgendermaßen expandiert. Zunächst werden die
|
komplexen Platzhalter ersetzt. :</p>
|
<pre><code>{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"</code></pre>
|
<p>Anschließend werden die atomaren Platzhalter ersetzt. :</p>
|
<pre><code>$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"</code></pre>
|
</section>
|
<section id="eigenes-zonefile" class="level3">
|
<h3>Eigenes Zonefile</h3>
|
<p>Es kann für jede aufgeschaltete Domain jeweils ein eigenes
|
Zonefiles angelegt werden. In der Regel ist dies nur bei folgenden
|
Anforderungen notwendig:</p>
|
<ul>
|
<li>Webseiten zu einer Domain oder Sub-Domain bei einem anderen Hoster
|
oder auf einem eigenen Server anbieten</li>
|
<li>Dienste (z.B. E-Mail) bei einem anderen Anbieter betreiben</li>
|
</ul>
|
<p>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 <code>example.com</code> wird als im
|
Verzeichnis <code>~/doms/example.com/etc/</code> als Datei
|
<code>pri.example.com</code> abgelegt und einige Minuten nach dem
|
Speichern automatisch aktiv.</p>
|
<div class="warning">
|
<p>Das unsachgemäße Erstellen oder Fehler im eigenen Zonefile können
|
zur Nichterreichbarkeit der Domain und zum Verlust von E-Mails
|
führen!</p>
|
</div>
|
<p>Im Wiki der Mitglieder finden sich <a
|
href="https://wiki.hostsharing.net/index.php?title=Simple_Zonefile_Howto">Beispiele
|
für eigene Zonefiles</a>.</p>
|
</section>
|
<section id="kontrolle-der-änderungen" class="level3">
|
<h3>Kontrolle der Änderungen</h3>
|
<p>Durchgeführte Änderungen am Zonefile können mit Hilfe der Logdatei
|
named.log überprüft werden:</p>
|
<pre class="console"><code>$ tail -f /var/log/named/named.log
|
$ tail -f /var/log/named/named.log | grep example.com</code></pre>
|
<p>Nach einer erfolgreichen Übertragung der DNS Zone zu den drei
|
DNS-Servern finden sich in der Log-Datei etwa die folgenden sechs
|
Zeilen:</p>
|
<pre class="console"><code>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</code></pre>
|
<p>Zur Überprüfung von Änderungen am Zonefile kann zusätzlich die
|
Seriennummer in den DNS-Servern mit der aktuellen Seriennummer im
|
Zonefile verglichen werden:</p>
|
<pre class="console"><code>$ dig -t SOA @dns1.hostsharing.net example.com
|
$ cat /etc/bind/pri.example.com</code></pre>
|
<p>Es findet sich jeweils die Seriennummer (im obigen Log-Auszug die
|
'1576667187') im SOA Record.</p>
|
</section>
|
<section id="eigenes-zonefile-deaktivieren" class="level3">
|
<h3>Eigenes Zonefile deaktivieren</h3>
|
<p>Im Verzeichnis <code>~/doms/example.com/etc/</code> das vorhandene
|
Zonefile (pri.example.com) leeren (0 Bytes). Das leere Zonefile wird
|
durch einen Robot gelöscht und es gilt das Standardzonefile.</p>
|
</section>
|
</section>
|
<section id="kap-hsadmin" class="level2">
|
<h2>HSAdmin</h2>
|
<p>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
|
<code class="interpreted-text"
|
role="numref">kap-hsadmin-einstieg</code> vorgestellt wird.</p>
|
<p>In diesem Kapitel geht es um den HSAdmin-Client <code
|
class="interpreted-text" role="command">hsscript</code>, der in der
|
Konsole benutzt wird.</p>
|
<p>HSAdmin verfügt über folgende Module:</p>
|
<table>
|
<caption>Die Module von HSAdmin</caption>
|
<colgroup>
|
<col style="width: 25%" />
|
<col style="width: 75%" />
|
</colgroup>
|
<thead>
|
<tr class="header">
|
<th style="text-align: left;">Modul</th>
|
<th style="text-align: left;">Erläuterung</th>
|
</tr>
|
</thead>
|
<tbody>
|
<tr class="odd">
|
<td style="text-align: left;"><code>user</code></td>
|
<td style="text-align: left;">Modul zur Nutzerverwaltung</td>
|
</tr>
|
<tr class="even">
|
<td style="text-align: left;"><code>mysqldb</code></td>
|
<td style="text-align: left;">Modul zur Verwaltung von
|
MySQL-Datenbanken</td>
|
</tr>
|
<tr class="odd">
|
<td style="text-align: left;"><code>mysqluser</code></td>
|
<td style="text-align: left;">Modul zur Verwaltung vom
|
MySQL-Datenbanknutzern</td>
|
</tr>
|
<tr class="even">
|
<td style="text-align: left;"><code>postgresqldb</code></td>
|
<td style="text-align: left;">Modul zur Verwaltung von
|
PostgreSQL-Datenbanken</td>
|
</tr>
|
<tr class="odd">
|
<td style="text-align: left;"><code>postgresqluser</code></td>
|
<td style="text-align: left;">Modul zur Verwaltung von
|
PostgreSQL-Datenbanknutzern</td>
|
</tr>
|
<tr class="even">
|
<td style="text-align: left;"><code>emailaddress</code></td>
|
<td style="text-align: left;">Modul zur Verwaltung von
|
E-Mail-Adressen</td>
|
</tr>
|
<tr class="odd">
|
<td style="text-align: left;"><code>emailalias</code></td>
|
<td style="text-align: left;">Modul zur Verwaltung von
|
E-Mail-Aliasen</td>
|
</tr>
|
<tr class="even">
|
<td style="text-align: left;"><code>domain</code></td>
|
<td style="text-align: left;">Modul zur Verwaltung von Domains in
|
einem Web-Paket</td>
|
</tr>
|
<tr class="odd">
|
<td style="text-align: left;"><code>q</code></td>
|
<td style="text-align: left;">Modul zur Suche von Systemaufträgen von
|
HSAdmin</td>
|
</tr>
|
</tbody>
|
</table>
|
<p>Die HSAdmin-Module verfügen über folgenden Funktionen:</p>
|
<table>
|
<caption>Die Funktionen von HSAdmin</caption>
|
<thead>
|
<tr class="header">
|
<th style="text-align: left;">Funktion</th>
|
<th style="text-align: left;">Erläuterung</th>
|
</tr>
|
</thead>
|
<tbody>
|
<tr class="odd">
|
<td style="text-align: left;">search</td>
|
<td style="text-align: left;">suchen</td>
|
</tr>
|
<tr class="even">
|
<td style="text-align: left;">add</td>
|
<td style="text-align: left;">hinzufügen</td>
|
</tr>
|
<tr class="odd">
|
<td style="text-align: left;">update</td>
|
<td style="text-align: left;">aktualisieren</td>
|
</tr>
|
<tr class="even">
|
<td style="text-align: left;">remove</td>
|
<td style="text-align: left;">löschen</td>
|
</tr>
|
</tbody>
|
</table>
|
<section id="kap-hsadmin-syntax" class="level3">
|
<h3>Syntax</h3>
|
<p>Die Funktionen von HSAdmin können über das Kommandozeilenprogramm
|
<code>hsscript</code> aufgerufen werden, welches Befehle per
|
Parameter, Dateiübergabe oder interaktiv entgegennimmt. Der Aufruf
|
erfolgt nach folgender Syntax:</p>
|
<pre class="console"><code>$ hsscript -u <Benutzer> -e <Befehl>...</code></pre>
|
<p>Die folgenden Optionen können übergeben werden.</p>
|
<dl>
|
<dt><code>-u \--user</code></dt>
|
<dd>
|
<p>Benutzer, welcher zur Authentifizierung und Autorisierung verwendet
|
werden soll, zum Beispiel <code>xyz00</code>.</p>
|
</dd>
|
<dt><code>-r \--runas</code></dt>
|
<dd>
|
<p>Benutzer, mit dessen Rechten der Befehl ausgeführt werden soll, zum
|
Beispiel <code>xzy00-doms</code>.</p>
|
</dd>
|
<dt><code>-e \--expr</code></dt>
|
<dd>
|
<p>Der Befehl, der ausgeführt werden soll. Er setzt sich aus einer
|
Reihe von Parametern zusammen.</p>
|
</dd>
|
</dl>
|
<p>Der Befehl hat folgende Syntax:</p>
|
<pre><code>module.function({where:{field:'value',...}, set:{field:'value',...}}) </code></pre>
|
<table>
|
<caption>Die Parameter</caption>
|
<colgroup>
|
<col style="width: 20%" />
|
<col style="width: 79%" />
|
</colgroup>
|
<thead>
|
<tr class="header">
|
<th style="text-align: left;">Parameter</th>
|
<th style="text-align: left;">Erläuterung</th>
|
</tr>
|
</thead>
|
<tbody>
|
<tr class="odd">
|
<td style="text-align: left;">module</td>
|
<td style="text-align: left;">Modul, dessen Funktion aufgerufen werden
|
soll (z.B. <code>user</code> oder <code>mysqldb</code>)</td>
|
</tr>
|
<tr class="even">
|
<td style="text-align: left;">function</td>
|
<td style="text-align: left;">Funktion, welche aufgerufen werden soll
|
(<code>search</code>, <code>add</code>, <code>update</code>,
|
<code>remove</code>)</td>
|
</tr>
|
<tr class="odd">
|
<td style="text-align: left;">where</td>
|
<td style="text-align: left;">selektiert nach Wert eines oder mehrerer
|
Felder</td>
|
</tr>
|
<tr class="even">
|
<td style="text-align: left;">set</td>
|
<td style="text-align: left;">setzt oder aktualisiert den Wert eines
|
oder mehrerer Felder</td>
|
</tr>
|
</tbody>
|
</table>
|
<p>Die Module und Funktionen werden in den folgenden Kapiteln
|
erklärt.</p>
|
<dl>
|
<dt><code>-f \--file</code></dt>
|
<dd>
|
<p>Datei, aus welcher Befehle gelesen und ausgeführt werden sollen.
|
Lesen Sie dazu <code class="interpreted-text"
|
role="numref">kap-hsscript-skript</code>.</p>
|
</dd>
|
<dt><code>-i \--interactive</code></dt>
|
<dd>
|
<p>Das Programm startet im interaktiven Modus. Die Befehle können am
|
Kommandozeilen-Prompt eingegeben werden.</p>
|
</dd>
|
</dl>
|
</section>
|
<section id="kap-modul-user" class="level3">
|
<h3>Modul user</h3>
|
<section id="funktionen" class="level4">
|
<h4>Funktionen</h4>
|
<dl>
|
<dt><code>user.search</code></dt>
|
<dd>
|
<p>Suche Benutzer nach den im Befehlsausdruck angegebenen Feldern und
|
Werten</p>
|
</dd>
|
<dt><code>user.add</code></dt>
|
<dd>
|
<p>Füge einen neuen Benutzer nach den im Befehlsausdruck angegebenen
|
Feldern und Werten hinzu.</p>
|
</dd>
|
<dt><code>user.update</code></dt>
|
<dd>
|
<p>Aktualisiere einen Benutzer nach den im Befehlsausdruck angegebenen
|
Feldern und Werten.</p>
|
</dd>
|
<dt><code>user.remove</code></dt>
|
<dd>
|
<p>Lösche einen Benutzer nach den im Befehlsausdruck angegebenen
|
Feldern und Werten.</p>
|
</dd>
|
</dl>
|
</section>
|
<section id="editierbare-felder" class="level4">
|
<h4>Editierbare Felder</h4>
|
<p>Das HSAdmin-Modul <code>user</code> kann entsprechend der folgenden
|
Befehlssyntax von <code>HSAdmin</code> Felder setzen oder
|
verändern:</p>
|
<pre><code>user.function({where:{field:'value',...}, set:{field:'value',...}})</code></pre>
|
<p>Im Modul <code>user</code> stehen folgende Felder zur
|
Verfügung.</p>
|
<dl>
|
<dt><code>name</code></dt>
|
<dd>
|
<p>Benutzerkennung (z.B. xyz00-abc)</p>
|
</dd>
|
<dt><code>comment</code></dt>
|
<dd>
|
<p>Kommentar, in dem zum Beispiel die Funktion des Benutzers
|
beschrieben werden kann</p>
|
</dd>
|
<dt><code>password</code></dt>
|
<dd>
|
<p>Das Passwort</p>
|
</dd>
|
<dt><code>shell</code></dt>
|
<dd>
|
<p>Die zugewiesene Shell (z.B. <code>/bin/bash</code>)</p>
|
</dd>
|
<dt><code>quota_softlimit</code></dt>
|
<dd>
|
<p>Das zugewiesene Quota in Megabyte</p>
|
</dd>
|
<dt><code>quote_hardlimit</code></dt>
|
<dd>
|
<p>Grenze der Grace Period, bis zu der Überschreitungen des Softlimit
|
toleriert werden. Angabe in Megabyte</p>
|
</dd>
|
</dl>
|
</section>
|
<section id="beispiele" class="level4">
|
<h4>Beispiele</h4>
|
<p>In einer interaktiven Sitzung wird mit folgendem Befehl der neue
|
Benutzer <code>xyz00-mustermann</code> angelegt.</p>
|
<pre class="console"><code>xyz00@hsadmin> user.add ({set:{name:'xyz00-mustermann',comment:'Max Mustermann',password:'!1?2-3aBc',shell:'/bin/bash'}})</code></pre>
|
<p>Man kann alle Informationen zu einem Nutzer abfragen:</p>
|
<pre class="console"><code>xyz00@hsadmin> user.search ({where:{name:'xyz00-mustermann'}})</code></pre>
|
<p>Einstellungen können nachträglich verändert werden. Dafür wird der
|
Befehl <code>user.update</code> benutzt. Im Befehlsausdruck wird
|
zunächst mit <code>where</code> nach einem Datensatz gesucht, auf den
|
mit <code>set</code> die Veränderung angewendet wird. Im ersten
|
Beispiel wird für den Benutzer <code>xyz00-mustermann</code> ein neues
|
Passwort gesetzt. Im zweiten Beispiel bekommt der Benutzer eine andere
|
Shell zugewiesen und im dritten wird ein Quota gesetzt.</p>
|
<pre class="console"><code>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'}})</code></pre>
|
<p>Natürlich können wir Benutzer mit Hilfe des Kommandozeilen-Tools
|
auch wieder entfernen. Im folgenden Beispiel wird der Benutzer
|
<code>xyz00-mustermann</code> mit dem Befehl <code>user.remove</code>
|
gelöscht.</p>
|
<pre class="console"><code>xyz00@hsadmin> user.remove ({where:{name:'xyz00-mustermann'}})</code></pre>
|
</section>
|
</section>
|
<section id="kap-modul-domain" class="level3">
|
<h3>Modul domain</h3>
|
<section id="funktionen" class="level4">
|
<h4>Funktionen</h4>
|
<dl>
|
<dt><code>domain.search</code></dt>
|
<dd>
|
<p>Suche Domain nach den im Befehlsausdruck angegebenen Feldern und
|
Werten</p>
|
</dd>
|
<dt><code>domain.add</code></dt>
|
<dd>
|
<p>Füge eine neue Domain nach den im Befehlsausdruck angegebenen
|
Feldern und Werten hinzu.</p>
|
</dd>
|
<dt><code>domain.update</code></dt>
|
<dd>
|
<p>Aktualisiere eine Domain nach den im Befehlsausdruck angegebenen
|
Feldern und Werten.</p>
|
</dd>
|
<dt><code>domain.remove</code></dt>
|
<dd>
|
<p>Lösche eine Domain nach den im Befehlsausdruck angegebenen Feldern
|
und Werten.</p>
|
</dd>
|
</dl>
|
</section>
|
<section id="editierbare-felder" class="level4">
|
<h4>Editierbare Felder</h4>
|
<p>Das HSAdmin-Modul <code>domain</code> kann entsprechend der
|
folgenden Befehlssyntax von <code>HSAdmin</code> Felder setzen oder
|
verändern:</p>
|
<pre><code>domain.function({where:{field:'value',...}, set:{field:'value',...}})</code></pre>
|
<p>Im Modul <code>domain</code> stehen folgende Felder zur
|
Verfügung.</p>
|
<dl>
|
<dt><code>name</code></dt>
|
<dd>
|
<p>Name einer Domain</p>
|
</dd>
|
<dt><code>user</code></dt>
|
<dd>
|
<p>Name des Domain-Admins</p>
|
</dd>
|
<dt><code>validsubdomainnames</code></dt>
|
<dd>
|
<p>leichtgewichtige Subdomains in diesem Virtual-Host des Webservers,
|
gültige Werte: <code>*</code> für beliebige Subdomains oder eine
|
kommaseparierte Liste: <code>www,blog,other</code></p>
|
</dd>
|
<dt><code>greylisting</code></dt>
|
<dd>
|
<p>E-Mails werden verzögert durch den Mailserver angenommen, siehe
|
<code>Greylisting</code>. Ist die Option deaktivert, werden E-Mails
|
ohne Verzögerung angenommen.</p>
|
</dd>
|
<dt><code>multiviews</code></dt>
|
<dd>
|
<p>Der Webserver berücksichtigt Einstellungen im Browser beim Abruf
|
einer Domain (z.B. eine bevorzugte Sprache). Die Option kann mit einer
|
<code>.htaccess</code>-Datei für jedes Verzeichnis konfiguriert
|
werden.</p>
|
</dd>
|
<dt><code>indexes</code></dt>
|
<dd>
|
<p>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.</p>
|
</dd>
|
<dt><code>htdocsfallback</code></dt>
|
<dd>
|
<p>Der Webserver leitet auf die Hauptdomain, wenn keine Sub-Domain
|
angelegt ist. Ist die Option deaktivert, wird ein Fehler 404
|
ausgegeben: Seite nicht gefunden.</p>
|
</dd>
|
<dt><code>includes</code></dt>
|
<dd>
|
<p>Der Webserver erkennt <code>SSI</code>-Komandos und -Dateien. Die
|
Option kann mit einer .htaccess-Datei für jedes Verzeichnis
|
konfiguriert werden.</p>
|
</dd>
|
<dt><code>backupmxforexternalmx</code></dt>
|
<dd>
|
<p>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)</p>
|
</dd>
|
<dt><code>letsencrypt</code></dt>
|
<dd>
|
<p>Es wird automatisch ein TLS Zertifikat für diese Domain und alle im
|
Feld „validsubdomainnames” angegebenen Subdomains erzeugt</p>
|
</dd>
|
<dt><code>autoconfig</code></dt>
|
<dd>
|
<p>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</p>
|
</dd>
|
</dl>
|
<p>::: note Die Option <code>backupmxforexternalmx</code> erfordert
|
Änderungen am <code class="interpreted-text"
|
role="doc">Zonefile<../zonefile/index></code> einer Domain.
|
:::</p>
|
</section>
|
<section id="beispiele" class="level4">
|
<h4>Beispiele</h4>
|
<p>Mit dem folgenden Befehl schalten wir die Domain
|
<code>hs-example.de</code> auf und ordnen Sie dem Domain-Admin
|
<code>xyz00-hsexample</code> zu.</p>
|
<pre class="console"><code>xyz00@hsadmin> domain.add({set:{name:'hs-example.de',user:'xyz00-hsexample'}})</code></pre>
|
<p>Mit dem Befehl <code>domain.search</code> werden alle Informationen
|
zu einer Domain angezeigt. Die gesuchte Domain wird mit dem
|
Befehlsausdruck <code>where</code> ausgewählt.</p>
|
<pre class="console"><code>xyz00@hsadmin> domain.search({where:{name:'hs-example.de'}})</code></pre>
|
<p>Und mit dem Befehl <code>domain.remove</code> können wir eine
|
Domain entfernen.</p>
|
<pre class="console"><code>xyz00@hsadmin> domain.remove({where:{name:'hs-example.de'}})</code></pre>
|
<p>Mit dem Befehl <code>domain.update</code> 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.</p>
|
<pre class="console"><code>xyz00@hsadmin> domain.update({where:{name:'hs-example.de'},set:{domainoptions:['htdocsfallback','indexes','greylisting','letsencrypt','autoconfig']}})</code></pre>
|
</section>
|
</section>
|
<section id="kap-modul-mysqldb" class="level3">
|
<h3>Modul mysqldb</h3>
|
<section id="funktionen" class="level4">
|
<h4>Funktionen</h4>
|
<dl>
|
<dt><code>mysqldb.search</code></dt>
|
<dd>
|
<p>Suche Datenbank nach den im Befehlsausdruck angegebenen Feldern und
|
Werten</p>
|
</dd>
|
<dt><code>mysqldb.add</code></dt>
|
<dd>
|
<p>Füge eine neue Datenbank nach den im Befehlsausdruck angegebenen
|
Feldern und Werten hinzu.</p>
|
</dd>
|
<dt><code>mysqldb.update</code></dt>
|
<dd>
|
<p>Aktualisiere eine Datenbank nach den im Befehlsausdruck angegebenen
|
Feldern und Werten.</p>
|
</dd>
|
<dt><code>mysqldb.remove</code></dt>
|
<dd>
|
<p>Lösche eine Datenbank nach den im Befehlsausdruck angegebenen
|
Feldern und Werten.</p>
|
</dd>
|
</dl>
|
</section>
|
<section id="editierbare-felder" class="level4">
|
<h4>Editierbare Felder</h4>
|
<p>Das HSAdmin-Modul <code>mysqldb</code> kann entsprechend der
|
folgenden Befehlssyntax von <code>HSAdmin</code> Felder setzen oder
|
verändern:</p>
|
<pre><code>mysqldb.function({where:{field:'value',...}, set:{field:'value',...}})</code></pre>
|
<p>Im Modul <code>mysqldb</code> stehen folgende Felder zur
|
Verfügung.</p>
|
<dl>
|
<dt><code>name</code></dt>
|
<dd>
|
<p>Datenbankname (z.B. xyz00_abc)</p>
|
</dd>
|
<dt><code>owner</code></dt>
|
<dd>
|
<p>Datenbanknutzer (z.B. xyz00_owner)</p>
|
</dd>
|
<dt><code>encoding</code></dt>
|
<dd>
|
<p>Zeichensatz der Datenbank (Standard ist UTF-8)</p>
|
</dd>
|
</dl>
|
</section>
|
<section id="beispiele" class="level4">
|
<h4>Beispiele</h4>
|
<p>Im ersten Beispiel erzeugen wir eine Datenbank mit dem Namen
|
<code>xyz00_abc</code> und legen als Besitzer den Datenbanknutzer
|
<code>xyz00_owner</code> fest.</p>
|
<pre class="console"><code>xyz00@hsadmin> mysqldb.add ({set:{name:'xyz00_abc',owner:'xyz00_owner'}})</code></pre>
|
<p>Bevor man Änderungen an einem Datensatz vornimmt, kann man sich
|
alle Eigenschaften einer Datenbank mit dem Befehl
|
<code>mysqldb.search</code> anzeigen lassen. Die gewünschte Datenbank
|
wird mit dem Befehlsausdruck <code>where</code> ausgewählt.</p>
|
<pre class="console"><code>xyz00@hsadmin> mysqldb.search ({where:{name:'xyz00_abc'}})</code></pre>
|
<p>Und mit dem Befehl <code>mysqldb.remove</code> können Datenbanken
|
gelöscht werden. Die gewünschte Datenbank wird erneut mit dem
|
Befehlsausdruck <code>where</code> ausgewählt.</p>
|
<pre class="console"><code>xyz00@hsadmin> mysqldb.remove ({where:{name:'xyz00_abc'}})</code></pre>
|
</section>
|
</section>
|
<section id="kap-modul-mysqluser" class="level3">
|
<h3>Modul mysqluser</h3>
|
<section id="funktionen" class="level4">
|
<h4>Funktionen</h4>
|
<dl>
|
<dt><code>mysqluser.search</code></dt>
|
<dd>
|
<p>Suche Datenbank-Benutzer nach den im Befehlsausdruck angegebenen
|
Feldern und Werten</p>
|
</dd>
|
<dt><code>mysqluser.add</code></dt>
|
<dd>
|
<p>Füge einen neuen Datenbank-Benutzer nach den im Befehlsausdruck
|
angegebenen Feldern und Werten hinzu.</p>
|
</dd>
|
<dt><code>mysqluser.update</code></dt>
|
<dd>
|
<p>Aktualisiere einen Datenbank-Benutzer nach den im Befehlsausdruck
|
angegebenen Feldern und Werten.</p>
|
</dd>
|
<dt>`mysqluser.remove´</dt>
|
<dd>
|
<p>Lösche einen Datenbank-Benutzer nach den im Befehlsausdruck
|
angegebenen Feldern und Werten.</p>
|
</dd>
|
</dl>
|
</section>
|
<section id="editierbare-felder" class="level4">
|
<h4>Editierbare Felder</h4>
|
<p>Das HSAdmin-Modul <code>mysqluser</code> kann entsprechend der
|
folgenden Befehlssyntax von <code>HSAdmin</code> Felder setzen oder
|
verändern:</p>
|
<pre><code>mysqluser.function({where:{field:'value',...}, set:{field:'value',...}})</code></pre>
|
<p>Im Modul <code>mysqluser</code> stehen folgende Felder zur
|
Verfügung.</p>
|
<dl>
|
<dt><code>name</code></dt>
|
<dd>
|
<p>Name des Datenbank-Benutzers (z.B. <code>xyz00_owner</code>)</p>
|
</dd>
|
<dt><code>password</code></dt>
|
<dd>
|
<p>Passwort des Datenbank-Benutzers</p>
|
</dd>
|
</dl>
|
</section>
|
<section id="beispiele" class="level4">
|
<h4>Beispiele</h4>
|
<p>Im ersten Beispiel fügen wir dem System den Datenbank-Benutzer
|
<code>xyz00_owner</code> hinzu und geben ihm ein Passwort.</p>
|
<pre class="console"><code>xyz00@hsadmin> mysqluser.add({set:{name:'xyz00_owner',password:'!1?2-3aBc'}})</code></pre>
|
<p>In den folgenden beiden Beispielen lassen wir uns zunächst mit dem
|
Befehl <code>mysqluser.search</code> die Informationen zu einem
|
Benutzer anzeigen, den wir mit dem Befehlsausdruck <code>where</code>
|
auswählen. Anschließend entfernen wir diesen Nutzer mit dem Befehl
|
<code>mysqluser.remove</code>.</p>
|
<pre class="console"><code>xyz00@hsadmin> mysqluser.search({where:{name:'xyz00_owner'}})
|
xyz00@hsadmin> mysqluser.remove({where:{name:'xyz00_owner'}})</code></pre>
|
<p>Im letzten Beispiel aktualieren wir einen Benutzereintrag mit dem
|
Befehl <code>mysqluser.update</code>. Der Benutzer wird mit
|
<code>where</code> ausgesucht, anschließend bekommt er mit
|
<code>set</code> ein neues Passwort.</p>
|
<pre class="console"><code>xyz00@hsadmin> mysqluser.update({where:{name:'xyz00_owner'},set:{password:'neues-passwort'}})</code></pre>
|
</section>
|
</section>
|
<section id="kap-modul-postgresqldb" class="level3">
|
<h3>Modul postgresqldb</h3>
|
<section id="funktionen" class="level4">
|
<h4>Funktionen</h4>
|
<dl>
|
<dt><code>postgresqldb.search</code></dt>
|
<dd>
|
<p>Suche Datenbank nach den im Befehlsausdruck angegebenen Feldern und
|
Werten</p>
|
</dd>
|
<dt><code>postgresqldb.add</code></dt>
|
<dd>
|
<p>Füge eine neue Datenbank nach den im Befehlsausdruck angegebenen
|
Feldern und Werten hinzu.</p>
|
</dd>
|
<dt><code>postgresqldb.update</code></dt>
|
<dd>
|
<p>Aktualisiere eine Datenbank nach den im Befehlsausdruck angegebenen
|
Feldern und Werten.</p>
|
</dd>
|
<dt><code>postgresqldb.remove</code></dt>
|
<dd>
|
<p>Lösche eine Datenbank nach den im Befehlsausdruck angegebenen
|
Feldern und Werten.</p>
|
</dd>
|
</dl>
|
</section>
|
<section id="editierbare-felder" class="level4">
|
<h4>Editierbare Felder</h4>
|
<p>Das HSAdmin-Modul <code>postgresqldb</code> kann entsprechend der
|
folgenden Befehlssyntax von <code>HSAdmin</code> Felder setzen oder
|
verändern:</p>
|
<pre><code>postgresqldb.function({where:{field:'value',...}, set:{field:'value',...}})</code></pre>
|
<p>Im Modul <code>postgresqldb</code> stehen folgende Felder zur
|
Verfügung.</p>
|
<dl>
|
<dt><code>name</code></dt>
|
<dd>
|
<p>Datenbankname (z.B. xyz00_abc)</p>
|
</dd>
|
<dt><code>owner</code></dt>
|
<dd>
|
<p>Datenbanknutzer (z.B. xyz00_owner)</p>
|
</dd>
|
<dt><code>encoding</code></dt>
|
<dd>
|
<p>Zeichensatz der Datenbank (Standard ist UTF-8)</p>
|
</dd>
|
</dl>
|
</section>
|
<section id="beispiele" class="level4">
|
<h4>Beispiele</h4>
|
<p>Im ersten Beispiel erzeugen wir die Datenbank
|
<code>xyz00_abc</code> und übergeben ihr als Besitzer den
|
Datenbanknutzer <code>xyz00_owner</code>.</p>
|
<pre class="console"><code>xyz00@hsadmin> postgresqldb.add({set:{name:'xyz00_abc',owner:'xyz00_owner'}})</code></pre>
|
<p>Die den beiden folgenden Beispielen lassen wir uns zunächst mit
|
<code>postgresqldb.search</code> Informationen zur Datenbank
|
<code>xyz00_abc</code> anzeigen. Anschließend löschen wir sie mit
|
<code>postgresqldb.remove</code>.</p>
|
<pre class="console"><code>xyz00@hsadmin> postgresqldb.search({where:{name:'xyz00_abc'}})
|
xyz00@hsadmin> postgresqldb.remove({where:{name:'xyz00_abc'}})</code></pre>
|
</section>
|
</section>
|
<section id="kap-modul-postgresqluser" class="level3">
|
<h3>Modul postgresqluser</h3>
|
<section id="funktionen" class="level4">
|
<h4>Funktionen</h4>
|
<dl>
|
<dt><code>postgresqluser.search</code></dt>
|
<dd>
|
<p>Suche Datenbank-Benutzer nach den im Befehlsausdruck angegebenen
|
Feldern und Werten</p>
|
</dd>
|
<dt><code>postgresqluser.add</code></dt>
|
<dd>
|
<p>Füge einen neuen Datenbank-Benutzer nach den im Befehlsausdruck
|
angegebenen Feldern und Werten hinzu.</p>
|
</dd>
|
<dt><code>postgresqluser.update</code></dt>
|
<dd>
|
<p>Aktualisiere einen Datenbank-Benutzer nach den im Befehlsausdruck
|
angegebenen Feldern und Werten.</p>
|
</dd>
|
<dt><code>postgresqluser.remove</code></dt>
|
<dd>
|
<p>Lösche einen Datenbank-Benutzer nach den im Befehlsausdruck
|
angegebenen Feldern und Werten.</p>
|
</dd>
|
</dl>
|
</section>
|
<section id="editierbare-felder" class="level4">
|
<h4>Editierbare Felder</h4>
|
<p>Das HSAdmin-Modul <code>postgresqluser</code> kann entsprechend der
|
folgenden Befehlssyntax von <code>HSAdmin</code> Felder setzen oder
|
verändern:</p>
|
<pre><code>postgresqluser.function({where:{field:'value',...}, set:{field:'value',...}})</code></pre>
|
<p>Im Modul <code>postgresqluser</code> stehen folgende Felder zur
|
Verfügung.</p>
|
<dl>
|
<dt><code>name</code></dt>
|
<dd>
|
<p>Name des Datenbank-Benutzers (z.B. <code>xyz00_owner</code>)</p>
|
</dd>
|
<dt><code>password</code></dt>
|
<dd>
|
<p>Passwort des Datenbank-Benutzers</p>
|
</dd>
|
</dl>
|
</section>
|
<section id="beispiele" class="level4">
|
<h4>Beispiele</h4>
|
<p>Im ersten Beispiel fügen wir dem System den Datenbank-Benutzer
|
<code>xyz00_owner</code> hinzu und geben ihm ein Passwort.</p>
|
<pre class="console"><code>xyz00@hsadmin> postgresqluser.add ({set:{name:'xyz00_owner',password:'!1?2-3aBc'}})</code></pre>
|
<p>Mit <code>postgresqluser.search</code> können wir die Eigenschaften
|
eines Benutzers anzeigen. Der gewünschte Benutzer wird mit
|
<code>where</code> ausgewählt.</p>
|
<pre class="console"><code>xyz00@hsadmin> postgresqluser.search ({where:{name:'xyz00_owner'}})</code></pre>
|
<p>Mit <code>postgresqluser.update</code> können Eigenschaften eines
|
Benutzers verändert werden. Der gewünschte Benutzer wird mit
|
<code>where</code> ausgewählt. Anschliend wird in unserem Beispiel mit
|
<code>set</code> ein neues Passwort gesetzt.</p>
|
<pre class="console"><code>xyz00@hsadmin> postgresqluser.update ({where:{name:'xyz00_owner'},set:{password:'neues-passwort'}})</code></pre>
|
<p>Und zuletzt können Datenbank-Benutzer auch wieder gelöscht werden.
|
Dazu benutzen wir den Befehl <code>postgresqluser.remove</code>. Der
|
zu löschende Benutzer wird mit <code>where</code> ausgewählt.</p>
|
<pre class="console"><code>xyz00@hsadmin> postgresqluser.remove ({where:{name:'xyz00_owner'}})</code></pre>
|
</section>
|
</section>
|
<section id="kap-modul-emailaddress" class="level3">
|
<h3>Modul emailaddress</h3>
|
<section id="funktionen" class="level4">
|
<h4>Funktionen</h4>
|
<dl>
|
<dt><code>emailaddress.search</code></dt>
|
<dd>
|
<p>Suche E-Mail-Adresse nach den im Befehlsausdruck angegebenen
|
Feldern und Werten</p>
|
</dd>
|
<dt><code>emailaddress.add</code></dt>
|
<dd>
|
<p>Füge eine neue E-Mail-Adresse nach den im Befehlsausdruck
|
angegebenen Feldern und Werten hinzu.</p>
|
</dd>
|
<dt><code>emailaddress.update</code></dt>
|
<dd>
|
<p>Aktualisiere eine E-Mail-Adresse nach den im Befehlsausdruck
|
angegebenen Feldern und Werten.</p>
|
</dd>
|
<dt><code>emailaddress.remove</code></dt>
|
<dd>
|
<p>Lösche eine E-Mail-Adresse nach den im Befehlsausdruck angegebenen
|
Feldern und Werten.</p>
|
</dd>
|
</dl>
|
</section>
|
<section id="editierbare-felder" class="level4">
|
<h4>Editierbare Felder</h4>
|
<p>Das HSAdmin-Modul <code>emailaddress</code> kann entsprechend der
|
folgenden Befehlssyntax von <code class="interpreted-text"
|
role="command">HSAdmin</code> Felder setzen oder verändern:</p>
|
<pre><code>emailaddress.function({where:{field:'value',...}, set:{field:'value',...}})</code></pre>
|
<p>Im Modul <code>emailaddress</code> stehen folgende Felder zur
|
Verfügung.</p>
|
<dl>
|
<dt><code>domain</code></dt>
|
<dd>
|
<p>Name einer Domain</p>
|
</dd>
|
<dt><code>localpart</code></dt>
|
<dd>
|
<p>Bezeichnung für den lokalen Teil einer E-Mail-Adresse: der Teil vor
|
<code>@</code>.</p>
|
</dd>
|
<dt><code>target</code></dt>
|
<dd>
|
<p>Ziel einer E-Mail-Adresse, mehrere Ziele werden durch Kommata
|
getrennt</p>
|
</dd>
|
</dl>
|
</section>
|
<section id="beispiele" class="level4">
|
<h4>Beispiele</h4>
|
<p>Mit dem folgenden Befehl erhalten Sie eine Liste aller
|
E-Mail-Adressen der Domain <code>hs-example.de</code>.</p>
|
<pre class="console"><code>xyz00@hsadmin> emailaddress.search({where:{domain:"hs-example.de"}})</code></pre>
|
<p>Mit folgendem Befehl lässt sich eine neue E-Mail-Adresse einrichten
|
und einem Postfach zuordnen:</p>
|
<pre class="console"><code>xyz00@hsadmin> emailaddress.add ({set:{domain:'hs-example.de',localpart:'info',target:'xyz00-hs_example.de'}})</code></pre>
|
<p>Das Programm gibt dann folgende Meldung als Quittierung des Befehls
|
zurück:</p>
|
<pre class="console"><code>[
|
{
|
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'
|
]
|
}
|
]</code></pre>
|
<p>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 (<code>target</code>) lässt sich
|
entweder ändern:</p>
|
<pre class="console"><code>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'
|
]
|
}
|
]</code></pre>
|
<p>Oder man ergänzt die neue E-Mail-Adresse, indem man sie zusätzlich
|
einfügt. Mehrere Ziele werden mit Kommata abgegrenzt.</p>
|
<pre class="console"><code>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'
|
]
|
}
|
]</code></pre>
|
</section>
|
</section>
|
<section id="kap-modul-emailalias" class="level3">
|
<h3>Modul emailalias</h3>
|
<p>Mit diesem Modul können Sie ein E-Mail-Alias setzen. Ein typischer
|
Anwendungsfall wird im Abschnitt <a
|
href="#kap-email-alias">E-mail-Alias einrichten</a> beschrieben.</p>
|
<section id="funktionen" class="level4">
|
<h4>Funktionen</h4>
|
<dl>
|
<dt><code>emailalias.search</code></dt>
|
<dd>
|
<p>Suche E-Mail-Alias nach den im Befehlsausdruck angegebenen Feldern
|
und Werten</p>
|
</dd>
|
</dl>
|
<p><code>emailalias.add</code></p>
|
<p>Füge eine neue E-Mail-Alias nach den im Befehlsausdruck angegebenen
|
Feldern und Werten hinzu.</p>
|
<p><code>emailalias.update</code></p>
|
<p>Aktualisiere eine E-Mail-Alias nach den im Befehlsausdruck
|
angegebenen Feldern und Werten.</p>
|
<p><code>emailalias.remove</code></p>
|
<p>Lösche eine E-Mail-Alias nach den im Befehlsausdruck angegebenen
|
Feldern und Werten.</p>
|
</section>
|
<section id="editierbare-felder" class="level4">
|
<h4>Editierbare Felder</h4>
|
<p>Das HSAdmin-Modul <code>emailalias</code> kann entsprechend der
|
folgenden Befehlssyntax von <code>HSAdmin</code> Felder setzen oder
|
verändern:</p>
|
<pre><code>emailalias.function({where:{field:'value',...}, set:{field:'value',...}})</code></pre>
|
<p>Im Modul <code>emailalias</code> stehen folgende Felder zur
|
Verfügung.</p>
|
<dl>
|
<dt><code>name</code></dt>
|
<dd>
|
<p>Name des E-Mail-Alias</p>
|
</dd>
|
<dt><code>target</code></dt>
|
<dd>
|
<p>Ziel einer E-Mail-Adresse; mehrere Ziele werden durch Kommata
|
getrennt</p>
|
</dd>
|
</dl>
|
</section>
|
<section id="beispiele" class="level4">
|
<h4>Beispiele</h4>
|
<p>Das folgende E-Mail-Alias überschreibt die Voreinstellung für den
|
Paket-Admin <code>xyz00</code>. E-Mails an diesen Benutzer landen
|
nicht mehr in seinem Postfach, sondern werden an die E-Mailadresse
|
<code>webmaster@hs-example.de</code> weitergeleitet.</p>
|
<pre class="console"><code>xyz00@hsadmin> emailalias.add ({set:{name:'xyz00',target:'webmaster@hs-example.de'}})</code></pre>
|
<p>In dem nächsten beiden Beispielen wird zunächst nach der
|
Konfiguration für das E-Mail-Alias <code>xyz00</code> gesucht.
|
Anschließend wird ein Postfach <code>xyz00-mailbox</code> zusätzlich
|
zu der bereits eingetragenen E-Mail-Adresse hinzugefügt. Da das
|
Programm die Felder komplett überschreibt, müssen alle Werte angegeben
|
werden.</p>
|
<pre class="console"><code>xyz00@hsadmin> emailalias.search ({where:{name:'xyz00'}})
|
xyz00@hsadmin> emailalias.update ({where:{name:'xyz00'},set:{target:'xyz00-mailbox,webmaster@hs-example.de'}})</code></pre>
|
<p>Im letzten Beispiel wird das E-Mail-Alias wieder gelöscht, sodass
|
E-Mails an den Paket-Admin wieder an sein Postfach ausgeliefert
|
werden.</p>
|
<pre class="console"><code>xyz00@hsadmin> emailalias.remove ({where:{name:'xyz00'}})</code></pre>
|
</section>
|
</section>
|
<section id="kap-modul-q" class="level3">
|
<h3>Modul q</h3>
|
<section id="funktionen" class="level4">
|
<h4>Funktionen</h4>
|
<dl>
|
<dt><code>q.search</code></dt>
|
<dd>
|
<p>Das HSAdmin-Modul hat nur die Funktion <code>search</code>. 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.</p>
|
</dd>
|
</dl>
|
</section>
|
<section id="beispiele" class="level4">
|
<h4>Beispiele</h4>
|
<pre class="console"><code>$ q.search ({where:{user:'xyz00'}})</code></pre>
|
</section>
|
</section>
|
<section id="kap-hsscript-skript" class="level3">
|
<h3>HSAdmin über Skripte steuern</h3>
|
<p>Im Abschnitt <a href="#kap-hsadmin-syntax">Syntax</a> wurde die
|
Option <code>-f</code> 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.</p>
|
<p>Bevor Sie die eigentliche Wordpress-Software installiert, müssen
|
mehrere Schritte auf der Hostsharing-Plattform erledigt sein.</p>
|
<ol type="1">
|
<li>Es existiert ein Domain-Admin bzw. es wird ein neuer Domain-Admin
|
angelegt.</li>
|
<li>Es wird eine Domain erstellt und dem Domain-Admin zugewiesen.</li>
|
<li>Es wird ein Datenbank-Nutzer angelegt.</li>
|
<li>Es wird eine Datenbank angelegt und dem Datenbank-Nutzer
|
zugewiesen.</li>
|
</ol>
|
<p>Mit der folgenden Skript-Datei kann man diese vier Schritte mit
|
einem Befehl ausführen.</p>
|
<div class="sourceCode" id="cb63"><pre
|
class="sourceCode bash"><code class="sourceCode bash"><span id="cb63-1"><a href="#cb63-1" aria-hidden="true" tabindex="-1"></a><span class="ex">user.add</span> <span class="er">(</span><span class="ex">{set:</span><span class="dt">{name:</span><span class="st">'xyz00-domains'</span><span class="op">,</span><span class="dt">comment:</span><span class="st">'Domain-Admin'</span><span class="op">,</span><span class="dt">password:</span><span class="st">'!1?2-3aBc'</span><span class="op">,</span><span class="dt">shell:</span><span class="st">'/bin/bash'</span><span class="dt">}</span><span class="ex">}</span><span class="kw">)</span></span>
|
<span id="cb63-2"><a href="#cb63-2" aria-hidden="true" tabindex="-1"></a><span class="ex">domain.add</span> <span class="er">(</span><span class="ex">{set:</span><span class="dt">{name:</span><span class="st">'beispiel.de'</span><span class="op">,</span><span class="dt">user:</span><span class="st">'xyz00-domains'</span><span class="dt">}</span><span class="ex">}</span><span class="kw">)</span></span>
|
<span id="cb63-3"><a href="#cb63-3" aria-hidden="true" tabindex="-1"></a><span class="ex">mysqluser.add</span> <span class="er">(</span><span class="ex">{set:</span><span class="dt">{name:</span><span class="st">'xyz00_owner'</span><span class="op">,</span><span class="dt">password:</span><span class="st">'?2?3-4cVg'</span><span class="dt">}</span><span class="ex">}</span><span class="kw">)</span></span>
|
<span id="cb63-4"><a href="#cb63-4" aria-hidden="true" tabindex="-1"></a><span class="ex">mysqldb.add</span> <span class="er">(</span><span class="ex">{set:</span><span class="dt">{name:</span><span class="st">'xyz00_abc'</span><span class="op">,</span><span class="dt">owner:</span><span class="st">'xyz00_owner'</span><span class="dt">}</span><span class="ex">}</span><span class="kw">)</span></span></code></pre></div>
|
<p>In Zeile 1 wird der Domain-Admin erzeugt, in Zeile 2 die Domain
|
<code>beispiel.de</code> 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.</p>
|
<div class="sourceCode" id="cb64"><pre
|
class="sourceCode bash"><code class="sourceCode bash"><span id="cb64-1"><a href="#cb64-1" aria-hidden="true" tabindex="-1"></a><span class="ex">user.add</span> <span class="er">(</span><span class="ex">{set:{</span></span>
|
<span id="cb64-2"><a href="#cb64-2" aria-hidden="true" tabindex="-1"></a><span class="ex">name:</span><span class="st">'xyz00-domains'</span><span class="ex">,</span></span>
|
<span id="cb64-3"><a href="#cb64-3" aria-hidden="true" tabindex="-1"></a><span class="ex">comment:</span><span class="st">'Domain-Admin'</span><span class="ex">,</span></span>
|
<span id="cb64-4"><a href="#cb64-4" aria-hidden="true" tabindex="-1"></a><span class="ex">password:</span><span class="st">'!1?2-3aBc'</span><span class="ex">,</span></span>
|
<span id="cb64-5"><a href="#cb64-5" aria-hidden="true" tabindex="-1"></a><span class="ex">shell:</span><span class="st">'/bin/bash'</span></span>
|
<span id="cb64-6"><a href="#cb64-6" aria-hidden="true" tabindex="-1"></a><span class="er">}}</span><span class="kw">)</span></span>
|
<span id="cb64-7"><a href="#cb64-7" aria-hidden="true" tabindex="-1"></a><span class="ex">domain.add</span> <span class="er">(</span><span class="ex">{set:{</span></span>
|
<span id="cb64-8"><a href="#cb64-8" aria-hidden="true" tabindex="-1"></a><span class="ex">name:</span><span class="st">'beispiel.de'</span><span class="ex">,</span></span>
|
<span id="cb64-9"><a href="#cb64-9" aria-hidden="true" tabindex="-1"></a><span class="ex">user:</span><span class="st">'xyz00-domains'</span></span>
|
<span id="cb64-10"><a href="#cb64-10" aria-hidden="true" tabindex="-1"></a><span class="er">}}</span><span class="kw">)</span></span>
|
<span id="cb64-11"><a href="#cb64-11" aria-hidden="true" tabindex="-1"></a><span class="ex">mysqluser.add</span> <span class="er">(</span><span class="ex">{set:{</span></span>
|
<span id="cb64-12"><a href="#cb64-12" aria-hidden="true" tabindex="-1"></a><span class="ex">name:</span><span class="st">'xyz00_owner'</span><span class="ex">,</span></span>
|
<span id="cb64-13"><a href="#cb64-13" aria-hidden="true" tabindex="-1"></a><span class="ex">password:</span><span class="st">'?2?3-4cVg'</span></span>
|
<span id="cb64-14"><a href="#cb64-14" aria-hidden="true" tabindex="-1"></a><span class="er">}}</span><span class="kw">)</span></span>
|
<span id="cb64-15"><a href="#cb64-15" aria-hidden="true" tabindex="-1"></a><span class="ex">mysqldb.add</span> <span class="er">(</span><span class="ex">{set:{</span></span>
|
<span id="cb64-16"><a href="#cb64-16" aria-hidden="true" tabindex="-1"></a><span class="ex">name:</span><span class="st">'xyz00_abc'</span><span class="ex">,</span></span>
|
<span id="cb64-17"><a href="#cb64-17" aria-hidden="true" tabindex="-1"></a><span class="ex">owner:</span><span class="st">'xyz00_owner'</span></span>
|
<span id="cb64-18"><a href="#cb64-18" aria-hidden="true" tabindex="-1"></a><span class="er">}}</span><span class="kw">)</span></span></code></pre></div>
|
<p>Wenn Sie die Datei unter dem Namen <code>befehlsskript.txt</code>
|
im Verzeichnis des <code>Paket-Admin</code> speichern, können Sie alle
|
Befehle mit einem HSAdmin-Aufruf abarbeiten:</p>
|
<pre class="console"><code>xyz00@h50:~$ hsscript -f befehlsskript.txt</code></pre>
|
<p>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. <code>wordpress-beispiel_de.txt</code>)
|
abspeichern.</p>
|
<div class="admonition">
|
<p>Beachten Sie die richtige Reihenfolge</p>
|
<p>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.</p>
|
<p>Beim Löschen müssen Sie die Reihenfolge umkehren: Datenbank
|
löschen, Datenbank-Nutzer löschen, Domain löschen, Domain-Admin
|
löschen.</p>
|
</div>
|
<p>Noch bequemer ist es, die notwendigen Benutzer, Domains und
|
Datenbanken mit Hilfe eines ausführlicheren JS-Skripts oder über die
|
Python-API anzulegen.</p>
|
<section id="hsadmin-mit-javascript-ansprechen" class="level4">
|
<h4>HSAdmin mit Javascript ansprechen</h4>
|
<p>Im Folgenden zeigen wir zwei JS-Skripts, die in der Regel im
|
Verzeichnis des Paket-Admin 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.</p>
|
<section id="js-skript-zur-anlage-einer-domain" class="level5">
|
<h5>JS-Skript zur Anlage einer Domain</h5>
|
<p>Ein Skript, um eine Domain mit einem gesonderten Domain-Admin
|
anzulegen, könnte so aussehen:</p>
|
<div class="sourceCode" id="cb66"><pre
|
class="sourceCode bash"><code class="sourceCode bash"><span id="cb66-1"><a href="#cb66-1" aria-hidden="true" tabindex="-1"></a><span class="co">#!/usr/local/bin/hsscript -f</span></span>
|
<span id="cb66-2"><a href="#cb66-2" aria-hidden="true" tabindex="-1"></a></span>
|
<span id="cb66-3"><a href="#cb66-3" aria-hidden="true" tabindex="-1"></a><span class="ex">createDomainAndDomainAdmin</span><span class="er">(</span><span class="ex">arguments</span><span class="kw">);</span></span>
|
<span id="cb66-4"><a href="#cb66-4" aria-hidden="true" tabindex="-1"></a></span>
|
<span id="cb66-5"><a href="#cb66-5" aria-hidden="true" tabindex="-1"></a><span class="kw">function</span><span class="fu"> pwGen()</span> <span class="kw">{</span></span>
|
<span id="cb66-6"><a href="#cb66-6" aria-hidden="true" tabindex="-1"></a> <span class="ex">var</span> chars = <span class="st">"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_#%&+!?="</span><span class="kw">;</span></span>
|
<span id="cb66-7"><a href="#cb66-7" aria-hidden="true" tabindex="-1"></a> <span class="ex">var</span> pwLength = 12<span class="kw">;</span></span>
|
<span id="cb66-8"><a href="#cb66-8" aria-hidden="true" tabindex="-1"></a> <span class="ex">var</span> randomstring = <span class="st">''</span><span class="kw">;</span></span>
|
<span id="cb66-9"><a href="#cb66-9" aria-hidden="true" tabindex="-1"></a> <span class="cf">for</span> <span class="kw">(</span><span class="ex">var</span> i=0<span class="kw">;</span> <span class="ex">i</span><span class="op"><</span>pwLength<span class="kw">;</span> <span class="ex">i++</span><span class="kw">)</span> <span class="kw">{</span></span>
|
<span id="cb66-10"><a href="#cb66-10" aria-hidden="true" tabindex="-1"></a> <span class="ex">var</span> rnum = Math.floor<span class="er">(</span><span class="fu">Math.random()</span> <span class="ex">*</span> chars.length<span class="kw">);</span></span>
|
<span id="cb66-11"><a href="#cb66-11" aria-hidden="true" tabindex="-1"></a> <span class="ex">randomstring</span> += chars.substring<span class="er">(</span><span class="ex">rnum,rnum+1</span><span class="kw">);</span></span>
|
<span id="cb66-12"><a href="#cb66-12" aria-hidden="true" tabindex="-1"></a> <span class="kw">}</span></span>
|
<span id="cb66-13"><a href="#cb66-13" aria-hidden="true" tabindex="-1"></a> <span class="cf">return</span> <span class="ex">randomstring</span><span class="kw">;</span></span>
|
<span id="cb66-14"><a href="#cb66-14" aria-hidden="true" tabindex="-1"></a><span class="kw">}</span></span>
|
<span id="cb66-15"><a href="#cb66-15" aria-hidden="true" tabindex="-1"></a></span>
|
<span id="cb66-16"><a href="#cb66-16" aria-hidden="true" tabindex="-1"></a><span class="kw">function</span><span class="fu"> createDomainAndDomainAdmin</span><span class="kw">(</span><span class="ex">args</span><span class="kw">)</span> <span class="kw">{</span></span>
|
<span id="cb66-17"><a href="#cb66-17" aria-hidden="true" tabindex="-1"></a> <span class="ex">var</span> domainName = args[0]<span class="kw">;</span></span>
|
<span id="cb66-18"><a href="#cb66-18" aria-hidden="true" tabindex="-1"></a> <span class="ex">var</span> userName = <span class="st">'xyz00-'</span> + args[0].replace<span class="er">(</span><span class="st">"-"</span><span class="ex">,</span><span class="st">"_"</span><span class="kw">);</span></span>
|
<span id="cb66-19"><a href="#cb66-19" aria-hidden="true" tabindex="-1"></a> <span class="ex">var</span> randomPassword = pwGen<span class="er">(</span><span class="kw">);</span></span>
|
<span id="cb66-20"><a href="#cb66-20" aria-hidden="true" tabindex="-1"></a> <span class="ex">var</span> createdUser = user.add<span class="er">(</span><span class="ex">{set:</span><span class="dt">{name:userName</span><span class="op">,</span><span class="dt">password:randomPassword</span><span class="op">,</span><span class="dt">shell:</span><span class="st">'/bin/bash'</span><span class="dt">}</span><span class="ex">}</span><span class="kw">);</span></span>
|
<span id="cb66-21"><a href="#cb66-21" aria-hidden="true" tabindex="-1"></a> <span class="ex">var</span> createdDomain = domain.add<span class="er">(</span><span class="ex">{set:</span><span class="dt">{name:domainName</span><span class="op">,</span><span class="dt">user:userName}</span><span class="ex">}</span><span class="kw">);</span></span>
|
<span id="cb66-22"><a href="#cb66-22" aria-hidden="true" tabindex="-1"></a> <span class="ex">print</span><span class="er">(</span><span class="st">"created domain "</span> + createdDomain[0].name + <span class="st">" with domainadmin "</span> + createdUser[0].name + <span class="st">" and password "</span> + randomPassword<span class="kw">);</span></span>
|
<span id="cb66-23"><a href="#cb66-23" aria-hidden="true" tabindex="-1"></a><span class="kw">}</span></span></code></pre></div>
|
<p>Die Funktion <code>pwGen()</code> erzeugt ein achtstelliges
|
Passwort aus einer Reihe von vorgegebenen Zeichen. Empfehlenswert sind
|
längere Passworte. Die Funktion
|
<code>createDomainAndDomainAdmin(args)</code> 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.</p>
|
<p>Das Skript wird im Benutzerverzeichnis des Paket-Admin gespeichert
|
und ausführbar gemacht:</p>
|
<pre class="console"><code>xyz00@h50:~$ chmod u+x createdomainandadmin.js</code></pre>
|
<p>Anschließend können Sie es folgendermaßen aufrufen:</p>
|
<pre class="console"><code>xyz00@h50:~$ ./createdomainandadmin.js my-domain.de
|
created domain my-domain.de with domainadmin xyz00-my_domain.de and password slo%haY=</code></pre>
|
<p>Wenn Sie alle Domains mit einem einzigen Domain-Admin verwalten,
|
können Sie den Benutzernamen des Domain-Admin hart kodieren.</p>
|
<div class="sourceCode" id="cb69"><pre
|
class="sourceCode bash"><code class="sourceCode bash"><span id="cb69-1"><a href="#cb69-1" aria-hidden="true" tabindex="-1"></a><span class="co">#!/usr/local/bin/hsscript -f</span></span>
|
<span id="cb69-2"><a href="#cb69-2" aria-hidden="true" tabindex="-1"></a></span>
|
<span id="cb69-3"><a href="#cb69-3" aria-hidden="true" tabindex="-1"></a><span class="ex">createDomainAndDomainAdmin</span><span class="er">(</span><span class="ex">arguments</span><span class="kw">);</span></span>
|
<span id="cb69-4"><a href="#cb69-4" aria-hidden="true" tabindex="-1"></a></span>
|
<span id="cb69-5"><a href="#cb69-5" aria-hidden="true" tabindex="-1"></a><span class="kw">function</span><span class="fu"> pwGen()</span> <span class="kw">{</span></span>
|
<span id="cb69-6"><a href="#cb69-6" aria-hidden="true" tabindex="-1"></a> <span class="ex">var</span> chars = <span class="st">"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_#%&+!?="</span><span class="kw">;</span></span>
|
<span id="cb69-7"><a href="#cb69-7" aria-hidden="true" tabindex="-1"></a> <span class="ex">var</span> string_length = 12<span class="kw">;</span></span>
|
<span id="cb69-8"><a href="#cb69-8" aria-hidden="true" tabindex="-1"></a> <span class="ex">var</span> randomstring = <span class="st">''</span><span class="kw">;</span></span>
|
<span id="cb69-9"><a href="#cb69-9" aria-hidden="true" tabindex="-1"></a> <span class="cf">for</span> <span class="kw">(</span><span class="ex">var</span> i=0<span class="kw">;</span> <span class="ex">i</span><span class="op"><</span>string_length<span class="kw">;</span> <span class="ex">i++</span><span class="kw">)</span> <span class="kw">{</span></span>
|
<span id="cb69-10"><a href="#cb69-10" aria-hidden="true" tabindex="-1"></a> <span class="ex">var</span> rnum = Math.floor<span class="er">(</span><span class="fu">Math.random()</span> <span class="ex">*</span> chars.length<span class="kw">);</span></span>
|
<span id="cb69-11"><a href="#cb69-11" aria-hidden="true" tabindex="-1"></a> <span class="ex">randomstring</span> += chars.substring<span class="er">(</span><span class="ex">rnum,rnum+1</span><span class="kw">);</span></span>
|
<span id="cb69-12"><a href="#cb69-12" aria-hidden="true" tabindex="-1"></a> <span class="kw">}</span></span>
|
<span id="cb69-13"><a href="#cb69-13" aria-hidden="true" tabindex="-1"></a> <span class="cf">return</span> <span class="ex">randomstring</span><span class="kw">;</span></span>
|
<span id="cb69-14"><a href="#cb69-14" aria-hidden="true" tabindex="-1"></a><span class="kw">}</span></span>
|
<span id="cb69-15"><a href="#cb69-15" aria-hidden="true" tabindex="-1"></a></span>
|
<span id="cb69-16"><a href="#cb69-16" aria-hidden="true" tabindex="-1"></a><span class="kw">function</span><span class="fu"> createDomainAndDomainAdmin</span><span class="kw">(</span><span class="ex">args</span><span class="kw">)</span> <span class="kw">{</span></span>
|
<span id="cb69-17"><a href="#cb69-17" aria-hidden="true" tabindex="-1"></a> <span class="ex">var</span> domainName = args[0]<span class="kw">;</span></span>
|
<span id="cb69-18"><a href="#cb69-18" aria-hidden="true" tabindex="-1"></a> <span class="ex">var</span> userName = <span class="st">'xyz00-doms'</span><span class="kw">;</span></span>
|
<span id="cb69-19"><a href="#cb69-19" aria-hidden="true" tabindex="-1"></a> <span class="ex">var</span> randomPassword = pwGen<span class="er">(</span><span class="kw">);</span></span>
|
<span id="cb69-20"><a href="#cb69-20" aria-hidden="true" tabindex="-1"></a> <span class="ex">var</span> createdUser = user.add<span class="er">(</span><span class="ex">{set:</span><span class="dt">{name:userName</span><span class="op">,</span><span class="dt">password:randomPassword</span><span class="op">,</span><span class="dt">shell:</span><span class="st">'/bin/bash'</span><span class="dt">}</span><span class="ex">}</span><span class="kw">);</span></span>
|
<span id="cb69-21"><a href="#cb69-21" aria-hidden="true" tabindex="-1"></a> <span class="ex">var</span> createdDomain = domain.add<span class="er">(</span><span class="ex">{set:</span><span class="dt">{name:domainName</span><span class="op">,</span><span class="dt">user:userName}</span><span class="ex">}</span><span class="kw">);</span></span>
|
<span id="cb69-22"><a href="#cb69-22" aria-hidden="true" tabindex="-1"></a> <span class="ex">print</span><span class="er">(</span><span class="st">"created domain "</span> + createdDomain[0].name + <span class="st">" with domainadmin "</span> + createdUser[0].name + <span class="st">" and password "</span> + randomPassword<span class="kw">);</span></span></code></pre></div>
|
</section>
|
<section id="js-skript-zur-anlage-einer-datenbank" class="level5">
|
<h5>JS-Skript zur Anlage einer Datenbank</h5>
|
<p>Das Skript zur Anlage einer Datenbank und eines Datenbank-Nutzers
|
sieht ähnlich aus.</p>
|
<div class="sourceCode" id="cb70"><pre
|
class="sourceCode bash"><code class="sourceCode bash"><span id="cb70-1"><a href="#cb70-1" aria-hidden="true" tabindex="-1"></a><span class="co">#!/usr/local/bin/hsscript -f</span></span>
|
<span id="cb70-2"><a href="#cb70-2" aria-hidden="true" tabindex="-1"></a></span>
|
<span id="cb70-3"><a href="#cb70-3" aria-hidden="true" tabindex="-1"></a><span class="ex">createMySQLUserAndDB</span><span class="er">(</span><span class="ex">arguments</span><span class="kw">);</span></span>
|
<span id="cb70-4"><a href="#cb70-4" aria-hidden="true" tabindex="-1"></a></span>
|
<span id="cb70-5"><a href="#cb70-5" aria-hidden="true" tabindex="-1"></a><span class="kw">function</span><span class="fu"> pwGen()</span> <span class="kw">{</span></span>
|
<span id="cb70-6"><a href="#cb70-6" aria-hidden="true" tabindex="-1"></a> <span class="ex">var</span> chars = <span class="st">"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_#%&+!?="</span><span class="kw">;</span></span>
|
<span id="cb70-7"><a href="#cb70-7" aria-hidden="true" tabindex="-1"></a> <span class="ex">var</span> pwLength = 18<span class="kw">;</span></span>
|
<span id="cb70-8"><a href="#cb70-8" aria-hidden="true" tabindex="-1"></a> <span class="ex">var</span> randomstring = <span class="st">''</span><span class="kw">;</span></span>
|
<span id="cb70-9"><a href="#cb70-9" aria-hidden="true" tabindex="-1"></a> <span class="cf">for</span> <span class="kw">(</span><span class="ex">var</span> i=0<span class="kw">;</span> <span class="ex">i</span><span class="op"><</span>pwLength<span class="kw">;</span> <span class="ex">i++</span><span class="kw">)</span> <span class="kw">{</span></span>
|
<span id="cb70-10"><a href="#cb70-10" aria-hidden="true" tabindex="-1"></a> <span class="ex">var</span> rnum = Math.floor<span class="er">(</span><span class="fu">Math.random()</span> <span class="ex">*</span> chars.length<span class="kw">);</span></span>
|
<span id="cb70-11"><a href="#cb70-11" aria-hidden="true" tabindex="-1"></a> <span class="ex">randomstring</span> += chars.substring<span class="er">(</span><span class="ex">rnum,rnum+1</span><span class="kw">);</span></span>
|
<span id="cb70-12"><a href="#cb70-12" aria-hidden="true" tabindex="-1"></a> <span class="kw">}</span></span>
|
<span id="cb70-13"><a href="#cb70-13" aria-hidden="true" tabindex="-1"></a> <span class="cf">return</span> <span class="ex">randomstring</span><span class="kw">;</span></span>
|
<span id="cb70-14"><a href="#cb70-14" aria-hidden="true" tabindex="-1"></a><span class="kw">}</span></span>
|
<span id="cb70-15"><a href="#cb70-15" aria-hidden="true" tabindex="-1"></a></span>
|
<span id="cb70-16"><a href="#cb70-16" aria-hidden="true" tabindex="-1"></a><span class="kw">function</span><span class="fu"> createMySQLUserAndDB</span><span class="kw">(</span><span class="ex">args</span><span class="kw">)</span> <span class="kw">{</span></span>
|
<span id="cb70-17"><a href="#cb70-17" aria-hidden="true" tabindex="-1"></a> <span class="ex">var</span> userName = <span class="st">'xyz00_'</span> + args[0]<span class="kw">;</span></span>
|
<span id="cb70-18"><a href="#cb70-18" aria-hidden="true" tabindex="-1"></a> <span class="ex">var</span> dbName = userName<span class="kw">;</span></span>
|
<span id="cb70-19"><a href="#cb70-19" aria-hidden="true" tabindex="-1"></a> <span class="ex">var</span> randomPassword = pwGen<span class="er">(</span><span class="kw">);</span></span>
|
<span id="cb70-20"><a href="#cb70-20" aria-hidden="true" tabindex="-1"></a> <span class="ex">var</span> createdUser = mysqluser.add<span class="er">(</span><span class="ex">{set:</span><span class="dt">{name:userName</span><span class="op">,</span><span class="dt">password:randomPassword}</span><span class="ex">}</span><span class="kw">);</span></span>
|
<span id="cb70-21"><a href="#cb70-21" aria-hidden="true" tabindex="-1"></a> <span class="ex">var</span> createdDatabase = mysqldb.add<span class="er">(</span><span class="ex">{set:</span><span class="dt">{name:dbName</span><span class="op">,</span><span class="dt">owner:userName}</span><span class="ex">}</span><span class="kw">);</span></span>
|
<span id="cb70-22"><a href="#cb70-22" aria-hidden="true" tabindex="-1"></a> <span class="ex">print</span><span class="er">(</span><span class="st">"created user "</span> + createdUser[0].name + <span class="st">" and database "</span> + createdDatabase[0].name + <span class="st">" with password "</span> + randomPassword<span class="kw">);</span></span></code></pre></div>
|
<p>Die Funktion <code>createMySQLUserAndDB(args)</code> 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.</p>
|
<p>Beim Aufruf des Skripts muss eine Zeichenkette übergeben werden,
|
die Bestandteil der Namen von Datenbank und Datenbank-Nutzer wird.</p>
|
<pre class="console"><code>xyz00@h50:~$ ./createuseranddb.js my_domain_wordpress
|
created user and database xyz00_my_domain_wordpress with password 4fo=s3xY</code></pre>
|
<div class="attention">
|
<p>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.</p>
|
</div>
|
</section>
|
</section>
|
<section id="kap-python-api" class="level4">
|
<h4>Nutzung der Python-API</h4>
|
<p>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.</p>
|
<section id="installation-von-hs.admin.api" class="level5">
|
<h5>Installation von hs.admin.api</h5>
|
<p>Wir installieren die Python-Bindings in einer virtuellen
|
Python-Umgebung, sodass wir diese zunächst einrichten und
|
aktivieren.</p>
|
<pre class="console"><code>$ python3 -m venv /hsadmin
|
$ . /hsadmin/bin/activate</code></pre>
|
<!-- todo: pipenv? -->
|
<p>Anschließend klonen wir die Python-Bindings und installieren
|
sie.</p>
|
<pre class="console"><code>$ git clone https://dev.hostsharing.net//r/ansible/hs.admin.api.git
|
$ cd hs.admin.api
|
$ python setup.py install </code></pre>
|
<p>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.</p>
|
</section>
|
<section id="python-skript" class="level5">
|
<h5>Python-Skript</h5>
|
<p>Um die API in einem Skript nutzen zu können, müssen wir mit
|
folgendem Code ein API-Objekt erzeugen.</p>
|
<div class="sourceCode" id="cb74"><pre
|
class="sourceCode python"><code class="sourceCode python"><span id="cb74-1"><a href="#cb74-1" aria-hidden="true" tabindex="-1"></a><span class="im">from</span> hs.admin.api <span class="im">import</span> API</span>
|
<span id="cb74-2"><a href="#cb74-2" aria-hidden="true" tabindex="-1"></a></span>
|
<span id="cb74-3"><a href="#cb74-3" aria-hidden="true" tabindex="-1"></a>api <span class="op">=</span> API(cas<span class="op">=</span><span class="bu">dict</span>(</span>
|
<span id="cb74-4"><a href="#cb74-4" aria-hidden="true" tabindex="-1"></a> uri<span class="op">=</span><span class="st">'https://login.hostsharing.net/cas/v1/tickets'</span>,</span>
|
<span id="cb74-5"><a href="#cb74-5" aria-hidden="true" tabindex="-1"></a> service<span class="op">=</span><span class="st">'https://config.hostsharing.net:443/hsar/backend'</span>),</span>
|
<span id="cb74-6"><a href="#cb74-6" aria-hidden="true" tabindex="-1"></a> credentials<span class="op">=</span><span class="bu">dict</span>(username<span class="op">=</span><span class="st">'xyz00'</span>, password<span class="op">=</span><span class="st">'sehr-geheim'</span>),</span>
|
<span id="cb74-7"><a href="#cb74-7" aria-hidden="true" tabindex="-1"></a> backends<span class="op">=</span>[</span>
|
<span id="cb74-8"><a href="#cb74-8" aria-hidden="true" tabindex="-1"></a> <span class="st">'https://config.hostsharing.net:443/hsar/xmlrpc/hsadmin'</span>,</span>
|
<span id="cb74-9"><a href="#cb74-9" aria-hidden="true" tabindex="-1"></a> <span class="st">'https://config2.hostsharing.net:443/hsar/xmlrpc/hsadmin'</span>])</span>
|
<span id="cb74-10"><a href="#cb74-10" aria-hidden="true" tabindex="-1"></a></span>
|
<span id="cb74-11"><a href="#cb74-11" aria-hidden="true" tabindex="-1"></a>api.user.add(<span class="bu">set</span><span class="op">=</span>{<span class="st">'name'</span>: <span class="st">'xyz00-domain.de'</span>, <span class="st">'password'</span>: <span class="st">'geheim'</span>, <span class="st">'shell'</span>: <span class="st">'/bin/bash'</span>})</span>
|
<span id="cb74-12"><a href="#cb74-12" aria-hidden="true" tabindex="-1"></a>api.domain.add(<span class="bu">set</span><span class="op">=</span>{<span class="st">'name'</span>: <span class="st">'domain.de'</span>, <span class="st">'user'</span>: <span class="st">'xyz00-domain.de'</span>})</span></code></pre></div>
|
<p>Nun ist es möglich, mit der üblichen Syntax HSAdmin im Skript
|
anzusprechen.</p>
|
<p>Mit diesen beiden Befehlen legen wir beispielsweise einen
|
Domain-Admin und eine neue Domain an.</p>
|
<div class="sourceCode" id="cb75"><pre
|
class="sourceCode python"><code class="sourceCode python"><span id="cb75-1"><a href="#cb75-1" aria-hidden="true" tabindex="-1"></a>api.user.add(<span class="bu">set</span><span class="op">=</span>{<span class="st">'name'</span>: <span class="st">'xyz00-domain.de'</span>, <span class="st">'password'</span>: <span class="st">'geheim'</span>, <span class="st">'shell'</span>: <span class="st">'/bin/bash'</span>})</span>
|
<span id="cb75-2"><a href="#cb75-2" aria-hidden="true" tabindex="-1"></a>api.domain.add(<span class="bu">set</span><span class="op">=</span>{<span class="st">'name'</span>: <span class="st">'domain.de'</span>, <span class="st">'user'</span>: <span class="st">'xyz00-domain.de'</span>})</span></code></pre></div>
|
<p>Eine Datenbank lässt sich folgendermaßen anlegen.</p>
|
<div class="sourceCode" id="cb76"><pre
|
class="sourceCode python"><code class="sourceCode python"><span id="cb76-1"><a href="#cb76-1" aria-hidden="true" tabindex="-1"></a><span class="im">from</span> hs.admin.api <span class="im">import</span> API</span>
|
<span id="cb76-2"><a href="#cb76-2" aria-hidden="true" tabindex="-1"></a></span>
|
<span id="cb76-3"><a href="#cb76-3" aria-hidden="true" tabindex="-1"></a>api <span class="op">=</span> API(cas<span class="op">=</span><span class="bu">dict</span>(</span>
|
<span id="cb76-4"><a href="#cb76-4" aria-hidden="true" tabindex="-1"></a> uri<span class="op">=</span><span class="st">'https://login.hostsharing.net/cas/v1/tickets'</span>,</span>
|
<span id="cb76-5"><a href="#cb76-5" aria-hidden="true" tabindex="-1"></a> service<span class="op">=</span><span class="st">'https://config.hostsharing.net:443/hsar/backend'</span>),</span>
|
<span id="cb76-6"><a href="#cb76-6" aria-hidden="true" tabindex="-1"></a> credentials<span class="op">=</span><span class="bu">dict</span>(username<span class="op">=</span><span class="st">'xyz00'</span>, password<span class="op">=</span><span class="st">'sehr-geheim'</span>),</span>
|
<span id="cb76-7"><a href="#cb76-7" aria-hidden="true" tabindex="-1"></a> backends<span class="op">=</span>[</span>
|
<span id="cb76-8"><a href="#cb76-8" aria-hidden="true" tabindex="-1"></a> <span class="st">'https://config.hostsharing.net:443/hsar/xmlrpc/hsadmin'</span>,</span>
|
<span id="cb76-9"><a href="#cb76-9" aria-hidden="true" tabindex="-1"></a> <span class="st">'https://config2.hostsharing.net:443/hsar/xmlrpc/hsadmin'</span>])</span>
|
<span id="cb76-10"><a href="#cb76-10" aria-hidden="true" tabindex="-1"></a></span>
|
<span id="cb76-11"><a href="#cb76-11" aria-hidden="true" tabindex="-1"></a>api.mysqluser.add(<span class="bu">set</span><span class="op">=</span>{<span class="st">'name'</span>: <span class="st">'xyz00_domain_de'</span>, <span class="st">'password'</span>: <span class="st">'geheim'</span>})</span>
|
<span id="cb76-12"><a href="#cb76-12" aria-hidden="true" tabindex="-1"></a>api.mysqldb.add(<span class="bu">set</span><span class="op">=</span>{<span class="st">'name'</span>: <span class="st">'xyz00_domain_de'</span>, <span class="st">'owner'</span>: <span class="st">'xyz00_domain_de'</span>})</span></code></pre></div>
|
<p>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:</p>
|
<ol type="1">
|
<li>das Kürzel für das Paket</li>
|
<li>den Domainnamen</li>
|
<li>eine Projekt-ID</li>
|
</ol>
|
<p>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 <code>wp</code> für
|
Wordpress. Die Elemente trennen wir mit dem Unterstrich, da nur dieser
|
als Namensbestandteil erlaubt ist.</p>
|
<p>Wenn wir für den Kunden mit der Kundennummer 23 im Paket
|
<code>xyz00</code> eine Domain für einen Wordpress-Blog einrichten
|
möchten, lautet der Aufruf des Skripts folgendermaßen:</p>
|
<pre class="console"><code>$ python createall.py xyz00 hs-example.de 023_wp</code></pre>
|
<p>Der Code des Skripts sieht so aus:</p>
|
<div class="sourceCode" id="cb78"><pre
|
class="sourceCode python"><code class="sourceCode python"><span id="cb78-1"><a href="#cb78-1" aria-hidden="true" tabindex="-1"></a><span class="im">import</span> random</span>
|
<span id="cb78-2"><a href="#cb78-2" aria-hidden="true" tabindex="-1"></a><span class="im">import</span> string</span>
|
<span id="cb78-3"><a href="#cb78-3" aria-hidden="true" tabindex="-1"></a><span class="im">import</span> sys</span>
|
<span id="cb78-4"><a href="#cb78-4" aria-hidden="true" tabindex="-1"></a><span class="im">from</span> hs.admin.api <span class="im">import</span> API</span>
|
<span id="cb78-5"><a href="#cb78-5" aria-hidden="true" tabindex="-1"></a><span class="im">from</span> subprocess <span class="im">import</span> check_output</span>
|
<span id="cb78-6"><a href="#cb78-6" aria-hidden="true" tabindex="-1"></a></span>
|
<span id="cb78-7"><a href="#cb78-7" aria-hidden="true" tabindex="-1"></a>paketadmin <span class="op">=</span> sys.argv[<span class="dv">1</span>]</span>
|
<span id="cb78-8"><a href="#cb78-8" aria-hidden="true" tabindex="-1"></a>domainname <span class="op">=</span> sys.argv[<span class="dv">2</span>]</span>
|
<span id="cb78-9"><a href="#cb78-9" aria-hidden="true" tabindex="-1"></a>projektid <span class="op">=</span> sys.argv[<span class="dv">3</span>]</span>
|
<span id="cb78-10"><a href="#cb78-10" aria-hidden="true" tabindex="-1"></a></span>
|
<span id="cb78-11"><a href="#cb78-11" aria-hidden="true" tabindex="-1"></a>pw <span class="op">=</span> check_output([<span class="st">"pass"</span>, <span class="st">"hostsharing/"</span><span class="op">+</span>paketadmin]).decode(<span class="st">"utf-8"</span>).strip(<span class="st">"</span><span class="ch">\n</span><span class="st">"</span>)</span>
|
<span id="cb78-12"><a href="#cb78-12" aria-hidden="true" tabindex="-1"></a></span>
|
<span id="cb78-13"><a href="#cb78-13" aria-hidden="true" tabindex="-1"></a>api <span class="op">=</span> API(cas<span class="op">=</span><span class="bu">dict</span>(</span>
|
<span id="cb78-14"><a href="#cb78-14" aria-hidden="true" tabindex="-1"></a> uri<span class="op">=</span><span class="st">'https://login.hostsharing.net/cas/v1/tickets'</span>,</span>
|
<span id="cb78-15"><a href="#cb78-15" aria-hidden="true" tabindex="-1"></a> service<span class="op">=</span><span class="st">'https://config.hostsharing.net:443/hsar/backend'</span>),</span>
|
<span id="cb78-16"><a href="#cb78-16" aria-hidden="true" tabindex="-1"></a> credentials<span class="op">=</span><span class="bu">dict</span>(username<span class="op">=</span>paketadmin, password<span class="op">=</span>pw),</span>
|
<span id="cb78-17"><a href="#cb78-17" aria-hidden="true" tabindex="-1"></a> backends<span class="op">=</span>[</span>
|
<span id="cb78-18"><a href="#cb78-18" aria-hidden="true" tabindex="-1"></a> <span class="st">'https://config.hostsharing.net:443/hsar/xmlrpc/hsadmin'</span>,</span>
|
<span id="cb78-19"><a href="#cb78-19" aria-hidden="true" tabindex="-1"></a> <span class="st">'https://config2.hostsharing.net:443/hsar/xmlrpc/hsadmin'</span>])</span>
|
<span id="cb78-20"><a href="#cb78-20" aria-hidden="true" tabindex="-1"></a></span>
|
<span id="cb78-21"><a href="#cb78-21" aria-hidden="true" tabindex="-1"></a><span class="kw">def</span> pwGen(stringLength<span class="op">=</span><span class="dv">12</span>):</span>
|
<span id="cb78-22"><a href="#cb78-22" aria-hidden="true" tabindex="-1"></a> <span class="co">"""Function to generate a random password """</span></span>
|
<span id="cb78-23"><a href="#cb78-23" aria-hidden="true" tabindex="-1"></a></span>
|
<span id="cb78-24"><a href="#cb78-24" aria-hidden="true" tabindex="-1"></a> password_characters <span class="op">=</span> string.ascii_letters <span class="op">+</span> string.digits</span>
|
<span id="cb78-25"><a href="#cb78-25" aria-hidden="true" tabindex="-1"></a> <span class="cf">return</span> <span class="st">''</span>.join(random.choice(password_characters) <span class="cf">for</span> i <span class="kw">in</span> <span class="bu">range</span>(stringLength))</span>
|
<span id="cb78-26"><a href="#cb78-26" aria-hidden="true" tabindex="-1"></a></span>
|
<span id="cb78-27"><a href="#cb78-27" aria-hidden="true" tabindex="-1"></a>pw_dadmin <span class="op">=</span> pwGen()</span>
|
<span id="cb78-28"><a href="#cb78-28" aria-hidden="true" tabindex="-1"></a>pw_dbuser <span class="op">=</span> pwGen()</span>
|
<span id="cb78-29"><a href="#cb78-29" aria-hidden="true" tabindex="-1"></a>dadmin <span class="op">=</span> paketadmin<span class="op">+</span><span class="st">'-'</span><span class="op">+</span>domainname.replace(<span class="st">"-"</span>, <span class="st">"_"</span>)</span>
|
<span id="cb78-30"><a href="#cb78-30" aria-hidden="true" tabindex="-1"></a>dbuser <span class="op">=</span> paketadmin<span class="op">+</span><span class="st">'_'</span><span class="op">+</span>projektid</span>
|
<span id="cb78-31"><a href="#cb78-31" aria-hidden="true" tabindex="-1"></a>dbname <span class="op">=</span> paketadmin<span class="op">+</span><span class="st">'_'</span><span class="op">+</span>projektid</span>
|
<span id="cb78-32"><a href="#cb78-32" aria-hidden="true" tabindex="-1"></a></span>
|
<span id="cb78-33"><a href="#cb78-33" aria-hidden="true" tabindex="-1"></a>api.user.add(<span class="bu">set</span><span class="op">=</span>{<span class="st">'name'</span>: dadmin, <span class="st">'password'</span>: pw_dadmin, <span class="st">'shell'</span>: <span class="st">'/bin/bash'</span>})</span>
|
<span id="cb78-34"><a href="#cb78-34" aria-hidden="true" tabindex="-1"></a>api.domain.add(<span class="bu">set</span><span class="op">=</span>{<span class="st">'name'</span>: domainname, <span class="st">'user'</span>: dadmin})</span>
|
<span id="cb78-35"><a href="#cb78-35" aria-hidden="true" tabindex="-1"></a>api.mysqluser.add(<span class="bu">set</span><span class="op">=</span>{<span class="st">'name'</span>: dbuser, <span class="st">'password'</span>: pw_dbuser})</span>
|
<span id="cb78-36"><a href="#cb78-36" aria-hidden="true" tabindex="-1"></a>api.mysqldb.add(<span class="bu">set</span><span class="op">=</span>{<span class="st">'name'</span>: dbname, <span class="st">'owner'</span>: dbuser})</span>
|
<span id="cb78-37"><a href="#cb78-37" aria-hidden="true" tabindex="-1"></a></span>
|
<span id="cb78-38"><a href="#cb78-38" aria-hidden="true" tabindex="-1"></a><span class="bu">print</span>(<span class="st">"Domainname:"</span> <span class="op">+</span>domainname)</span>
|
<span id="cb78-39"><a href="#cb78-39" aria-hidden="true" tabindex="-1"></a><span class="bu">print</span>(<span class="st">"Domain-Admin: "</span> <span class="op">+</span> dadmin <span class="op">+</span> <span class="st">" mit dem Passwort:"</span> <span class="op">+</span>pw_dadmin)</span>
|
<span id="cb78-40"><a href="#cb78-40" aria-hidden="true" tabindex="-1"></a><span class="bu">print</span>(<span class="st">"Datenbank-Nutzer: "</span> <span class="op">+</span>dbuser <span class="op">+</span> <span class="st">" Passwort:"</span> <span class="op">+</span>pw_dbuser)</span>
|
<span id="cb78-41"><a href="#cb78-41" aria-hidden="true" tabindex="-1"></a><span class="bu">print</span>(<span class="st">"Datenbankname: "</span> <span class="op">+</span>dbname)</span></code></pre></div>
|
<p>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.</p>
|
<p>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
|
<code>pass</code> aus und speichern es in der Variablen
|
<code>pw</code>. Weitere Informationen zu dem Programm finden Sie auf
|
der Website <a href="https://www.passwordstore.org/"
|
class="uri">https://www.passwordstore.org/</a>. 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.</p>
|
<p>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.</p>
|
<p>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.</p>
|
<p>In den Zeilen 33 bis 36 werden der Domain-Admin, die Domain, den
|
Datenbank-Nutzer und die Datenbank angelegt.</p>
|
<p>Und zum Schluss gibt das Skript alle Daten aus.</p>
|
<p>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.</p>
|
<!-- todo: Im Text werden Zeilennummern erwähnt. Wir brauchen eine Lösung dafür -->
|
</section>
|
</section>
|
</section>
|
<section id="hsadmin-webfrontend" class="level3">
|
<h3>HSAdmin-Webfrontend</h3>
|
<p>HSAdmin verfügt über ein Webfrontend <a
|
href="https://admin.hostsharing.net"
|
class="uri">https://admin.hostsharing.net</a> zur Verwaltung eines
|
Web-Pakets.</p>
|
<p>Die Bedienung wurde im Abschnitt <a
|
href="#kap-hsadmin-einstieg">Einführung in HSAdmin</a>
|
beschrieben.</p>
|
</section>
|
</section>
|
<section id="kap-htaccess" class="level2">
|
<h2>htaccess</h2>
|
<p>Das Verhalten des Apache Webservers lässt sich durch
|
<code>.htaccess</code>-Dateien im Verzeichnis einer Domain steuern.
|
Die zentrale Konfiguration lässt sich damit für einzelne Verzeichnisse
|
überschreiben. Eine <code>.htaccess</code>-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.</p>
|
<section id="bereiche-einer-website-mit-passwort-schützen"
|
class="level3">
|
<h3>Bereiche einer Website mit Passwort schützen</h3>
|
<p>Ein typischer Anwendungsfall ist der Schutz eines bestimmten
|
Verzeichnisses mit einem Passwort. Dazu muss zunächst eine
|
Passwort-Datei mit dem Namen <code>.htpasswd</code> im
|
<code>etc</code>-Verzeichnis der Domain angelegt werden. Dies erfolgt
|
mit dem Programm <code>htpasswd</code>.</p>
|
<pre class="console"><code>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:~$</code></pre>
|
<p>Statt der Sternchen geben Sie das gewünschte Passwort ein. Es wird
|
verschlüsselt gespeichert. Die Option <code>-c</code> wird nur bei der
|
ersten Anlage der Passwort-Datei gesetzt. Wenn ein Passwort für einen
|
zweiten Benutzer eingerichtet wird, muss <code>htpasswd</code> ohne
|
die Option aufgerufen werden, da sonst die Datei komplett
|
überschrieben würde und das Passwort für den ersten Benutzer verloren
|
ginge.</p>
|
<pre class="console&q |