<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Erfahrungsbericht – Serverküche</title><link>https://serverkueche.de/tags/erfahrungsbericht/</link><description>Erfahrungsbericht – Neueste Beiträge von Serverküche</description><generator>Hugo</generator><language>de-DE</language><managingEditor>feedback@serverkueche.de (Serverküche)</managingEditor><webMaster>feedback@serverkueche.de (Serverküche)</webMaster><copyright>2026 Serverküche</copyright><lastBuildDate>Wed, 21 Oct 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://serverkueche.de/tags/erfahrungsbericht/index.xml" rel="self" type="application/rss+xml"/><item><title>netcup eos ausprobiert: die neue Cloud in der Preview</title><link>https://serverkueche.de/tutorials/netcup-eos-preview/</link><pubDate>Wed, 21 Oct 2026 00:00:00 +0000</pubDate><author>feedback@serverkueche.de (Serverküche)</author><guid>https://serverkueche.de/tutorials/netcup-eos-preview/</guid><description>netcups neue Cloud-Plattform eos in der Preview: VM, Netz, ACLs und S3 ausprobiert, mit Benchmarks gegen den VPS 1000 und allen Stolpersteinen.</description><content:encoded><![CDATA[<p>netcup baut eine eigene Cloud: eos, gedacht für alle, die Server per API, Terraform oder
KI-Agent verwalten statt per Klick. Wir waren in der geschlossenen Preview dabei und haben
ausprobiert, was heute schon geht – und wo es noch hakt.</p>
<p>Vorweg: Das ist der Stand einer Testphase. Öffentlich startet eos 2027; netcup-Kunden sollen
die Plattform schon vorher in einem Friends-&amp;-Family-Launch nutzen können. Preise, Größen und
viele Details werden sich bis dahin ändern.</p>
<h2 id="was-bauen-wir">Was bauen wir?</h2>
<p>Wir setzen in eos eine Debian-VM auf, machen sie per SSH erreichbar, sichern Daten mit restic
in den S3-Speicher der Plattform und messen die VM mit denselben Benchmarks wie unseren
<a href="/tutorials/netcup-vps-1000-benchmark/">VPS 1000</a>. Dabei zeigen wir die Stolpersteine, über die
man beim ersten Mal fällt – zwei davon kosten ohne Vorwarnung eine halbe Stunde.</p>
<p>eos steht für „European Orchestrated Sovereignty“ und ist im August 2026 als Preview
gestartet. Die Plattform läuft bisher in <strong>einer Region, Klagenfurt</strong>, und rechnet minutengenau
ab. Alles, was die Weboberfläche kann, geht auch über eine REST-API mit öffentlicher
OpenAPI-Beschreibung, das Kommandozeilenwerkzeug <code>eosctl</code>, einen Terraform-Provider und einen
MCP-Server für KI-Agenten. Diesen Teil – Infrastruktur als Code – zeigt
netcup eos mit eosctl und OpenTofu <span class="text-sm text-slate-500 dark:text-slate-400">(Tutorial folgt voraussichtlich im Oktober)</span>; hier
geht es um die Plattform selbst.</p>
<h2 id="voraussetzungen">Voraussetzungen</h2>
<ul>
<li>Ein <strong>Zugang zur eos-Preview</strong>. Die Anmeldung lief über das netcup-Forum und stand nur
netcup-Kunden offen; die Testphase lief laut netcup bis zum 17. Oktober. Als Nächstes folgt
ein Friends-&amp;-Family-Launch für netcup-Kunden, der öffentliche Start ist für 2027 geplant.</li>
<li>Ein SSH-Schlüssel auf deinem Rechner (<code>ssh-keygen -t ed25519</code>) – wie das geht und warum,
steht in <a href="/tutorials/ssh-absichern/">SSH absichern</a>.</li>
<li>Grundwissen zu Linux-Servern, wie es in
<a href="/tutorials/erste-schritte-netcup-vps/">Erste Schritte mit dem netcup-VPS</a> vermittelt wird.</li>
</ul>
<p>Was du in der Preview anlegst, ist ausdrücklich nicht für den Betrieb gedacht: keine SLAs,
keine Redundanzgarantie, und nach der Testphase werden alle Daten gelöscht.</p>
<h2 id="schritt-für-schritt">Schritt für Schritt</h2>
<h3 id="1-die-konsole-organisation-realm-rechte">1. Die Konsole: Organisation, Realm, Rechte</h3>
<p>Nach dem Login (Passwort plus TOTP oder direkt per Security Key) landet man im Dashboard einer
<strong>Organisation</strong>. Darunter liegen <strong>Realms</strong> – Arbeitsbereiche, etwa einer pro Projekt oder
Umgebung. Rechte vergibst du über Teams, für Automatisierung gibt es Client Credentials auf
Organisations- oder Realm-Ebene.</p>
<p><figure class="my-6"><img src="/tutorials/netcup-eos-preview/eos-dashboard_hu_92f0b0bdb1a6c47b.webp" srcset="/tutorials/netcup-eos-preview/eos-dashboard_hu_b196a81dd274070c.webp 480w, /tutorials/netcup-eos-preview/eos-dashboard_hu_92f0b0bdb1a6c47b.webp 768w, /tutorials/netcup-eos-preview/eos-dashboard_hu_c6d791d3aa3df3d6.webp 1200w, /tutorials/netcup-eos-preview/eos-dashboard_hu_e9b70828a9d2f26c.webp 1920w" sizes="(min-width: 768px) 768px, 100vw"
    width="768" height="432"
    data-full="/tutorials/netcup-eos-preview/eos-dashboard_hu_3a1ff0e3ea96be7f.webp"
    alt="Das eos-Dashboard einer Organisation mit Kacheln für Zugänge, Realms, nützliche Links und die letzte Aktivität" title="Das Dashboard: Organisation oben links, darunter der Realm mit allen Ressourcen"
    loading="lazy" decoding="async" class="rounded-lg"><figcaption class="mt-2 text-sm text-center text-slate-500 italic">Das Dashboard: Organisation oben links, darunter der Realm mit allen Ressourcen</figcaption></figure></p>
