Skip to content

Commit fe19de9

Browse files
pierre-bclaude
andcommitted
Update README: Docker Hub as primary deployment option
- Add Docker Hub badge with version - Reorder Quick Start: Docker first, then Compose, then source - Add dedicated Docker Hub section with tags and platforms - Update features to mention multi-platform images - Remove "Client Code" section (internal reference) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
1 parent 259613c commit fe19de9

File tree

1 file changed

+62
-37
lines changed

1 file changed

+62
-37
lines changed

README.md

Lines changed: 62 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
[![Go](https://github.com/Notifuse/selfhost_s3/actions/workflows/go.yml/badge.svg)](https://github.com/Notifuse/selfhost_s3/actions/workflows/go.yml)
44
[![Docker](https://github.com/Notifuse/selfhost_s3/actions/workflows/docker.yml/badge.svg)](https://github.com/Notifuse/selfhost_s3/actions/workflows/docker.yml)
5+
[![Docker Hub](https://img.shields.io/docker/v/notifuse/selfhost_s3?label=Docker%20Hub&logo=docker)](https://hub.docker.com/r/notifuse/selfhost_s3)
56
[![codecov](https://codecov.io/gh/Notifuse/selfhost_s3/branch/main/graph/badge.svg)](https://codecov.io/gh/Notifuse/selfhost_s3)
67
[![Go Report Card](https://goreportcard.com/badge/github.com/Notifuse/selfhost_s3)](https://goreportcard.com/report/github.com/Notifuse/selfhost_s3)
78

@@ -12,7 +13,7 @@ A minimal S3-compatible object storage server written in Go that persists files
1213
- S3-compatible API (AWS Signature V4 authentication)
1314
- Local filesystem storage
1415
- Single binary, no dependencies
15-
- Docker support
16+
- Multi-platform Docker images (amd64, arm64)
1617

1718
## Supported S3 Operations
1819

@@ -26,56 +27,35 @@ selfhost_s3 implements the minimum S3 API required by the Notifuse file manager:
2627
| `DeleteObject` | Delete files and folders |
2728
| `HeadObject` | Check if file exists (optional, but recommended) |
2829

29-
## Configuration
30-
31-
selfhost_s3 is configured via environment variables:
32-
33-
| Variable | Required | Default | Description |
34-
| ------------------ | -------- | ----------- | -------------------------------------- |
35-
| `S3_BUCKET` | Yes | - | S3 bucket name |
36-
| `S3_ACCESS_KEY` | Yes | - | Access key for authentication |
37-
| `S3_SECRET_KEY` | Yes | - | Secret key for authentication |
38-
| `S3_PORT` | No | `9000` | Port to listen on |
39-
| `S3_STORAGE_PATH` | No | `./data` | Local directory for file storage |
40-
| `S3_REGION` | No | `us-east-1` | AWS region (for signature validation) |
41-
| `S3_CORS_ORIGINS` | No | `*` | Allowed CORS origins (comma-separated) |
42-
| `S3_MAX_FILE_SIZE` | No | `100MB` | Maximum upload file size |
43-
4430
## Quick Start
4531

46-
### Using Go
32+
### Docker (Recommended)
4733

48-
```bash
49-
# Build
50-
go build -o selfhost_s3 ./cmd/selfhost_s3
51-
52-
# Run
53-
export S3_BUCKET=my-bucket
54-
export S3_ACCESS_KEY=myaccesskey
55-
export S3_SECRET_KEY=mysecretkey
56-
./selfhost_s3
57-
```
58-
59-
### Using Docker
34+
Pull and run directly from Docker Hub:
6035

6136
```bash
6237
docker run -d \
38+
--name selfhost_s3 \
6339
-p 9000:9000 \
6440
-v $(pwd)/data:/data \
6541
-e S3_BUCKET=my-bucket \
6642
-e S3_ACCESS_KEY=myaccesskey \
6743
-e S3_SECRET_KEY=mysecretkey \
68-
notifuse/selfhost_s3
44+
notifuse/selfhost_s3:latest
6945
```
7046

7147
### Docker Compose
7248

49+
Create a `compose.yaml`:
50+
7351
```yaml
7452
services:
7553
selfhost_s3:
76-
image: notifuse/selfhost_s3
54+
image: notifuse/selfhost_s3:latest
55+
container_name: selfhost_s3
56+
restart: unless-stopped
7757
ports:
78-
- '9000:9000'
58+
- "9000:9000"
7959
volumes:
8060
- ./s3-data:/data
8161
environment:
@@ -84,6 +64,56 @@ services:
8464
S3_SECRET_KEY: mysecretkey
8565
```
8666
67+
Then run:
68+
69+
```bash
70+
docker compose up -d
71+
```
72+
73+
### Build from Source
74+
75+
```bash
76+
# Clone the repository
77+
git clone https://github.com/Notifuse/selfhost_s3.git
78+
cd selfhost_s3
79+
80+
# Build
81+
go build -o selfhost_s3 ./cmd/selfhost_s3
82+
83+
# Run
84+
export S3_BUCKET=my-bucket
85+
export S3_ACCESS_KEY=myaccesskey
86+
export S3_SECRET_KEY=mysecretkey
87+
./selfhost_s3
88+
```
89+
90+
## Configuration
91+
92+
selfhost_s3 is configured via environment variables:
93+
94+
| Variable | Required | Default | Description |
95+
| ------------------ | -------- | ----------- | -------------------------------------- |
96+
| `S3_BUCKET` | Yes | - | S3 bucket name |
97+
| `S3_ACCESS_KEY` | Yes | - | Access key for authentication |
98+
| `S3_SECRET_KEY` | Yes | - | Secret key for authentication |
99+
| `S3_PORT` | No | `9000` | Port to listen on |
100+
| `S3_STORAGE_PATH` | No | `./data` | Local directory for file storage |
101+
| `S3_REGION` | No | `us-east-1` | AWS region (for signature validation) |
102+
| `S3_CORS_ORIGINS` | No | `*` | Allowed CORS origins (comma-separated) |
103+
| `S3_MAX_FILE_SIZE` | No | `100MB` | Maximum upload file size |
104+
105+
## Docker Hub
106+
107+
Official images are available at [hub.docker.com/r/notifuse/selfhost_s3](https://hub.docker.com/r/notifuse/selfhost_s3)
108+
109+
**Available tags:**
110+
- `latest` - Latest stable release
111+
- `vX.Y` - Specific version (e.g., `v1.0`)
112+
113+
**Supported platforms:**
114+
- `linux/amd64`
115+
- `linux/arm64`
116+
87117
## Connecting from Notifuse
88118

89119
In your workspace settings, configure the File Manager with:
@@ -180,11 +210,6 @@ aws s3 rm s3://my-bucket/path/myfile.txt \
180210
- **No bucket operations**: Bucket must be pre-configured via env var
181211
- **Single bucket**: One selfhost_s3 instance = one bucket
182212

183-
## Client Code
184-
185-
The Notifuse file manager client is located at:
186-
`/console/src/components/file_manager`
187-
188213
## Development
189214

190215
```bash

0 commit comments

Comments
 (0)