Embedded Cluster Installation
This guide walks through deploying JuliaHub as a self-managed installation on a single Linux machine using the Replicated Embedded Cluster installer. The installer provisions a Kubernetes cluster automatically — no existing cluster or Kubernetes expertise is required.
The Embedded Cluster installation currently provides the JuliaHub package server functionality only. It does not yet include compute (batch jobs, applications, etc.). Compute support is planned for a future release.
Prerequisites
Before starting, ensure you have the following:
Hostname
Decide on a hostname for your JuliaHub installation (e.g. juliahub.example.com). You will need to create DNS records after the installation is complete, so the hostname does not need to resolve yet, but it must be decided now as it is baked into the TLS certificate and configuration.
TLS Certificate
Obtain a TLS certificate and private key in PEM format. The certificate must cover the following domains:
<hostname>— the main platform URLdocs.<hostname>— generated Julia package documentation
You will upload this certificate through the Admin Console during configuration.
Replicated License
JuliaHub self-managed installations are distributed through Replicated. Contact your JuliaHub sales representative to obtain:
- A license file (
license.yaml) - A license ID
Initial User Credentials
JuliaHub will provide initial admin credentials for your installation.
Host Machine
A Linux machine (physical or virtual) with:
| Requirement | Minimum |
|---|---|
| CPU | 8 cores |
| RAM | 32 GB |
| Disk | 200 GB |
| OS | Modern Linux (Amazon Linux 2023, Ubuntu 22.04+, RHEL 9+) |
| Network | Outbound internet access (see Air-Gapped Installation if restricted) |
The machine must have ports 80, 443, and 30000 available. Port 30000 is used by the Replicated Admin Console.
Installation
1. Download the Installer
On the host machine (or a workstation with access to it), download the installer using the license ID provided by JuliaHub:
curl -f "https://replicated.app/embedded/juliahub/production" \
-H "Authorization: <license-id>" \
-o juliahub.tgz2. Run the Installer
On the host machine, extract and run the installer:
tar zxvf juliahub.tgz
sudo ./juliahub install --license license.yamlIf the host machine accesses the internet through an HTTP proxy, you must set the proxy environment variables before running the installer. See the HTTP Proxy section for details.
The installer will prompt you to set a password for the Admin Console, then provision a Kubernetes cluster and deploy the base infrastructure. This takes approximately 10–15 minutes.
3. Configure via the Admin Console
Once the installer completes, it prints a URL for the Admin Console:
http://<host-ip>:30000Open this URL in your browser and log in with the password you set during installation. The Admin Console walks you through configuring JuliaHub:
- Hostname — enter your chosen hostname
- TLS Certificates — upload your
fullchain.pemandprivkey.pem - Storage — the embedded installation uses host-path storage by default, which is appropriate for single-machine deployments
- Database — the embedded PostgreSQL database is pre-configured
- Preflight Checks — the console runs automated checks to verify the host meets all requirements
After completing the configuration, the Admin Console deploys JuliaHub. This takes approximately 15–20 minutes as container images are pulled and services start up.
See the Replicated Embedded Cluster documentation for full details on the Admin Console.
DNS Configuration
Get the IP address of the host machine, then create the following DNS records:
| Record | Type | Value |
|---|---|---|
<hostname> | A | <host-ip> |
docs.<hostname> | A | <host-ip> |
DNS propagation may take time depending on your DNS provider. JuliaHub will not be accessible until these records resolve.
Verify the Installation
Open https://<hostname> in your browser. You should see the JuliaHub login page.
Air-Gapped Installation
For machines without internet access, the installation can be performed fully offline. You will need an internet-connected workstation to download the installer bundle.
1. Download the Air-Gap Bundle
On your internet-connected workstation, download the air-gap bundle using the license ID provided by JuliaHub:
curl -f "https://replicated.app/embedded/juliahub/production?airgap=true" \
-H "Authorization: <license-id>" \
-o juliahub.tgzThe air-gap bundle includes both the installer and all required container images.
2. Transfer Files to the Host
Transfer the bundle and license file to the air-gapped machine:
scp juliahub.tgz license.yaml user@<host>:/tmp/3. Run the Installer
On the air-gapped machine:
cd /tmp
tar zxvf juliahub.tgz
sudo ./juliahub install --license license.yamlAfter the installer completes, configure JuliaHub through the Admin Console as described in Step 3 above.
HTTP Proxy
If the host machine accesses the internet through an HTTP proxy, you must configure proxy settings in two places.
Installer
The ./juliahub install command needs the standard proxy environment variables set so it can download container images and reach external services. Pass them through sudo with the --preserve-env flag:
sudo --preserve-env=http_proxy,https_proxy,no_proxy \
./juliahub install --license license.yamlAdmin Console
The Admin Console configuration includes fields for proxy settings:
- HTTP Proxy — proxy URL (e.g.
http://proxy-host:3128) - HTTPS Proxy — proxy URL for HTTPS traffic
- No Proxy — comma-separated list of domains to bypass the proxy
If the proxy performs TLS interception, you must also provide the proxy's CA certificate. The Admin Console has a field for uploading additional trusted CA certificates.
Upgrading
Upgrades are managed through the Admin Console at http://<host-ip>:30000. The Admin Console checks for new versions automatically and allows one-click upgrades that update both the application and the underlying Kubernetes cluster.
Next Steps
- Configure authentication providers (OIDC, SAML, LDAP) in the JuliaHub admin settings
- Set up package synchronization to pull packages from the General registry