<p>Links im Realm stehen die Bausteine: Virtual Machines, Networking, ACL, Public IP, Volume
Storage und Object Storage. Kubernetes, verwaltete Datenbanken, Load Balancer und eine
Container-Registry fehlen noch. Auch automatische Backups gibt es nicht – Snapshots legst du
von Hand an.</p>
<h3 id="2-die-erste-vm-anlegen">2. Die erste VM anlegen</h3>
<p>Unter <strong>Virtual Machines → Create new</strong> wählst du Größe, Image und Root-Platte. In der Preview
gab es drei Größen, alle mit 1-Gbit/s-Netzwerkkarte:</p>
<table>
	<thead>
			<tr>
					<th>Typ</th>
					<th>vCores</th>
					<th>RAM</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>vServer Mini</td>
					<td>1</td>
					<td>2 GB</td>
			</tr>
			<tr>
					<td>vServer Small</td>
					<td>2</td>
					<td>4 GB</td>
			</tr>
			<tr>
					<td>vServer Medium</td>
					<td>4</td>
					<td>8 GB</td>
			</tr>
	</tbody>
</table>
<p>Als Images stehen Alpine Edge, Arch Linux, Debian 13 und Ubuntu 26.04 bereit, jeweils auch als
<strong>Cloud-Variante</strong> mit Cloud-Init. Die Root-Platte ist frei wählbar ab 10 GB.</p>
<p><figure class="my-6"><img src="/tutorials/netcup-eos-preview/eos-vm-erstellen_hu_3ada93e6ee46e2ca.webp" srcset="/tutorials/netcup-eos-preview/eos-vm-erstellen_hu_b0f2be38c2eaee10.webp 480w, /tutorials/netcup-eos-preview/eos-vm-erstellen_hu_3ada93e6ee46e2ca.webp 768w, /tutorials/netcup-eos-preview/eos-vm-erstellen_hu_d298e0a99ae00c74.webp 1200w, /tutorials/netcup-eos-preview/eos-vm-erstellen_hu_83ebec34270a3b9f.webp 1920w" sizes="(min-width: 768px) 768px, 100vw"
    width="768" height="432"
    data-full="/tutorials/netcup-eos-preview/eos-vm-erstellen_hu_50a1dca8ec7542c8.webp"
    alt="Der VM-Assistent von eos mit den drei Größen, hochgeladener Cloud-Init-Datei, Image Debian 13 Cloud und 20 GB Root-Platte" title="Der VM-Assistent – alle drei Größen mit identischem Platzhalterpreis"
    loading="lazy" decoding="async" class="rounded-lg"><figcaption class="mt-2 text-sm text-center text-slate-500 italic">Der VM-Assistent – alle drei Größen mit identischem Platzhalterpreis</figcaption></figure></p>
