Sign inSign up

eduard1001171985/hermes

By eduard1001171985

•Updated about 1 year ago

Hermes is a lightweight, multi-tenant object storage console and API

Image
Databases & storage
0

1.1K

eduard1001171985/hermes repository overview

⁠Hermes

Lightweight, multi-tenant object storage console and API for S3-compatible backends (MinIO, AWS S3). Manage orgs, users, groups, and roles; browse/upload/delete objects via a clean UI; explore a protected OpenAPI spec — all in one container.

  • Image: eduard1001171985/hermes:v1.2.0
  • Exposes: 8080/tcp
  • Health: GET /healthz
  • Runs as non-root

⁠Features

  • Multi-tenant: Organizations, Users, Groups, Roles
  • Fine-grained permissions: Pull (read) and Push (write)
  • Super Admin role with full access
  • Per-organization S3/MinIO configuration (endpoint, keys, bucket, etc.)
  • Buckets UI to manage configs and browse/upload/delete objects
  • Protected API docs: embedded (/docs) and standalone Swagger (/swagger)
  • Cookie-based auth with signup/login flows
  • JSON REST API with OpenAPI spec

⁠Quick Start (Docker)

Basic run (assuming an existing PostgreSQL database):

# Replace values to point at your PostgreSQL instance
docker run --rm -p 8080:8080 \
  -e DB_HOST=localhost \
  -e DB_PORT=5432 \
  -e DB_USER=postgres \
  -e DB_PASSWORD=postgres \
  -e DB_NAME=hermes \
  --name hermes \
  eduard1001171985/hermes:v1.2.0

Then open:

First-time setup:

  • Click “Sign up” to create your first Organization and Admin user.
  • The initial user is a Super Admin (has Pull and Push). Additional users can be granted roles later.

⁠Environment Variables

Database (PostgreSQL):

  • DB_HOST (default: localhost)
  • DB_PORT (default: 5432)
  • DB_USER (default: postgres)
  • DB_PASSWORD (default: postgres)
  • DB_NAME (default: hermes)
  • DB_SSLMODE (default: disable)

Logging:

  • HERMES_LOG_FORMAT: json (default) or console
  • HERMES_LOG_LEVEL: debug | info (default) | warn | error
  • HERMES_LOG_TIME: rfc3339 (default) or epoch

Notes:

  • No S3 credentials are needed via env vars; storage backends are configured per organization inside the UI.

⁠Ports & Health

  • Container port: 8080
  • Liveness/Readiness: GET /healthz

⁠Authentication, Roles, Permissions

  • Cookie-based authentication
  • Roles grant capabilities:
    • Pull: view buckets, list/download objects
    • Push: manage storages, upload/delete objects
  • Super Admin is a special system role granting both Pull and Push
  • API docs require authentication and at least one role

⁠API & OpenAPI

  • Base path: /api/v1
  • OpenAPI JSON: /openapi.json (protected)
  • Embedded docs: /docs
  • Standalone Swagger UI: /swagger

⁠S3/MinIO Integration

  • Configure per-organization in the UI: endpoint, region (optional), accessKey, secretKey, useSSL, bucket
  • Browse, upload, and delete objects according to your role capabilities

⁠Docker Compose (example)

Minimal example using an external PostgreSQL service:

version: "3.9"
services:
  hermes:
    image: eduard1001171985/hermes:v1.2.0
    ports:
      - "8080:8080"
    environment:
      DB_HOST: your-postgres-host
      DB_PORT: "5432"
      DB_USER: postgres
      DB_PASSWORD: postgres
      DB_NAME: hermes

⁠Kubernetes/OpenShift

  • Container listens on 8080 and provides /healthz for probes
  • Designed to run as non-root
  • Provide DB connection via ConfigMap/Secret-style env vars
  • S3/MinIO is configured in-app per organization

⁠Security

  • Runs as a non-root user
  • No in-container persistent write requirements (DB is external)

⁠Tags

  • v1.2.0 (recommended)
  • latest (if available)

⁠License

MIT

⁠Project URL

GitHub repository: https://github.com/arencloud/hermes⁠

Tag summary

Content type

Image

Digest

sha256:d957b2e4d…

Size

18.6 MB

Last updated

about 1 year ago

docker pull eduard1001171985/hermes