minio/browser
Krishnan Parthasarathi c829e3a13b Support for remote tier management (#12090)
With this change, MinIO's ILM supports transitioning objects to a remote tier.
This change includes support for Azure Blob Storage, AWS S3 compatible object
storage incl. MinIO and Google Cloud Storage as remote tier storage backends.

Some new additions include:

 - Admin APIs remote tier configuration management

 - Simple journal to track remote objects to be 'collected'
   This is used by object API handlers which 'mutate' object versions by
   overwriting/replacing content (Put/CopyObject) or removing the version
   itself (e.g DeleteObjectVersion).

 - Rework of previous ILM transition to fit the new model
   In the new model, a storage class (a.k.a remote tier) is defined by the
   'remote' object storage type (one of s3, azure, GCS), bucket name and a
   prefix.

* Fixed bugs, review comments, and more unit-tests

- Leverage inline small object feature
- Migrate legacy objects to the latest object format before transitioning
- Fix restore to particular version if specified
- Extend SharedDataDirCount to handle transitioned and restored objects
- Restore-object should accept version-id for version-suspended bucket (#12091)
- Check if remote tier creds have sufficient permissions
- Bonus minor fixes to existing error messages

Co-authored-by: Poorna Krishnamoorthy <poorna@minio.io>
Co-authored-by: Krishna Srinivas <krishna@minio.io>
Signed-off-by: Harshavardhana <harsha@minio.io>
2021-04-23 11:58:53 -07:00
..
app Support for remote tier management (#12090) 2021-04-23 11:58:53 -07:00
production Support for remote tier management (#12090) 2021-04-23 11:58:53 -07:00
.babelrc Browser: Use polyfill to support Object.assign in IE11 (#3942) 2017-03-21 13:48:07 -07:00
.editorconfig upgrading react and refactoring components (#5409) (#5444) 2018-03-21 11:30:50 -07:00
.esformatter revert browser newux changes (#5714) 2018-03-26 12:49:12 -07:00
.gitignore feat: remove go-bindata-assetfs in favor of embed by upgrading to go1.16 (#11733) 2021-03-08 11:26:43 -08:00
.prettierrc upgrading react and refactoring components (#5409) (#5444) 2018-03-21 11:30:50 -07:00
assets.go feat: remove go-bindata-assetfs in favor of embed by upgrading to go1.16 (#11733) 2021-03-08 11:26:43 -08:00
build.js Support for remote tier management (#12090) 2021-04-23 11:58:53 -07:00
karma.conf.js Support for remote tier management (#12090) 2021-04-23 11:58:53 -07:00
LICENSE update license change for MinIO 2021-04-23 11:58:53 -07:00
package-lock.json Support for remote tier management (#12090) 2021-04-23 11:58:53 -07:00
package.json Support for remote tier management (#12090) 2021-04-23 11:58:53 -07:00
README.md update license change for MinIO 2021-04-23 11:58:53 -07:00
staticcheck.conf re-implement data usage crawler to be more efficient (#9075) 2020-03-18 16:19:29 -07:00
tests.webpack.js Support for remote tier management (#12090) 2021-04-23 11:58:53 -07:00
webpack.config.js Support for remote tier management (#12090) 2021-04-23 11:58:53 -07:00
webpack.production.config.js Support for remote tier management (#12090) 2021-04-23 11:58:53 -07:00

MinIO File Browser

MinIO Browser provides minimal set of UI to manage buckets and objects on minio server. MinIO Browser is written in javascript and released under GNU Affero General Public License 3.0.

Installation

Install node

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
exec -l $SHELL
nvm install stable

Install node dependencies

npm install

Generating Assets

npm run release

This generates production in the current directory.

Run MinIO Browser with live reload

Run MinIO Browser with live reload

npm run dev

Open http://localhost:8080/minio/ in your browser to play with the application.

Run MinIO Browser with live reload on custom port

Edit browser/webpack.config.js

diff --git a/browser/webpack.config.js b/browser/webpack.config.js
index 3ccdaba..9496c56 100644
--- a/browser/webpack.config.js
+++ b/browser/webpack.config.js
@@ -58,6 +58,7 @@ var exports = {
     historyApiFallback: {
       index: '/minio/'
     },
+    port: 8888,
     proxy: {
       '/minio/webrpc': {
         target: 'http://localhost:9000',
@@ -97,7 +98,7 @@ var exports = {
 if (process.env.NODE_ENV === 'dev') {
   exports.entry = [
     'webpack/hot/dev-server',
-    'webpack-dev-server/client?http://localhost:8080',
+    'webpack-dev-server/client?http://localhost:8888',
     path.resolve(__dirname, 'app/index.js')
   ]
 }
npm run dev

Open http://localhost:8888/minio/ in your browser to play with the application.

Run MinIO Browser with live reload on any IP

Edit browser/webpack.config.js

diff --git a/browser/webpack.config.js b/browser/webpack.config.js
index 8bdbba53..139f6049 100644
--- a/browser/webpack.config.js
+++ b/browser/webpack.config.js
@@ -71,6 +71,7 @@ var exports = {
     historyApiFallback: {
       index: '/minio/'
     },
+    host: '0.0.0.0',
     proxy: {
       '/minio/webrpc': {
         target: 'http://localhost:9000',
npm run dev

Open http://IP:8080/minio/ in your browser to play with the application.

Run tests

npm run test

Docker development environment

This approach will download the sources on your machine such that you are able to use your IDE or editor of choice. A Docker container will be used in order to provide a controlled build environment without messing with your host system.

Prepare host system

Install Git and Docker.

Development within container

Prepare and build container

git clone git@github.com:minio/minio.git
cd minio
docker build -t minio-dev -f Dockerfile.dev.browser .

Run container, build and run core

docker run -it --rm --name minio-dev -v "$PWD":/minio minio-dev

cd /minio/browser
npm install
npm run release
cd /minio
make
./minio server /data

Note Endpoint IP (the one which is not 127.0.0.1), AccessKey and SecretKey (both default to minioadmin) in order to enter them in the browser later.

Open another terminal. Connect to container

docker exec -it minio-dev bash

Apply patch to allow access from outside container

cd /minio
git apply --ignore-whitespace <<EOF
diff --git a/browser/webpack.config.js b/browser/webpack.config.js
index 8bdbba53..139f6049 100644
--- a/browser/webpack.config.js
+++ b/browser/webpack.config.js
@@ -71,6 +71,7 @@ var exports = {
     historyApiFallback: {
       index: '/minio/'
     },
+    host: '0.0.0.0',
     proxy: {
       '/minio/webrpc': {
         target: 'http://localhost:9000',
EOF

Build and run frontend with auto-reload

cd /minio/browser
npm install
npm run dev

Open http://IP:8080/minio/ in your browser to play with the application.