---
title: "Deploy Static Site"
description: "Deploy a Static Site to a Bucket with Functions on Railway"
category: "Starters"
url: https://railway.com/deploy/static-site
---

# Deploy Static Site

Deploy a Static Site to a Bucket with Functions on Railway

**[Deploy Static Site on Railway](https://railway.com/template/static-site)**

- **Creator:** zǝʇɹoɔ oɓıɹpoɹ
- **Category:** Starters
- **Total deploys:** 69

## Template content

### Server

- **Image:** ghcr.io/railwayapp/function-bun:1.3.0
- **Start command:** `./run.sh Ly8gaW5kZXgudHN4CmltcG9ydCB7IEhvbm8gfSBmcm9tICJob25vIjsKaW1wb3J0IHsgY29ycyB9IGZyb20gImhvbm8vY29ycyI7CmltcG9ydCB7IFMzQ2xpZW50IH0gZnJvbSAiYnVuIjsKaW1wb3J0IHsgc3RyZWFtIH0gZnJvbSAiaG9uby9zdHJlYW1pbmciOwoKY29uc3QgYXBwID0gbmV3IEhvbm8oKTsKCi8vIENvbmZpZ3VyYWNpw7NuIFMzCmNvbnN0IGNsaWVudCA9IG5ldyBTM0NsaWVudCh7CiAgYWNjZXNzS2V5SWQ6IEJ1bi5lbnYuUzNfQUNDRVNTX0tFWV9JRCwKICBzZWNyZXRBY2Nlc3NLZXk6IEJ1bi5lbnYuUzNfU0VDUkVUX0FDQ0VTU19LRVksCiAgYnVja2V0OiBCdW4uZW52LlMzX0JVQ0tFVCwKICBlbmRwb2ludDogQnVuLmVudi5TM19FTkRQT0lOVCwKfSk7CgovLyBIYWJpbGl0YXIgQ09SUyBwYXJhIHRvZGFzIGxhcyBydXRhcwphcHAudXNlKCIvKiIsIGNvcnMoKSk7CgovLyBSdXRhIGNhdGNoLWFsbAphcHAuZ2V0KCIvKiIsIGFzeW5jIChjKSA9PiB7CiAgbGV0IHBhdGhuYW1lID0gYy5yZXEucGF0aDsKICBsZXQgczNmaWxlID0gY2xpZW50LmZpbGUocGF0aG5hbWUpOwoKICAvLyBTaSB0ZXJtaW5hIGVuICIvIiBvIGVzIGxhIHJhw616LCBhZ3JlZ2FyIGluZGV4Lmh0bWwKICBpZiAocGF0aG5hbWUgPT09ICIvIiB8fCBwYXRobmFtZS5lbmRzV2l0aCgiLyIpKSB7CiAgICBwYXRobmFtZSArPSAiaW5kZXguaHRtbCI7CiAgICBzM2ZpbGUgPSBjbGllbnQuZmlsZShwYXRobmFtZSk7CiAgfQoKICAvLyBTaSBubyBleGlzdGUsIGludGVudGFyIGFncmVnYXIgaW5kZXguaHRtbCBwYXJhIHJ1dGFzIHNpbiBzbGFzaAogIGlmICghKGF3YWl0IHMzZmlsZS5leGlzdHMoKSkgJiYgIXBhdGhuYW1lLmVuZHNXaXRoKCIuaHRtbCIpKSB7CiAgICBjb25zdCBpbmRleEZpbGUgPSBjbGllbnQuZmlsZShwYXRobmFtZSArICIvaW5kZXguaHRtbCIpOwogICAgaWYgKGF3YWl0IGluZGV4RmlsZS5leGlzdHMoKSkgewogICAgICBwYXRobmFtZSArPSAiL2luZGV4Lmh0bWwiOwogICAgICBzM2ZpbGUgPSBpbmRleEZpbGU7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gYy5ub3RGb3VuZCgpOwogICAgfQogIH0KCiAgLy8gT2J0ZW5lciBtZXRhZGF0YQogIGNvbnN0IG1ldGEgPSBhd2FpdCBzM2ZpbGUuc3RhdCgpOwoKICAvLyBDb250ZW50LVR5cGUgY29uIGZhbGxiYWNrCiAgYy5oZWFkZXIoIkNvbnRlbnQtVHlwZSIsIG1ldGEudHlwZSB8fCAidGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Iik7CgogIC8vIEVUYWcgeSBMYXN0LU1vZGlmaWVkCiAgaWYgKG1ldGEuZXRhZykgYy5oZWFkZXIoIkVUYWciLCBtZXRhLmV0YWcpOwogIGlmIChtZXRhLmxhc3RNb2RpZmllZCkKICAgIGMuaGVhZGVyKCJMYXN0LU1vZGlmaWVkIiwgbWV0YS5sYXN0TW9kaWZpZWQudG9VVENTdHJpbmcoKSk7CgogIC8vIENhY2hlIHDDumJsaWNhIDEgaG9yYQogIGMuaGVhZGVyKCJDYWNoZS1Db250cm9sIiwgInB1YmxpYywgbWF4LWFnZT0zNjAwIik7CgogIC8vIFN0cmVhbSBkZWwgYXJjaGl2bwogIHJldHVybiBzdHJlYW0oYywgYXN5bmMgKHN0cmVhbSkgPT4gewogICAgYXdhaXQgc3RyZWFtLnBpcGUoczNmaWxlLnN0cmVhbSgpKTsKICB9KTsKfSk7CgovLyBTZXJ2aXIgQnVuCkJ1bi5zZXJ2ZSh7CiAgcG9ydDogQnVuLmVudi5QT1JUID8gTnVtYmVyKEJ1bi5lbnYuUE9SVCkgOiAzMDAwLAogIGZldGNoOiBhcHAuZmV0Y2gsCn0pOwo=`
- **Public domain:** Yes

### Builder

- **Image:** ghcr.io/railwayapp/function-bun:1.3.0
- **Start command:** `./run.sh Ly8gaW5kZXgudHN4IChCdW4gcnVudGltZSwgUmFpbHdheS1mcmllbmRseSkKaW1wb3J0IHsgbWtkdGVtcCwgcmVhZGRpciwgd3JpdGVGaWxlIH0gZnJvbSAibm9kZTpmcy9wcm9taXNlcyI7CmltcG9ydCB7IGpvaW4gfSBmcm9tICJub2RlOnBhdGgiOwppbXBvcnQgeyB0bXBkaXIgfSBmcm9tICJub2RlOm9zIjsKaW1wb3J0IHsgUzNDbGllbnQgfSBmcm9tICJidW4iOwppbXBvcnQgeyAkIH0gZnJvbSAiYnVuIjsKaW1wb3J0IHVuemlwcGVyIGZyb20gInVuemlwcGVyIjsKCi8vIC0tLSBlbnYgLS0tCmNvbnN0IFJFUE8gPSBwcm9jZXNzLmVudi5SRVBPOwpjb25zdCBCUkFOQ0ggPSBwcm9jZXNzLmVudi5CUkFOQ0g7CmlmICghUkVQTykgdGhyb3cgbmV3IEVycm9yKCJSRVBPIGVudiB2YXIgaXMgcmVxdWlyZWQiKTsKaWYgKCFCUkFOQ0gpIHRocm93IG5ldyBFcnJvcigiQlJBTkNIIGVudiB2YXIgaXMgcmVxdWlyZWQiKTsKCmNvbnN0IEJVSUxEX0RJUiA9ICJkaXN0IjsKCi8vIC0tLSB0ZW1wIHdvcmtzcGFjZSAtLS0KY29uc3Qgd29ya2RpciA9IGF3YWl0IG1rZHRlbXAoam9pbih0bXBkaXIoKSwgInNpdGUtYnVpbGQtIikpOwpjb25zb2xlLmxvZygiV29ya2luZyBkaXI6Iiwgd29ya2Rpcik7CgovLyAtLS0gZG93bmxvYWQgcmVwbyBhcyBaSVAgLS0tCmNvbnN0IHppcFVybCA9IGAke1JFUE99L2FyY2hpdmUvcmVmcy9oZWFkcy8ke0JSQU5DSH0uemlwYDsKY29uc29sZS5sb2coIkRvd25sb2FkaW5nIHJlcG8gemlwOiIsIHppcFVybCk7Cgpjb25zdCByZXMgPSBhd2FpdCBmZXRjaCh6aXBVcmwpOwppZiAoIXJlcy5vaykKICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBmZXRjaCByZXBvOiAke3Jlcy5zdGF0dXN9ICR7cmVzLnN0YXR1c1RleHR9YCk7Cgpjb25zdCBidWZmZXIgPSBCdWZmZXIuZnJvbShhd2FpdCByZXMuYXJyYXlCdWZmZXIoKSk7CmNvbnN0IHppcFBhdGggPSBqb2luKHdvcmtkaXIsICJyZXBvLnppcCIpOwphd2FpdCB3cml0ZUZpbGUoemlwUGF0aCwgYnVmZmVyKTsKCi8vIC0tLSBleHRyYWN0IFpJUCAtLS0KYXdhaXQgdW56aXBwZXIuT3Blbi5maWxlKHppcFBhdGgpLnRoZW4oKGQpID0+IGQuZXh0cmFjdCh7IHBhdGg6IHdvcmtkaXIgfSkpOwpjb25zb2xlLmxvZygiUmVwbyBleHRyYWN0ZWQiKTsKCi8vIC0tLSBmaW5kIGV4dHJhY3RlZCBmb2xkZXIgLS0tCmNvbnN0IGV4dHJhY3RlZEZvbGRlcnMgPSBhd2FpdCByZWFkZGlyKHdvcmtkaXIsIHsgd2l0aEZpbGVUeXBlczogdHJ1ZSB9KTsKY29uc3QgcmVwb0ZvbGRlciA9IGV4dHJhY3RlZEZvbGRlcnMuZmluZCgoZCkgPT4gZC5pc0RpcmVjdG9yeSgpKT8ubmFtZTsKaWYgKCFyZXBvRm9sZGVyKSB0aHJvdyBuZXcgRXJyb3IoIkNvdWxkIG5vdCBmaW5kIGV4dHJhY3RlZCByZXBvIGZvbGRlciIpOwoKY29uc3QgcmVwb1BhdGggPSBqb2luKHdvcmtkaXIsIHJlcG9Gb2xkZXIpOwpwcm9jZXNzLmNoZGlyKHJlcG9QYXRoKTsKCi8vIC0tLSBpbnN0YWxsICsgYnVpbGQgLS0tCmNvbnNvbGUubG9nKCJJbnN0YWxsaW5nIGRlcGVuZGVuY2llcy4uLiIpOwphd2FpdCAkYGJ1biBpbnN0YWxsYDsKCmNvbnNvbGUubG9nKCJCdWlsZGluZyBzaXRlLi4uIik7CmF3YWl0ICRgYnVuIHJ1biBidWlsZGA7CgovLyAtLS0gUzMgY2xpZW50IC0tLQpjb25zdCBzMyA9IG5ldyBTM0NsaWVudCh7CiAgYWNjZXNzS2V5SWQ6IHByb2Nlc3MuZW52LlMzX0FDQ0VTU19LRVlfSUQhLAogIHNlY3JldEFjY2Vzc0tleTogcHJvY2Vzcy5lbnYuUzNfU0VDUkVUX0FDQ0VTU19LRVkhLAogIGJ1Y2tldDogcHJvY2Vzcy5lbnYuUzNfQlVDS0VUISwKICBlbmRwb2ludDogcHJvY2Vzcy5lbnYuUzNfRU5EUE9JTlQsCn0pOwoKLy8gLS0tIGRlbGV0ZSBhbGwgZmlsZXMgaW4gYnVja2V0IC0tLQpjb25zb2xlLmxvZygiRGVsZXRpbmcgYWxsIGZpbGVzIGluIGJ1Y2tldC4uLiIpOwoKLy8gTcOpdG9kbyBwYXJhIGJvcnJhciB0b2RvIGVsIGJ1Y2tldCBjb24gcGFnaW5hY2nDs24KYXN5bmMgZnVuY3Rpb24gZGVsZXRlQWxsRmlsZXMoKSB7CiAgbGV0IGxpc3RSZXNwb25zZSA9IGF3YWl0IFMzQ2xpZW50Lmxpc3QobnVsbCwgewogICAgYWNjZXNzS2V5SWQ6IHByb2Nlc3MuZW52LlMzX0FDQ0VTU19LRVlfSUQhLAogICAgc2VjcmV0QWNjZXNzS2V5OiBwcm9jZXNzLmVudi5TM19TRUNSRVRfQUNDRVNTX0tFWSEsCiAgICBidWNrZXQ6IHByb2Nlc3MuZW52LlMzX0JVQ0tFVCEsCiAgICBlbmRwb2ludDogcHJvY2Vzcy5lbnYuUzNfRU5EUE9JTlQsCiAgfSk7CgogIGRvIHsKICAgIGlmIChsaXN0UmVzcG9uc2UuY29udGVudHMpIHsKICAgICAgZm9yIChjb25zdCBvYmogb2YgbGlzdFJlc3BvbnNlLmNvbnRlbnRzKSB7CiAgICAgICAgY29uc29sZS5sb2coIkRlbGV0aW5nOiIsIG9iai5rZXkpOwogICAgICAgIGF3YWl0IHMzLmRlbGV0ZShvYmoua2V5KTsKICAgICAgfQogICAgfQoKICAgIGlmIChsaXN0UmVzcG9uc2UuaXNUcnVuY2F0ZWQpIHsKICAgICAgbGlzdFJlc3BvbnNlID0gYXdhaXQgUzNDbGllbnQubGlzdCgKICAgICAgICB7CiAgICAgICAgICBjb250aW51YXRpb25Ub2tlbjogbGlzdFJlc3BvbnNlLm5leHRDb250aW51YXRpb25Ub2tlbiwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgIGFjY2Vzc0tleUlkOiBwcm9jZXNzLmVudi5TM19BQ0NFU1NfS0VZX0lEISwKICAgICAgICAgIHNlY3JldEFjY2Vzc0tleTogcHJvY2Vzcy5lbnYuUzNfU0VDUkVUX0FDQ0VTU19LRVkhLAogICAgICAgICAgYnVja2V0OiBwcm9jZXNzLmVudi5TM19CVUNLRVQhLAogICAgICAgICAgZW5kcG9pbnQ6IHByb2Nlc3MuZW52LlMzX0VORFBPSU5ULAogICAgICAgIH0KICAgICAgKTsKICAgIH0gZWxzZSB7CiAgICAgIGJyZWFrOwogICAgfQogIH0gd2hpbGUgKHRydWUpOwp9Cgphd2FpdCBkZWxldGVBbGxGaWxlcygpOwoKLy8gLS0tIHVwbG9hZCBkaXJlY3RvcnkgLS0tCmFzeW5jIGZ1bmN0aW9uIHVwbG9hZERpcihkaXI6IHN0cmluZywgcHJlZml4ID0gIiIpIHsKICBmb3IgKGNvbnN0IGVudHJ5IG9mIGF3YWl0IHJlYWRkaXIoZGlyLCB7IHdpdGhGaWxlVHlwZXM6IHRydWUgfSkpIHsKICAgIGNvbnN0IGZ1bGxQYXRoID0gam9pbihkaXIsIGVudHJ5Lm5hbWUpOwogICAgY29uc3Qga2V5ID0gcHJlZml4ID8gYCR7cHJlZml4fS8ke2VudHJ5Lm5hbWV9YCA6IGVudHJ5Lm5hbWU7CgogICAgaWYgKGVudHJ5LmlzRGlyZWN0b3J5KCkpIHsKICAgICAgYXdhaXQgdXBsb2FkRGlyKGZ1bGxQYXRoLCBrZXkpOwogICAgfSBlbHNlIHsKICAgICAgY29uc29sZS5sb2coIlVwbG9hZGluZzoiLCBrZXkpOwogICAgICBhd2FpdCBzMy5maWxlKGtleSkud3JpdGUoQnVuLmZpbGUoZnVsbFBhdGgpKTsKICAgIH0KICB9Cn0KCi8vIC0tLSB1cGxvYWQgYnVpbGQgLS0tCmNvbnNvbGUubG9nKGBVcGxvYWRpbmcgJHtCVUlMRF9ESVJ9LyB0byBTMy4uLmApOwphd2FpdCB1cGxvYWREaXIoam9pbihyZXBvUGF0aCwgQlVJTERfRElSKSk7Cgpjb25zb2xlLmxvZygiQnVpbGQgKyB1cGxvYWQgY29tcGxldGUg4pyFIik7CnByb2Nlc3MuZXhpdCgwKTsK`

## Buckets

- **Bucket**

## Documentation

# Deploy and Host Static Site on Railway

> This templates showcases my Astro starter: [Launchpad](https://roicort.github.io/launchpad/) If this works for you or you like the starter, please consider giving it a [star on Github](https://github.com/roicort/launchpad) :) 

This template demonstrates how to deploy an Astro (or other frontend framework) static site to a Railway Bucket using Functions. It provides a streamlined way to host static assets without managing a full server setup.  This template showcases an Astro Starter but probably works with any static site that can be built with Bun. 

- Minimal Cost
- Vercel Alternative

## About Hosting Static Site

Hosting a static site involves serving pre-built HTML, CSS, and JavaScript files directly to users. Unlike dynamic applications, static sites don’t require a backend server to generate pages at runtime, which makes them fast, secure, and easy to deploy. Deployment typically involves building the site locally and then uploading the generated files to a hosting platform, which then serves them over a CDN for optimal performance.  In this case, we're uploading the files to a Railway Bucket within a Railway Function. 

## Common Use Cases

- Personal or portfolio websites  
- Documentation sites for projects or products  
- Marketing landing pages for campaigns or services  

## Dependencies for Static Site Hosting

- **Bun** – Required for building your site if using frameworks like Astro.  
- **Astro (or other static site generator)** – Generates the static HTML/CSS/JS files.  

### Deployment Dependencies

- [Railway Buckets Documentation](https://docs.railway.app/deploy/buckets)  
- [Astro Deployment Guide](https://docs.astro.build/en/guides/deploy/)  

### Implementation Details 

This templates uses one railway function to download, build and upload your static site to a Railway Bucket. Since bucket are private, it uses another railway function to make them publicly available. 

## Why Deploy Static Site on Railway?

Railway is a singular platform to deploy your infrastructure stack. Railway will host your static site so you don't have to deal with Vercel or similar services.

## Similar templates

- [open-excalidraw](https://railway.com/deploy/open-excalidraw) — Self-hostable collaborative drawing built on Excalidraw
- [caring-vibrancy](https://railway.com/deploy/caring-vibrancy) — Deploy and Host caring-vibrancy with Railway
- [Appsmith](https://railway.com/deploy/appsmith-1) — Low-code platform for internal tools, dashboards, and admin panels.

Open this page in a browser: https://railway.com/deploy/static-site