<p>Die Preise in der Preview sind Spielgeld („Credits“) und offensichtlich Platzhalter: Alle drei
Größen kosten gleich viel, 10 GB Platte sollen zehnmal mehr kosten als die VM, und oben rechts
meldet die Konsole regelmäßig <code>Price conversion error</code>. Daraus lässt sich nichts über die
späteren Preise ableiten.</p>
<p>Eine neue VM war in rund einer halben Minute im Zustand <code>ready / started</code>.</p>
<h3 id="3-cloud-init-der-ssh-server-fehlt">3. Cloud-Init: der SSH-Server fehlt</h3>
<p>Der wichtigste Stolperstein zuerst: <strong>Auch die Cloud-Images bringen keinen SSH-Server mit.</strong>
Cloud-Init legt deinen Benutzer und den Schlüssel brav an, aber <code>openssh-server</code> ist nicht
installiert. Wer nur einen Benutzer mit Schlüssel übergibt, bekommt eine VM, die auf Port 22
nichts annimmt.</p>
<p>Cloud-Init nimmt die Konsole nur als <strong>Datei-Upload</strong> entgegen, nicht als Textfeld. Lege also
lokal eine Datei <code>user-data.yaml</code> an:</p>
<div class="sk-code">
  <span class="sk-code-head">YAML</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="c">#cloud-config</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">users</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span>- <span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">koch</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">groups</span><span class="p">:</span><span class="w"> </span><span class="l">sudo</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">shell</span><span class="p">:</span><span class="w"> </span><span class="l">/bin/bash</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">sudo</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;ALL=(ALL) NOPASSWD:ALL&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">ssh_authorized_keys</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span>- <span class="l">ssh-ed25519 AAAA… DEIN_SCHLUESSEL</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">package_update</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">packages</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span>- <span class="l">openssh-server</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">write_files</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span>- <span class="nt">path</span><span class="p">:</span><span class="w"> </span><span class="l">/etc/ssh/sshd_config.d/10-nur-schluessel.conf</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">content</span><span class="p">:</span><span class="w"> </span><span class="p">|</span><span class="sd">
</span></span></span><span class="line"><span class="cl"><span class="sd">      PasswordAuthentication no
</span></span></span><span class="line"><span class="cl"><span class="sd">      PermitRootLogin no</span></span></span></code></pre></div>
</div>
<p>Ersetze <code>DEIN_SCHLUESSEL</code> durch den Inhalt deiner <code>~/.ssh/id_ed25519.pub</code>. Die Datei legt einen
Benutzer <code>koch</code> mit sudo-Rechten an, installiert den SSH-Server und schaltet Passwort- und
Root-Login über eine Drop-in-Datei ab.</p>
<div class="not-prose my-6 rounded-lg border-l-4 p-4 border-amber-400 bg-amber-50 dark:border-amber-700 dark:bg-amber-900/20">
  <p class="mb-1 flex items-center gap-2 font-semibold text-slate-900 dark:text-white">
    <span aria-hidden="true">⚠️</span>Nicht ssh_pwauth verwenden
  </p>
  <div class="prose-kitchen text-sm">Der naheliegende Schlüssel <code>ssh_pwauth: false</code> sperrt dich aus. Cloud-Init schreibt dafür eine
<code>/etc/ssh/sshd_config</code> – zu einem Zeitpunkt, an dem das Paket noch gar nicht installiert ist. Es
entsteht eine Datei mit genau einer Zeile, <code>PasswordAuthentication no</code>, und das nachinstallierte
<code>openssh-server</code> übernimmt sie. Ohne Debians Standardkonfiguration fehlt <code>UsePAM yes</code>, und das
Konto, dessen Passwort Cloud-Init gesperrt hat, darf dann auch per Schlüssel nicht herein. Im Log
steht <code>User koch not allowed because account is locked</code>. Die Drop-in-Datei oben umgeht das.</div>
</div>
<p>Die offizielle eos-Anleitung zum SSH-Zugang geht übrigens einen anderen Weg: Root-Passwort
setzen und <code>PermitRootLogin yes</code> erlauben. Für einen Test mag das reichen, für einen Server im
Internet nicht.</p>
<h3 id="4-die-web-konsole-root-ohne-anmeldung">4. Die Web-Konsole: Root ohne Anmeldung</h3>
<p>Ohne SSH bist du trotzdem nicht ausgesperrt. Über das Drei-Punkte-Menü einer VM öffnet
<strong>Open Console</strong> eine Root-Shell im Browser – ohne Passwort, direkt als root.</p>
<p><figure class="my-6"><img src="/tutorials/netcup-eos-preview/eos-konsole_hu_48266a4c1d0ceaa6.webp" srcset="/tutorials/netcup-eos-preview/eos-konsole_hu_b897d0fa0f2cdf75.webp 480w, /tutorials/netcup-eos-preview/eos-konsole_hu_48266a4c1d0ceaa6.webp 768w, /tutorials/netcup-eos-preview/eos-konsole_hu_6f3661edb57917a8.webp 1200w, /tutorials/netcup-eos-preview/eos-konsole_hu_e49f329f92fc2af2.webp 1920w" sizes="(min-width: 768px) 768px, 100vw"
    width="768" height="432"
    data-full="/tutorials/netcup-eos-preview/eos-konsole_hu_6daeff6e5c1b351f.webp"
    alt="Die Web-Konsole von eos zeigt eine Root-Shell mit erfolgreichem Cloud-Init, aktivem SSH-Dienst und dem angelegten Benutzer" title="Open Console: eine Root-Shell im Browser, ohne Anmeldung"
    loading="lazy" decoding="async" class="rounded-lg"><figcaption class="mt-2 text-sm text-center text-slate-500 italic">Open Console: eine Root-Shell im Browser, ohne Anmeldung</figcaption></figure></p>
