メインコンテンツへ移動
AnyStorage
無料ダウンロード

Hetzner Object Storage

Hetzner Object Storage クライアント: 接続・マウント・エラー

Hetzner Object Storage は 3 つのエンドポイントで S3 互換です。デスクトップクライアントからの接続、ドライブとしてのマウント、公式が非対応と明記している機能をまとめます。

Hetzner Object Storage のエンドポイント、資格情報、上限、非対応機能を整理し、GUI クライアントからの接続とマウント方法を示します。

Hetzner Object Storage クライアント、Hetzner S3 クライアント、Hetzner エンドポイント

Hetzner Object Storage は S3 互換で安価、しかも EU 内。ヨーロッパ発の案件では、デスクトップツールを決める前に採用されていることがよくあります。このページではクライアントに必要な設定、作業の形を決める上限、そして「Hetzner は Amazon ではない」ことから生じるエラーを扱います。内容は 2026 年 9 月に docs.hetzner.comhetzner.com で確認しました。ツール全体の比較は S3 クライアント(GUI)の概要にあります。

3 つのエンドポイントと、それに合うアドレッシング

ロケーションは 3 つ、それぞれ固有のエンドポイントを持ちます。

ロケーションエンドポイント公式例で使われるリージョン文字列
ドイツ・Falkensteinfsn1.your-objectstorage.comfsn1
ドイツ・Nurembergnbg1.your-objectstorage.comnbg1
フィンランド・Helsinkihel1.your-objectstorage.comhel1

オブジェクトは https://<bucket-name>.<location>.your-objectstorage.com/<file-name> で公開されます。バケットはパスの一部ではなくサブドメインです。つまり仮想ホスト形式で、Hetzner 自身のツール例もそれに揃っています。MinIO クライアントの設定は --path 'off'、AWS CLI のページは署名付き URL 用に addressing_style = virtual を挙げています。したがってクライアント側に「パススタイル」や「force path style」のチェックがあれば、Hetzner ではオフのままにしてください。パススタイルがほぼ必須の MinIO とは逆で、そちらは MinIO クライアントで扱っています。

sh

mc alias set hetzner https://fsn1.your-objectstorage.com <ACCESS_KEY> <SECRET_KEY> --api 's3v4' --path 'off'
mc ls hetzner
aws s3 ls --endpoint-url https://fsn1.your-objectstorage.com

公式が手順を載せているのは mcs3cmds5cmdrclone、AWS CLI。FAQ には「Yes you can manage your Buckets via AWS CLI und AWS SDKs」とあります。認証は AWS Signature version 4、ストレージクラスは Standard のみです。

Cloud Console から鍵を取り出す

資格情報はアカウント単位ではなくプロジェクト単位です。Hetzner Console でプロジェクトを開き、左メニューの Security、上部メニューの S3 CredentialsGenerate credentials と進み、説明を入れて 2 つの値をコピーします。

シークレットはその場で保存してください。ドキュメントは明快です。「It is not possible to view the secret key again once the window has been closed!」さらに鍵はプロジェクトに紐づくため、「It is not possible to share S3 credentials across multiple projects unless you set up appropriate bucket policies」。2 つのプロジェクトのバケットを 1 つのクライアントで見たい場合は、接続を 2 つ作るか、バケットポリシーで許可する必要があります。

作業の形を決める上限

Hetzner Object Storage の上限と価格(2026 年 9 月確認)
項目
バケット数全プロジェクト合計で 100 まで
バケットあたりのオブジェクト数50,000,000 まで
バケットあたりの容量100 TB まで
オブジェクトサイズ1 オブジェクト 5 TB まで、単一 PUT は 5 GB まで
課金の最小オブジェクトサイズ64 kB
基本料金月額 4.99 ユーロ / 5.99 ドル、ストレージ 1 TB と下り 1 TB を含む
超過分ストレージ 1 TB 時あたり 0.0067 ユーロ、下り 1 TB あたり 1.00 ユーロ
無料の通信上り、eu-central ネットワークゾーン内の内部通信、S3 操作

2 つは説明が要ります。64 kB の下限があるため、サムネイルや小さな JSON で埋まったバケットは全オブジェクトが 64 kB として課金されます。2 kB のファイルを 100 万個上げるクライアントは 64 GB を買っています。もう 1 つ、課金はバイト数ではなく存在時間で始まります。「You are charged for every hour you have at least one active Bucket, even if it's empty.」空のテスト用バケットを 1 か月放置すれば 1 か月分の基本料金です。

単一 PUT 5 GB の上限はツール選びに直結します。それを超えるものはマルチパートアップロードが必要で、まともなクライアントは自動でそうします。20 GB の動画を素朴に PUT するスクリプトだけが失敗する理由がこれです。

バケット名は Amazon より厳しい

バケット名は DNS ラベルになるため、命名規則は S3 より厳しく、しかも後から変更できません。許されるのは「the alphabet (a-z), digits (0-9), minus sign (-)」で、「No period (.), No blank or space characters, No upper case characters」。先頭は英字か数字、末尾はハイフン不可、長さは 3〜63 文字、RFC 1123 に適合し、IP アドレスの形は不可です。ピリオド禁止は Amazon より厳しい条件です。そして「it is NOT possible to change the name once the Bucket is created.」

実装されていない機能

