MCPSERV.CLUB
GoSƐ

GoSƐ

Self-Hosted

Scalable S3‑based file uploader with chunk deduplication

Active(86)
252stars
0views
Updated 5 days ago

Overview

Discover what makes GoSƐ powerful

GoSƐ is a **self‑hosted, high‑throughput file uploader** that offloads the bulk of traffic directly to an S3‑compatible object store. From a developer’s point of view it is essentially a thin HTTP gateway that orchestrates multipart uploads, presigned URLs and lifecycle policies while keeping the runtime footprint minimal. The core idea is to let the client upload data straight to S3, so the server only handles control traffic and metadata. This design removes the need for a dedicated database or caching layer, enabling horizontal scaling by simply running more GoSƐ instances behind a load balancer.

Chunked uploads with client‑side MD5 hashing

Automatic resumability

Presigned URL workflow

S3 lifecycle integration

Overview

GoSƐ is a self‑hosted, high‑throughput file uploader that offloads the bulk of traffic directly to an S3‑compatible object store. From a developer’s point of view it is essentially a thin HTTP gateway that orchestrates multipart uploads, presigned URLs and lifecycle policies while keeping the runtime footprint minimal. The core idea is to let the client upload data straight to S3, so the server only handles control traffic and metadata. This design removes the need for a dedicated database or caching layer, enabling horizontal scaling by simply running more GoSƐ instances behind a load balancer.

Key Features

  • Chunked uploads with client‑side MD5 hashing – each file is split into fixed‑size chunks, hashed in the browser and deduplicated against existing S3 objects.
  • Automatic resumability – interrupted uploads can resume without re‑transmitting already stored chunks.
  • Presigned URL workflow – the server generates short‑lived URLs that allow the browser to talk directly to S3 for both upload and download.
  • S3 lifecycle integration – per‑upload retention times are mapped to S3 lifecycle rules, giving fine‑grained expiration control.
  • URL shortening hook – optional integration with external services to generate short links for shared files.
  • Web‑based UI – a lightweight SPA written in React/Vite that displays upload progress, speed charts and file metadata.

Technical Stack

LayerTechnology
BackendGo 1.22+, standard library + aws-sdk-go-v2 for S3 interactions
FrontendReact 18 + Vite, TypeScript, Tailwind CSS (bundled into the binary)
Object StoreAny S3‑compatible service: AWS S3, MinIO, Ceph RadosGW
DeploymentSingle static binary or Docker image; no external dependencies (no database, no cache)
TestingGo unit tests + integration tests against MinIO; coverage reported via Codacy & Go Report Card

The server exposes a minimal REST API:

POST /api/v1/uploads          → create upload session (returns presigned URLs)
GET  /api/v1/uploads/{id}     → fetch upload status
POST /api/v1/notifications    → configure email/webhook callbacks

The API is fully documented on pkg.go.dev, and the source code follows idiomatic Go patterns (context propagation, structured logging, graceful shutdown).

Deployment & Infrastructure

  • Self‑hosted simplicity – a single binary or Docker image contains both the API and the SPA.
  • Horizontal scaling – because all heavy traffic bypasses GoSƐ, you can run dozens of replicas behind a reverse proxy (NGINX/Traefik).
  • Resource footprint – typical memory usage < 50 MiB; CPU spikes only during presigned URL generation.
  • Containerization – Dockerfile uses a multi‑stage build to keep the final image < 100 MiB.
  • Observability – exposes Prometheus metrics (upload counts, bytes transferred) and logs in JSON format for ELK/Kibana pipelines.

Integration & Extensibility

  • Plugin hooks – the notification endpoint accepts generic JSON payloads, allowing integration with CI/CD pipelines, Slack bots or custom microservices.
  • Webhooks – on upload completion GoSƐ can POST to a user‑defined URL, enabling automated downstream processing.
  • Custom S3 endpoints – configuration supports multiple buckets/regions; the client can switch between them at runtime.
  • Extensible UI – the SPA is a standard React app; developers can fork and add custom dashboards or analytics widgets without touching the backend.

Developer Experience

  • Zero external services – apart from S3, no other infrastructure is required.
  • Clear documentation – README, API reference and example configuration files cover all knobs.
  • Community & licensing – Apache‑2.0 licensed, active GitHub issue tracker; contributors can add new features or fix bugs with minimal friction.
  • Testing – the codebase has > 70 % coverage; developers can run go test ./... locally and see deterministic results.

Use Cases

ScenarioWhy GoSƐ?
DevOps teams need a lightweight upload portal for log dumps or build artifacts.Zero‑config S3 integration, resumable uploads, and lifecycle policies reduce operational overhead.
Web developers want to provide a drag‑and‑drop file uploader in a SaaS product.The SPA can be embedded; the backend handles all S3 plumbing, keeping your service stateless.
Researchers transfer terabytes of data between clusters.Chunk deduplication and direct S3 uploads keep network usage low while preserving bandwidth for other traffic.
Event organizers share large media files with attendees.URL shortening and email notifications let you send short links instantly without managing a CDN.

Advantages Over Alternatives

  • Performance – by delegating data transfer to S3, the server never touches file bytes, allowing thousands of concurrent uploads with minimal latency.
  • Simplicity – no database migrations, cache warm‑ups or complex configuration; just a binary and an S3 endpoint.
  • Scalability – horizontal scaling is trivial; the only bottleneck is S3 itself, which is already designed for terascale workloads.
  • Licensing – Apache‑2.0 gives

Open SourceReady to get started?

Join the community and start self-hosting GoSƐ today

Weekly Views

Loading...
Support Us
Most Popular

Infrastructure Supporter

$5/month

Keep our servers running and help us maintain the best directory for developers

Repository Health

Loading health data...

Information

Category
other
License
APACHE-2.0
Stars
252
Technical Specs
Pricing
Open Source
Database
None
Docker
Official
Supported OS
LinuxWindowsmacOSDocker
Author
stv0g
stv0g
Last Updated
5 days ago