Every other backup-target guide on this site hands you SFTP and a chroot. This one hands you an actual S3 API — the same protocol restic, rclone, and a long list of backup and object-storage tools already speak natively — running as a single MinIO container on one VPS, with the one honest caveat that a single node is not the redundant, self-healing object store MinIO's own marketing screenshots imply.Jede andere Backup-Ziel-Anleitung auf dieser Seite gibt dir SFTP und ein Chroot. Diese hier gibt dir eine echte S3-API – dasselbe Protokoll, das restic, rclone und eine lange Liste von Backup- und Objektspeicher-Tools ohnehin nativ sprechen – als einzelnen MinIO-Container auf einem VPS, mit dem einen ehrlichen Vorbehalt, dass ein einzelner Node nicht der redundante, selbstheilende Objektspeicher ist, den MinIOs eigene Marketing-Screenshots suggerieren.
MinIO is an open-source object store that implements the S3 API closely enough that S3 clients — the AWS CLI, restic, rclone, Duplicati, most backup software written in the last decade — talk to it without knowing the difference. You get buckets, objects, versioning, and per-user access keys with IAM-style policies, all through the same API surface AWS itself defined. What you do not get, from a single instance on one VPS, is the durability story that usually comes attached to "S3-compatible": no erasure coding, no automatic replication, no second copy anywhere unless you put one there yourself. Say that plainly to yourself before you point a backup job at it, because the rest of this guide is written on top of that assumption, not around it.MinIO ist ein Open-Source-Objektspeicher, der die S3-API so eng nachbildet, dass S3-Clients – die AWS-CLI, restic, rclone, Duplicati, die meiste in den letzten zehn Jahren geschriebene Backup-Software – damit sprechen, ohne den Unterschied zu bemerken. Du bekommst Buckets, Objekte, Versionierung und benutzerbezogene Access-Keys mit IAM-artigen Policies, alles über dieselbe API-Oberfläche, die AWS selbst definiert hat. Was du bei einer einzelnen Instanz auf einem VPS nicht bekommst, ist die Haltbarkeitsgeschichte, die normalerweise an „S3-kompatibel“ hängt: kein Erasure Coding, keine automatische Replikation, keine zweite Kopie irgendwo, außer du legst selbst eine an. Mach dir das klar, bevor du einen Backup-Job darauf ansetzt, denn der Rest dieser Anleitung baut auf dieser Annahme auf, nicht um sie herum.
Pin the image tag. MinIO cuts new releases constantly, and latest on a store you actually rely on means an upgrade happens the moment you restart the container, not when you decide to read the changelog. Check the current tag on the minio/minio repository on Docker Hub before you copy this — the one below will drift out of date long before this guide gets rewritten.Pinne den Image-Tag. MinIO bringt ständig neue Releases heraus, und latest bei einem Speicher, auf den du dich tatsächlich verlässt, bedeutet, dass ein Upgrade in dem Moment passiert, in dem du den Container neu startest, nicht dann, wenn du dich entscheidest, den Changelog zu lesen. Prüfe den aktuellen Tag im minio/minio-Repository auf Docker Hub, bevor du das hier übernimmst – der Tag unten wird längst veraltet sein, bevor diese Anleitung neu geschrieben wird.
services:
minio:
image: minio/minio:RELEASE.2024-01-16T16-07-38Z
restart: unless-stopped
command: server /data --console-address ":9001"
environment:
- MINIO_ROOT_USER=${MINIO_ROOT_USER}
- MINIO_ROOT_PASSWORD=${MINIO_ROOT_PASSWORD}
- MINIO_BROWSER_REDIRECT_URL=https://minio-console.example.com
volumes:
- minio-data:/data
ports:
- "127.0.0.1:9000:9000"
- "127.0.0.1:9001:9001"
volumes:
minio-data:
9000 is the S3 API; 9001 is the web console, and the --console-address flag is what makes MinIO listen on a fixed console port at all rather than picking a random one each start. Both are bound to 127.0.0.1 on purpose — nothing but the reverse proxy on the same host can reach either port directly, so a stray scanner hitting the VPS's public address on 9000 finds nothing listening. MINIO_ROOT_USER needs at least three characters and MINIO_ROOT_PASSWORD at least eight; put both in a .env file next to the compose file, chmod 600, and never the root credential you'd want in shell history:9000 ist die S3-API, 9001 die Web-Konsole, und das Flag --console-address sorgt überhaupt erst dafür, dass MinIO auf einem festen Konsolen-Port lauscht, statt bei jedem Start einen zufälligen zu wählen. Beide sind absichtlich an 127.0.0.1 gebunden – nur der Reverse-Proxy auf demselben Host erreicht einen der beiden Ports direkt, sodass ein zufälliger Scanner, der die öffentliche Adresse des VPS auf 9000 trifft, dort nichts findet, das lauscht. MINIO_ROOT_USER braucht mindestens drei Zeichen und MINIO_ROOT_PASSWORD mindestens acht; leg beide in eine .env-Datei neben der Compose-Datei ab, chmod 600, und lass das Root-Credential nie dort landen, wo es in der Shell-History auftaucht:
printf "MINIO_ROOT_USER=%s\nMINIO_ROOT_PASSWORD=%s\n" \
"$(openssl rand -hex 8)" "$(openssl rand -base64 24)" > .env
chmod 600 .env
MINIO_BROWSER_REDIRECT_URL tells the console what public address to send the browser back to after login — without it, a console reached through a reverse proxy under a different hostname than the container knows about can redirect somewhere that doesn't resolve.MINIO_BROWSER_REDIRECT_URL sagt der Konsole, an welche öffentliche Adresse sie den Browser nach dem Login zurückschicken soll – ohne das kann eine Konsole, die über einen Reverse-Proxy unter einem anderen Hostnamen erreicht wird, als der Container kennt, irgendwohin umleiten, das sich nicht auflösen lässt.
s3.example.com {
reverse_proxy 127.0.0.1:9000
}
minio-console.example.com {
reverse_proxy 127.0.0.1:9001
}
That's genuinely all of it — Caddy requests and renews a certificate per hostname the first time it sees a request for it, provided DNS already points at the machine (point your domain at your service if you haven't pointed a record here before). This is worth pausing on if you've read the NAT-related caveats elsewhere on this site: unlike a second service that wants its own listening port, two hostnames on Caddy only ever need one forwarded port between them, since Caddy tells them apart by hostname (SNI), not by port. Whether that port is 443 isn't guaranteed — some plans forward 80/443 by default, some don't, so check what your plan actually forwards (NAT IPv4 vs a dedicated IP) before pointing DNS at the box. Whichever HTTPS port you have, it covers both hostnames with nothing extra to request from your provider.Das ist wirklich schon alles – Caddy fordert ein Zertifikat pro Hostname an und erneuert es, sobald es die erste Anfrage dafür sieht, vorausgesetzt DNS zeigt schon auf die Maschine (richte deine Domain auf deinen Dienst aus, falls du hier noch keinen Eintrag gesetzt hast). Hier lohnt es sich innezuhalten, wenn du die NAT-bezogenen Vorbehalte anderswo auf dieser Seite gelesen hast: Anders als ein zweiter Dienst, der einen eigenen lauschenden Port will, brauchen zwei Hostnamen auf Caddy zusammen immer nur einen weitergeleiteten Port, weil Caddy sie nach Hostname (SNI) unterscheidet, nicht nach Port. Ob dieser Port 443 ist, ist nicht garantiert – manche Pläne leiten 80/443 standardmäßig weiter, manche nicht, prüf also, was dein Plan tatsächlich weiterleitet (NAT IPv4 vs. dedizierte IP), bevor du DNS auf die Maschine zeigen lässt. Welchen HTTPS-Port du auch hast, er deckt beide Hostnamen ab, ohne dass du bei deinem Provider zusätzlich etwas anfragen musst.
The console's live file browser and upload progress run over a WebSocket; Caddy's reverse_proxy passes the Upgrade and Connection headers through on its own, which is one less thing to hand-configure than a bare nginx block would need.Der Live-Dateibrowser der Konsole und der Upload-Fortschritt laufen über ein WebSocket; Caddys reverse_proxy reicht die Header Upgrade und Connection von sich aus durch, was eine Sache weniger ist, die du von Hand konfigurieren musst, als es ein reiner nginx-Block bräuchte.
Open https://minio-console.example.com and sign in with MINIO_ROOT_USER / MINIO_ROOT_PASSWORD. Treat that login the way you'd treat a database root password: fine for setup, wrong for anything that runs unattended. Everything from here — buckets, users, policies, access keys — is better done through mc, MinIO's own CLI, so a backup job's credentials never have to be the root pair.Öffne https://minio-console.example.com und melde dich mit MINIO_ROOT_USER / MINIO_ROOT_PASSWORD an. Behandle diesen Login wie ein Datenbank-Root-Passwort: in Ordnung fürs Einrichten, falsch für alles, was unbeaufsichtigt läuft. Alles ab hier – Buckets, Nutzer, Policies, Access-Keys – erledigst du besser über mc, MinIOs eigene CLI, damit die Credentials eines Backup-Jobs nie das Root-Paar sein müssen.
Every mc command below is its own throwaway docker run --rm container, so none share a filesystem unless given one. mc stores the alias you're about to create at ~/.mc inside that container — mount the same host directory at /root/.mc on every invocation that follows, or the alias disappears with the container that made it:Jeder mc-Befehl unten ist sein eigener Wegwerf-Container per docker run --rm, sodass keiner ein Dateisystem mit einem anderen teilt, außer du gibst ihnen eins. mc speichert den Alias, den du gleich anlegst, unter ~/.mc innerhalb dieses Containers – hänge bei jedem folgenden Aufruf dasselbe Host-Verzeichnis unter /root/.mc ein, sonst verschwindet der Alias mit dem Container, der ihn angelegt hat:
mkdir -p ~/.mc
Also load the credentials into your shell — docker compose reads .env for its own substitution but never exports it into an interactive shell, so $MINIO_ROOT_USER and $MINIO_ROOT_PASSWORD stay empty unless you source it:Lade die Credentials außerdem in deine Shell – docker compose liest .env für seine eigene Substitution, exportiert sie aber nie in eine interaktive Shell, sodass $MINIO_ROOT_USER und $MINIO_ROOT_PASSWORD leer bleiben, wenn du sie nicht sourcest:
set -a; source .env; set +a
docker run --rm -it -v "$HOME/.mc:/root/.mc" minio/mc:RELEASE.2024-01-13T08-44-48Z \
alias set myminio https://s3.example.com "$MINIO_ROOT_USER" "$MINIO_ROOT_PASSWORD"
mc alias set writes that endpoint and credential pair into ~/.mc, so every command after this one just names the alias, myminio — as long as -v "$HOME/.mc:/root/.mc" stays on every mc invocation from here on. Drop it once, and the next command sees an empty config, not the alias you just set.mc alias set schreibt dieses Endpoint-Credential-Paar in ~/.mc, sodass jeder Befehl danach nur noch den Alias myminio nennt – solange -v "$HOME/.mc:/root/.mc" bei jedem mc-Aufruf ab hier dabeibleibt. Lässt du es einmal weg, sieht der nächste Befehl eine leere Konfiguration, nicht den Alias, den du gerade gesetzt hast.
docker run --rm -it -v "$HOME/.mc:/root/.mc" minio/mc:RELEASE.2024-01-13T08-44-48Z \
mb myminio/backups
A bucket created with plain mb is not what you want for a restic or rclone target long-term — enable versioning on it now so an overwritten or deleted object is recoverable:Ein mit einfachem mb angelegter Bucket ist nicht das, was du für ein restic- oder rclone-Ziel auf Dauer willst – aktiviere jetzt die Versionierung darauf, damit ein überschriebenes oder gelöschtes Objekt wiederherstellbar bleibt:
docker run --rm -it -v "$HOME/.mc:/root/.mc" minio/mc:RELEASE.2024-01-13T08-44-48Z \
version enable myminio/backups
Then create a policy scoped to that one bucket, rather than handing a backup job the same keys that can create or delete other buckets. Save it to a file first — the next command mounts this directory and reads the policy from there:Leg dann eine Policy an, die auf genau diesen einen Bucket begrenzt ist, statt einem Backup-Job dieselben Keys zu geben, mit denen sich auch andere Buckets anlegen oder löschen lassen. Speichere sie zuerst in einer Datei – der nächste Befehl hängt dieses Verzeichnis ein und liest die Policy von dort:
cat > backups-rw.json <<'EOF'
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["s3:GetObject", "s3:PutObject", "s3:DeleteObject", "s3:ListBucket"],
"Resource": ["arn:aws:s3:::backups", "arn:aws:s3:::backups/*"]
}
]
}
EOF
docker run --rm -it -v "$HOME/.mc:/root/.mc" -v "$PWD":/policies minio/mc:RELEASE.2024-01-13T08-44-48Z \
admin policy create myminio backups-rw /policies/backups-rw.json
docker run --rm -it -v "$HOME/.mc:/root/.mc" minio/mc:RELEASE.2024-01-13T08-44-48Z \
admin user add myminio BACKUPACCESSKEY 'a-real-secret-here'
docker run --rm -it -v "$HOME/.mc:/root/.mc" minio/mc:RELEASE.2024-01-13T08-44-48Z \
admin policy attach myminio backups-rw --user BACKUPACCESSKEY
That access key can read, write and delete objects inside backups and nothing else — it cannot list, touch, or even see any other bucket on the instance. When it's time to rotate the key later, admin user add again with a fresh secret and remove the old one; nothing about the bucket or the policy has to change.Dieser Access-Key kann Objekte innerhalb von backups lesen, schreiben und löschen und sonst nichts – er kann keinen anderen Bucket auf der Instanz auflisten, anfassen oder auch nur sehen. Willst du den Key später rotieren, führe admin user add erneut mit einem frischen Secret aus und entferne den alten – am Bucket oder an der Policy muss sich dafür nichts ändern.
restic speaks S3 natively, so pointing it at MinIO instead of AWS is a matter of the endpoint URL, not a different backend:restic spricht S3 nativ, sodass es MinIO statt AWS anzupeilen nur eine Frage der Endpoint-URL ist, kein anderes Backend:
export AWS_ACCESS_KEY_ID=BACKUPACCESSKEY
export AWS_SECRET_ACCESS_KEY='a-real-secret-here'
export RESTIC_REPOSITORY=s3:https://s3.example.com/backups
export RESTIC_PASSWORD_FILE=~/.config/restic/repo-password
restic init
Everything else — restic backup, restic snapshots, restic forget --prune, the systemd timer pattern in a restic backup target on a VPS — works exactly as written there; only the repository URL and the two AWS_* variables differ from an SFTP target.Alles andere – restic backup, restic snapshots, restic forget --prune, das Systemd-Timer-Muster in ein restic-Backup-Ziel auf einem VPS – funktioniert genau so, wie dort beschrieben; nur die Repository-URL und die beiden AWS_*-Variablen unterscheiden sich von einem SFTP-Ziel.
rclone's S3 backend has a dedicated Minio provider that sets sane defaults for a self-hosted endpoint:rclones S3-Backend hat einen eigenen Minio-Provider, der vernünftige Defaults für einen selbst gehosteten Endpoint setzt:
rclone config create miniobackup s3 provider=Minio \
access_key_id=BACKUPACCESSKEY secret_access_key='a-real-secret-here' \
endpoint=https://s3.example.com
rclone sync /srv/data miniobackup:backups --exclude "*.tmp"
rclone sync makes the remote match the source exactly, deleting objects on the remote that no longer exist locally — the right tool for mirroring a directory, and the wrong one to run against a bucket you also want to keep old versions in without checking --dry-run first.rclone sync gleicht das Remote exakt an die Quelle an und löscht dabei Objekte auf dem Remote, die lokal nicht mehr existieren – das richtige Werkzeug, um ein Verzeichnis zu spiegeln, und das falsche, um es gegen einen Bucket laufen zu lassen, in dem du auch alte Versionen behalten willst, ohne vorher --dry-run zu prüfen.
MinIO does not deduplicate or compress what you hand it the way restic does — an object stored is close to the same number of bytes on disk, plus a small amount of metadata overhead. That makes this a disk question almost entirely: budget the tier's disk figure against the actual bytes you expect to keep, including however many restic snapshots or rclone-synced copies you intend to retain at once, not just the size of one backup.MinIO dedupliziert oder komprimiert das, was du ihm gibst, nicht so wie restic – ein gespeichertes Objekt belegt auf der Platte annähernd dieselbe Byte-Zahl, plus etwas Metadaten-Overhead. Das macht das hier fast ausschließlich zu einer Speicherplatz-Frage: Stelle die Speicherplatzangabe des Tarifs den tatsächlichen Bytes gegenüber, die du behalten willst, einschließlich so vieler restic-Snapshots oder rclone-synchronisierter Kopien, wie du gleichzeitig vorhältst, nicht nur der Größe eines einzelnen Backups.
Pro's 4 vCPU / 8 GiB / 120 GB is comfortable for MinIO's API process, the console, and Caddy's TLS termination running together on one box, with real headroom left for the OS. Basic (2 vCPU / 2 GiB / 50 GB) or Standard (2 vCPU / 4 GiB / 80 GB) will run MinIO without strain for a light personal workload — the API server itself is not memory-hungry — but 120 GB buys meaningfully more room before you're managing retention just to stay under quota. When the dataset outgrows the tier, add extra storage to your VPS covers adding storage as an add-on arranged after ordering, which is the right move for "the same workload, more of it"; move up to Elite's 200 GB only if you're also adding vCPU-hungry work alongside MinIO, not for disk alone.Pros 4 vCPU / 8 GiB / 120 GB sind komfortabel dafür, dass MinIOs API-Prozess, die Konsole und Caddys TLS-Terminierung zusammen auf einer Maschine laufen, mit echtem Spielraum für das Betriebssystem. Basic (2 vCPU / 2 GiB / 50 GB) oder Standard (2 vCPU / 4 GiB / 80 GB) betreiben MinIO ohne Anstrengung für eine leichte private Nutzung – der API-Server selbst ist nicht speicherhungrig –, aber 120 GB kaufen dir spürbar mehr Raum, bevor du Retention nur verwaltest, um unter dem Kontingent zu bleiben. Wächst der Datensatz über den Tarif hinaus, beschreibt zusätzlichen Speicher zu deinem VPS hinzufügen, wie du Speicherplatz als nachträglich bestelltes Add-on ergänzt, was der richtige Schritt für „dieselbe Last, nur mehr davon“ ist; steige nur dann zu Elites 200 GB auf, wenn du neben MinIO auch vCPU-hungrige Arbeit hinzufügst, nicht wegen des Speicherplatzes allein.
Say this part out loud before you rely on it: a single MinIO container with one data volume has no erasure coding. MinIO's data-protection scheme — bitrot detection plus parity blocks that let it rebuild an object after losing a drive — only exists in its multi-drive and distributed deployment modes, where MinIO itself owns several disks or several nodes to spread that parity across. One container, one volume, one disk means there is exactly one copy of every object, protected by nothing but the filesystem underneath it. If that VPS's disk fails, the objects fail with it — including any restic repository or rclone mirror you pointed here specifically to survive the source machine failing.Sag dir diesen Teil laut vor, bevor du dich darauf verlässt: Ein einzelner MinIO-Container mit einem Daten-Volume hat kein Erasure Coding. MinIOs Schutzmechanismus gegen Datenverlust – Bitrot-Erkennung plus Parity-Blöcke, die es erlauben, ein Objekt nach dem Verlust eines Laufwerks wiederherzustellen – existiert nur in seinen Multi-Drive- und verteilten Deployment-Modi, wo MinIO selbst mehrere Platten oder mehrere Nodes besitzt, um diese Parität darüber zu verteilen. Ein Container, ein Volume, eine Platte bedeutet, es gibt genau eine Kopie jedes Objekts, geschützt durch nichts außer dem Dateisystem darunter. Fällt die Platte dieses VPS aus, fallen die Objekte mit ihr aus – einschließlich jedes restic-Repositorys oder rclone-Mirrors, den du hier gezielt hinterlegt hast, damit er den Ausfall der Quellmaschine überlebt.
The practical read: this setup is a legitimate second location for backups, genuinely useful as a place restic or rclone writes to that isn't the machine being protected, but it is not itself a resilient store. Versioning protects you from an accidental overwrite or delete from the client side; it does nothing for a dead disk. If the data behind this bucket only exists here and on the machine it was backed up from, you don't have an off-site backup yet, you have a second single point of failure with better protocol support. Treat the underlying VPS's own disk health and your own add extra storage to your VPS headroom as part of the plan, and if the data is important enough, keep a third copy somewhere that isn't either of these two boxes.Praktisch bedeutet das: Dieser Aufbau ist ein legitimer zweiter Standort für Backups, echt nützlich als Ort, an den restic oder rclone schreibt, der nicht die zu schützende Maschine selbst ist, aber er ist selbst kein widerstandsfähiger Speicher. Versionierung schützt dich vor einem versehentlichen Überschreiben oder Löschen von der Client-Seite; gegen eine tote Platte hilft sie nichts. Existieren die Daten hinter diesem Bucket nur hier und auf der Maschine, von der sie gesichert wurden, hast du noch kein Off-Site-Backup, sondern einen zweiten Single Point of Failure mit besserer Protokollunterstützung. Behandle die Festplattengesundheit des zugrundeliegenden VPS selbst und deinen eigenen Spielraum bei zusätzlichen Speicher zu deinem VPS hinzufügen als Teil des Plans, und wenn die Daten wichtig genug sind, halte eine dritte Kopie an einem Ort, der keine der beiden Maschinen hier ist.
docker compose pull
docker compose up -d
Bump the pinned tag deliberately and read MinIO's release notes for what changed — MinIO has occasionally required a specific upgrade path between certain release ranges rather than a straight jump from anything to anything, and skipping the notes is how that surprises you mid-upgrade. Confirm mc admin info myminio reports healthy after any update before you trust it with the next backup run.Erhöhe den gepinnten Tag bewusst und lies MinIOs Release Notes zu dem, was sich geändert hat – MinIO hat gelegentlich einen bestimmten Upgrade-Pfad zwischen bestimmten Release-Bereichen verlangt statt eines geraden Sprungs von irgendwo nach irgendwo, und überspringst du die Release Notes, überrascht dich genau das mitten im Upgrade. Bestätige, dass mc admin info myminio nach jedem Update als gesund gemeldet wird, bevor du dich beim nächsten Backup-Lauf darauf verlässt.
Full disclosure: this is what we sell. Pro (4 vCPU / 8 GiB / 120 GB) is a comfortable floor for MinIO's API, its console, and Caddy's TLS handling running as one instance with headroom to spare; a growing set of retained snapshots is a reason to add storage through the extra-storage add-on or move up to Elite (6 vCPU / 16 GiB / 200 GB), not a reason to chase more vCPU.Zur vollen Transparenz: Das ist, was wir verkaufen. Pro (4 vCPU / 8 GiB / 120 GB) ist eine komfortable Untergrenze dafür, dass MinIOs API, seine Konsole und Caddys TLS-Handling als eine Instanz laufen, mit Spielraum übrig; eine wachsende Menge an aufbewahrten Snapshots ist ein Grund, über das Extra-Speicher-Add-on Speicherplatz hinzuzufügen oder zu Elite (6 vCPU / 16 GiB / 200 GB) aufzusteigen, kein Grund, mehr vCPU zu jagen.
Linux KVM VPS — EUR 4.99 to EUR 59.99 a month, on our own single-tenant bare metal in Dallas, TX and Charlotte, NC. Full hardware virtualisation (KVM), your own kernel, full root. Six tiers, vps-starter to vps-ultra. Starter is 1 vCPU, 1 GiB RAM, 25 GB disk.Linux-KVM-VPS — 4,99 bis 59,99 EUR im Monat, auf unserer eigenen Single-Tenant-Bare-Metal-Hardware in Dallas, TX und Charlotte, NC. Vollständige Hardware-Virtualisierung (KVM), eigener Kernel, volles Root. Sechs Tarife, vps-starter bis vps-ultra. Starter hat 1 vCPU, 1 GiB RAM, 25 GB Speicher.
You order in the shop, pay by card (Stripe) or SEPA bank transfer, and your login details are e-mailed to you once the service is set up. Support is e-mail, run by one person, with no guaranteed response time. All prices are final totals under the German small-business rule (§19 UStG); no VAT is added or shown.Du bestellst im Shop, zahlst per Karte (Stripe) oder SEPA-Überweisung, und deine Zugangsdaten werden dir per E-Mail zugeschickt, sobald der Dienst eingerichtet ist. Support läuft per E-Mail, von einer einzelnen Person betrieben, ohne garantierte Reaktionszeit. Alle Preise sind Endpreise. Gemäß § 19 UStG wird keine Umsatzsteuer ausgewiesen.
Order vps-pro → · Linux KVM VPS overviewvps-pro bestellen → · Übersicht Linux-KVM-VPS
Written by the person who runs overnight.host: a small, honest hosting company on dedicated bare metal — Linux VPS, game servers, web hosting. Live status at up.overnight.host.Geschrieben von der Person, die overnight.host betreibt: ein kleines, ehrliches Hosting-Unternehmen auf dedizierter Bare-Metal-Hardware — Linux-VPS, Gameserver, Webhosting. Live-Status unter up.overnight.host.
No. Both sit behind Caddy on the same forwarded HTTPS port, distinguished by hostname (SNI), not by port — whichever HTTPS port your plan forwards is enough for both; see NAT IPv4 vs a dedicated IP if you're not sure what that is. A dedicated IPv4 only matters if you specifically want a standalone address for some other reason; on our plans that's arranged by e-mail, not self-service.Nein. Beide sitzen hinter Caddy auf demselben weitergeleiteten HTTPS-Port, unterschieden nach Hostname (SNI), nicht nach Port – welcher HTTPS-Port auch immer dein Plan weiterleitet, reicht für beide; sieh dir NAT IPv4 vs. dedizierte IP an, wenn du nicht sicher bist, was das ist. Eine dedizierte IPv4 spielt nur eine Rolle, wenn du aus einem anderen Grund gezielt eine eigenständige Adresse willst; bei unseren Plänen wird das per E-Mail geregelt, nicht als Self-Service.
No, and that's the point to get right before you rely on it. AWS S3 replicates across multiple facilities as a baseline; a single MinIO container replicates nothing by default. MinIO's own erasure-coded and distributed modes exist to close that gap, but they need multiple drives or multiple nodes, which is a different, larger deployment than the one this guide describes.Nein, und genau das solltest du verstanden haben, bevor du dich darauf verlässt. AWS S3 repliziert standardmäßig über mehrere Standorte hinweg; ein einzelner MinIO-Container repliziert standardmäßig nichts. MinIOs eigene erasure-codierte und verteilte Modi existieren, um diese Lücke zu schließen, brauchen aber mehrere Laufwerke oder mehrere Nodes, was ein anderes, größeres Deployment ist als das, das diese Anleitung beschreibt.
Not to this exact container. Erasure coding is a property of how MinIO was started — with several drives passed to it at launch — not a setting you flip on a running single-drive instance. Moving to it means standing up a new multi-drive or multi-node MinIO deployment and migrating the buckets across with mc mirror, not reconfiguring this one in place.Nicht bei genau diesem Container. Erasure Coding ist eine Eigenschaft davon, wie MinIO gestartet wurde – mit mehreren Laufwerken, die ihm beim Start übergeben wurden –, keine Einstellung, die du bei einer laufenden Single-Drive-Instanz umlegst. Der Umstieg bedeutet, ein neues Multi-Drive- oder Multi-Node-MinIO-Deployment aufzusetzen und die Buckets mit mc mirror hinüber zu migrieren, nicht dieses hier an Ort und Stelle umzukonfigurieren.
Disk, almost entirely, and by more of a straight-line calculation than a deduplicating tool like restic gives you — MinIO stores close to the actual byte count of what you send it. Add up what you expect to keep at once, including retained versions if you enabled bucket versioning, and size against the tier table rather than against CPU or RAM, which barely move for a single small-to-medium instance.Fast ausschließlich der Speicherplatz, und das eher nach einer geradlinigen Rechnung, als es dir ein deduplizierendes Tool wie restic erlaubt – MinIO speichert annähernd die tatsächliche Byte-Zahl dessen, was du ihm schickst. Rechne zusammen, was du gleichzeitig behalten willst, einschließlich aufbewahrter Versionen, falls du Bucket-Versionierung aktiviert hast, und dimensioniere anhand der Tariftabelle statt anhand von CPU oder RAM, die sich bei einer einzelnen kleinen bis mittleren Instanz kaum bewegen.
No. Create a dedicated user and a bucket-scoped policy through mc admin user add and mc admin policy attach, and hand the backup job that access key instead. The root pair can create and delete any bucket on the instance; a scoped key can be rotated or revoked without touching anything else running against this same MinIO.Nein. Leg über mc admin user add und mc admin policy attach einen eigenen Nutzer und eine bucket-begrenzte Policy an und gib dem Backup-Job stattdessen diesen Access-Key. Das Root-Paar kann jeden Bucket auf der Instanz anlegen und löschen; ein begrenzter Key lässt sich rotieren oder widerrufen, ohne alles andere zu berühren, was gegen dasselbe MinIO läuft.
Prices are final totals; no VAT is shown (§19 UStG). Need something the shop does not list? Email us for a written offer.Alle Preise sind Endpreise ohne ausgewiesene USt. (§19 UStG). Du brauchst etwas, das nicht im Shop steht? Schreib uns für ein schriftliches Angebot.
Order now →Jetzt bestellen → Request a custom configIndividuelle Konfiguration anfragen