Andy Steinberger

Portainer

运维安全v1.0.0
作者:Andy Steinberger更新于 2026-05-18portainer@clawhub_asteinberger/portainer
服务器运维DevOps#Docker#Git

据 AlphaMoat 统计,截至 2026-09,Portainer 累计下载 4,605 次、获 3 个星标,在全部 5,078 个 AI 技能中排名第 2,070 位,在「运维安全」分类(264 个)中排名第 111 位。

累计安装
248
累计下载
4,605
星标
3
全站排名
#2,070
全站前 41% · 「运维安全」前 43%
平台累计安装累计下载星标评论
ClawHub ↗1534,5703-
SkillHub ↗2484,6053—

各平台的计数口径不同,统计时间不一致。

这个技能是做什么的

通过 Portainer API 查看 Docker 容器和堆栈、启动或停止服务、查看日志并重新部署。操作可能影响线上服务;执行前确认目标环境、容器和影响范围,变更前优先检查状态与日志。

资料发布于 2026-10-27

可以用来做什么

  • 检查容器、堆栈和运行日志
  • 管理容器状态或重新部署

什么时候用

  • 需要查看 Portainer 服务状态时
  • 停止、重启或重新部署前

示例提示词

以下是根据技能文档生成的示例,不代表实际运行结果。

列出目标环境容器和状态,不要更改。
展示将重启的服务和影响范围,等待确认。

月度数据趋势

累计下载4,605
3,1753,9434,7112026-03 · 累计下载 3,2812026-05 · 累计下载 3,9022026-07 · 累计下载 4,2982026-08 · 累计下载 4,4522026-09 · 累计下载 4,60526-0326-09
星标3
2342026-03 · 星标 32026-05 · 星标 32026-07 · 星标 32026-08 · 星标 32026-09 · 星标 326-0326-09

2026-09 起统计方法调整:同名技能按作者分别统计,并覆盖全部技能。图中虚线为调整前的月份,与之后的数据不直接比较,也不计算跨越调整的增长。 该技能有同名的其他版本,调整前的数据归属当前下载量最大的这一个。

月份累计下载环比星标
2026-094,605—3
2026-084,452+3.6%3
2026-074,298—3
2026-053,902—3
2026-033,281—3

SKILL.md 原文

以下是作者发布的原始文件,按纯文本显示,本站未做修改或审核;其中的链接不可点击,命令请核实后再运行。抓取于 2026-10-23。

6.3 KB · ClawHub v1.0.0
---
name: portainer
description: Control Docker containers and stacks via Portainer API. List containers, start/stop/restart, view logs, and redeploy stacks from git.
metadata: {"clawdbot":{"emoji":"🐳","requires":{"bins":["curl","jq"],"env":["PORTAINER_API_KEY"]},"primaryEnv":"PORTAINER_API_KEY"}}
---

# 🐳 Portainer Skill

```
    ╔═══════════════════════════════════════════════════════════╗
展开全部(共 309 行)
    ║                                                           ║
    ║   🐳  P O R T A I N E R   C O N T R O L   C L I  🐳      ║
    ║                                                           ║
    ║       Manage Docker containers via Portainer API          ║
    ║            Start, stop, deploy, redeploy                  ║
    ║                                                           ║
    ╚═══════════════════════════════════════════════════════════╝
```

> *"Docker containers? I'll handle them from my lily pad."* 🐸

---

## 📖 What Does This Skill Do?

The **Portainer Skill** gives you control over your Docker infrastructure through Portainer's REST API. Manage containers, stacks, and deployments without touching the web UI.

**Features:**
- 📊 **Status** — Check Portainer server status
- 🖥️ **Endpoints** — List all Docker environments
- 📦 **Containers** — List, start, stop, restart containers
- 📚 **Stacks** — List and manage Docker Compose stacks
- 🔄 **Redeploy** — Pull from git and redeploy stacks
- 📜 **Logs** — View container logs

---

## ⚙️ Requirements

| What | Details |
|------|---------|
| **Portainer** | Version 2.x with API access |
| **Tools** | `curl`, `jq` |
| **Auth** | API Access Token |

### Setup