<p>Das ist praktisch zum Reparieren und gleichzeitig der Grund, warum dein eos-Konto mit zweitem
Faktor geschützt sein muss: Wer die Konsole erreicht, hat root auf jeder VM. Prüfe dort nach
dem ersten Start:</p>
<div class="sk-code">
  <span class="sk-code-head">Terminal</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">cloud-init status
</span></span><span class="line"><span class="cl">systemctl is-active ssh</span></span></code></pre></div>
</div>
<div class="sk-code">
  <span class="sk-code-head">Ausgabe</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">status: done
</span></span><span class="line"><span class="cl">active</span></span></code></pre></div>
</div>
<h3 id="5-öffentliche-ip-und-acl-zwei-schritte-nicht-einer">5. Öffentliche IP und ACL: zwei Schritte, nicht einer</h3>
<p>Eine neue VM hat nur private Adressen. Jedes Netz bekommt zwar eine öffentliche IPv4 und IPv6,
die dient aber nur dem ausgehenden Verkehr und Port-Weiterleitungen – an eine VM hängen lässt
sie sich nicht. Für direkten Zugang legst du unter <strong>Public IP → Create new</strong> eine eigene
Adresse an und hängst sie über <strong>Attach Public IP</strong> an die VM (immer 1:1).</p>
<p><figure class="my-6"><img src="/tutorials/netcup-eos-preview/eos-vm-detail_hu_a52c343441ab60a9.webp" srcset="/tutorials/netcup-eos-preview/eos-vm-detail_hu_da9d221fcafe79f7.webp 480w, /tutorials/netcup-eos-preview/eos-vm-detail_hu_a52c343441ab60a9.webp 768w, /tutorials/netcup-eos-preview/eos-vm-detail_hu_f44d550495c231.webp 1200w, /tutorials/netcup-eos-preview/eos-vm-detail_hu_bd24b05164c422a.webp 1920w" sizes="(min-width: 768px) 768px, 100vw"
    width="768" height="432"
    data-full="/tutorials/netcup-eos-preview/eos-vm-detail_hu_2c85209946340947.webp"
    alt="Die Detailseite einer VM mit Root-Volume, angehängter öffentlicher IP und dem geöffneten Aktionsmenü" title="Die VM-Detailseite: Volumes, Public IP und alle Aktionen im Drei-Punkte-Menü"
    loading="lazy" decoding="async" class="rounded-lg"><figcaption class="mt-2 text-sm text-center text-slate-500 italic">Die VM-Detailseite: Volumes, Public IP und alle Aktionen im Drei-Punkte-Menü</figcaption></figure></p>
<p>Danach ist die VM immer noch nicht erreichbar. eos arbeitet „secure by default“: Jedes Netz hat
eine Standard-ACL, und die ist leer. Eingehend wird alles abgewiesen, ausgehend ist alles
erlaubt. Für SSH brauchst du eine Regel unter <strong>ACL → Add New Rule</strong>:</p>
<ul>
<li>Action <code>Allow</code>, Protocol <code>TCP</code></li>
<li>Sources: deine eigene IP – oder leer für „von überall“</li>
<li>Destinations: die <strong>interne</strong> IP der VM, etwa <code>172.19.144.3</code></li>
<li>Destination Ports: <code>22</code></li>
</ul>
<p><figure class="my-6"><img src="/tutorials/netcup-eos-preview/eos-acl_hu_1904ddb0ebe84059.webp" srcset="/tutorials/netcup-eos-preview/eos-acl_hu_cb81a5b0a9e65f4.webp 480w, /tutorials/netcup-eos-preview/eos-acl_hu_1904ddb0ebe84059.webp 768w, /tutorials/netcup-eos-preview/eos-acl_hu_6b7393633c8d9ea7.webp 1200w, /tutorials/netcup-eos-preview/eos-acl_hu_723bc886d7970a8f.webp 1920w" sizes="(min-width: 768px) 768px, 100vw"
    width="768" height="432"
    data-full="/tutorials/netcup-eos-preview/eos-acl_hu_279e9c13c294a504.webp"
    alt="Die Standard-ACL eines eos-Netzes mit einer Regel, die TCP-Port 22 von einer Quell-IP zur internen IP der VM erlaubt" title="Eine Regel genügt: TCP 22 von einer Quelle zur internen Adresse der VM"
    loading="lazy" decoding="async" class="rounded-lg"><figcaption class="mt-2 text-sm text-center text-slate-500 italic">Eine Regel genügt: TCP 22 von einer Quelle zur internen Adresse der VM</figcaption></figure></p>
