{"id":13446703,"url":"https://github.com/knrdl/caasa","last_synced_at":"2025-04-30T17:22:52.744Z","repository":{"id":42527675,"uuid":"434327595","full_name":"knrdl/caasa","owner":"knrdl","description":"Container as a Service admin","archived":false,"fork":false,"pushed_at":"2025-04-22T09:36:59.000Z","size":3051,"stargazers_count":79,"open_issues_count":0,"forks_count":5,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-04-22T10:57:38.595Z","etag":null,"topics":["admin-dashboard","containers","dark-mode","dark-theme","docker","docker-container","dockerapi","podman","python","starlette","svelte","sveltejs","typescript","websocket","webui"],"latest_commit_sha":null,"homepage":"","language":"Svelte","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/knrdl.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-12-02T18:14:06.000Z","updated_at":"2025-04-22T09:36:44.000Z","dependencies_parsed_at":"2023-12-02T02:05:56.618Z","dependency_job_id":"144fc49a-ec11-4348-92bb-d4535241d849","html_url":"https://github.com/knrdl/caasa","commit_stats":null,"previous_names":["knrdl/casa"],"tags_count":13,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/knrdl%2Fcaasa","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/knrdl%2Fcaasa/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/knrdl%2Fcaasa/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/knrdl%2Fcaasa/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/knrdl","download_url":"https://codeload.github.com/knrdl/caasa/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251749359,"owners_count":21637525,"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":["admin-dashboard","containers","dark-mode","dark-theme","docker","docker-container","dockerapi","podman","python","starlette","svelte","sveltejs","typescript","websocket","webui"],"created_at":"2024-07-31T05:00:57.540Z","updated_at":"2025-04-30T17:22:52.714Z","avatar_url":"https://github.com/knrdl.png","language":"Svelte","readme":"# CaaSa\n\n## Container as a Service admin\n\n| [Demo](https://knrdl.github.io/caasa/) | [Docker Hub](https://hub.docker.com/r/knrdl/caasa) [![Docker Hub](https://img.shields.io/docker/pulls/knrdl/caasa.svg?logo=docker\u0026style=popout-square)](https://hub.docker.com/r/knrdl/caasa) | [![CI](https://github.com/knrdl/caasa/actions/workflows/docker-image.yml/badge.svg)](https://github.com/knrdl/caasa/actions/workflows/docker-image.yml)\n|----------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| ----------- |\n\nOutsource the administration of a handful of containers to your co-workers.\n\nCaaSa provides a simple web-interface to handle basic container admin tasks:\n\n* View resource consumption/runtime behaviour\n* Restart, Stop containers\n* View logs and process tree\n* Execute terminal commands\n* Browse filesystem, upload/download files\n\nRestrict permissions per container and user\n\n## Getting started\n\n### 1. Deploy CaaSa\n\n```yaml\nversion: '2.4'\nservices:\n  caasa:\n    image: knrdl/caasa\n    restart: always\n    environment:\n      ROLES_caasa_admin_basic: info, state, logs, procs, files, files-read\n      ROLES_caasa_admin_full: info, info-annotations, state, logs, term, procs, files, files-read, files-write\n      AUTH_API_URL: https://identity.mycompany.com/login\n      AUTH_API_FIELD_USERNAME: username\n      AUTH_API_FIELD_PASSWORD: password\n    ports:\n      - \"8080:8080\"\n    volumes:\n      - /var/run/docker.sock:/var/run/docker.sock\n    mem_limit: 150m\n    cpu_count: 1\n```\n\n\u003e :warning: **For production** is a reverse-proxy with TLS termination in front of CaaSa highly recommended\n\nRoles are defined via environment variables and might contain these permissions:\n\n* **info**: display basic container metadata\n* **info-annotations**: display environment variables and container labels (may contain secrets)\n* **state**: allow start, stop, restart container\n* **logs**: display container terminal output\n* **term**: spawn (root privileged) terminal inside container\n* **procs**: display running processes\n* **files**: list files and directories in container\n* **files-read**: user can download files from container\n* **files-write**: user can upload files to container\n\n### 2. Authentication\n\nThere are 3 methods available:\n\n#### 2.1 Restful authentication\n\nTo perform logins CaaSa sends http-post requests to the URL defined in the environment variable `AUTH_API_URL`. The requests contain a json body with username and password. The json field names are defined via environment variables `AUTH_API_FIELD_USERNAME` (default: *username*) and `AUTH_API_FIELD_PASSWORD` (default: *password*). A 2XX response code (e.g. *200 OK*) represents a successful login.\n\n#### 2.2 Dummy authentication\n\nSet the environment variable `AUTH_API_URL=https://example.org`. Now you can log in with any username and password combination.\n\n\u003e :warning: Only useful for tests and demos. Not suitable for productive usage.\n\n#### 2.3 WebProxy authentication\n\nCaaSa can read the username from a http request header. This header must be supplied by a reverse proxy in front of CaaSa. It can be specified via the environment variable `WEBPROXY_AUTH_HEADER`. A typical header name is *Remote-User*.\n\n\u003e :warning: The header must be supplied by the reverse proxy. A value provided by a malicious client must be overwritten.\n\n### 3. Annotate containers\n\nIf a container should be visible in CaaSa, it must be annotated with a label defined above as `ROLES_\u003clabelname\u003e` and list all permitted usernames (or user IDs). Usernames are treated as case-insensitive.\n\n```bash\ndocker run -it --rm --name caasa_demo --label caasa.admin.full=user1,user2 nginx:alpine\n```\n\nIn this example the users `user1` and `user2` are granted the rights of the `caasa.admin.full` role for the container `caasa_demo` via CaaSa web interface.\n\n## Screenshot\n\n![Screenshot](screenshot.png)\n","funding_links":[],"categories":["Container Operations","docker","Svelte"],"sub_categories":["User Interface"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fknrdl%2Fcaasa","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fknrdl%2Fcaasa","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fknrdl%2Fcaasa/lists"}