1. **Get API Token from Portainer:**
   - Log into Portainer web UI
   - Click username → My Account
   - Scroll to "Access tokens" → Add access token
   - Copy the token (you won't see it again!)

2. **Configure credentials:**
   ```bash
   # Add to ~/.clawdbot/.env
   PORTAINER_URL=https://your-portainer-server:9443
   PORTAINER_API_KEY=ptr_your_token_here
   ```

3. **Ready!** 🚀

---

## 🛠️ Commands

### `status` — Check Portainer Server

```bash
./portainer.sh status
```

**Output:**
```
Portainer v2.27.3
```

---

### `endpoints` — List Environments

```bash
./portainer.sh endpoints
```

**Output:**
```
3: portainer (local) - ✓ online
4: production (remote) - ✓ online
```

---

### `containers` — List Containers

```bash
# List containers on default endpoint (4)
./portainer.sh containers

# List containers on specific endpoint
./portainer.sh containers 3
```

**Output:**
```
steinbergerraum-web-1    running    Up 2 days
cora-web-1               running    Up 6 weeks
minecraft                running    Up 6 weeks (healthy)
```

---

### `stacks` — List All Stacks

```bash
./portainer.sh stacks
```

**Output:**
```
25: steinbergerraum - ✓ active
33: cora - ✓ active
35: minecraft - ✓ active
4: pulse-website - ✗ inactive
```

---

### `stack-info` — Stack Details

```bash
./portainer.sh stack-info 25
```

**Output:**
```json
{
  "Id": 25,
  "Name": "steinbergerraum",
  "Status": 1,
  "EndpointId": 4,
  "GitConfig": "https://github.com/user/repo",
  "UpdateDate": "2026-01-25T08:44:56Z"
}
```

---

### `redeploy` — Pull & Redeploy Stack 🔄

```bash
./portainer.sh redeploy 25
```

**Output:**
```
✓ Stack 'steinbergerraum' redeployed successfully
```

This will:
1. Pull latest code from git
2. Rebuild containers if needed
3. Restart the stack

---

### `start` / `stop` / `restart` — Container Control

```bash
# Start a container
./portainer.sh start steinbergerraum-web-1

# Stop a container
./portainer.sh stop steinbergerraum-web-1

# Restart a container
./portainer.sh restart steinbergerraum-web-1

# Specify endpoint (default: 4)
./portainer.sh restart steinbergerraum-web-1 4
```

**Output:**
```
✓ Container 'steinbergerraum-web-1' restarted
```

---

### `logs` — View Container Logs

```bash
# Last 100 lines (default)
./portainer.sh logs steinbergerraum-web-1

# Last 50 lines
./portainer.sh logs steinbergerraum-web-1 4 50
```

---

## 🎯 Example Workflows

### 🚀 "Deploy Website Update"
```bash
# After merging PR
./portainer.sh redeploy 25
./portainer.sh logs steinbergerraum-web-1 4 20
```

### 🔧 "Debug Container"
```bash
./portainer.sh containers
./portainer.sh logs cora-web-1
./portainer.sh restart cora-web-1
```

### 📊 "System Overview"
```bash
./portainer.sh status
./portainer.sh endpoints
./portainer.sh containers
./portainer.sh stacks
```

---

## 🔧 Troubleshooting

### ❌ "Authentication required / Repository not found"

**Problem:** Stack redeploy fails with git auth error

**Solution:** The stack needs `repositoryGitCredentialID` parameter. The script handles this automatically by reading from the existing stack config.

---

### ❌ "Container not found"

**Problem:** Container name doesn't match

**Solution:** Use exact name from `./portainer.sh containers`:
- Include the full name: `steinbergerraum-web-1` not `steinbergerraum`
- Names are case-sensitive

---

### ❌ "PORTAINER_URL and PORTAINER_API_KEY must be set"

**Problem:** Credentials not configured

**Solution:**
```bash
# Add to ~/.clawdbot/.env
echo "PORTAINER_URL=https://your-server:9443" >> ~/.clawdbot/.env
echo "PORTAINER_API_KEY=ptr_your_token" >> ~/.clawdbot/.env
```

---

## 🔗 Integration with Clawd

```
"Redeploy the website"
→ ./portainer.sh redeploy 25

"Show me running containers"
→ ./portainer.sh containers

"Restart the Minecraft server"
→ ./portainer.sh restart minecraft

"What stacks do we have?"
→ ./portainer.sh stacks
```

---

## 📜 Changelog

| Version | Date | Changes |
|---------|------|---------|
| 1.0.0 | 2026-01-25 | Initial release |

---

## 🐸 Credits

```
  @..@
 (----)
( >__< )   "Containers are just fancy lily pads
 ^^  ^^     for your code to hop around!"
```

**Author:** Andy Steinberger (with help from his Clawdbot Owen the Frog 🐸)  
**Powered by:** [Portainer](https://portainer.io/) API  
**Part of:** [Clawdbot](https://clawdhub.com) Skills Collection

---

<div align="center">

**Made with 💚 for the Clawdbot Community**

*Ribbit!* 🐸

</div>

「运维安全」分类下的热门技能

数据月份:2026-09 · 下载/星标/安装数聚合自公开技能注册库(ClawHub、SkillHub),按月更新。口径说明见数据方法。