{"id":13550286,"url":"https://github.com/enseadaio/enseada","last_synced_at":"2025-04-03T00:33:31.479Z","repository":{"id":36461175,"uuid":"224475902","full_name":"enseadaio/enseada","owner":"enseadaio","description":"A Cloud native multi-package registry","archived":false,"fork":false,"pushed_at":"2023-01-07T20:57:50.000Z","size":262322,"stargazers_count":85,"open_issues_count":45,"forks_count":10,"subscribers_count":3,"default_branch":"develop","last_synced_at":"2024-08-01T12:21:07.262Z","etag":null,"topics":["cloud","couchdb","docker","maven","npm","oauth2","package","registry","rubygems"],"latest_commit_sha":null,"homepage":"https://enseada.io","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/enseadaio.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":"SECURITY.md","support":null}},"created_at":"2019-11-27T16:45:43.000Z","updated_at":"2024-07-26T18:21:41.000Z","dependencies_parsed_at":"2023-01-17T01:45:25.371Z","dependency_job_id":null,"html_url":"https://github.com/enseadaio/enseada","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/enseadaio%2Fenseada","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/enseadaio%2Fenseada/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/enseadaio%2Fenseada/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/enseadaio%2Fenseada/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/enseadaio","download_url":"https://codeload.github.com/enseadaio/enseada/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":222899369,"owners_count":17054928,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cloud","couchdb","docker","maven","npm","oauth2","package","registry","rubygems"],"created_at":"2024-08-01T12:01:31.134Z","updated_at":"2024-11-03T20:30:38.348Z","avatar_url":"https://github.com/enseadaio.png","language":"Rust","funding_links":[],"categories":["Rust"],"sub_categories":[],"readme":"# Enseada\n*A Cloud native multi-package registry*\n  \n[![version](https://img.shields.io/github/v/release/enseadaio/enseada?sort=semver)](https://github.com/enseadaio/enseada/releases/latest)\n![build status](https://github.com/enseadaio/enseada/workflows/master/badge.svg)\n[![Docker Repository on Quay](https://quay.io/repository/enseada/enseada/status \"Docker Repository on Quay\")](https://quay.io/repository/enseada/enseada)\n[![license](https://img.shields.io/github/license/enseadaio/enseada)](./LICENSE)\n[![Discord Badge](https://discordapp.com/api/guilds/667303788532465665/widget.png?style=shield)](https://discord.gg/A34Qt8A)\n\n![logo](./.github/logo-white.png)\n\n\u003e[!WARNING]\n\u003eEnseada is still under initial development. Some of the features and characteristics\n\u003edescribed in this document may still be missing.\n\nEnseada is a modern, fast and scalable package registry, designed from the ground up to run in elastic, container-based environments and to be highly available and distributed.\n\nIt leverages scalability by using natively distributed technologies.\n\nCheck out the [official documentation](https://docs.enseada.io) for a complete manual of operation.\n\n## Features\n\n- [Multiple package repositories](#supported-package-repositories)\n- [Multiple storage backends](#supported-storage-providers)\n- Strong authentication based on [OAuth 2.0](https://auth0.com/docs/protocols/oauth2) tokens\n- Flexible ACL engine to manage user permissions \n- Complete [management API](https://docs.enseada.io/developers/apis.html)\n- CDN and caching friendly\n\nThe registry itself is written in [Rust](https://rust-lang.org/), a fast, resource efficient and statically compiled programming language\nbuilt for safety and speed.\n\n[CouchDB](https://couchdb.apache.org/) is used as the primary datastore, containing information about\nrepositories, users and access control. CouchDB is a web-native database written in Erlang and based on web technologies\nlike HTTP and JSON.\n\nEnseada stores packages in distributed and fault-tolerant object storage services. See [Supported storage providers](#supported-storage-providers) for the\ncomplete list.\n\n\n## Supported package repositories\n\nEnseada is a multi-package registry, meaning it can support a large number of package\nformats and registry APIs.\n\nAt the moment, the following formats are supported:\n\n- [Docker](https://docs.docker.com/registry/spec/api/)\n- [Maven 2/3](https://maven.apache.org/guides/introduction/introduction-to-repositories.html)\n- [NPM](https://github.com/npm/registry/blob/master/docs/REGISTRY-API.md) (planned, coming soon)\n- [RubyGems](https://rubygems.org) (planned, coming soon)\n- [Rust crates](https://doc.rust-lang.org/cargo/reference/registries.html) (planned, coming soon)\n- [Go module proxy](https://docs.gomods.io/intro/protocol/) (planned, coming soon)\n\n## Supported storage providers\n\nThe storage engine used by Enseada provides pluggable backends, allowing to easily support\nmultiple storage providers.\nSee the [configuration guide](https://docs.enseada.io/users/configuration.html) for how to setup the storage layer.\n\nAt the moment, the following providers are supported:\n\n- S3 compatible (AWS S3, Minio, DigitalOcean Spaces, Scaleway Object Storage, Ceph, etc)\n\n## HTTPS and HTTP/2 support\n\nEnseada has full support for strict HTTPS, enabling it is very simple.\n\nPassing the environment value `ENSEADA_TLS=true` will turn on\nHTTPS on the entire application (with [HSTS](https://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security) enabled). This will require two\nadditional environment variables.\n\n```.env\n## The path to the key file\nENSEADA_TLS_KEY_PATH=nil\n\n## The path to the certificate file\nENSEADA_TLS_CERT_PATH=nil\n```\n\nThe private key must be either an RSA or PKCS8 key.\nBoth the certificate and the key must be in PEM format.\n\nWhen HTTPS is active, Enseada switches automatically to [HTTP/2](https://en.wikipedia.org/wiki/HTTP/2) if supported\nby the client.\n\n## Build\n\nEnseada is built as a statically linked executable.\nHowever, it needs a few native libraries to build the executable, in particular libclang and LLVM. On Debian\nthey can be installed with `apt install build-essential llvm-dev libclang-dev`. These libraries are not needed to run the executable.\n \nYou need a stable build of the Rust compiler and standard library to build the binary. You can install one\nusing [rustup](https://rustup.rs).\n\nStandard `cargo` commands work perfectly fine. For example, `cargo run` will compile and start the server.\n\nEnseada is also packaged as a [Docker image](https://www.docker.com/r/enseada/enseada). Build one with `docker build -t myname/enseada:latest .`\n\n## Web UI\n\nEnseada comes with a management web UI. To build it from sources, NodeJS and Yarn are required.\n\nExecute the following commands to build the static assets.\n\n```bash\n# Install all dependencies\nyarn install\n\n# Build and recompile on change for development (all stylesheets, no minification)\nyarn watch\n\n# Build for production (minimal stylesheets, minification, sourcemaps)\nyarn build\n```\n\nEnseada will pick them up on its own.\n\n## Local Database\n\nA local CouchDB instance can be started using the provided [docker-compose.yml](./docker-compose.yml) file.\nSimply run `docker-compose up -d` to start it in background, it will be available on `http://localhost:5984` and will\npersist data in a Docker volume.\n\nUpon first run, the database server is uninitialized. Please run the initialization setup for \nsingle node deployment by visiting http://localhost:5984/_utils/#setup and following the instructions.\n\n## Local Minio Server\n\nA local [Minio](https://minio.io) server can be started using the provided [docker-compose.yml](./docker-compose.yml) file.\nSimply run `docker-compose up -d` to start it in background, it will be available on `http://localhost:9000` and will\npersist data in a Docker volume.\n\nUpon first run no bucket is present. Create a new one and configure the name in the appropriate environment variable \nin the Enseada configuration.\n\n## Security Policy\n\nIf you want to report a security vulnerability, please follow the steps which we have defined for you in our [security policy](https://github.com/enseadaio/enseada/security/policy).\n\n## Chat\n\nNeed some help or want to have a chat? Join our [Discord server](https://discord.gg/A34Qt8A)!  \n![Discord Banner](https://discordapp.com/api/guilds/667303788532465665/widget.png?style=banner2)\n\n## License\nThis Source Code Form is subject to the terms of the Mozilla Public\nLicense, v. 2.0. If a copy of the MPL was not distributed with this\nfile, You can obtain one at https://mozilla.org/MPL/2.0/.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fenseadaio%2Fenseada","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fenseadaio%2Fenseada","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fenseadaio%2Fenseada/lists"}