migrate from astro+netlify to tanstack start + self-hosted
Build & Deploy unom website / build (push) Successful in 12s
Build & Deploy unom website / deploy (push) Successful in 4s

Replace the Astro static site with a TanStack Start (Bun runtime) app and
add Dockerfile + compose files so the site can be served from home-main-2
behind the home-reverse-proxy-1 Caddy instead of Netlify. CI workflow
rewritten to build a container image and SSH-deploy to the home host.
This commit is contained in:
2026-05-26 10:57:16 +02:00
parent b203d1b58a
commit ce63faa8f3
42 changed files with 945 additions and 1043 deletions
+30 -7
View File
@@ -1,13 +1,36 @@
# Astro with Tailwind
# @unom/website
The unom.io marketing site. TanStack Start + Bun, deployed to home-main-2.
## Development
```sh
bun create astro@latest -- --template with-tailwindcss
bun install
bun run dev
```
[![Open in StackBlitz](https://developer.stackblitz.com/img/open_in_stackblitz.svg)](https://stackblitz.com/github/withastro/astro/tree/latest/examples/with-tailwindcss)
[![Open with CodeSandbox](https://assets.codesandbox.io/github/button-edit-lime.svg)](https://codesandbox.io/p/sandbox/github/withastro/astro/tree/latest/examples/with-tailwindcss)
[![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/withastro/astro?devcontainer_path=.devcontainer/with-tailwindcss/devcontainer.json)
Visit <http://localhost:3000>.
Astro comes with [Tailwind](https://tailwindcss.com) support out of the box. This example showcases how to style your Astro project with Tailwind.
## Production
For complete setup instructions, please see our [Tailwind Integration Guide](https://docs.astro.build/en/guides/integrations-guide/tailwind).
The repo is built into a container image (`git.unom.io/unom/website`) by Gitea
Actions on push to `main`, then deployed via SSH to `home-main-2`. The
container listens on port 3000 inside the network and is exposed on host port
3200, which Caddy on `home-reverse-proxy-1` reverse-proxies for unom.io and
www.unom.io.
Run the production image locally:
```sh
docker compose -f compose.production.yml pull
docker compose -f compose.production.yml up -d
```
## Required CI secrets
Set on the `unom/website` repo in Gitea Actions:
| Secret | Purpose |
| ------ | ------- |
| `REGISTRY_USER` / `REGISTRY_TOKEN` | Push to `git.unom.io` container registry |
| `DEPLOY_HOST` / `DEPLOY_USER` / `DEPLOY_PORT` / `DEPLOY_SSH_KEY` | SSH target on home-main-2 (private key matching the `unom-ci-deploy` authorized key) |