<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://docs.artisancommerce.at/index.php?action=history&amp;feed=atom&amp;title=Intern%3AHauptseite%2FMinioS3</id>
	<title>Intern:Hauptseite/MinioS3 - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://docs.artisancommerce.at/index.php?action=history&amp;feed=atom&amp;title=Intern%3AHauptseite%2FMinioS3"/>
	<link rel="alternate" type="text/html" href="https://docs.artisancommerce.at/index.php?title=Intern:Hauptseite/MinioS3&amp;action=history"/>
	<updated>2026-04-18T15:34:22Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in ArtisanCommerce Dokumentation</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://docs.artisancommerce.at/index.php?title=Intern:Hauptseite/MinioS3&amp;diff=99&amp;oldid=prev</id>
		<title>Admin: Die Seite wurde neu angelegt: „== MinIO: High-Performance Private S3 Storage ==  &#039;&#039;&#039;MinIO&#039;&#039;&#039; is an open-source, high-performance object storage server that is 100% compatible with the &#039;&#039;&#039;Amazon S3&#039;&#039;&#039; API. Written in Go, it is designed to be the &quot;software-defined&quot; alternative to proprietary cloud storage.  === Core Architecture &amp; Components === * &#039;&#039;&#039;The Server:&#039;&#039;&#039; A lightweight binary (&lt;100MB) that can run as a standalone process or a Docker container. * &#039;&#039;&#039;S3 Compatibility:&#039;&#039;&#039; It s…“</title>
		<link rel="alternate" type="text/html" href="https://docs.artisancommerce.at/index.php?title=Intern:Hauptseite/MinioS3&amp;diff=99&amp;oldid=prev"/>
		<updated>2026-03-23T21:09:26Z</updated>

		<summary type="html">&lt;p&gt;Die Seite wurde neu angelegt: „== MinIO: High-Performance Private S3 Storage ==  &amp;#039;&amp;#039;&amp;#039;&lt;a href=&quot;/index.php?title=MinIO&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;MinIO (Seite nicht vorhanden)&quot;&gt;MinIO&lt;/a&gt;&amp;#039;&amp;#039;&amp;#039; is an open-source, high-performance object storage server that is 100% compatible with the &amp;#039;&amp;#039;&amp;#039;Amazon S3&amp;#039;&amp;#039;&amp;#039; API. Written in Go, it is designed to be the &amp;quot;software-defined&amp;quot; alternative to proprietary cloud storage.  === Core Architecture &amp;amp; Components === * &amp;#039;&amp;#039;&amp;#039;The Server:&amp;#039;&amp;#039;&amp;#039; A lightweight binary (&amp;lt;100MB) that can run as a standalone process or a Docker container. * &amp;#039;&amp;#039;&amp;#039;S3 Compatibility:&amp;#039;&amp;#039;&amp;#039; It s…“&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== MinIO: High-Performance Private S3 Storage ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;[[MinIO]]&amp;#039;&amp;#039;&amp;#039; is an open-source, high-performance object storage server that is 100% compatible with the &amp;#039;&amp;#039;&amp;#039;Amazon S3&amp;#039;&amp;#039;&amp;#039; API. Written in Go, it is designed to be the &amp;quot;software-defined&amp;quot; alternative to proprietary cloud storage.&lt;br /&gt;