<p>Die Konsole bietet im Ziel-Feld auch an, eine VM per <code>@name</code> auszuwählen. In der Preview
scheiterte genau das: Die API nahm die Regel an, kurz darauf meldete die Konsole
<code>Failed to create ACL Rule</code>. Mit der internen IP als Ziel war die Regel sofort aktiv.</p>
<p>Ob die ACL wirkt, zeigt die Gegenprobe: Von der freigegebenen Adresse kommt man per SSH herein,
von jeder anderen läuft der Verbindungsaufbau in einen Timeout. Zwischen VMs im selben Netz
braucht es keine Regel – sie erreichen sich privat mit rund 1 ms.</p>
<h3 id="6-leistung-cpu-top-platte-und-netz-halbiert">6. Leistung: CPU top, Platte und Netz halbiert</h3>
<p>Wir haben eine Medium-VM (4 vCores, 8 GB) mit denselben Befehlen gemessen wie den
<a href="/tutorials/netcup-vps-1000-benchmark/">VPS 1000 G12</a>, der ebenfalls 4 Kerne und 8 GB hat.
Es sind Einzelläufe auf Preview-Infrastruktur – eine Momentaufnahme, kein Urteil über das
spätere Produkt.</p>
<table>
	<thead>
			<tr>
					<th></th>
					<th>eos Medium</th>
					<th>VPS 1000 G12</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>sysbench CPU, 1 / 4 Threads</td>
					<td>1.509 / 5.831</td>
					<td>1.495 / 5.974</td>
			</tr>
			<tr>
					<td>7-Zip (MIPS gesamt)</td>
					<td>29.100</td>
					<td>27.400</td>
			</tr>
			<tr>
					<td>AES-256-GCM</td>
					<td>12,5 GB/s</td>
					<td>7,7 GB/s</td>
			</tr>
			<tr>
					<td>RAM (sysbench, 4 Threads)</td>
					<td>28.200 MiB/s</td>
					<td>28.700 MiB/s</td>
			</tr>
			<tr>
					<td>4K lesen / schreiben (IOPS)</td>
					<td>45.700 / 36.700</td>
					<td>101.000 / 67.000</td>
			</tr>
			<tr>
					<td>sequenziell lesen / schreiben</td>
					<td>2.100 / 1.650 MiB/s</td>
					<td>4.300 / 3.100 MiB/s</td>
			</tr>
			<tr>
					<td>Download (Hetzner Falkenstein)</td>
					<td>118 MB/s</td>
					<td>246 MB/s</td>
			</tr>
	</tbody>
</table>
<p>Bei Rechenleistung und RAM liegen beide gleichauf, bei AES ist eos deutlich schneller – die VM
meldet AVX-512 und AES-NI, das CPU-Modell selbst ist hinter „Common KVM processor“ verborgen.
Platte und Netz liefern etwa die Hälfte. Beim Netz ist das schlicht die 1-Gbit/s-Karte: 118 MB/s
sind die volle Leitung. Die Plattenwerte passen zu dem, was netcup selbst schreibt: Die Preview
läuft auf begrenzter Infrastruktur mit reduzierter Leistung.</p>
<p>Ein Detail, falls du selbst misst: <code>/tmp</code> ist bei Debian 13 ein tmpfs im RAM. Ein fio-Lauf dort
misst den Arbeitsspeicher, nicht die Platte – leg die Testdateien ins Home-Verzeichnis.</p>
<h3 id="7-object-storage-s3-mit-restic">7. Object Storage: S3 mit restic</h3>
<p>eos bringt einen S3-kompatiblen Speicher mit; im Hintergrund arbeitet Ceph (die Benutzer tragen
ein IAM-Handle <code>RGW…</code>). Zugang bekommt ein Programm über einen <strong>S3-Benutzer</strong>, den du unter
<strong>Object Storage → Users</strong> anlegst. Zwei Dinge dabei:</p>
<ul>
<li>Der Secret Key wird <strong>genau einmal</strong> angezeigt. Sofort in den Passwortmanager kopieren.</li>
<li>Der Benutzer ist ein Root-Benutzer und hat Zugriff auf alle Buckets der Organisation. Für
getrennte Rechte gibt es Bucket-Policies.</li>
</ul>
<p>Der Endpunkt ist <code>at-preview1.object-storage.eoscloud.io</code>, adressiert wird im Path-Style. Mit
<a href="/tutorials/backups-mit-restic/">restic</a> sieht das so aus:</p>
<div class="sk-code">
  <span class="sk-code-head">Terminal</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="nb">export</span> <span class="nv">AWS_ACCESS_KEY_ID</span><span class="o">=</span>DEIN_ACCESS_KEY