互換性についての記述は率直です。「Our Object Storage API offers basic compatibility with the standard Amazon S3 actions and data types.」バージョニング、Object Lock(リーガルホールドとリテンション)、CORS ポリシー、ライフサイクルポリシー、SSE-C にはそれぞれ手順ページがあります。一方で非対応の一覧もあり、S3 から移ってくると驚くものが含まれます。バケットの WebsiteNotificationsAccelerateAnalyticsIntelligent TieringInventoryLoggingMetricsOwnership ControlsReplicationTaggingRequest-Payment はいずれも非対応。オブジェクトの RestoreSelect ContentTorrentGetObjectAttributes も同様です。バケット作成は「Limited headers and XML body elements only」、暗号化は SSE-C のみ、CopyObject には「Source and destination must be identical」という注記が付きます。

もう 1 つの穴が独自ドメインです。「Currently, it is not possible to assign a custom domain name to a Bucket.」回避策として S3 Proxy が案内されていますが、「makes the Bucket data publicly accessible via your own domain even if the Bucket visibility is set to private」という警告つきです。前段に Basic 認証を置くか、署名付き URL を渡すほうが安全です。

GUI クライアントから接続する

公式が手順を載せている GUI は 2 つ。Cyberduck が最も楽で、設定画面に Hetzner Object Storage のプロファイルが同梱されています。有効にしてロケーションを選べばサーバーと URL は埋まり、こちらが入れるのはアクセスキーとシークレットキーだけです。WinSCP にも専用ページがあります。

それ以外のクライアントに必要なのは 4 つ。上の表のエンドポイント URL、対応するリージョン文字列、アクセスキー、シークレットキーで、パススタイルはオフです。AnyStorage 0.2.25 では S3 接続タイプがこれに該当し、カスタムエンドポイント URL、カスタムリージョン、パススタイルの切り替えがいずれも編集可能なので、Hetzner 専用ビルドは要りません。macOS 11 以降、Windows 10 以降、Ubuntu 20.04 以降で動作し、認証情報はローカルに暗号化保存、アカウント登録は不要です。無料版は接続 2 件までで商用利用が可能、20 種類以上の接続タイプや検索・プレビュー・一括操作は Pro です。プラットフォーム別の話は Windows 版Linux 版にあります。

バケットをドライブとしてマウントする

Hetzner はマウント用ツールを配布していないので、選択肢は 2 つです。macOS と Linux では FUSE、Windows では WinFsp を要する rclone mount か、OS が元から話せるプロトコルでバケットを再提供するクライアントです。AnyStorage は後者で、http://127.0.0.1:3211 の WebDAV サーバーを Finder、エクスプローラー、GNOME Files、Dolphin、davfs2 がマウントします。カーネルドライバは一切なく、接続中のストレージが 1 つのマウント配下のフォルダとして並びます。無料版ではこのマウントは読み取り専用です。手順は S3 バケットをネットワークドライブに割り当てる、FUSE との比較は rclone mount の代替にあります。

実は設定ミスであるエラー

  • `SignatureDoesNotMatch` はリージョン文字列とエンドポイントの不一致、または Console からコピーする際にシークレットが切れていることが多いです。同じ症状を端から端まで追った MinIO の SignatureDoesNotMatch が参考になります。
  • 存在する名前に対する `NoSuchBucket` は、パススタイルのクライアントが仮想ホスト形式のエンドポイントを叩いているか、鍵が別プロジェクトのものです。
  • ブラウザからのアップロードが CORS で止まるのはバケット設定の問題で、仕組みは Amazon と同じです。S3 の CORS エラーを参照してください。
  • `EntityTooLarge` は単一 PUT 5 GB の上限です。マルチパートアップロードに対応したクライアントを使ってください。

よくある質問

Hetzner Object Storage のエンドポイントは何ですか。

バケットを作ったロケーションに合わせて fsn1.your-objectstorage.comnbg1.your-objectstorage.comhel1.your-objectstorage.com のいずれかを HTTPS で使います。リージョン欄には同じ短い文字列(fsn1nbg1hel1)を入れます。

パススタイルは必要ですか。

不要です。オブジェクトは https://<bucket>.<location>.your-objectstorage.com/<key> で提供され、公式の MinIO クライアント例は --path 'off'、AWS CLI 例は addressing_style = virtual を挙げています。force path style は必ずオフにしてください。

公式のデスクトップクライアントはありますか。

ありません。代わりにサードパーティのツールが文書化されています。コマンドラインは mcs3cmds5cmdrclone、AWS CLI、GUI は Cyberduck と WinSCP です。Cyberduck には「Hetzner Object Storage」プロファイルが同梱されており、最短経路になります。

Amazon に比べて足りない機能は何ですか。

公式の表現は「basic compatibility」です。レプリケーション、タグ付け、静的サイトホスティング、通知、転送高速化、インベントリ、ロギング、メトリクス、所有権設定、オブジェクトの復元、Select Content、GetObjectAttributes はいずれも非対応。暗号化は SSE-C のみで、バケットへの独自ドメイン割り当てもできません。

保存したバイト数より請求が多いのはなぜですか。

理由は 2 つ。64 kB より小さいオブジェクトは 64 kB として課金され、基本料金はバケットが 1 つでも存在する時間ごとに発生します(空でも同じ)。使い終わったテスト用バケットは、中身を空にするのではなく削除してください。