# MinIO Console ![build](https://github.com/minio/console/workflows/Go/badge.svg) ![license](https://img.shields.io/badge/license-AGPL%20V3-blue) A graphical user interface for [MinIO](https://github.com/minio/minio) | Dashboard | Creating a bucket | | ------------- | ------------- | | ![Dashboard](images/pic1.png) | ![Dashboard](images/pic2.png) | **Table of Contents** - [MinIO Console](#minio-console) - [-](#-) - [1. Create a user `console` using `mc`](#1-create-a-user-console-using-mc) - [2. Create a policy for `console` with admin access to all resources (for testing)](#2-create-a-policy-for-console-with-admin-access-to-all-resources-for-testing) - [3. Set the policy for the new `console` user](#3-set-the-policy-for-the-new-console-user) - [Start Console service:](#start-console-service) - [Salt to encrypt JWT payload](#salt-to-encrypt-jwt-payload) - [Start Console service with TLS:](#start-console-service-with-tls) - [Connect Console to a Minio using TLS and a self-signed certificate](#connect-console-to-a-minio-using-tls-and-a-self-signed-certificate) - [Contribute to console Project](#contribute-to-console-project) ### Setup All `console` needs is a MinIO user with admin privileges and URL pointing to your MinIO deployment. > Note: We don't recommend using MinIO's Operator Credentials #### 1. Create a user `console` using `mc` ```bash mc admin user add myminio/ Enter Access Key: console Enter Secret Key: xxxxxxxx ``` #### 2. Create a policy for `console` with admin access to all resources (for testing) ```sh cat > admin.json << EOF { "Version": "2012-10-17", "Statement": [{ "Action": [ "admin:*" ], "Effect": "Allow", "Sid": "" }, { "Action": [ "s3:*" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::*" ], "Sid": "" } ] } EOF ``` ```sh mc admin policy add myminio/ consoleAdmin admin.json ``` #### 3. Set the policy for the new `console` user ```sh mc admin policy set myminio consoleAdmin user=console ``` > NOTE: Additionally, you can create policies to limit the privileges for other `console` users, for example, if you want the user to only have access to dashboard, buckets, notifications and watch page, the policy should look like this: ```json { "Version": "2012-10-17", "Statement": [{ "Action": [ "admin:ServerInfo" ], "Effect": "Allow", "Sid": "" }, { "Action": [ "s3:ListenBucketNotification", "s3:PutBucketNotification", "s3:GetBucketNotification", "s3:ListMultipartUploadParts", "s3:ListBucketMultipartUploads", "s3:ListBucket", "s3:HeadBucket", "s3:GetObject", "s3:GetBucketLocation", "s3:AbortMultipartUpload", "s3:CreateBucket", "s3:PutObject", "s3:DeleteObject", "s3:DeleteBucket", "s3:PutBucketPolicy", "s3:DeleteBucketPolicy", "s3:GetBucketPolicy" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::*" ], "Sid": "" } ] } ``` ## Start Console service: Before running console service, following environment settings must be supplied ```sh # Salt to encrypt JWT payload export CONSOLE_PBKDF_PASSPHRASE=SECRET # Required to encrypt JWT payload export CONSOLE_PBKDF_SALT=SECRET # MinIO Endpoint export CONSOLE_MINIO_SERVER=http://localhost:9000 ``` Now start the console service. ``` ./console server 2021-01-19 02:36:08.893735 I | 2021/01/19 02:36:08 server.go:129: Serving console at http://localhost:9090 ``` By default `console` runs on port `9090` this can be changed with `--port` of your choice. ## Start Console service with TLS: Copy your `public.crt` and `private.key` to `~/.console/certs`, then: ```sh ./console server 2021-01-19 02:36:08.893735 I | 2021/01/19 02:36:08 server.go:129: Serving console at https://localhost:9090 ``` For advanced users, `console` has support for multiple certificates to service clients through multiple domains. Following tree structure is expected for supporting multiple domains: ```sh certs/ │ ├─ public.crt ├─ private.key │ ├─ example.com/ │ │ │ ├─ public.crt │ └─ private.key └─ foobar.org/ │ ├─ public.crt └─ private.key ... ``` ## Connect Console to a Minio using TLS and a self-signed certificate Copy the MinIO `ca.crt` under `~/.console/certs/CAs`, then: ``` export CONSOLE_MINIO_SERVER=https://localhost:9000 ./console server ``` You can verify that the apis work by doing the request on `localhost:9090/api/v1/...` # Contribute to console Project Please follow console [Contributor's Guide](https://github.com/minio/console/blob/master/CONTRIBUTING.md)