|
| 1 | + |
| 2 | + |
1 | 3 | # SynapS3 |
2 | 4 |
|
3 | | -SynapS3 lets S3 clients use Filecoin storage. |
4 | | - |
5 | | -> SynapS3 is a developer preview and is not ready for production use. Test with Filecoin Calibration first, and feedback is welcome. |
6 | | -
|
7 | | -## Why SynapS3 |
8 | | - |
9 | | -- Use existing S3 clients, SDKs, and tools. |
10 | | -- Store object data through Filecoin providers. |
11 | | -- Manage buckets, objects, settings, tasks, and health from one dashboard. |
12 | | - |
13 | | -## Core Features |
14 | | - |
15 | | -| Feature | Status | Note | |
16 | | -| --- | --- | --- | |
17 | | -| S3-compatible API | ✅ | Works with standard S3 clients and tools | |
18 | | -| Bucket and object operations | ✅ | Create buckets; upload, list, read, and delete objects | |
19 | | -| Multipart uploads | ✅ | S3 multipart flow for large objects | |
20 | | -| Object versioning | ✅ | Version IDs, current versions, and delete markers | |
21 | | -| Web dashboard | ✅ | Buckets, objects, tasks, settings, and health views | |
22 | | -| S3 user management | ✅ | Access keys for S3 client authentication | |
23 | | -| Filecoin storage backend | ✅ | Stores object data through Synapse providers | |
24 | | -| Automatic provider selection | ✅ | Selects provider contexts through Synapse | |
25 | | -| Configurable storage copies | ✅ | Global and per-bucket copy targets | |
26 | | -| Provider-backed reads | ✅ | Reads from cache first, then provider storage | |
27 | | -| Wallet and payment tools | ✅ | Wallet setup, Calibration funding, and USDFC deposit | |
28 | | -| Background task management | ✅ | Task monitoring, retry, and recovery controls | |
29 | | -| Managed provider policy | 📝 | Provider allow/deny and placement controls | |
30 | | -| Automatic repair | 📝 | Background replica reconciliation | |
31 | | -| One-click deployment | 📝 | Packaged deployment automation | |
32 | | -| Production readiness | 📝 | Security and operations hardening | |
| 5 | +[](https://github.com/strahe/SynapS3/actions/workflows/ci.yml) |
| 6 | +[](https://github.com/strahe/SynapS3/pkgs/container/synaps3) |
| 7 | +[](https://goreportcard.com/report/github.com/strahe/synaps3) |
| 8 | +[](go.mod) |
| 9 | + |
| 10 | +SynapS3 is an S3-compatible gateway for storing objects on Filecoin. |
| 11 | + |
| 12 | +## Highlights |
| 13 | + |
| 14 | +- S3-compatible bucket and object APIs. |
| 15 | +- Object storage backed by Filecoin storage providers. |
| 16 | +- Web dashboard for buckets, objects, wallet, tasks, topology, settings, and health. |
| 17 | +- Multipart uploads for large objects. |
| 18 | +- Wallet funding, USDFC deposit, and background task controls. |
33 | 19 |
|
34 | 20 | ## Quick Start |
35 | 21 |
|
36 | | -This Quick Start uses `docker run` for quick evaluation. For Docker Compose deployment, use the [Docker deployment guide](docs/deployment/docker.md). To compile locally, use the [source build guide](docs/deployment/source.md). |
| 22 | +Choose the path that matches how you want to run SynapS3. Each option includes the core commands; full deployment details live in the linked guides. |
| 23 | + |
| 24 | +<details> |
| 25 | +<summary>Quick evaluation with docker run</summary> |
37 | 26 |
|
38 | 27 | Prerequisites: |
39 | 28 |
|
@@ -86,6 +75,109 @@ docker rm -f synaps3-test |
86 | 75 | docker volume rm synaps3-test-data |
87 | 76 | ``` |
88 | 77 |
|
| 78 | +</details> |
| 79 | + |
| 80 | +<details> |
| 81 | +<summary>Long-running deployment with Docker Compose</summary> |
| 82 | + |
| 83 | +Use this flow for a single Linux host. See the [Docker deployment guide](docs/deployment/docker.md) for full deployment, upgrade, backup, and operations notes. |
| 84 | + |
| 85 | +Prerequisites: |
| 86 | + |
| 87 | +- [Docker Engine](https://docs.docker.com/engine/install/) with [Docker Compose v2.24 or later](https://docs.docker.com/compose/install/) |
| 88 | +- A durable local disk for the Docker volume |
| 89 | + |
| 90 | +Prepare local environment overrides: |
| 91 | + |
| 92 | +```bash |
| 93 | +cp .env.example .env |
| 94 | +``` |
| 95 | + |
| 96 | +Generate a wallet: |
| 97 | + |
| 98 | +```bash |
| 99 | +docker compose run --rm synaps3 synaps3 wallet generate |
| 100 | +``` |
| 101 | + |
| 102 | +Copy the generated private key into `.env`, then fund the generated address on Calibration: |
| 103 | + |
| 104 | +```bash |
| 105 | +docker compose run --rm synaps3 synaps3 wallet fund-testnet 0x... |
| 106 | +``` |
| 107 | + |
| 108 | +Start SynapS3: |
| 109 | + |
| 110 | +```bash |
| 111 | +docker compose up -d |
| 112 | +docker compose logs --tail=50 synaps3 |
| 113 | +``` |
| 114 | + |
| 115 | +Check health and deposit USDFC: |
| 116 | + |
| 117 | +```bash |
| 118 | +curl http://127.0.0.1:9090/healthz |
| 119 | +docker compose exec synaps3 synaps3 --config /var/lib/synaps3/config.toml admin status |
| 120 | +docker compose exec synaps3 synaps3 --config /var/lib/synaps3/config.toml wallet deposit 2 |
| 121 | +``` |
| 122 | + |
| 123 | +Open the dashboard at `http://127.0.0.1:9090`. If the host is remote, use an SSH tunnel: |
| 124 | + |
| 125 | +```bash |
| 126 | +ssh -L 9090:127.0.0.1:9090 user@server |
| 127 | +``` |
| 128 | + |
| 129 | +</details> |
| 130 | + |
| 131 | +<details> |
| 132 | +<summary>Build from source</summary> |
| 133 | + |
| 134 | +Use this flow for local development or custom binaries. See the [source build guide](docs/deployment/source.md) for the full build and first-upload flow. |
| 135 | + |
| 136 | +Prerequisites: |
| 137 | + |
| 138 | +- [Go](https://go.dev/doc/install) 1.26.3 or later |
| 139 | +- [make](https://www.gnu.org/software/make/) |
| 140 | +- C toolchain for cgo, such as [gcc](https://gcc.gnu.org/install/) or [clang](https://clang.llvm.org/get_started.html) |
| 141 | +- [Node.js](https://nodejs.org/en/download) 22.12 or later |
| 142 | +- [pnpm](https://pnpm.io/installation) 11 |
| 143 | + |
| 144 | +Clone and build SynapS3 with the embedded dashboard: |
| 145 | + |
| 146 | +```bash |
| 147 | +git clone https://github.com/strahe/SynapS3.git |
| 148 | +cd SynapS3 |
| 149 | +make build |
| 150 | +``` |
| 151 | + |
| 152 | +Initialize local app data and generate a wallet: |
| 153 | + |
| 154 | +```bash |
| 155 | +./bin/synaps3 init |
| 156 | +./bin/synaps3 wallet generate |
| 157 | +``` |
| 158 | + |
| 159 | +Set `filecoin.private_key` in `~/.synaps3/config.toml`, then fund the generated address on Calibration: |
| 160 | + |
| 161 | +```bash |
| 162 | +./bin/synaps3 wallet fund-testnet 0x... |
| 163 | +``` |
| 164 | + |
| 165 | +Start SynapS3: |
| 166 | + |
| 167 | +```bash |
| 168 | +./bin/synaps3 serve |
| 169 | +``` |
| 170 | + |
| 171 | +In another terminal, deposit USDFC before uploading: |
| 172 | + |
| 173 | +```bash |
| 174 | +./bin/synaps3 wallet deposit 2 |
| 175 | +``` |
| 176 | + |
| 177 | +Open the dashboard at `http://127.0.0.1:9090`. |
| 178 | + |
| 179 | +</details> |
| 180 | + |
89 | 181 | ## Documentation |
90 | 182 |
|
91 | 183 | - [Docker deployment](docs/deployment/docker.md) |
|
0 commit comments