Run Jean Server on Gozunga Cloud

Technical Guide
Published: July 26, 2026

Run Jean Server on Gozunga Cloud

Deploy Jean — the headless AI coding assistant server by CoolLabs — on a Gozunga Cloud VM in minutes using cloud-init.

Jean Server on Gozunga Cloud

Jean is an open-source AI development environment from CoolLabs. The server edition (jean-server) runs headlessly on Linux and exposes the full Jean UI in your browser, so you can manage AI coding sessions, git worktrees, and multiple projects from any device on your network.

Running Jean on a Gozunga Cloud VM instead of your local machine is a genuinely better experience. Your laptop stays free — no background processes draining your battery mid-session, no fan spinning up when you kick off a long agent run. The VM runs 24/7 in a data center with conditioned power, redundant cooling, and a fast uplink, so Jean is always there when you pick up your phone or switch machines. Start a session at your desk, pick it up on your laptop at a coffee shop, check in from your phone — the context stays put because the server never sleeps.

This guide walks you through launching a Jean Server on Gozunga Cloud using a ready-made cloud-init recipe — no manual setup required.


What You'll Get

  • A running jean-server systemd service on port 3456
  • A randomly generated secure access token saved to /etc/jean-server.env
  • Jean Web Access available at http://<your-ip>:3456/?token=<token> immediately after boot
  • Always the latest release — the official installer fetches the current version automatically

Prerequisites

  • A Gozunga Cloud account
  • Familiarity with launching instances in the portal
  • (Optional) A domain name if you want to add TLS later

Step 1: Create a Security Group

Jean Server needs a handful of ports open. In the Gozunga portal, create (or update) a Security Group with the following rules:

DirectionProtocolPortSourcePurpose
InboundTCP22Your IPSSH management
InboundTCP3456Your IPJean Web Access
OutboundAllAll0.0.0.0/0Outbound internet (for git, npm, AI CLIs, etc.)

Security tip: Restrict port 3456 to your own IP or VPN range. Jean uses token authentication by default, but limiting network access is always a good extra layer. For public-facing access, consider putting Jean behind a reverse proxy with TLS instead of exposing port 3456 directly.


Step 2: Choose Your Instance

Jean is lightweight but you'll want headroom for the AI CLIs you install inside it:

WorkloadFlavorSpecs
Light use / single projectgp.small12 vCPU / 4 GB RAM
Active developmentgp.medium14 vCPU / 8 GB RAM
Heavy multi-agent / large reposgp.large18 vCPU / 16 GB RAM

The recipe has been tested on Ubuntu 26.04 LTS.


Step 3: Launch with Cloud-Init

This recipe is part of our open-source Gozunga Cloud-Init Collection — a growing library of ready-to-paste cloud-init configs for popular apps and tools, all pre-configured for Gozunga Cloud. You can always find the latest version of this config directly in the repo: ai/ubuntu-jean.yaml

In the Gozunga portal, when launching a new instance:

  1. Select Ubuntu 26.04 LTS as the OS image
  2. Choose your instance size
  3. Assign your Jean security group
  4. Under Cloud config, check Insert cloud-init script and paste the recipe into the Cloud init configuration field
  5. Launch the instance
#cloud-config
# Jean Server (jean.build) on Ubuntu
# Uses the official installer — always installs the latest release.
#
# After boot: http://<server-ip>:3456/?token=<your-token>
# Token: sudo grep JEAN_TOKEN /etc/jean-server.env
#        sudo cat /root/jean-first-login.txt

bootcmd:
  - |
    for f in /etc/apt/sources.list.d/ubuntu.sources /etc/apt/sources.list; do
      [ -f "$f" ] && sed -i \
        -e 's|https\?://archive\.ubuntu\.com/ubuntu|https://mirror.gozunga.com/ubuntu|g' \
        -e 's|https\?://security\.ubuntu\.com/ubuntu|https://mirror.gozunga.com/ubuntu|g' \
        -e 's|https\?://ports\.ubuntu\.com/ubuntu-ports|https://mirror.gozunga.com/ubuntu|g' \
        "$f" || true
    done

apt:
  primary:
    - arches: [default]
      uri: https://mirror.gozunga.com/ubuntu
  security:
    - arches: [default]
      uri: https://mirror.gozunga.com/ubuntu

package_update: true
package_upgrade: true

packages:
  - curl
  - ca-certificates

runcmd:
  - |
    set -e
    # Install Jean Server using the official installer (always gets latest release).
    # Binds to all interfaces (0.0.0.0:3456) — token auth is enabled by default.
    # Your token is auto-generated and saved to /etc/jean-server.env
    curl -fsSL https://raw.githubusercontent.com/coollabsio/jean/main/scripts/install-jean-server.sh \
      | bash -s -- --host 0.0.0.0 --port 3456 -y

final_message: |
  Jean Server is running on port 3456 after $UPTIME seconds.
  Retrieve your token: sudo grep JEAN_TOKEN /etc/jean-server.env

Note on latest version: The installer script always fetches the current release from GitHub automatically — no version pinning needed.


Step 4: First Login

Cloud-init typically completes within 2–3 minutes. Once your instance is up:

  1. SSH into the server:
    ssh ubuntu@<your-server-ip>
    
  2. Read the first-login file to get your access URL and token:
    sudo cat /root/jean-first-login.txt
    
  3. Open the URL in your browser — it will look like:
    http://<your-server-ip>:3456/?token=abc123...
    
  4. Jean will guide you through connecting your first AI CLI (Claude, Codex, OpenCode, Grok, Kimi Code, etc.).

Step 5: Managing the Service

Jean runs as a systemd service (jean-server). Standard commands apply:

# Check status
sudo systemctl status jean-server

# View live logs
sudo journalctl -u jean-server -f

# Restart
sudo systemctl restart jean-server

# View your token and config
sudo cat /etc/jean-server.env

Keeping Jean Updated

Jean releases frequently. The simplest upgrade path is to re-run the official installer — it detects the existing install and updates the binary while preserving your token:

curl -fsSL https://raw.githubusercontent.com/coollabsio/jean/main/scripts/install-jean-server.sh \
  | sudo bash -s -- --host 0.0.0.0 --port 3456 -y

Your token in /etc/jean-server.env is preserved across upgrades.


(Optional) Hardening: TLS with Nginx

For production use or access over the public internet, put Jean behind Nginx with a TLS certificate:

sudo apt install -y nginx certbot python3-certbot-nginx

sudo tee /etc/nginx/sites-available/jean <<'EOF'
server {
    listen 80;
    server_name jean.yourdomain.com;

    location / {
        proxy_pass http://127.0.0.1:3456;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}
EOF

sudo ln -s /etc/nginx/sites-available/jean /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
sudo certbot --nginx -d jean.yourdomain.com

Then update your security group to allow ports 80 and 443, and restrict port 3456 to 127.0.0.1 only (no longer needs to be open externally).


Summary

ItemValue
Default port3456
AuthToken (auto-generated, stored in /etc/jean-server.env)
Servicesystemd: jean-server
First login infosudo cat /root/jean-first-login.txt
Latest releasesgithub.com/coollabsio/jean/releases

Jean gives you a powerful browser-based AI coding environment on your own infrastructure — no cloud subscriptions, no vendor lock-in, your data stays on your server.


Have questions or need a custom setup? Contact Gozunga support or open a ticket in the portal.

Share:

Want to Learn More?

Have questions about our services or want to discuss how we can help your business? We'd love to hear from you.

Contact Us