Loading...

Bluehost Self-Managed VPS: Reimage Your Server for Sim Installation

You can set up a fast, high-performance Sim on your Bluehost Self-Managed VPS in just a few minutes. Sim is a powerful testing and automation tool that creates isolated sandboxes and replicates software behaviors. Running Sim on a Self-Managed VPS gives you dedicated server resources to handle heavy workloads, run parallel tasks, and build reliable automated workflows. Using our one-click installer saves you time and handles this technical setup automatically.

Reimage Your Server for Sim Installation

  1. Log in to your Bluehost Portal.
  2. In the left-hand menu, click Hosting.

    Self Managed VPS
     

  1. Click the Manage button on the Self-Managed VPS package.

    BH AM - Select Server - Manage
     

  2. Click the Reimage button.

    BH AM - Manage Server - Overview - Reimage button
     

  3. Select the Applications tab.

    BH AM - Manage Server - Overview - Install Application
     

  4. From the list, locate Sim and click Select.

    BH AM - Manage Server - Select Sim From The List Of Application
     

  5. To confirm, type "reimage" and then click Proceed to start the process.

    BH AM - Manage Server - Overview - Proceed with Reimaging
     

  6. Wait a few minutes while the installation completes.

    BH AM - Install - Sim
     

  7. Once completed, you will see Sim listed in the Server Image section.

    BH AM - Sim -overview- server- image
     

How to Test and Verify Your Sim Setup