&lt;br /&gt;
=== Core Architecture &amp;amp; Components ===&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;The Server:&amp;#039;&amp;#039;&amp;#039; A lightweight binary (&amp;lt;100MB) that can run as a standalone process or a Docker container.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;S3 Compatibility:&amp;#039;&amp;#039;&amp;#039; It speaks the exact same &amp;quot;language&amp;quot; as AWS S3. Any application (Node.js, Python, etc.) or tool (Cyberduck, AWS CLI) that works with Amazon will work with your MinIO instance.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Erasure Coding:&amp;#039;&amp;#039;&amp;#039; MinIO protects data against hardware failure by breaking objects into data and parity blocks distributed across multiple drives. Even if you lose half your disks, your data remains intact.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Bitrot Protection:&amp;#039;&amp;#039;&amp;#039; It uses highwayhash checksums to ensure that the data you read is exactly the data you wrote, preventing &amp;quot;silent data corruption.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Setup &amp;amp; Implementation Guide ==&lt;br /&gt;
&lt;br /&gt;
=== Phase 1: Deploy MinIO via Portainer (The Origin) ===&lt;br /&gt;
To host your own S3 storage on your bare-metal server, use this Docker Compose stack in Portainer.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot;&amp;gt;&lt;br /&gt;
version: &amp;#039;3.8&amp;#039;&lt;br /&gt;
services:&lt;br /&gt;
  minio:&lt;br /&gt;
    image: quay.io/minio/minio:latest&lt;br /&gt;
    container_name: minio&lt;br /&gt;
    restart: always&lt;br /&gt;
    ports:&lt;br /&gt;
      - &amp;quot;9000:9000&amp;quot; # S3 API&lt;br /&gt;
      - &amp;quot;9001:9001&amp;quot; # Web Console&lt;br /&gt;
    environment:&lt;br /&gt;
      MINIO_ROOT_USER: admin&lt;br /&gt;
      MINIO_ROOT_PASSWORD: your_strong_password&lt;br /&gt;
    volumes:&lt;br /&gt;
      - minio_data:/data&lt;br /&gt;
    command: server /data --console-address &amp;quot;:9001&amp;quot;&lt;br /&gt;
&lt;br /&gt;
volumes:&lt;br /&gt;
  minio_data:&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Phase 2: Global Propagation via Cloudflare (The Edge) ===&lt;br /&gt;