</span></span><span class="line"><span class="cl"><span class="nb">export</span> <span class="nv">AWS_SECRET_ACCESS_KEY</span><span class="o">=</span>DEIN_SECRET_KEY
</span></span><span class="line"><span class="cl"><span class="nb">export</span> <span class="nv">RESTIC_REPOSITORY</span><span class="o">=</span>s3:https://at-preview1.object-storage.eoscloud.io/DEIN_BUCKET/restic
</span></span><span class="line"><span class="cl"><span class="nb">export</span> <span class="nv">RESTIC_PASSWORD</span><span class="o">=</span>EIN_LANGES_PASSWORT
</span></span><span class="line"><span class="cl">restic init</span></span></code></pre></div>
</div>
<p>Dass die Konsole als Bucket-URL eine lange, interne Kennung vor den Namen setzt, stört restic
nicht – der Bucketname genügt. Ein Gigabyte Zufallsdaten ging in gut 9 Sekunden hinein und in
rund 7 Sekunden wieder heraus, bitgenau. Auch hier begrenzt die Netzwerkkarte.</p>
<p>Einen zweiten Bucket konnten wir nicht anlegen. Die Konsole graut die Auswahl des Districts aus,
ohne einen Grund zu nennen; erst die API sagt es deutlich:</p>
<div class="sk-code">
  <span class="sk-code-head">Ausgabe</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">Bucket creation is currently unavailable in this district.</span></span></code></pre></div>
</div>
<p><figure class="my-6"><img src="/tutorials/netcup-eos-preview/eos-bucket-district_hu_702088ad6ddbb705.webp" srcset="/tutorials/netcup-eos-preview/eos-bucket-district_hu_7d280c6ad58629c8.webp 480w, /tutorials/netcup-eos-preview/eos-bucket-district_hu_702088ad6ddbb705.webp 768w, /tutorials/netcup-eos-preview/eos-bucket-district_hu_3cb8ad308ba3b021.webp 1200w, /tutorials/netcup-eos-preview/eos-bucket-district_hu_d301a7c9619f0641.webp 1920w" sizes="(min-width: 768px) 768px, 100vw"
    width="768" height="432"
    data-full="/tutorials/netcup-eos-preview/eos-bucket-district_hu_37f3e325f8b49437.webp"
    alt="Der Dialog für einen neuen Bucket mit ausgegrautem District at-preview1 und der Fehlermeldung zur Preisumrechnung" title="Neue Buckets: Der einzige District ist ausgegraut, ohne Erklärung"
    loading="lazy" decoding="async" class="rounded-lg"><figcaption class="mt-2 text-sm text-center text-slate-500 italic">Neue Buckets: Der einzige District ist ausgegraut, ohne Erklärung</figcaption></figure></p>
<p>Nach unserem Kenntnisstand war in der Preview ein Bucket pro Organisation vorgesehen. Außerdem
blieb die Nutzungsanzeige des vorhandenen Buckets auf 0 GB stehen – die Statistik wurde seit
Tagen nicht aktualisiert, die Daten lagen trotzdem korrekt im Bucket.</p>
<h3 id="8-audit-log-wer-hat-was-getan">8. Audit-Log: wer hat was getan</h3>
<p>Ein klarer Pluspunkt: Jede Aktion landet mit Zeit, Person,
Realm und Ressource im <strong>Audit-Log</strong> der Organisation – VM angelegt, IP angehängt, Regel
erstellt, Konsole geöffnet.</p>
<p><figure class="my-6"><img src="/tutorials/netcup-eos-preview/eos-auditlog_hu_52b335984d67d946.webp" srcset="/tutorials/netcup-eos-preview/eos-auditlog_hu_16dd014d3b3535b1.webp 480w, /tutorials/netcup-eos-preview/eos-auditlog_hu_52b335984d67d946.webp 768w, /tutorials/netcup-eos-preview/eos-auditlog_hu_f8cb23e49ac0f1cb.webp 1200w, /tutorials/netcup-eos-preview/eos-auditlog_hu_e77acdc34195b45d.webp 1920w" sizes="(min-width: 768px) 768px, 100vw"
    width="768" height="432"
    data-full="/tutorials/netcup-eos-preview/eos-auditlog_hu_ecf29e7d8ada9865.webp"
    alt="Das Audit-Log der Organisation listet Anmeldung, angelegte VM, Volume, öffentliche IP, ACL-Regel und Konsolenbefehle mit Zeitstempel" title="Das Audit-Log: jede Aktion mit Zeit, Person und Ressource"
    loading="lazy" decoding="async" class="rounded-lg"><figcaption class="mt-2 text-sm text-center text-slate-500 italic">Das Audit-Log: jede Aktion mit Zeit, Person und Ressource</figcaption></figure></p>
