--- title: Synology NASにMinio on DockerをインストールしてS3互換サーバーにする tags: ["NAS", "Synology", "Minio", "S3", "Docker"] categories: ["Dev", "NAS", "Synology", "Minio"] date: 2018-01-07T04:05:12Z updated: 2018-01-07T04:38:00Z --- [Synology DiskStation DS718+](https://www.amazon.co.jp/exec/obidos/ASIN/B074BYFKZ2/ikam-22/ref=nosim/)を買いました。 NASとしてだけではなく、SysLogサーバー、LDAPサーバーとしても使えて便利です。 このNASに[Minio](https://minio.io/)をインストールしてS3サーバーにもしてみました。 Package CenterにMinioは用意されていないのですが、Docker経由でインストール可能です。`ssh`でログインして`minio`コマンドを直接実行してもいいですが、Docker経由の方がGUIベースで管理できて、Synology NAS的には楽です。 https://docs.minio.io/docs/minio-docker-quickstart-guide の内容をGUIで行います。 以下、作業メモです。自分が買ったのはDS718+ですが、他のモデルでも同じだと思います。 目次 ### Dockerのインストール "Package Center" => "Utilities" => "Docker"でInstallボタンをクリック。 ### Minio用のShared Folderの作成 "Control Panel" => "Shared Folder"でCreateボタンをクリック。 "Name"は`minio`にし、ゴミ箱は不要なので"Enable Recycle Bin"のチェックを外しておく。 OKボタンをクリックして作成。"Permission"もデフォルトでOK。 ### Minio用のdataフォルダとconfigフォルダ作成 "File Station" => "minio"を選択 => "Create" => "Create folder"で`data`を入力してフォルダ作成。同様に`config`を入力してフォルダ作成。 ### Minio Docker Imageのダウンロード "Main Menu"から"Docker"を開く。 "Registry"タブをクリックし、"Insert keywords"に`minio`を入力し、`minio/minio`を選択。 "Download"をクリック。Tagは好きなものを選択していいが、ここでは`latest`を使用。 ### Minioの起動 "Image"タブをクリックし、`minio/minio:latest`を選択。 "Launch"ボタンをクリック。"Container Name"に`minio`を入力。 "Advanced Settings"ボタンをクリック。"Enable auto-restart"にチェックを入れる。 "Volume"タブをクリックし、"Add Folder"ボタンをクリック。 `minio/data`を`/data`に、`minio/config`を`/root/.minio`にマウントする。 "Port Settings"タブをクリックし、"Local Port"に`9000`を入力。 "Environment"タブをクリックし、"Command"に`minio server /data`を入力。 "Apply"ボタンをクリックして"Advanced Settings"ウィンドウを閉じる。 "Next"ボタンクリック => "Apply"ボタンクリックでminioを起動する。 "Container"タブをクリックし、`minio`コンテナが"Running"になっていればOK。 `minio`コンテナをクリックし、"Details"ボタンをクリック。"Log"タブを開くと`AccessKey`と`SecretKey`を確認できる。 ### 動作確認 `http://:9000`にアクセスすると、UI(Minio Browser)が表示される。 [AWS CLI](https://aws.amazon.com/cli/)からアクセスする。 ``` aws configure ``` で`AccessKey`と`SecretKey`を入力。Regionは任意で可。 `foo`バケットを作成し、`hello.txt`をコピーする。 ``` $ s3_url=http://:9000 $ aws --endpoint-url $s3_url s3 mb s3://foo make_bucket: foo $ aws --endpoint-url $s3_url s3 ls 2018-01-07 12:38:01 foo $ echo Hello > ~/hello.txt $ aws --endpoint-url $s3_url s3 cp ~/hello.txt s3://foo/ upload: ./hello.txt to s3://foo/hello.txt ``` Minio Browserにログインするとコピーしたファイルを確認できる。 ### HTTPS対応 https://docs.minio.io/docs/generate-let-s-encypt-certificate-using-concert-for-minio `/minio/config/certs`フォルダを作成し、その下に秘密鍵は`secret.key`、公開鍵は`public.crt`というファイル名でコピーする。 `minio`コンテナの"Restart"ボタンをクリック。 `https://<ドメイン名>:9000`でアクセス可能になる。 --- [Synology DiskStation](https://www.amazon.co.jp/exec/obidos/ASIN/B074BYFKZ2/ikam-22/ref=nosim/)良い。