{"id":29467732,"url":"https://github.com/danylo829/containery","last_synced_at":"2026-01-22T05:42:22.903Z","repository":{"id":258845782,"uuid":"862556408","full_name":"danylo829/containery","owner":"danylo829","description":"Powerfull, fast and lightweight container managment web application","archived":false,"fork":false,"pushed_at":"2026-01-02T14:20:16.000Z","size":4293,"stargazers_count":71,"open_issues_count":1,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2026-01-08T14:27:47.405Z","etag":null,"topics":["docker","flask","managment-tool","python","web-application"],"latest_commit_sha":null,"homepage":"","language":"Python","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/danylo829.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-09-24T19:52:09.000Z","updated_at":"2026-01-02T14:20:19.000Z","dependencies_parsed_at":"2025-02-03T09:23:00.188Z","dependency_job_id":"7daa41a4-112b-4189-9016-7859995a7f58","html_url":"https://github.com/danylo829/containery","commit_stats":null,"previous_names":["danylo829/containery"],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/danylo829/containery","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danylo829%2Fcontainery","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danylo829%2Fcontainery/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danylo829%2Fcontainery/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danylo829%2Fcontainery/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/danylo829","download_url":"https://codeload.github.com/danylo829/containery/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danylo829%2Fcontainery/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28656551,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-22T01:17:37.254Z","status":"online","status_checked_at":"2026-01-22T02:00:07.137Z","response_time":144,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["docker","flask","managment-tool","python","web-application"],"created_at":"2025-07-14T10:01:15.090Z","updated_at":"2026-01-22T05:42:22.897Z","avatar_url":"https://github.com/danylo829.png","language":"Python","funding_links":[],"categories":["python"],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n  \u003cpicture\u003e\n    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"src/app/static/images/Containery-white.png\"\u003e\n    \u003cimg alt=\"Containery Logo\" src=\"src/app/static/images/Containery-black.png\" height=\"120\"\u003e\n  \u003c/picture\u003e\n\n  ![Version](https://img.shields.io/github/v/tag/danylo829/containery?label=version)\n  ![Image Size](https://img.shields.io/badge/image%20size-170MB-blue)\n  ![Python](https://img.shields.io/badge/python-3.12-blue)\n  ![Last Commit](https://img.shields.io/github/last-commit/danylo829/containery)\n  ![Contributions Welcome](https://img.shields.io/badge/contributions-welcome-brightgreen.svg)\n  ![License](https://img.shields.io/github/license/danylo829/containery)\n\n\u003c/div\u003e\n\n**Containery** is a web-based container management tool that provides a fast, lightweight, and intuitive interface for managing Docker containers. Whether you're a software engineer, DevOps, QA, or anyone who needs to interact with containers, Containery makes it easy to monitor status, view logs, and access terminals for quick insights and control.\n\n## Features\n- **Docker Management**: Manage containers, images, networks, and volumes within a unified interface.\n- **Terminal and Logs**: View container logs and interact with container terminals directly in the UI.\n- **Responsive Web Interface**: Access and manage Docker resources from any device.\n- **User Management**: Authentication, user profiles, and roles. Ensure that each member has the right level of access to perform their tasks efficiently.\n\n## Deployment\nTo deploy Containery, use the following `docker-compose.yml` configuration. Please note that the `docker-compose.yml` in the repository is set up for development purposes.\n\n```yaml\nservices:\n  app:\n    image: ghcr.io/danylo829/containery:latest\n    container_name: containery\n    restart: \"unless-stopped\"\n    ports:\n      - \"5000:5000\"\n    volumes:\n      - containery_data:/containery_data\n      - containery_static:/containery/app/static/dist\n      - /var/run/docker.sock:/var/run/docker.sock:ro\n\nvolumes:\n  containery_data:\n    name: containery_data\n  containery_static:\n    name: containery_static\n```\n\nOnce the application starts, you can access it by navigating to **[http://localhost:5000](http://localhost:5000)** in your browser. Feel free to change host port (e.g. 80:5000, 8080:5000)\n\n### NGINX Reverse Proxy (Optional)\nIf you need to expose the application over a domain, add HTTPS or improve page loads by caching static content, you can use NGINX as a reverse proxy. Below is a sample NGINX configuration:\n\n```nginx\nserver {\n    listen 80;\n    server_name your-domain.com;\n\n    gzip on;\n    gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;\n    gzip_vary on;\n    gzip_min_length 1024;\n\n    location ^~ /static/dist/ {\n        root /var/www/containery;\n        autoindex off;\n        access_log off;\n        expires max;\n        add_header Cache-Control \"public, max-age=31536000, immutable\";\n    }\n\n    location /socket.io {\n        proxy_pass http://app:5000/socket.io;\n        proxy_http_version 1.1;\n        proxy_buffering off;\n        proxy_set_header Upgrade $http_upgrade;\n        proxy_set_header Connection \"Upgrade\";\n\n        proxy_set_header Host $host;\n        proxy_set_header X-Forwarded-Host $http_host;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Forwarded-Proto $scheme;\n    }\n\n    location / {\n        proxy_pass http://app:5000;\n\n        proxy_set_header Host $host;\n        proxy_set_header X-Forwarded-Host $http_host;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Forwarded-Proto $scheme;\n    }\n}\n```\n\n**Note**:  \n1. If you're using NGINX as a reverse proxy, remove the `ports` section from the `docker-compose.yml` file for the `app` service.  \n2. To enable static content caching, ensure that the `containery_static` volume is mounted to `/var/www/containery/static/dist` in the NGINX configuration. \n3. If you do not wish to enable static content caching, you can omit the `containery_static` volume mount and remove the `/static/dist/` location block from the NGINX configuration.\n\n### Environment variables\n\n#### Docker Configuration\n- **`DOCKER_SOCKET_PATH`**: The path to the Docker socket. Defaults to `/var/run/docker.sock`.\n\n#### Development\n- **`SECRET_KEY`**: A secret key used for cryptographic operations. If not provided, a random 32-byte hexadecimal string will be generated.\n- **`CSRF_SECRET_KEY`**: A secret key specifically for CSRF protection. If not provided, a random 32-byte hexadecimal string will be generated.\n- **`SQLALCHEMY_DATABASE_URI`**: The database connection URI. Defaults to `sqlite:////containery_data/containery.db` for local development.\n- **`SQLALCHEMY_TRACK_MODIFICATIONS`**: A flag to enable or disable SQLAlchemy's event system. Defaults to `False`.\n- **`DEBUG`**: Enables or disables debug mode. Defaults to `False`.\n\n## Screenshots\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/images/dashboard.png\" alt=\"Dashboard\" width=\"600\" /\u003e\n  \u003cbr\u003e\u003cem\u003eDashboard view\u003c/em\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/images/container_list.png\" alt=\"Container List\" width=\"600\" /\u003e\n  \u003cbr\u003e\u003cem\u003eContainer list\u003c/em\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/images/terminal.png\" alt=\"Terminal\" width=\"600\" /\u003e\n  \u003cbr\u003e\u003cem\u003eContainer terminal\u003c/em\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/images/role_add.png\" alt=\"Role Add\" width=\"600\" /\u003e\n  \u003cbr\u003e\u003cem\u003eRole management\u003c/em\u003e\n\u003c/p\u003e\n\n## Roadmap\n- **OIDC Authentication**\n- **Remote Docker host support**\n\n## License\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdanylo829%2Fcontainery","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdanylo829%2Fcontainery","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdanylo829%2Fcontainery/lists"}