<p>Fehlgeschlagene Vorgänge wie die gescheiterten ACL-Regeln tauchen dort allerdings nicht auf.</p>
<h2 id="wenn-es-nicht-funktioniert">Wenn es nicht funktioniert</h2>
<div class="troubleshoot not-prose">
<p><strong>SSH meldet <code>Connection refused</code>, obwohl IP und ACL stimmen.</strong> Auf der VM läuft kein
SSH-Server – auch die Cloud-Images bringen keinen mit. Öffne die Web-Konsole, installiere ihn
mit <code>apt install openssh-server</code> und nimm das Paket für künftige VMs in deine Cloud-Init-Datei
auf (Schritt 3).</p>
<p><strong>Der Schlüssel wird abgelehnt, im Log steht <code>account is locked</code>.</strong> Deine Cloud-Init-Datei
enthält <code>ssh_pwauth</code>. Damit entsteht eine einzeilige <code>sshd_config</code> ohne <code>UsePAM yes</code>. Prüfe mit
<code>wc -l /etc/ssh/sshd_config</code> – steht dort 1, lösche die Datei in der Web-Konsole, installiere
das Paket mit <code>apt install --reinstall -o Dpkg::Options::=--force-confmiss openssh-server</code> neu und
starte den Dienst mit <code>systemctl restart ssh</code>. Danach liegt wieder Debians vollständige
Konfiguration auf der Platte.</p>
<p><strong>Die VM hat eine öffentliche IP, ist aber nicht erreichbar.</strong> Es fehlt die ACL-Regel. Eingehend
ist ohne Regel alles gesperrt; lege eine Allow-Regel für den Port an, mit der internen IP der VM
als Ziel.</p>
<p><strong><code>Failed to create ACL Rule</code> direkt nach dem Speichern.</strong> Das Ziel ist als <code>@vm-name</code>
eingetragen. Trage stattdessen die interne IP der VM ein, die auf der Detailseite steht.</p>
<p><strong>Eine Default-IP lässt sich nicht an die VM hängen.</strong> Die beiden öffentlichen Adressen, die jedes
Netz mitbringt, sind für ausgehenden Verkehr und Port-Weiterleitungen reserviert. Lege eine
eigene Public IP im selben Netz an und hänge diese an.</p>

</div>
<p class="mt-3 text-sm text-slate-500 dark:text-slate-400">
  Dein Problem ist nicht dabei?
  <a href="/fehler/" class="font-medium text-paprika-700 hover:underline dark:text-paprika-400">Alle Fehlermeldungen durchsuchen →</a>
</p>

<h2 id="wartung--backups">Wartung &amp; Backups</h2>
<p>In der Preview gilt eine einfache Regel: <strong>Nichts Wichtiges dort ablegen.</strong> netcup kann
Ressourcen jederzeit für Wartungsarbeiten löschen, und nach der Testphase ist ohnehin alles weg.</p>
<p>Für später, wenn eos produktiv nutzbar ist:</p>
<ul>
<li><strong>Backups selbst organisieren.</strong> Automatische Backups gibt es (noch) nicht. Snapshots legst du
von Hand über das VM-Menü an; für Daten ist ein restic-Backup in einen Bucket – besser in einen
zweiten Standort – der robustere Weg.</li>
<li><strong>Konto absichern.</strong> Die Web-Konsole gibt root auf jeder VM. Ein Security Key oder TOTP für
alle Mitglieder der Organisation ist Pflicht, und Client Credentials gehören wie Passwörter in
einen Tresor.</li>
<li><strong>ACLs pflegen.</strong> Jede Regel ist ein Loch in der Standardsperre. Halte Quellen so eng wie
möglich und lösche Regeln, wenn ein Dienst wegfällt.</li>
<li><strong>Öffentliche IPs aufräumen.</strong> Eine zusätzliche Public IP kostet, solange sie existiert. Zum
Löschen erst von der VM abhängen, sonst verweigert eos das.</li>
</ul>
<p>Unser Eindruck nach den Tagen in der Preview: Die Grundlage stimmt – sichere Voreinstellungen,
eine saubere API, ein vollständiges Audit-Log und eine CPU-Leistung auf VPS-Niveau. Was fehlt,
sind die Dinge, die eine Preview ausmachen: echte Preise, mehr Regionen, Backups und ein paar
Kanten in der Oberfläche. Wer heute Rechenleistung für den Betrieb braucht, nimmt einen
klassischen netcup-VPS oder Root-Server; wer seine Infrastruktur als Code verwalten will, sollte
sich als netcup-Kunde den Friends-&amp;-Family-Launch vormerken.</p>
<div class="not-prose my-6 overflow-hidden rounded-xl border border-paprika-200 bg-paprika-50 dark:border-paprika-800 dark:bg-paprika-900/20"
     data-track-content data-content-name="Affiliate-Box · /tutorials/netcup-eos-preview/" data-content-piece="VPS 1000 G12.5">
  <div class="flex items-center justify-between border-b border-paprika-200 bg-paprika-100 px-4 py-1.5 text-xs font-semibold uppercase tracking-wide text-paprika-700 dark:border-paprika-800 dark:bg-paprika-900/40 dark:text-paprika-300">
    <span>🍳 Empfehlung</span>
    <span title="Mit * markierte Links sind Affiliate-Links.">Anzeige</span>
  </div>
  <div class="flex flex-col gap-4 p-4 sm:flex-row sm:items-center sm:justify-between">
    <div>
      <p class="text-lg font-bold text-slate-900 dark:text-white">VPS 1000 G12.5</p>
      <p class="mt-1 text-sm text-slate-600 dark:text-slate-300">4 vCore · 8 GB RAM · 128 GB SSD</p>
      <p class="mt-1 text-sm font-semibold text-paprika-700 dark:text-paprika-400">ab 14,50 €/Monat</p>
      <p class="mt-2 text-sm text-slate-600 dark:text-slate-400">Der klassische netcup-VPS, gegen den wir eos gemessen haben – heute die sichere Wahl für den Betrieb.</p>
    </div>
    <a href="https://www.netcup.com/de/server/vps/vps-1000-g12.5-24m-eu?ref=44083#vps-1000-g12.5-12m-eu" rel="sponsored noopener" target="_blank"
   data-track-event="Affiliate|netcup: Affiliate-Box|VPS 1000 G12.5 · {page}"
   class="inline-flex shrink-0 items-center justify-center rounded-lg bg-paprika-600 px-5 py-2.5 font-semibold text-white transition-colors hover:bg-paprika-700">
  Zu netcup →
