Deploying Zenko CloudServer
Introduction
Zenko CloudServer (formerly S3 Server) is an open-source implementation of the Amazon S3 API. It allows you to run your own S3-compatible object storage service, enabling integration with any application that supports S3 while keeping your data on your own infrastructure.
Key highlights of Zenko CloudServer:
- S3 Compatible: Full Amazon S3 API implementation
- Multi-Backend: Store data locally, in the cloud, or hybrid
- Bucket Versioning: Keep multiple versions of objects
- Access Control: S3-compatible ACLs and bucket policies
- Multi-Part Upload: Support for large file uploads
- Cross-Origin (CORS): Configure CORS for web applications
- Lifecycle Policies: Automate data retention and deletion
- Encryption: Server-side encryption support
This guide walks through deploying Zenko CloudServer on Klutch.sh using Docker.
Why Deploy Zenko CloudServer on Klutch.sh
Deploying Zenko CloudServer on Klutch.sh provides several advantages:
S3 Compatibility: Use S3 tools and SDKs with your own storage.
Data Sovereignty: Keep your object storage under your control.
HTTPS by Default: Secure API access with automatic SSL certificates.
Persistent Storage: Your data persists with Klutch.sh volumes.
Prerequisites
Before deploying Zenko CloudServer on Klutch.sh, ensure you have:
- A Klutch.sh account
- A GitHub account with a repository for your configuration
Deploying Zenko CloudServer on Klutch.sh
Create Your Repository
Create a new GitHub repository with a Dockerfile:
FROM zenko/cloudserver:latest
ENV SCALITY_ACCESS_KEY_ID=${SCALITY_ACCESS_KEY_ID:-accessKey1}ENV SCALITY_SECRET_ACCESS_KEY=${SCALITY_SECRET_ACCESS_KEY:-secretKey1}ENV S3DATA=fileENV S3BACKEND=fileENV ENDPOINT=your-app.klutch.sh
VOLUME ["/usr/src/app/localData", "/usr/src/app/localMetadata"]
EXPOSE 8000
CMD ["npm", "start"]Push to GitHub
Push your Dockerfile to your GitHub repository.
Create a New Project on Klutch.sh
Navigate to the Klutch.sh dashboard and create a new project.
Create a New App
Within your project, create a new app and connect your GitHub repository.
Configure HTTP Traffic
Set the traffic type to HTTP with port 8000.
Set Environment Variables
Configure the following environment variables:
| Variable | Value |
|---|---|
SCALITY_ACCESS_KEY_ID | Your S3 access key |
SCALITY_SECRET_ACCESS_KEY | Your S3 secret key |
S3DATA | file |
S3BACKEND | file |
ENDPOINT | Your Klutch.sh URL |
Attach Persistent Volumes
Add persistent volumes:
| Mount Path | Purpose |
|---|---|
/usr/src/app/localData | Object data storage |
/usr/src/app/localMetadata | Metadata storage |
Deploy Your Application
Click Deploy to build and launch Zenko CloudServer.
Configure S3 Clients
Configure your S3 clients to use your CloudServer endpoint:
aws configure set default.s3.signature_version s3v4aws s3 ls --endpoint-url https://your-app.klutch.shAdditional Resources
- Zenko Official Website
- CloudServer GitHub Repository
- Zenko Documentation
- Klutch.sh Persistent Volumes
Conclusion
Zenko CloudServer on Klutch.sh provides an S3-compatible object storage service that you control completely. Use familiar S3 tools and SDKs while keeping your data private and on your own infrastructure.