{"id":24659283,"url":"https://github.com/korosuke613/polybuckets","last_synced_at":"2026-04-20T05:07:00.901Z","repository":{"id":273996550,"uuid":"921343225","full_name":"korosuke613/polybuckets","owner":"korosuke613","description":"Simple browser app for S3 compatible services.","archived":false,"fork":false,"pushed_at":"2025-03-13T01:44:58.000Z","size":1096,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-15T16:37:16.172Z","etag":null,"topics":["aws-s3","golang","webapp"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/korosuke613.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"korosuke613"}},"created_at":"2025-01-23T19:24:26.000Z","updated_at":"2025-02-22T13:01:51.000Z","dependencies_parsed_at":"2025-01-24T08:41:41.395Z","dependency_job_id":null,"html_url":"https://github.com/korosuke613/polybuckets","commit_stats":null,"previous_names":["korosuke613/polybuckets"],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/korosuke613%2Fpolybuckets","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/korosuke613%2Fpolybuckets/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/korosuke613%2Fpolybuckets/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/korosuke613%2Fpolybuckets/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/korosuke613","download_url":"https://codeload.github.com/korosuke613/polybuckets/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244745752,"owners_count":20503050,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aws-s3","golang","webapp"],"created_at":"2025-01-26T02:54:37.120Z","updated_at":"2026-04-20T05:06:55.880Z","avatar_url":"https://github.com/korosuke613.png","language":"Go","funding_links":["https://github.com/sponsors/korosuke613"],"categories":[],"sub_categories":[],"readme":"# polybuckets - Simple browser app for S3 compatible services.\n\n| Top page | Bucket root | Bucket child |\n|:--------:|:-----------:|:------------:|\n|![](./images/top-page.png) | ![](./images/bucket-root.png) | ![](./images/bucket-child.png) |\n\n## Features\n- List buckets\n- List objects in a bucket\n- Download an object\n\n## Getting Started\n\n```console\nexport AWS_REGION=\nexport AWS_ACCESS_KEY_ID=\nexport AWS_SECRET_ACCESS_KEY=\n\ndocker run -p 1323:1323 --env AWS_REGION=$AWS_REGION --env AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID --env AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY ghcr.io/korosuke613/polybuckets:latest\n```\n\nAlso, you can use `AWS_PROFILE` instead of `AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY`.\n\n```console\nexport AWS_REGION=\nexport AWS_PROFILE=\n\ndocker run -p 1323:1323 --env AWS_REGION=$AWS_REGION --env AWS_PROFILE=$AWS_PROFILE -v ~/.aws:/home/nonroot/.aws ghcr.io/korosuke613/polybuckets:latest\n```\n\n## Configuration\n\n### Environment Variables\n\n- `AWS_REGION`: (Required) Specify the AWS region.\n- `AWS_PROFILE`: Specify the AWS profile. This can be used in place of `AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY`.\n- `AWS_ENDPOINT`: Specify the endpoint for the S3 compatible service.\n- `PB_PORT`: Specify the port that the server listens on (the default is `1323`).\n- `PB_IP_ADDRESS`: Specify the IP address that the server listens on (the default is `0.0.0.0`).\n- `PB_CACHE_DURATION`: Specify the aws s3 list objects cache expiration time (default is `60m`).\n- `PB_SITE_NAME`: Specify the site name (default is `polybuckets`).\n\n## Development\n\n### 1. Launch development S3 bucket (Terminal A)\n\n```console\ncd tools\n./init-minio.sh\n./start-minio.sh\n```\n\n### 2. Launch polybuckets (Terminal B)\n\n```console\nset -a; eval \"$(cat ./.env \u003c(echo) \u003c(declare -x))\"; set +a;  # Load .env\n\ngo run ./main.go\n```\n\n### 3. Output\n\nOpen localhost:1323 in your browser.\n\nAccess log is shown in Terminal A.\n\n```console\n❯ go run main.go\n{\"time\":\"2025-01-25T21:54:25.594383Z\",\"level\":\"INFO\",\"msg\":\"starting server\",\"ip\":\"0.0.0.0\",\"port\":\"1323\"}\n{\"time\":\"2025-01-25T21:54:39.748322Z\",\"level\":\"INFO\",\"msg\":\"access log\",\"value\":{\"remote_ip\":\"::1\",\"host\":\"localhost:1323\",\"method\":\"GET\",\"uri\":\"/\",\"user_agent\":\"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36 Edg/132.0.0.0\",\"status\":200,\"error\":\"\",\"latency\":40673459,\"latency_human\":\"40.673459ms\",\"bytes_in\":0,\"bytes_out\":818}}\n{\"time\":\"2025-01-25T21:54:41.105367Z\",\"level\":\"INFO\",\"msg\":\"access log\",\"value\":{\"remote_ip\":\"::1\",\"host\":\"localhost:1323\",\"method\":\"GET\",\"uri\":\"/bucket2/\",\"user_agent\":\"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36 Edg/132.0.0.0\",\"status\":200,\"error\":\"\",\"latency\":9485459,\"latency_human\":\"9.485459ms\",\"bytes_in\":0,\"bytes_out\":1829,\"hit_cache\":false}}\n{\"time\":\"2025-01-25T21:54:42.37454Z\",\"level\":\"INFO\",\"msg\":\"access log\",\"value\":{\"remote_ip\":\"::1\",\"host\":\"localhost:1323\",\"method\":\"GET\",\"uri\":\"/bucket2/hoge/\",\"user_agent\":\"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36 Edg/132.0.0.0\",\"status\":200,\"error\":\"\",\"latency\":13514042,\"latency_human\":\"13.514042ms\",\"bytes_in\":0,\"bytes_out\":1694,\"hit_cache\":false}}\n{\"time\":\"2025-01-25T21:54:44.092354Z\",\"level\":\"INFO\",\"msg\":\"access log\",\"value\":{\"remote_ip\":\"::1\",\"host\":\"localhost:1323\",\"method\":\"GET\",\"uri\":\"/download/bucket2/hoge/test_2.txt\",\"user_agent\":\"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36 Edg/132.0.0.0\",\"status\":200,\"error\":\"\",\"latency\":7519166,\"latency_human\":\"7.519166ms\",\"bytes_in\":0,\"bytes_out\":34}}\n```\n\nminio api call log is shown in Terminal B.\n\n```console\n❯ ./start-minio.sh\n[+] Running 2/2\n ✔ Container tools-minio-1  Running                                                                                                                                                                     0.0s\n ✔ Container tools-mc-1     Running                                                                                                                                                                     0.0s\nAttaching to mc-1, minio-1\nmc-1     | 2025-01-25T21:54:39.740 [200 OK] s3.ListBuckets localhost:9000/?x-id=ListBuckets  192.168.107.1    6.236ms      ⇣  5.302117ms  ↑ 131 B ↓ 545 B\nmc-1     | 2025-01-25T21:54:41.098 [200 OK] s3.ListObjectsV2 localhost:9000/bucket2?delimiter=%2F\u0026list-type=2\u0026prefix=  192.168.107.1    5.658ms      ⇣  5.579237ms  ↑ 131 B ↓ 721 B\nmc-1     | 2025-01-25T21:54:42.369 [200 OK] s3.ListObjectsV2 localhost:9000/bucket2?delimiter=%2F\u0026list-type=2\u0026prefix=hoge%2F  192.168.107.1    3.875ms      ⇣  3.8491ms   ↑ 131 B ↓ 534 B\nmc-1     | 2025-01-25T21:54:44.087 [200 OK] s3.GetObject localhost:9000/bucket2/hoge/test_2.txt?x-id=GetObject  192.168.107.1    3.2ms        ⇣  2.90345ms  ↑ 131 B ↓ 34 B\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkorosuke613%2Fpolybuckets","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkorosuke613%2Fpolybuckets","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkorosuke613%2Fpolybuckets/lists"}