> ## Documentation Index
> Fetch the complete documentation index at: https://sincronizado.micr.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# VPS Setup

> Preparing your remote environment for sincronizado.

Your VPS is the "engine" where the heavy lifting happens. sincronizado is flexible, but it expects a standard Linux environment to function correctly.

## Minimum Requirements

* **OS**: Linux (Ubuntu 20.04+, Debian 11+, Fedora, CentOS). **Ubuntu 22.04 LTS** or **24.04 LTS** is highly recommended.
* **RAM**: At least 4GB is recommended for running AI agents comfortably. 8GB+ is better.
* **CPU**: 2+ vCPUs recommended.
* **Disk**: 20GB+ (AI models and node\_modules can be heavy).

## The Golden Path (Automated)

The easiest way to set up a fresh VPS is using our bootstrap script. You can run this directly from the `sinc --setup` wizard, or manually.

**What the script does:**

1. Updates `apt` packages.
2. Installs `tmux`, `git`, `curl`, `wget`, `unzip`.
3. Creates the `~/workspace` directory.
4. Installs `bun` (often needed for modern JS tooling).
5. Checks for `opencode` or `claude` and warns if missing.

**Run it manually:**
SSH into your VPS and run:

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl -fsSL https://raw.githubusercontent.com/Microck/sincronizado/main/scripts/setup-vps.sh | bash
```

## Security Hardening

During `sinc --setup`, you can optionally enable "Security Hardening". This runs an additional script that prepares your VPS for the wild internet.

**What Hardening Does:**

1. **Updates System**: Runs `apt update && apt upgrade`.
2. **Configures Firewall (UFW)**:
   * Denies incoming traffic by default.
   * Allows outgoing traffic.
   * Allows SSH (port 22) and alternative ports (2222, 3000).
3. **Installs Fail2Ban**: Bans IP addresses that repeatedly fail SSH login attempts (3 strikes = 1 hour ban).
4. **Hardens SSH**:
   * Disables root login.
   * Disables password authentication (keys only).
   * *Note: It only does this if you create a non-root user or confirm it.*
5. **Creates User**: Optionally creates a non-root user (e.g. `deployer`) with sudo access.

**Run it manually:**

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
# WARNING: This changes SSH config. Make sure you have a key added first!
curl -fsSL https://raw.githubusercontent.com/Microck/sincronizado/main/scripts/harden-vps.sh | sudo bash
```

## Manual Setup Guide

If you prefer to configure things yourself, here is the checklist.

### 1. SSH Access

You need passwordless SSH access.

* **Local**: Ensure you have a key pair (`ssh-keygen -t ed25519`).
* **Remote**: Add your public key (`id_ed25519.pub`) to `~/.ssh/authorized_keys` on the VPS.
* **Test**: `ssh user@vps-ip` should let you in without a password.

*Tip: Use [Tailscale](https://tailscale.com/) for easy, secure, private networking. It avoids exposing port 22 to the public internet.*

### 2. Install Tmux

Required for session persistence.

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
# Ubuntu/Debian
sudo apt update && sudo apt install -y tmux

# Fedora/CentOS
sudo dnf install -y tmux
```

### 3. Create Workspace

Create the folder where `sinc` will sync your projects.

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
mkdir -p ~/workspace
```

*(You can change this path in your local `config.json` via `sync.remoteBase`)*

### 4. Install Your Agent

sincronizado launches an agent command. You need to install the one you plan to use.

#### Option A: OpenCode (Recommended)

OpenCode is an open-source interpreter.

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
npm install -g opencode
# OR
bun add -g opencode
```

#### Option B: Claude Code

Anthropic's CLI tool.

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
npm install -g @anthropic-ai/claude-code
```

*Note: The binary name is usually `claude`.*

### 5. Install Runtime Dependencies

Your agent will likely need to run code. Install common runtimes:

* **Node.js**: [Use nvm](https://github.com/nvm-sh/nvm) or `sudo apt install nodejs npm`.
* **Python**: `sudo apt install python3-full python3-pip`.
* **Rust**: `curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh`

## Cloud Provider Guides

### Hetzner

Great performance/price ratio.

1. Create a "Cloud" server (CPX21 or CPX31 recommended).
2. Select "Ubuntu 24.04".
3. Add your SSH key during creation.
4. Use the public IPv4 address as your `hostname`.

### DigitalOcean

1. Create a Droplet (Basic -> Premium Intel/AMD).
2. Select Ubuntu 24.04.
3. Add SSH keys.
4. Use the Droplet IP.

### AWS Lightsail

Simpler than EC2.

1. Create an instance (OS Only -> Ubuntu 22.04).
2. Download the default key pair (or upload yours).
3. **Important**: You must allow port 22 in the networking firewall (enabled by default).
4. User is usually `ubuntu`.
