Connecting a Server
import { Steps, Aside, Tabs, TabItem } from ‘@astrojs/starlight/components’;
Deploy Monkey connects to your server via SSH to manage Docker containers. You can bring your own server or provision a new one through a cloud provider.
Two Ways to Add a Server
Section titled “Two Ways to Add a Server”Connect any Linux VPS you already have. You provide one-time SSH credentials — Deploy Monkey installs its own managed key and never stores your credentials.
Works with any provider: Hetzner, DigitalOcean, AWS Lightsail, Linode, OVH, or any VPS with SSH access.
Create a new VPS directly from Deploy Monkey. Connect your Vultr account, choose a region and plan, and the server is provisioned and configured automatically.
Requirements: A Vultr account with a Personal Access Token (PAT).
Server Requirements
Section titled “Server Requirements”| Requirement | Minimum | Recommended |
|---|---|---|
| OS | Ubuntu 22.04+ or Debian 12+ | Ubuntu 24.04 LTS |
| RAM | 2 GB | 4 GB+ |
| CPU | 1 vCPU | 2 vCPU+ |
| Disk | 20 GB | 40 GB+ SSD |
| Network | Public IPv4 | Public IPv4 |
Option A: Add an Existing Server via SSH
Section titled “Option A: Add an Existing Server via SSH”-
Go to Servers — In the Deploy Monkey dashboard, click “Add Server” and select SSH / Manual.
-
Enter server details — Provide a display name, the server’s public IP address, SSH port (default 22), and username (default root).
-
Provide one-time credentials — Enter either your SSH private key or password. These are used only for the initial connection to install Deploy Monkey’s managed key — they are never stored.
-
Automatic key setup — Deploy Monkey generates an Ed25519 SSH keypair, installs the public key on your server, and verifies the new key works. Your credentials are discarded immediately.
-
Server Setup Wizard — The page transitions to a 2-step wizard:
- Step 1 (Connect): Already complete — your server is connected.
- Step 2 (Setup): Click “Start Setup” to install Docker, Nginx, security hardening, and system optimization (2-5 minutes).
-
Ready — Your server appears as “Active” in the dashboard and is ready for Odoo deployments.
Option B: Provision a New Vultr Server
Section titled “Option B: Provision a New Vultr Server”-
Go to Servers — Click “Add Server” and select Vultr.
-
Connect your Vultr account — Enter your Personal Access Token (PAT). To get one:
- Go to Vultr API Settings
- Click Enable API if not already enabled
- Copy your Personal Access Token
- Under Access Control, allow your IPv4 and IPv6 addresses
-
Configure your server — Choose a region and plan size. All servers are provisioned with Ubuntu 24.04 LTS.
-
Create — Deploy Monkey creates the VPS via Vultr’s API and generates a managed SSH keypair.
-
Wait for provisioning — The Setup Wizard shows Step 1 (Connect) with a progress indicator while the Vultr server boots and becomes SSH-ready (1-3 minutes).
-
Automatic setup — Once the server is ready, Step 2 (Setup) begins. Docker, Nginx, security hardening, and system optimization are installed automatically.
-
Ready — Your server appears as “Active” and is ready for deployments.
SSH Key Management
Section titled “SSH Key Management”Deploy Monkey uses managed Ed25519 SSH keys:
- A unique keypair is generated per server
- The private key is encrypted at rest using Fernet encryption
- Your one-time credentials are never stored
- Keys can be regenerated from the server settings page (two-phase rotation — new key installed and verified before old key is removed)
What the Setup Wizard Installs
Section titled “What the Setup Wizard Installs”The Server Setup Wizard runs 5 steps via SSH:
| Step | What it does |
|---|---|
| Update System Packages | Installs essential packages (curl, wget, git, htop, jq), creates deploymonkey system user and /opt/deploymonkey directory structure |
| Install Docker & Compose | Installs Docker CE and Docker Compose plugin, enables the daemon, adds deploymonkey to the docker group |
| Install & Configure Nginx | Installs Nginx, creates proxy defaults config with timeouts, forwarded headers, and 200M upload limit |
| Security Hardening | Configures UFW firewall (SSH port + 80 + 443 only), installs fail2ban with sshd jail, hardens SSH config (no password auth, prohibit root login, no X11 forwarding) |
| System Optimization | Creates swap file if RAM < 4GB, tunes kernel parameters (swappiness, connection limits, file descriptors), configures Docker log rotation (10MB max, 3 files) |
Each step shows live progress — you can see exactly which step is running, which are complete, and which are pending.
Setup options:
- Skip: Skip the setup entirely if your server is already configured
- Cancel: Cancel a running setup at the next step boundary
- Retry: Retry if a step fails (e.g. network timeout during package installation)
Firewall & Ports
Section titled “Firewall & Ports”The setup wizard configures UFW to allow only these ports:
| Port | Protocol | Purpose |
|---|---|---|
| SSH port | TCP | SSH access (default 22, reads from server config) |
| 80 | TCP | HTTP |
| 443 | TCP | HTTPS |
All other incoming traffic is denied by default.
Server Deletion
Section titled “Server Deletion”- SSH servers: Removing from Deploy Monkey only deletes the DM record. Your server is not affected.
- Vultr servers: You can choose to detach (remove from DM only) or destroy (delete the VPS via Vultr API).
Troubleshooting
Section titled “Troubleshooting”Connection Failed
Section titled “Connection Failed”- Verify the IP address is correct and the server is running
- Check that the SSH port is open in your cloud provider’s firewall
- Ensure SSH is enabled:
sudo systemctl status sshd - Make sure root login is allowed (at least
PermitRootLogin prohibit-password)
Setup Failed
Section titled “Setup Failed”- Check that the server meets minimum requirements (2 GB RAM, Ubuntu 22.04+ or Debian 12+)
- Ensure the server has internet access for downloading packages
- Try running
apt updatemanually to check for package manager issues - Use the “Retry Setup” button — the setup wizard is idempotent (safe to re-run)
Setup Appears Stuck
Section titled “Setup Appears Stuck”- If a step has been running for more than 15 minutes, it will be marked as stale
- You can retry setup — it starts a fresh run
- Common cause: slow package mirrors or network timeouts