Since your server is local/bare-metal, use a &amp;quot;Pull-Based&amp;quot; CDN strategy to propagate files globally.&lt;br /&gt;
&lt;br /&gt;
==== Step 1: Establish the Tunnel ====&lt;br /&gt;
Do not open ports on your router. Use a &amp;#039;&amp;#039;&amp;#039;Cloudflare Tunnel&amp;#039;&amp;#039;&amp;#039; to point a domain (e.g., `s3.yourcompany.com`) to your local Port 9000.&lt;br /&gt;
&lt;br /&gt;
==== Step 2: Enable Tiered Cache ====&lt;br /&gt;
In the Cloudflare Dashboard, go to &amp;#039;&amp;#039;&amp;#039;Caching &amp;gt; Tiered Cache&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
* Enable &amp;#039;&amp;#039;&amp;#039;Smart Tiered Cache Topology&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Why:&amp;#039;&amp;#039;&amp;#039; This forces Cloudflare&amp;#039;s 300+ PoPs to ask a few &amp;quot;Upper Tier&amp;quot; hubs for your files first. It prevents your local NAS from being &amp;quot;hammered&amp;quot; by every single global data center simultaneously.&lt;br /&gt;
&lt;br /&gt;
==== Step 3: The &amp;quot;Immutable&amp;quot; Header Trick ====&lt;br /&gt;
To ensure files stay in the global cache forever, set headers at the origin. &lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Header:&amp;#039;&amp;#039;&amp;#039; `Cache-Control: public, max-age=31536000, immutable`&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Phase 3: The &amp;quot;Pre-Warming&amp;quot; Strategy (Global Seeding) ==&lt;br /&gt;
&lt;br /&gt;
If you want your files to be fast &amp;#039;&amp;#039;&amp;#039;before&amp;#039;&amp;#039;&amp;#039; the first user arrives, you must &amp;quot;prime&amp;quot; the Cloudflare PoPs.&lt;br /&gt;
&lt;br /&gt;
=== Method A: The Python &amp;quot;Global Pinger&amp;quot; Script ===&lt;br /&gt;
Run this script from a VPS or your local machine. It uses a list of global proxy endpoints or simply triggers the Cloudflare Tiered Cache hubs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import requests&lt;br /&gt;
&lt;br /&gt;
# List your most &amp;#039;heavy&amp;#039; assets here (Images, JS Bundles, Video)&lt;br /&gt;
ASSETS = [&lt;br /&gt;
    &amp;quot;https://s3.yourcompany.com/bucket/large-header.webp&amp;quot;,&lt;br /&gt;
    &amp;quot;https://s3.yourcompany.com/bucket/main-bundle.js&amp;quot;,&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
def warm_cache():&lt;br /&gt;
    print(&amp;quot;Starting Global Cache Warm-up...&amp;quot;)&lt;br /&gt;
    for url in ASSETS:&lt;br /&gt;
        try:&lt;br /&gt;
            # We send a HEAD request to save bandwidth while triggering the CDN fetch&lt;br /&gt;
            response = requests.head(url)&lt;br /&gt;
            status = response.headers.get(&amp;#039;CF-Cache-Status&amp;#039;, &amp;#039;MISS/HIT unknown&amp;#039;)&lt;br /&gt;
            print(f&amp;quot;URL: {url} | CF-Status: {status}&amp;quot;)&lt;br /&gt;
        except Exception as e:&lt;br /&gt;
            print(f&amp;quot;Failed to ping {url}: {e}&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    warm_cache()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Method B: Third-Party Global Seeders ===&lt;br /&gt;
Instead of a VPN, use &amp;quot;Synthetic Monitoring&amp;quot; tools to ping your files from multiple global regions simultaneously:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;[[Checkly]]:&amp;#039;&amp;#039;&amp;#039; (Recommended) Set up a &amp;quot;Browser Check&amp;quot; or &amp;quot;API Check.&amp;quot; In the settings, select 10+ locations (Tokyo, London, Sao Paulo, etc.). Schedule it to run once after every major deployment. It will &amp;quot;force&amp;quot; Cloudflare to pull your files to those specific regions.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;[[UptimeRobot]]:&amp;#039;&amp;#039;&amp;#039; Create a &amp;quot;Keyword&amp;quot; or &amp;quot;HTTP&amp;quot; monitor for your heaviest asset. While its primary job is uptime, the side effect is that its global nodes will keep your Cloudflare cache &amp;quot;warm&amp;quot; and prevent it from expiring.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Professional &amp;quot;Peer&amp;quot; Tips ==&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Don&amp;#039;t Warm Everything:&amp;#039;&amp;#039;&amp;#039; Focus on &amp;quot;Heavy&amp;quot; files. A 5KB JSON file taking 200ms once is fine. A 5MB Hero Image taking 3 seconds is a disaster.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Tiered Cache is Key:&amp;#039;&amp;#039;&amp;#039; Without Tiered Cache, pre-warming is much harder because you&amp;#039;d have to ping 300+ cities. With Tiered Cache, you only need to hit the &amp;quot;Upper Tier&amp;quot; hubs (usually 5-10 global locations).&lt;br /&gt;
&lt;br /&gt;
== References &amp;amp; Further Learning ==&lt;br /&gt;
* [https://www.min.io/docs/minio/linux/index.html Official MinIO Documentation]&lt;br /&gt;
* [https://www.checklyhq.com/docs/monitoring/global-locations/ Checkly: Global Monitoring Locations]&lt;br /&gt;
* [https://developers.cloudflare.com/cache/how-to/tiered-cache/ Cloudflare Tiered Cache Explained]&lt;br /&gt;
* [https://www.youtube.com/watch?v=eqqA7qxAzHU Video: MinIO vs S3 Performance Deep Dive]&lt;br /&gt;
* [https://www.youtube.com/watch?v=hyBelB1S8KI Video: Cloudflare Cache Reserve Walkthrough]&lt;br /&gt;
* [https://www.youtube.com/watch?v=6w8v89In-mQ Video: How CDNs work (The Pull Method)]&lt;br /&gt;
&lt;br /&gt;
[[Category:Infrastructure]] [[Category:Storage]] [[Category:DevOps]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
</feed>