Skip to content
  • Kategorien
  • World
  • Aktuell
  • Tags
  • Beliebt
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
linux-nerds.org

linux-nerds.org

  1. Übersicht
  2. Linux
  3. Minio - Objektspeicher selbst gehostet

Minio - Objektspeicher selbst gehostet

Geplant Angeheftet Gesperrt Verschoben Linux
miniolinuxrestic
1 Beiträge 1 Kommentatoren 202 Aufrufe
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • FrankMF Offline
    FrankMF Offline
    FrankM
    schrieb am zuletzt editiert von FrankM
    #1

    Ich hatte mal bei Hetzner, den S3 Objekt-Speicher ausprobiert, aber da ließen sich die Benutzerrechte nicht so einstellen, wie ich mir das vorstellte. Eine Recherche im Hetzner Forum ergab, das diese Funktion wohl noch Baustelle ist. Somit habe ich mich davon verabschiedet. Da ich das Thema sehr spannend fand und es von Restic auch so unterstützt wird, sperrte ich meine Ohren auf. Irgendwann fiel dann bei einem Gespräch, das Wort Minio. So fing es an....

    Installation

    Link Preview Image
    MinIO Object Storage for Linux — MinIO Object Storage for Linux

    favicon

    (min.io)

    So installierte ich das mal auf eine Hetzner VM, ein Debian 12 Bookworm. Dazu ein Letsencrypt Zertifikat und der Spaß konnte beginnen. Aber, am Anfang hatte ich doch einige Probleme, das vernünftig ans Laufen zu bekommen.

    SystemD

    /lib/systemd/system/minio.service

    [Unit]
    Description=MinIO
    Documentation=https://docs.min.io
    Wants=network-online.target
    After=network-online.target
    AssertFileIsExecutable=/usr/local/bin/minio
    
    [Service]
    Type=notify
    
    WorkingDirectory=/usr/local
    
    User=minio-user
    Group=minio-user
    ProtectProc=invisible
    
    EnvironmentFile=-/etc/default/minio
    ExecStart=/usr/local/bin/minio server $MINIO_OPTS $MINIO_VOLUMES
    
    # Let systemd restart this service always
    Restart=always
    
    # Specifies the maximum file descriptor number that can be opened by this process
    LimitNOFILE=1048576
    
    # Turn-off memory accounting by systemd, which is buggy.
    MemoryAccounting=no
    
    # Specifies the maximum number of threads this process can create
    TasksMax=infinity
    
    # Disable timeout logic and wait until process is stopped
    TimeoutSec=infinity
    
    # Disable killing of MinIO by the kernel's OOM killer
    OOMScoreAdjust=-1000
    
    SendSIGKILL=no
    
    [Install]
    WantedBy=multi-user.target
    
    # Built for ${project.name}-${project.version} (${project.name})
    

    Mini ENV File

    Die Startparameter von Minio werden über /etc/default/minio gesteuert.

    MINIO_ROOT_USER=<USER>
    MINIO_ROOT_PASSWORD=<PASSWORD>
    
    MINIO_VOLUMES=/mnt/HC_Volume_XXXXXXXXXX/
    
    MINIO_OPTS="--address :9000 --console-address :9001 --certs-dir /home/minio/certs"
    
    MINIO_BROWSER_REDIRECT_URL=https://<DOMAIN>/minio/ui
    

    NGINX

    Das war mein Sorgenkind, doch am Ende hatte ich es hinbekommen.

    ## Upstream Block
    # API
    upstream minio_s3 {
       least_conn;
       server <DOMAIN>:9000;
    }
    
    # Webinterface
    upstream minio_console {
       least_conn;
       server <DOMAIN>:9001;
    }
    
    ## Server Block
    server {
       listen       443 ssl;
       listen  [::]:443 ssl;
       server_name  <DOMAIN>;
    
       # SSL configuration
       ssl_certificate /home/minio/certs/public.crt;
       ssl_certificate_key /home/minio/certs/private.key;
       ssl_dhparam /home/minio/certs/dhparam.pem;
    
       ssl_protocols TLSv1.3;
       ssl_prefer_server_ciphers on;
       ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384';
    
       # Allow special characters in headers
       ignore_invalid_headers off;
       # Allow any size file to be uploaded.
       # Set to a value such as 1000m; to restrict file size to a specific value
       client_max_body_size 0;
       # Disable buffering
       proxy_buffering off;
       proxy_request_buffering off;
    
    # WebSocket-Verbindungen
    location /ws/ {
        proxy_pass http://localhost:9001/ws/;
        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_buffering off;
    }
    
    # API      
    location / {
       proxy_set_header Host $http_host;
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_set_header X-Forwarded-Proto $scheme;
       proxy_connect_timeout 300;
       # Default is HTTP/1, keepalive is only enabled in HTTP/1.1
       proxy_http_version 1.1;
       proxy_set_header Connection "";
       chunked_transfer_encoding off;
       proxy_pass https://minio_s3; # This uses the upstream directive definition to load balance
       }
    
    # Webinterface
    location /minio/ui/ {
       rewrite ^/minio/ui/(.*) /$1 break;
       proxy_set_header Host $http_host;
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_set_header X-Forwarded-Proto $scheme;
       proxy_set_header X-NginX-Proxy true;
       proxy_connect_timeout 300;
       proxy_http_version 1.1;
       proxy_set_header Upgrade $http_upgrade;
       proxy_set_header Connection "upgrade";
       chunked_transfer_encoding off;
       proxy_pass https://minio_console;
       }
    }
    

    1505926c-57d4-45d7-974d-f66360dc3b3c-grafik.png

    Speicher

    Hetzner Objektspeicher hat da kostenmäßig deutlich die Nase vorne. Das was ich jetzt hier mache, ist deutlich teurer. Aber, dafür habe ich die volle Kontrolle. Ok, fast 🙂 Ich lege da aber sowieso nur Restic Backups ab, da kann keiner was mit anfangen (AES256 verschlüsselt). Ich hänge an die Hetzner VM ein 100GB Volume an.

    /etc/fstab

    /dev/disk/by-id/scsi-0HC_Volume_xxxxxxxxxx /mnt/HC_Volume_xxxxxxxxxxxx xfs discard,nofail,defaults 0 0
    

    XFS, weil es in der Minio Dokumentation empfohlen wird.

    Die Kosten, mit 100GB Volume und CX22 VM, liegen bei ca. 9€ im Monat.

    Viel Spaß beim Spielen 😉

    Im Fediverse -> @FrankM@nrw.social

    1. NanoPi R5S
    2. Quartz64 Model B, 4GB RAM
    3. Quartz64 Model A, 4GB RAM
    4. RockPro64 v2.1
    1 Antwort Letzte Antwort
    0
    Antworten
    • In einem neuen Thema antworten
    Anmelden zum Antworten
    • Älteste zuerst
    • Neuste zuerst
    • Meiste Stimmen


    • FrankMF

      Update 1.32.5 - Security Fixes!

      Beobachtet Ignoriert Geplant Angeheftet Gesperrt Verschoben Vaultwarden vaultwarden linux
      1
      0 Stimmen
      1 Beiträge
      134 Aufrufe
      Niemand hat geantwortet
    • FrankMF

      Open Source Software - Nur mit Luft & Liebe läuft es auch nicht rund

      Beobachtet Ignoriert Geplant Angeheftet Gesperrt Verschoben Linux linux kde
      1
      0 Stimmen
      1 Beiträge
      160 Aufrufe
      Niemand hat geantwortet
    • FrankMF

      Debian 12 - Bluetooth Ausfall nach Stromausfall

      Beobachtet Ignoriert Geplant Angeheftet Gesperrt Verschoben Linux ki-generiert linux
      1
      0 Stimmen
      1 Beiträge
      173 Aufrufe
      Niemand hat geantwortet
    • FrankMF

      Pycharm - Nach Stromausfall startet es nicht mehr.

      Beobachtet Ignoriert Geplant Angeheftet Gesperrt Verschoben Linux pycharm linux
      1
      0 Stimmen
      1 Beiträge
      144 Aufrufe
      Niemand hat geantwortet
    • FrankMF

      NodeBB - Update auf v1.18.6

      Beobachtet Ignoriert Geplant Angeheftet Gesperrt Verschoben NodeBB nodebb nodejs linux
      1
      1
      0 Stimmen
      1 Beiträge
      169 Aufrufe
      Niemand hat geantwortet
    • FrankMF

      IPTables dauerhaft speichern

      Beobachtet Ignoriert Geplant Angeheftet Gesperrt Verschoben Linux linux iptables
      1
      0 Stimmen
      1 Beiträge
      616 Aufrufe
      Niemand hat geantwortet
    • FrankMF

      Logger

      Beobachtet Ignoriert Geplant Angeheftet Gesperrt Verschoben Linux linux
      1
      0 Stimmen
      1 Beiträge
      435 Aufrufe
      Niemand hat geantwortet
    • FrankMF

      Restic - Beispielzeiten

      Beobachtet Ignoriert Geplant Angeheftet Gesperrt Verschoben Restic linux restic
      1
      0 Stimmen
      1 Beiträge
      522 Aufrufe
      Niemand hat geantwortet
    Powered by NodeBB | Contributors
    © 2022 frank-mankel.de
    Fediverse
    • Anmelden

    • Du hast noch kein Konto? Registrieren

    • Anmelden oder registrieren, um zu suchen
    • Erster Beitrag
      Letzter Beitrag
    0
    • Kategorien
    • World
    • Aktuell
    • Tags
    • Beliebt