{"_id":"@brickmasterhunt/n8n-nodes-docker-api","_rev":"3-d0e1077a80bfdcee773c874ed7e45121","name":"@brickmasterhunt/n8n-nodes-docker-api","dist-tags":{"latest":"0.1.6"},"versions":{"0.1.3":{"name":"@brickmasterhunt/n8n-nodes-docker-api","version":"0.1.3","keywords":["n8n","n8n-nodes","n8n-community-node-package","docker","containers","devops","automation","infrastructure"],"author":{"name":"Ramy Gamal"},"license":"MIT","_id":"@brickmasterhunt/n8n-nodes-docker-api@0.1.3","maintainers":[{"name":"brickmasterhunt","email":"brickmasterlogan@icloud.com"}],"homepage":"https://github.com/ramygamal231/n8n-nodes-docker-api","bugs":{"url":"https://github.com/ramygamal231/n8n-nodes-docker-api/issues"},"n8n":{"nodes":["dist/nodes/Docker/Docker.node.js"],"credentials":["dist/credentials/DockerApi.credentials.js"],"n8nNodesApiVersion":1},"dist":{"shasum":"2ca7ce7ec8fd70d81117174099d723e71d8aac9b","tarball":"https://registry.npmjs.org/@brickmasterhunt/n8n-nodes-docker-api/-/n8n-nodes-docker-api-0.1.3.tgz","fileCount":47,"integrity":"sha512-VLlp5rhTD5vvWahfpDIDJL6JKLfQ+r86Z9DIXFbcT4mtnzv5JOc/A96QfKaG95zF/ZMaDnhP7kneQBHKr8x1Tw==","signatures":[{"sig":"MEUCIHN6E1pp4mouzxzYUzY3xojQJpnwla04pJexNtKYR9C5AiEAxaYJREESbGbJgVMLWcQxuUET24CzMzb8UnDP5puyQGc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4253215},"main":"index.js","engines":{"node":">=18.0.0"},"gitHead":"dfd6ef3c792af40eb852d5ed61770e5bccb4fe00","scripts":{"dev":"tsc --watch","lint":"eslint nodes credentials --ext .ts","test":"jest","build":"tsc && npm run copy:assets","format":"prettier nodes credentials --write","lintfix":"eslint nodes credentials --ext .ts --fix","copy:assets":"npx copyfiles -u 1 -f \"nodes/Docker/docker.svg\" dist/nodes/Docker && npx copyfiles -u 1 \"assets/**/*\" dist/assets/","prepublishOnly":"npm run build && npm run lint"},"_npmUser":{"name":"brickmasterhunt","email":"brickmasterlogan@icloud.com"},"repository":{"url":"git+https://github.com/ramygamal231/n8n-nodes-docker-api.git","type":"git"},"_npmVersion":"11.12.1","description":"Interact with Docker via direct API (no Portainer required) — manage containers, stream logs, and automate infrastructure workflows","directories":{},"_nodeVersion":"25.9.0","dependencies":{"dockerode":"^4.0.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","ts-jest":"^29.0.0","n8n-core":"*","prettier":"^2.7.0","copyfiles":"^2.4.1","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^18.0.0","n8n-workflow":"*","@types/dockerode":"^4.0.1","@typescript-eslint/parser":"^8.57.2","eslint-plugin-n8n-nodes-base":"^1.11.0","@typescript-eslint/eslint-plugin":"^8.57.2"},"peerDependencies":{"n8n-workflow":"*"},"_npmOperationalInternal":{"tmp":"tmp/n8n-nodes-docker-api_0.1.3_1776260734339_0.5985112000464246","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@brickmasterhunt/n8n-nodes-docker-api","version":"0.1.5","keywords":["n8n","n8n-nodes","n8n-community-node-package","docker","containers","devops","automation","infrastructure"],"author":{"name":"Ramy Gamal"},"license":"MIT","_id":"@brickmasterhunt/n8n-nodes-docker-api@0.1.5","maintainers":[{"name":"brickmasterhunt","email":"brickmasterlogan@icloud.com"}],"homepage":"https://github.com/ramygamal231/n8n-nodes-docker-api","bugs":{"url":"https://github.com/ramygamal231/n8n-nodes-docker-api/issues"},"n8n":{"nodes":["dist/nodes/Docker/Docker.node.js"],"credentials":["dist/credentials/DockerApi.credentials.js"],"n8nNodesApiVersion":1},"dist":{"shasum":"166d148b49b61a4c634aeced6cca16d09e40dbc6","tarball":"https://registry.npmjs.org/@brickmasterhunt/n8n-nodes-docker-api/-/n8n-nodes-docker-api-0.1.5.tgz","fileCount":47,"integrity":"sha512-+3/vmgRNr21glsmYIwbNtwWXfTBB8w532QoQMvtgPF9bS4LnxDV18I/xWmGwQ095vaBNwqF6Vu0Jz6jbWzdI4w==","signatures":[{"sig":"MEYCIQCPAM0uSA4AgwGD6dzcXZ+FM3dPI0cQpywGnrVYqc0TngIhAKwBB9hR5qteHBCzi39vy2l1XLbf/0ZGmoWehAWhZjMn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4254316},"main":"index.js","engines":{"node":">=18.0.0"},"gitHead":"0974303bdd4c076faceb7fceb38ed762953fed7f","scripts":{"dev":"tsc --watch","lint":"eslint nodes credentials --ext .ts","test":"jest","build":"tsc && npm run copy:assets","format":"prettier nodes credentials --write","lintfix":"eslint nodes credentials --ext .ts --fix","copy:assets":"npx copyfiles -u 1 -f \"nodes/Docker/docker.svg\" dist/nodes/Docker && npx copyfiles -u 1 \"assets/**/*\" dist/assets/","prepublishOnly":"npm run build && npm run lint"},"_npmUser":{"name":"brickmasterhunt","email":"brickmasterlogan@icloud.com"},"repository":{"url":"git+https://github.com/ramygamal231/n8n-nodes-docker-api.git","type":"git"},"_npmVersion":"11.12.1","description":"Interact with Docker via direct API (no Portainer required) — manage containers, stream logs, and automate infrastructure workflows","directories":{},"_nodeVersion":"25.9.0","dependencies":{"dockerode":"^4.0.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","ts-jest":"^29.0.0","n8n-core":"*","prettier":"^2.7.0","copyfiles":"^2.4.1","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^18.0.0","n8n-workflow":"*","@types/dockerode":"^4.0.1","@typescript-eslint/parser":"^8.57.2","eslint-plugin-n8n-nodes-base":"^1.11.0","@typescript-eslint/eslint-plugin":"^8.57.2"},"peerDependencies":{"n8n-workflow":"*"},"_npmOperationalInternal":{"tmp":"tmp/n8n-nodes-docker-api_0.1.5_1776264432661_0.10380584112954483","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@brickmasterhunt/n8n-nodes-docker-api","version":"0.1.6","description":"Interact with Docker via direct API (no Portainer required) — manage containers, stream logs, and automate infrastructure workflows","keywords":["n8n","n8n-nodes","n8n-community-node-package","docker","containers","devops","automation","infrastructure"],"license":"MIT","homepage":"https://github.com/ramygamal231/n8n-nodes-docker-api","repository":{"type":"git","url":"git+https://github.com/ramygamal231/n8n-nodes-docker-api.git"},"author":{"name":"Ramy Gamal"},"main":"index.js","scripts":{"build":"tsc && npm run copy:assets","copy:assets":"npx copyfiles -u 1 -f \"nodes/Docker/docker.svg\" dist/nodes/Docker && npx copyfiles -u 1 \"assets/**/*\" dist/assets/","dev":"tsc --watch","format":"prettier nodes credentials --write","lint":"eslint nodes credentials --ext .ts","lintfix":"eslint nodes credentials --ext .ts --fix","prepublishOnly":"npm run build && npm run lint","test":"jest"},"n8n":{"n8nNodesApiVersion":1,"credentials":["dist/credentials/DockerApi.credentials.js"],"nodes":["dist/nodes/Docker/Docker.node.js"]},"engines":{"node":">=18.0.0"},"devDependencies":{"@types/dockerode":"^4.0.1","@types/jest":"^30.0.0","@types/node":"^18.0.0","@typescript-eslint/eslint-plugin":"^8.57.2","@typescript-eslint/parser":"^8.57.2","copyfiles":"^2.4.1","eslint-plugin-n8n-nodes-base":"^1.11.0","jest":"^29.0.0","n8n-core":"*","n8n-workflow":"*","prettier":"^2.7.0","ts-jest":"^29.0.0","typescript":"^5.9.3"},"dependencies":{"dockerode":"^4.0.0"},"peerDependencies":{"n8n-workflow":"*"},"gitHead":"ea9b20792177e4bfe3a24cdc39914097b86fcd38","_id":"@brickmasterhunt/n8n-nodes-docker-api@0.1.6","bugs":{"url":"https://github.com/ramygamal231/n8n-nodes-docker-api/issues"},"_nodeVersion":"25.9.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-1/20hBfDzLZ8QSoZn5Dlvks2B8nwqIGfvVjQvhFO9m6o9YgBw9k1VXDhakVORosLNFDGzB94HQJnMR0e2KySgQ==","shasum":"13216b0c1359bcc1a4e257e4ce37069656815c90","tarball":"https://registry.npmjs.org/@brickmasterhunt/n8n-nodes-docker-api/-/n8n-nodes-docker-api-0.1.6.tgz","fileCount":49,"unpackedSize":4268463,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIBaTP5aOc+SjOtHCdUzhAgOjk7wOUVgFVhAqvyFb1k+rAiEA/RVb//n+aUSbYy+iPH9motFk9zKAoAP5BJFsvkBv26M="}]},"_npmUser":{"name":"brickmasterhunt","email":"brickmasterlogan@icloud.com"},"directories":{},"maintainers":[{"name":"brickmasterhunt","email":"brickmasterlogan@icloud.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/n8n-nodes-docker-api_0.1.6_1776271846032_0.7145966765298555"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-15T13:45:34.222Z","modified":"2026-04-15T16:50:46.462Z","0.1.3":"2026-04-15T13:45:34.607Z","0.1.5":"2026-04-15T14:47:12.952Z","0.1.6":"2026-04-15T16:50:46.365Z"},"bugs":{"url":"https://github.com/ramygamal231/n8n-nodes-docker-api/issues"},"author":{"name":"Ramy Gamal"},"license":"MIT","homepage":"https://github.com/ramygamal231/n8n-nodes-docker-api","keywords":["n8n","n8n-nodes","n8n-community-node-package","docker","containers","devops","automation","infrastructure"],"repository":{"type":"git","url":"git+https://github.com/ramygamal231/n8n-nodes-docker-api.git"},"description":"Interact with Docker via direct API (no Portainer required) — manage containers, stream logs, and automate infrastructure workflows","maintainers":[{"name":"brickmasterhunt","email":"brickmasterlogan@icloud.com"}],"readme":"![n8n Docker Node](./assets/banner.png)\n\n# 🐳 n8n-nodes-docker-api\n\n![npm](https://img.shields.io/npm/v/n8n-nodes-docker-api)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n> Interact with Docker via direct API (no Portainer required) — manage containers, stream logs, and automate infrastructure with ease.\n\n---\n\n## ✨ Why this node?\n\nManaging Docker via raw HTTP calls in n8n is painful and error-prone.\n\nThis node gives you:\n\n* 🔍 **Clean container listing** (normalized output)\n* 📜 **Readable logs** (stdout/stderr separated, no binary noise)\n* ⚡ **Simple control** (start/stop containers safely)\n* 🔐 **Built-in access control** (read-only vs full control)\n\n👉 Turn Docker into a **first-class automation tool inside n8n**\n\n---\n\n## 🚀 Quick Start\n\n1. Install the node:\n\n```bash\nnpm install n8n-nodes-docker-api\n```\n\n2. Add **Docker API credentials**\n3. Add the **Docker node** to your workflow\n4. Choose an operation and execute\n\n✅ No manual API calls needed\n\n---\n\n## 📦 Installation\n\n### Community Nodes (Recommended)\n\n1. Go to **Settings → Community Nodes**\n2. Install: `n8n-nodes-docker-api`\n\n---\n\n### Manual Installation\n\n```bash\nnpm install n8n-nodes-docker-api\n```\n\n---\n\n## 🧪 Usage\n\n### Docker Node in n8n\n\n![Docker Node UI](./assets/node-ui.png)\n\n1. Add the **Docker node**\n2. Select an operation:\n\n   * List Containers\n   * Get Container Logs\n   * Start Container\n   * Stop Container\n3. Configure credentials\n4. Execute the node\n\n---\n\n### Example: List Containers\n\n* Operation: `List Containers`\n* Optional filters:\n\n  * Name\n  * Status\n  * Show all containers\n\n---\n\n## 🔐 Credentials\n\n### Credentials UI in n8n\n\n![Docker Credentials UI](./assets/credentials-ui.png)\n\n---\n\n### Connection Modes\n\n#### 🟢 Unix Socket (Local)\n\n* Default for local Docker setups\n* Path: `/var/run/docker.sock`\n\n---\n\n#### 🌐 TCP (Remote)\n\n* Connect to remote Docker daemon\n* Example:\n\n  * Host: `192.168.1.10`\n  * Port: `2375`\n\n⚠️ Requires Docker daemon configured with:\n\n```bash\n-H tcp://0.0.0.0:2375\n```\n\n---\n\n#### 🔒 TLS (Coming in v2)\n\n* Secure remote connection using certificates\n\n---\n\n### Access Modes\n\n#### 🟡 Read Only (Recommended)\n\n* ✅ List containers\n* ✅ Get logs\n* ❌ Cannot start/stop containers\n\n---\n\n#### 🔴 Full Control\n\n* ✅ All operations enabled\n\n---\n\n## 📋 Supported Operations (v1)\n\n| Operation          | Description                             | Access       |\n| ------------------ | --------------------------------------- | ------------ |\n| List Containers    | Get containers with normalized output   | Read Only    |\n| Get Container Logs | Logs with stream filtering & timestamps | Read Only    |\n| Start Container    | Start stopped containers                | Full Control |\n| Stop Container     | Stop running containers (with dry run)  | Full Control |\n\n---\n\n## 🔥 Real Use Cases\n\n### ♻️ Self-Healing Containers\n\nAutomatically restart crashed services:\n\n```\nList Containers → IF (status != running) → Start Container\n```\n\n---\n\n### 🚨 Log-Based Alerting\n\nDetect errors and notify:\n\n```\nGet Logs → Search \"ERROR\" → Send Slack alert\n```\n\n---\n\n### 📊 Container Monitoring\n\nTrack system health:\n\n```\nSchedule → List Containers → Aggregate → Report\n```\n\n---\n\n## 🧠 Output Examples\n\n### List Containers\n\n```json\n{\n  \"id\": \"3025272c7592...\",\n  \"shortId\": \"3025272c7592\",\n  \"name\": \"qdrant\",\n  \"image\": \"qdrant/qdrant\",\n  \"status\": \"running\",\n  \"createdAt\": \"2026-03-13T23:19:38.000Z\"\n}\n```\n\n---\n\n### Logs\n\n```json\n{\n  \"message\": \"Server started\",\n  \"stream\": \"stdout\"\n}\n```\n\n---\n\n## 🔒 Security\n\n⚠️ Docker access = **host-level control**\n\n### Best Practices\n\n* Use **Read Only mode** unless needed\n* Avoid exposing Docker over public TCP\n* Use a proxy like:\n\n  * `tecnativa/docker-socket-proxy`\n* Restrict network access\n\n---\n\n## 🧪 Testing\n\n```bash\nnpm test\n```\n\n---\n\n## 🗺️ Roadmap\n\n### v2\n\n* Restart Container\n* Remove Container\n* Image operations (list/pull/remove)\n* TLS support\n* Container autocomplete\n\n### v3\n\n* Run container (ephemeral jobs)\n* Execute commands in container\n* Container stats\n\n### v4\n\n* Docker Trigger node (events)\n\n---\n\n## ⭐ Contributing\n\nPRs and ideas are welcome — especially for new operations and improvements.\n\n---\n\n## 📄 License\n\nMIT\n\n---\n\n## 💬 Support\n\nOpen an issue on GitHub for:\n\n* Bugs\n* Feature requests\n* Questions\n","readmeFilename":"README.md"}