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
6237docker 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
7452services :
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
89119In 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