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
| Layer | Technology |
|---|---|
| Backend | Go 1.22+, standard library + aws-sdk-go-v2 for S3 interactions |
| Frontend | React 18 + Vite, TypeScript, Tailwind CSS (bundled into the binary) |
| Object Store | Any S3‑compatible service: AWS S3, MinIO, Ceph RadosGW |
| Deployment | Single static binary or Docker image; no external dependencies (no database, no cache) |
| Testing | Go 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
| Scenario | Why 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
Related Apps in other
Immich
Self‑hosted photo and video manager
Syncthing
Peer‑to‑peer file sync, no central server
Strapi
Open-source headless CMS for modern developers
reveal.js
Create stunning web‑based presentations with HTML, CSS and JavaScript
Stirling-PDF
Local web PDF editor with split, merge, convert and more
MinIO
Fast, S3-compatible object storage for AI and analytics
Weekly Views
Repository Health
Information
Explore More Apps
Noosfero
Self-hosted other
Endurain
Self-hosted fitness tracker with full data control
UnrealIRCd
Secure, modular IRC server for modern networks
Open Food Network
Open-source marketplace connecting local farmers and food hubs
Hyrax
Digital repository framework built on Ruby on Rails
SafeLine
Secure your web apps with an AI‑powered reverse proxy WAF