W3cubDocs

/Astro

Deploy your Astro Site to Juno

Juno is an open-source serverless platform for hosting static websites, building web applications, and running serverless functions with the privacy and control of self-hosting.

  1. Log in to the Juno Console.

  2. Click the Launch a new satellite button (the container for your project) from the launchpad

  3. Enter a name and select Website

  4. Confirm with Create a Satellite

  5. The platform will then provision its resources.

  6. Once the process is complete, click Continue to access the overview page.

Your Astro project can be deployed to Juno as a static site.

Create a juno.config.mjs file at the root of your project, and replace the PROD_SATELLITE_ID with the ID of the Satellite you created earlier.

juno.config.mjs
import { defineConfig } from '@junobuild/config';


/** @type {import('@junobuild/config').JunoConfig} */
export default defineConfig({
  satellite: {
    ids: {
      production: '<PROD_SATELLITE_ID>'
    },
    source: 'dist',
    predeploy: ['npm run build']
  }
});

You can deploy using either GitHub Actions or CLI (command line interface).

  1. From your Satellite’s overview, navigate to the Setup tab.

  2. Click on Add an access key.

  3. Generate a new key with the default option. Click Submit.

  4. Upon successful creation, a Secret token will be displayed. Copy the value and save it as an encrypted secret in your GitHub repository or organization, using the key JUNO_TOKEN.

  5. Create a deploy.yml file in the .github/workflows subfolder of your repo.

  6. Add the following workflow configuration:

    .github/workflows/deploy.yml
    name: Deploy to Juno
    
    
    on:
      workflow_dispatch:
      push:
        branches: [main]
    
    
    jobs:
      deploy:
        runs-on: ubuntu-latest
        steps:
          - name: Check out the repo
            uses: actions/checkout@v4
    
    
          - uses: actions/setup-node@v4
            with:
              node-version: 24
              registry-url: "https://registry.npmjs.org"
    
    
          - name: Install Dependencies
            run: npm ci
    
    
          - name: Deploy to Juno
            uses: junobuild/juno-action@main
            with:
              args: hosting deploy
            env:
              JUNO_TOKEN: ${{ secrets.JUNO_TOKEN }}
  1. Install the CLI

    Terminal window
    npm i -g @junobuild/cli
  2. Authenticate the CLI. This will open the Juno Console.

    Terminal window
    juno login
  3. In the browser window, click Authorize to grant permission.

  4. Deploy your site:

    Terminal window
    juno hosting deploy

Quickly scaffold a website with a ready-made Astro template.

Terminal window
npm create juno@latest -- --template astro-starter

More Deployment Guides

© 2021 Fred K. Schott
Licensed under the MIT License.
https://docs.astro.build/en/guides/deploy/juno/