Skip to content

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:

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=file
    ENV S3BACKEND=file
    ENV 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:

    VariableValue
    SCALITY_ACCESS_KEY_IDYour S3 access key
    SCALITY_SECRET_ACCESS_KEYYour S3 secret key
    S3DATAfile
    S3BACKENDfile
    ENDPOINTYour Klutch.sh URL

    Attach Persistent Volumes

    Add persistent volumes:

    Mount PathPurpose
    /usr/src/app/localDataObject data storage
    /usr/src/app/localMetadataMetadata storage

    Deploy Your Application

    Click Deploy to build and launch Zenko CloudServer.

    Configure S3 Clients

    Configure your S3 clients to use your CloudServer endpoint:

    Terminal window
    aws configure set default.s3.signature_version s3v4
    aws s3 ls --endpoint-url https://your-app.klutch.sh

Additional Resources

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.