</a>

  </div><div class="px-4 pb-4"><div class="not-prose my-3 rounded-lg border border-herb-500/40 bg-herb-50 px-3 py-2 text-sm text-slate-700 dark:bg-herb-900/20 dark:text-slate-200"
     data-voucher-api="vps-1000" data-voucher-msg-empty="Gerade ist für diesen Tarif kein Code frei – nimm den 5,95-€-Code." data-voucher-msg-limit="Für heute sind keine weiteren Codes drin – nimm den 5,95-€-Code oder versuch es morgen." data-voucher-msg-error="Der Code ließ sich gerade nicht abrufen – nimm den 5,95-€-Code."
     data-voucher-hint="Warenkorb vorher leeren – der Code legt den Server selbst hinein.">
  <p class="flex flex-wrap items-center gap-x-2 gap-y-1"><span>💶 <span class="font-semibold">1 Monat gratis</span>:</span>
    <button type="button" data-voucher-reveal data-copy-title="Zum Kopieren klicken"
            class="cursor-pointer rounded bg-white px-2 py-0.5 font-mono text-sm font-semibold text-herb-800 hover:ring-2 hover:ring-herb-500/40 dark:bg-slate-800 dark:text-herb-400">Code anzeigen</button>
    <button type="button" data-voucher-next hidden
            class="rounded border border-herb-500/40 px-2 py-0.5 text-xs text-herb-800 hover:bg-white dark:text-herb-400 dark:hover:bg-slate-800">anderer Code</button>
  </p><p class="mt-1 text-xs text-slate-500 dark:text-slate-400" data-voucher-hint-target>
    Einmal einlösbar, gilt für VPS 1000 G12.5.
    <a href="https://www.netcup.com/de/checkout/warenkorb?ref=44083" rel="sponsored noopener" target="_blank"
       data-track-event="Affiliate|netcup: Gutschein einlösen|VPS 1000 G12.5 · {page}"
       class="font-medium text-herb-800 underline underline-offset-2 hover:text-herb-900 dark:text-herb-400">Im Warenkorb einlösen →</a>
  </p><p class="mt-2 flex flex-wrap items-center gap-x-2 gap-y-1 border-t border-herb-500/30 pt-2">
    <span>💶 <span class="font-semibold">5,95 € Gutschein</span> für netcup-Neukunden:</span>
    <button type="button" data-voucher-code data-track-voucher="36nc17844976032"
            title="Zum Kopieren klicken" class="cursor-pointer rounded bg-white px-2 py-0.5 font-mono text-sm font-semibold text-herb-800 hover:ring-2 hover:ring-herb-500/40 dark:bg-slate-800 dark:text-herb-400">36nc17844976032</button>
    <span class="text-xs text-slate-500 dark:text-slate-400">immer gültig · nicht für Domains und VPS Lite</span>
  </p><p class="mt-1 text-xs"><a href="/netcup-gutschein/" class="font-medium text-herb-800 underline underline-offset-2 hover:text-herb-900 dark:text-herb-400">Alle netcup-Gutscheine →</a></p>
</div></div>
</div>

]]></content:encoded></item></channel></rss>