Here is your step-by-step walkthrough to get this up, running, and completely secured.

  1. Log in to your Bluehost Portal.
  2. In the left-hand menu, click the Hosting tab.

    Self Managed VPS
     

  3. Look for the server you want to manage then click the View Details to see more options.

    Self Managed VPS
     

  4. Click the Reset Password.

    Self Managed VPS
     

  5. In the pop-up window, type your new root password, then click Reset Password again to confirm and save the changes.

    Self Managed VPS
     

  1. Log in to your server via SSH.

    When you log in to your server for the first time via SSH, you're greeted with a welcome message that includes all the essential commands and instructions for verifying Sim. The content looks like this:

    ssh root@your-server-ip

    Example Output

    Welcome to Ubuntu 24.04.4 LTS (GNU/Linux 6.8.0-124-generic x86_64)
    
    ********************************************************************************
    
      Sim
    
      Web UI:    https://12.6.123.166/
    
      Initialized: 2026-06-16 20:27:28
    
      UFW firewall is enabled.
      Open ports: 22 (SSH), 80 (HTTP->HTTPS redirect), 443 (HTTPS/Sim UI).
    
      Ollama:    active (model: llama3.2:3b)
      IMPORTANT - Copilot API Key required:
        Sim Copilot requires an API key to function.
        1. Go to https://sim.ai -> Settings -> Copilot
        2. Generate a Copilot API key
        3. Edit /opt/sim/.env and set:
             COPILOT_API_KEY=your-key
        4. Restart Sim:  systemctl restart sim
        Note: SIM_AGENT_API_URL=https://www.copilot.sim.ai is already pre-configured.
    
      Helpful commands:
        Check status:   docker compose -f /opt/sim/docker-compose.prod.yml ps
        View logs:      docker compose -f /opt/sim/docker-compose.prod.yml logs -f
        Restart Sim:    systemctl restart sim
        First-boot log: cat /var/log/sim-onboot.log
    
      For more details please see /root/README.md
    
      To remove this message: rm -f /etc/update-motd.d/99_sim
  2. Check the setup logs:
    cat /var/log/sim-onboot.log

    Example Output

    
    Last login: Tue Jun 16 21:28:14 2026 from 115.110.127.198
    root@server-123456:~# cat /var/log/sim-onboot.log
    2026-06-16 20:27:28 - Starting Sim first-boot setup
    2026-06-16 20:27:28 - Instance IP: 12.6.123.166 (confirmed on interface) — real server, SSL will be configured
    2026-06-16 20:27:28 - Secrets generated
    2026-06-16 20:27:28 - /opt/sim/.env written
    2026-06-16 20:27:28 - Ensuring Ollama is running
    2026-06-16 20:27:28 - Ensuring Docker is running
    Rule added
    2026-06-16 20:27:34 - Ollama URL set to http://172.18.0.1:11434
    2026-06-16 20:27:34 - Starting Sim via docker compose
    2026-06-16 20:27:34 - nginx started
    2026-06-16 20:27:34 - SSL setup started for IP: 12.6.123.166
    2026-06-16 20:27:34 - rDNS found (server.anothertestfornvme2.com) but forward lookup returned  — treating as no domain
    2026-06-16 20:27:34 - No domain detected — attempting Let's Encrypt certificate on IP 12.6.123.166...
    Saving debug log to /var/log/letsencrypt/letsencrypt.log
    Account registered.
    Requesting a certificate for 12.6.123.166
    
    Successfully received certificate.
    Certificate is saved at: /etc/letsencrypt/live/12.6.123.166/fullchain.pem
    Key is saved at:         /etc/letsencrypt/live/12.6.123.166/privkey.pem
    This certificate expires on 2026-06-23.
    These files will be updated when the certificate renews.
    NEXT STEPS:
    - The certificate will need to be renewed before it expires. Certbot can automatically renew the certificate in the background, but you may need to take steps to enable that functionality. See https://certbot.org/renewal-setup for instructions.
    
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    If you like Certbot, please consider supporting our work by:
     * Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
     * Donating to EFF:                    https://eff.org/donate-le
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    2026-06-16 20:27:38 - Let's Encrypt certificate issued for IP 12.6.123.166.
    nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
    nginx: configuration file /etc/nginx/nginx.conf test is successful
    2026-06-16 20:27:38 - HTTPS nginx configuration applied.
    2026-06-16 20:27:38 - .env and instance.conf updated with URL: https://512.6.123.166
    2026-06-16 20:27:38 - simstudio container restarted.
    2026-06-16 20:27:38 - SSL setup complete. URL: https://12.6.123.166
    2026-06-16 20:27:55 - Waiting for Sim to be healthy...
      Waiting for Sim... attempt 1/60 (HTTP 000000)
      Sim is up! (HTTP 307 after ~10s)
    
    ============================================================
      Sim AI Platform — First Boot Complete
    ============================================================
      URL:      https://12.6.123.166
      Logs:     journalctl -u sim -f
                docker compose -f /opt/sim/docker-compose.prod.yml logs -f
      Status:   docker compose -f /opt/sim/docker-compose.prod.yml ps
    ============================================================
    
    2026-06-16 20:28:00 - First-boot setup complete
    root@server-123456:~#
  3. Verify the services are running:
    systemctl status sim

    Example Output

    2026-06-16 20:28:00 - First-boot setup complete
    root@server-123456:~# systemctl status sim
    docker compose -f /opt/sim/docker-compose.prod.yml ps
    ● sim.service - Sim AI Agent Platform (simstudioai/sim)
         Loaded: loaded (/etc/systemd/system/sim.service; enabled; preset: enabled)
         Active: active (exited) since Tue 2026-06-16 20:27:55 UTC; 1h 41min ago
           Docs: https://github.com/simstudioai/sim
        Process: 3350 ExecStart=/usr/bin/docker compose -f /opt/sim/docker-compose.prod.yml up -d --remove-orphans (code=ex>
       Main PID: 3350 (code=exited, status=0/SUCCESS)
            CPU: 124ms
    
    Jun 16 20:27:49 server-123456.anothertestfornvme2.com sim[3370]:  Container sim-realtime-1 Started
    Jun 16 20:27:49 server-123456.anothertestfornvme2.com sim[3370]:  Container sim-migrations-1 Waiting
    Jun 16 20:27:49 server-123456.anothertestfornvme2.com sim[3370]:  Container sim-realtime-1 Waiting
    Jun 16 20:27:49 server-123456anothertestfornvme2.com sim[3370]:  Container sim-db-1 Waiting
    Jun 16 20:27:50 server-123456.anothertestfornvme2.com sim[3370]:  Container sim-db-1 Healthy
    Jun 16 20:27:50 server-123456.anothertestfornvme2.com sim[3370]:  Container sim-migrations-1 Exited
    Jun 16 20:27:55 server-123456.anothertestfornvme2.com sim[3370]:  Container sim-realtime-1 Healthy
    Jun 16 20:27:55 server-123456.anothertestfornvme2.com sim[3370]:  Container sim-simstudio-1 Starting
    Jun 16 20:27:55 server-123456.anothertestfornvme2.com sim[3370]:  Container sim-simstudio-1 Started
    Jun 16 20:27:55 server-123456.anothertestfornvme2.com systemd[1]: Finished sim.service - Sim AI Agent Platform (simstud>
    lines 1-18/18 (END)

Access the Sim UI dashboard and Create an Account

  1. Open your web browser and navigate to your domain or server IP:
    • If you set up a domain: Go to https://sim.domain.com
    • If using raw IP: Go to https://your-server-ip.

      (Note: You will have to click "Advanced -> Proceed anyway" if you get a self-signed certificate warning).

  2. You will see a sign-up screen. Click Sign up to proceed.

    BH AM - Manage Server - Sim- log in
     

  3. Create your admin account here.

    Please fill out the details below to set up your new account.

    • Full name: Enter your first and last name as you would like them to appear on your profile.
    • Email: Use a valid, active email address.
    • Password: Choose a strong, secure password. Tip: Mix uppercase letters, lowercase letters, numbers, and symbols to keep your account safe.

    BH AM -Sim dashboard create account
     

  4. Go to https://sim.ai, choose Settings > Copilot, and create your API key.
  5. Open your environment file with a text editor (such as Nano).
    nano /opt/sim/.env

    Example Output

    GNU nano 7.2                        /opt/sim/.env                                 
    # ==============================================================================
    # SIM ENVIRONMENT CONFIGURATION
    # ==============================================================================
    
    DATABASE_URL="postgresql://sim_user:aB7x9_mK29LpQ@localhost:5432/sim_db?schema=public"
    REDIS_URL="redis://localhost:6379/0"
    
    # Security Secrets (Generated automatically on first boot)
    BETTER_AUTH_SECRET="7f3d9e82b1c4a5f6e3d2c1b0a9f8e7d6c5b4a3_sample_secret_xyz"
    ENCRYPTION_KEY="a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6b7c8"
    INTERNAL_API_SECRET="99fbc8d31a4c4e2b8a7d6e5c4b3a210f"
    
    # Public URL Routing
    NEXT_PUBLIC_APP_URL="https://192.168.1.50"
    
    # External AI Service Layer
    COPILOT_API_KEY=sk_sim_co_7a9x2f883d11bce5e93c8402f0a1d49e
    SIM_AGENT_API_URL="https://www.copilot.sim.ai"
    
    # Local AI Configuration
    OLLAMA_URL="http://172.17.0.1:11434"
    
    
    ^G Help      ^O Write Out ^W Where Is  ^K Cut       ^T Execute   ^C Location
    ^X Exit      ^R Read File ^\ Replace  ^U Paste     ^J Justify   ^_ Go To Line
  6. Find the line that says COPILOT_API_KEY= and paste your key right after the equals sign.

    Example Output

    # External AI Service Layer
    COPILOT_API_KEY=sk_sim_co_7a9x2f883d11bce5e93c8402f0a1d49e
    SIM_AGENT_API_URL="https://www.copilot.sim.ai"
  7. Restart the system to apply your new key.
    systemctl restart sim

Additional Information & Example Documentation Output

You can run cat /root/README.md to see more information and useful commands:

Example Output

root@server-123456:~# cat /root/README.md
# Sim

## Description

Sim is an open-source AI workspace where you can build, deploy, and manage agents using a visual workflow builder and 1,000+ integrations. It connects every major LLM - including OpenAI, Claude, and Gemini - and includes pre-built templates for tasks like email triage, code review, and data enrichment, letting teams automate real work.

## Image contents

This template installs and configures:

- Sim AI Agent Platform (simstudioai/sim) via Docker Compose
- PostgreSQL 17 with pgvector extension for embeddings and vector search
- Redis for real-time pub/sub and session management
- Docker CE with Compose plugin and NVIDIA Container Toolkit
- nginx reverse proxy with HTTPS termination
- UFW firewall rules for SSH, HTTP, and HTTPS
- Sim application files at /opt/sim
- docker-compose.prod.yml at /opt/sim/docker-compose.prod.yml
- Runtime environment at /opt/sim/.env
- Logrotate configuration at /etc/logrotate.d/sim

## Services

| Service      | Ports    | Purpose                                                 |
|--------------|----------|---------------------------------------------------------|
| Sim (UI+API) | 3000     | Next.js application server (internal, proxied by nginx) |
| Sim Realtime | 3002     | WebSocket server for live workflow updates (internal)   |
| Redis        | internal | Session store and pub/sub for realtime service          |
| PostgreSQL   | internal | pgvector database (Docker Compose internal network)     |
| nginx        | 80, 443  | Reverse proxy, HTTP redirects to HTTPS                  |
| OpenSSH      | 22       | Remote access                                           |
| Ollama       | 11434    | Local LLM API (llama3.2:3b)   |

Ports are protected using UFW. Internal services are not exposed externally.

## Sim configuration

The runtime environment is stored at /opt/sim/.env.

Key settings include:

- DATABASE_URL - PostgreSQL connection string pointing to the db Compose service
- BETTER_AUTH_SECRET - session signing secret, generated on first boot
- ENCRYPTION_KEY - key for encrypting stored API credentials, generated on first boot
- INTERNAL_API_SECRET - internal API authentication between Sim services
- NEXT_PUBLIC_APP_URL - public URL used in emails and OAuth callbacks
- REDIS_URL - Redis connection string for the realtime service
- COPILOT_API_KEY - effectively required for Sim to function. Generate at https://sim.ai -> Settings -> Copilot
- SIM_AGENT_API_URL - pre-configured to https://www.copilot.sim.ai

The systemd service unit is sim and starts Sim via docker compose as root.

## First boot behavior

On the first boot, the cloud-init per-instance script /var/lib/cloud/scripts/per-instance/001_onboot:

- Detects the public IP address of the server via external lookup with hostname fallback
- Generates random secrets: POSTGRES_PASSWORD, BETTER_AUTH_SECRET, ENCRYPTION_KEY, and INTERNAL_API_SECRET
- Writes /opt/sim/.env with all real values replacing build-time placeholders
- Tears down any build-time Docker volumes so PostgreSQL initializes with the new password
- Starts all Docker Compose services: PostgreSQL, Redis, migrations, realtime, and simstudio
- Detects whether a domain name resolves to the server IP and requests a Let's Encrypt certificate for it
- Falls back to a self-signed certificate if no domain is detected
- Rewrites the nginx config with HTTP to HTTPS redirect and full HTTPS proxy block
- Waits up to 5 minutes for Sim to become healthy and logs the result

This guarantees that no credentials are baked into the image. Every instance gets unique credentials.

## First-time access (How to use)

SSH into your server using your cloud provider credentials and the server public IP:
    ssh root@
After the VM boots, access Sim at:
    https:///

On the first visit, Sim will show a sign-up screen. Create your first account to get started. There is no default admin password - accounts are created through the Sim UI on first access.
To get a trusted HTTPS certificate with no browser warning, point a domain name A record to the server IP before booting. The image will detect the domain automatically and request a Let's Encrypt certificate.

View the first-boot log to confirm setup completed successfully:
    cat /var/log/sim-onboot.log
View the generated secrets:
    cat /opt/sim/.env

## Using Ollama (Local AI)

Sim is pre-configured with a local AI model (llama3.2:3b) powered by Ollama.
No API keys required.

### Workflow Setup Guide

- Login: Open `https://` and log in to Sim UI
- Create a New Workflow: In the left panel, click **"+"** to create a new workflow
- Add Agent Block: Click the new workflow -> right panel -> **Toolbar** -> **Blocks** -> click on **Agent**
- Connect Blocks: **Start** and **Agent** blocks are automatically connected on the canvas
- Configure the Agent: Click **Agent** block -> select **`llama3.2:3b`** by scrolling down under **Model**
- Enter a Prompt: In **Messages** box, type your prompt
- Run: Click green **Run** button on top right
- View Response: Output appears in the **Output** panel at the bottom

> **Note:** Response time may take 1-3 minutes depending on server hardware.

---

## Useful commands

Check Sim container status:
    docker compose -f /opt/sim/docker-compose.prod.yml ps
View Sim logs:
    docker compose -f /opt/sim/docker-compose.prod.yml logs -f
Check Sim service:
    systemctl status sim
Check nginx service:
    systemctl status nginx
Restart Sim:
    systemctl restart sim
Pull latest Sim images and restart:
    cd /opt/sim && docker compose -f docker-compose.prod.yml pull && systemctl restart sim
View systemd journal for Sim:
    journalctl -u sim -n 100 --no-pager
Verify listening ports:
    ss -tulnp
Check Ollama status:
    systemctl status ollama
List available models:
    ollama list
Test Ollama responds:
    ollama run llama3.2:3b "hello"

## Minimum Resources

| Resource | Minimum  |
|----------|----------|
| CPU      | 4 vCPUs  |
| RAM      | 16 GB    |
| Disk     | 100 GB   |

Running Sim on an instance with less than 16 GB of RAM will likely result in out-of-memory errors during the first boot or under load.

## Notes

- All secrets are generated fresh on every new instance. The .env file in the image contains only placeholders.
- PostgreSQL and Redis are not exposed externally. They are only reachable within the Docker Compose network.
- Logs are written to /var/log/sim-onboot.log for first-boot events and to Docker container logs for runtime events.
- The Sim UI is served on port 443 (HTTPS). Port 80 redirects to HTTPS automatically.
- NVIDIA Container Toolkit is pre-installed to support GPU-accelerated model inference if the instance has a GPU.
- Ollama is pre-installed with llama3.2:3b. In Sim, select Ollama as the provider and pick llama3.2:3b to use the local model without any API keys.
- Ollama runs on the host and is accessible to Sim via the Docker bridge gateway. The OLLAMA_URL is set automatically on first boot.

## Links

**Sim**
* Manage: [https://{server_ip}](https://{server_ip})
* Documentation: [https://docs.sim.ai](https://docs.sim.ai)
* GitHub: [https://github.com/simstudioai/sim](https://github.com/simstudioai/sim)
* Website: [https://sim.ai](https://sim.ai)
* Docker CE: [https://docs.docker.com/engine/install/ubuntu/](https://docs.docker.com/engine/install/ubuntu/)
* pgvector: [https://github.com/pgvector/pgvector](https://github.com/pgvector/pgvector)
* Ollama: [https://ollama.com](https://ollama.com)
* Ollama Model Library: [https://ollama.com/library](https://ollama.com/library)
* Sim Self-Hosting Docs (Ollama): [https://docs.sim.ai/self-hosting/docker#ollama](https://docs.sim.ai/self-hosting/docker#ollama)
root@server-123456:~# cat /var/log/sim-onboot.log

Summary

This guide shows you how to quickly set up Sim, a powerful testing and automation tool, using the Bluehost VPS one-click installer. Keep in mind that using this installer completely overwrites your server and permanently deletes all existing files and data.

Loading...