openclaw/docs/install/ansible.md

231 lines
6.8 KiB
Markdown
Raw Normal View History

2026-01-09 02:01:13 +01:00
---
2026-01-30 03:15:10 +01:00
summary: "Automated, hardened OpenClaw installation with Ansible, Tailscale VPN, and firewall isolation"
2026-01-09 02:01:13 +01:00
read_when:
- You want automated server deployment with security hardening
- You need firewall-isolated setup with VPN access
- You're deploying to remote Debian/Ubuntu servers
title: "Ansible"
2026-01-09 02:01:13 +01:00
---
# Ansible Installation
Deploy OpenClaw to production servers with **[openclaw-ansible](https://github.com/openclaw/openclaw-ansible)** -- an automated installer with security-first architecture.
2026-01-09 02:01:13 +01:00
<Info>
The [openclaw-ansible](https://github.com/openclaw/openclaw-ansible) repo is the source of truth for Ansible deployment. This page is a quick overview.
</Info>
2026-01-09 02:01:13 +01:00
## Prerequisites
2026-01-09 02:01:13 +01:00
| Requirement | Details |
| ----------- | --------------------------------------------------------- |
| **OS** | Debian 11+ or Ubuntu 20.04+ |
| **Access** | Root or sudo privileges |
| **Network** | Internet connection for package installation |
| **Ansible** | 2.14+ (installed automatically by the quick-start script) |
2026-01-09 02:01:13 +01:00
## What You Get
- **Firewall-first security** -- UFW + Docker isolation (only SSH + Tailscale accessible)
- **Tailscale VPN** -- secure remote access without exposing services publicly
- **Docker** -- isolated sandbox containers, localhost-only bindings
- **Defense in depth** -- 4-layer security architecture
- **Systemd integration** -- auto-start on boot with hardening
- **One-command setup** -- complete deployment in minutes
## Quick Start
2026-01-09 02:01:13 +01:00
One-command install:
2026-01-09 02:01:13 +01:00
```bash
curl -fsSL https://raw.githubusercontent.com/openclaw/openclaw-ansible/main/install.sh | bash
```
2026-01-09 02:01:13 +01:00
## What Gets Installed
The Ansible playbook installs and configures:
1. **Tailscale** -- mesh VPN for secure remote access
2. **UFW firewall** -- SSH + Tailscale ports only
3. **Docker CE + Compose V2** -- for agent sandboxes
4. **Node.js 24 + pnpm** -- runtime dependencies (Node 22 LTS, currently `22.16+`, remains supported)
5. **OpenClaw** -- host-based, not containerized
6. **Systemd service** -- auto-start with security hardening
2026-01-09 02:01:13 +01:00
<Note>
The gateway runs directly on the host (not in Docker), but agent sandboxes use Docker for isolation. See [Sandboxing](/gateway/sandboxing) for details.
</Note>
2026-01-09 02:01:13 +01:00
## Post-Install Setup
<Steps>
<Step title="Switch to the openclaw user">
```bash
sudo -i -u openclaw
```
</Step>
<Step title="Run the onboarding wizard">
The post-install script guides you through configuring OpenClaw settings.
</Step>
<Step title="Connect messaging providers">
Log in to WhatsApp, Telegram, Discord, or Signal:
```bash
openclaw channels login
```
</Step>
<Step title="Verify the installation">
```bash
sudo systemctl status openclaw
sudo journalctl -u openclaw -f
```
</Step>
<Step title="Connect to Tailscale">
Join your VPN mesh for secure remote access.
</Step>
</Steps>
### Quick Commands
2026-01-09 02:01:13 +01:00
```bash
# Check service status
2026-01-30 03:15:10 +01:00
sudo systemctl status openclaw
2026-01-09 02:01:13 +01:00
# View live logs
2026-01-30 03:15:10 +01:00
sudo journalctl -u openclaw -f
2026-01-09 02:01:13 +01:00
# Restart gateway
2026-01-30 03:15:10 +01:00
sudo systemctl restart openclaw
2026-01-09 02:01:13 +01:00
2026-01-30 03:15:10 +01:00
# Provider login (run as openclaw user)
sudo -i -u openclaw
openclaw channels login
2026-01-09 02:01:13 +01:00
```
## Security Architecture
The deployment uses a 4-layer defense model:
2026-01-09 02:01:13 +01:00
1. **Firewall (UFW)** -- only SSH (22) + Tailscale (41641/udp) exposed publicly
2. **VPN (Tailscale)** -- gateway accessible only via VPN mesh
3. **Docker isolation** -- DOCKER-USER iptables chain prevents external port exposure
4. **Systemd hardening** -- NoNewPrivileges, PrivateTmp, unprivileged user
2026-01-09 02:01:13 +01:00
To verify your external attack surface:
2026-01-09 02:01:13 +01:00
```bash
nmap -p- YOUR_SERVER_IP
```
Only port 22 (SSH) should be open. All other services (gateway, Docker) are locked down.
2026-01-09 02:01:13 +01:00
Docker is installed for agent sandboxes (isolated tool execution), not for running the gateway itself. See [Multi-Agent Sandbox and Tools](/tools/multi-agent-sandbox-tools) for sandbox configuration.
2026-01-09 02:01:13 +01:00
## Manual Installation
If you prefer manual control over the automation:
<Steps>
<Step title="Install prerequisites">
```bash
sudo apt update && sudo apt install -y ansible git
```
</Step>
<Step title="Clone the repository">
```bash
git clone https://github.com/openclaw/openclaw-ansible.git
cd openclaw-ansible
```
</Step>
<Step title="Install Ansible collections">
```bash
ansible-galaxy collection install -r requirements.yml
```
</Step>
<Step title="Run the playbook">
```bash
./run-playbook.sh
```
Alternatively, run directly and then manually execute the setup script afterward:
```bash
ansible-playbook playbook.yml --ask-become-pass
# Then run: /tmp/openclaw-setup.sh
```
</Step>
</Steps>
## Updating
2026-01-09 02:01:13 +01:00
2026-01-30 03:15:10 +01:00
The Ansible installer sets up OpenClaw for manual updates. See [Updating](/install/updating) for the standard update flow.
2026-01-09 02:01:13 +01:00
To re-run the Ansible playbook (for example, for configuration changes):
2026-01-09 02:01:13 +01:00
```bash
2026-01-30 03:15:10 +01:00
cd openclaw-ansible
2026-01-09 02:01:13 +01:00
./run-playbook.sh
```
This is idempotent and safe to run multiple times.
2026-01-09 02:01:13 +01:00
## Troubleshooting
<AccordionGroup>
<Accordion title="Firewall blocks my connection">
- Ensure you can access via Tailscale VPN first
- SSH access (port 22) is always allowed
- The gateway is only accessible via Tailscale by design
</Accordion>
<Accordion title="Service will not start">
```bash
# Check logs
sudo journalctl -u openclaw -n 100
# Verify permissions
sudo ls -la /opt/openclaw
# Test manual start
sudo -i -u openclaw
cd ~/openclaw
openclaw gateway run
```
</Accordion>
<Accordion title="Docker sandbox issues">
```bash
# Verify Docker is running
sudo systemctl status docker
# Check sandbox image
sudo docker images | grep openclaw-sandbox
# Build sandbox image if missing
cd /opt/openclaw/openclaw
sudo -u openclaw ./scripts/sandbox-setup.sh
```
</Accordion>
<Accordion title="Provider login fails">
Make sure you are running as the `openclaw` user:
```bash
sudo -i -u openclaw
openclaw channels login
```
</Accordion>
</AccordionGroup>
2026-01-09 02:01:13 +01:00
## Advanced Configuration
For detailed security architecture and troubleshooting, see the openclaw-ansible repo:
2026-01-31 21:13:13 +09:00
2026-01-30 03:15:10 +01:00
- [Security Architecture](https://github.com/openclaw/openclaw-ansible/blob/main/docs/security.md)
- [Technical Details](https://github.com/openclaw/openclaw-ansible/blob/main/docs/architecture.md)
- [Troubleshooting Guide](https://github.com/openclaw/openclaw-ansible/blob/main/docs/troubleshooting.md)
2026-01-09 02:01:13 +01:00
## Related
- [openclaw-ansible](https://github.com/openclaw/openclaw-ansible) -- full deployment guide
- [Docker](/install/docker) -- containerized gateway setup
- [Sandboxing](/gateway/sandboxing) -- agent sandbox configuration
- [Multi-Agent Sandbox and Tools](/tools/multi-agent-sandbox-tools) -- per-agent isolation