131 lines
2.6 KiB
Markdown
131 lines
2.6 KiB
Markdown
# 📦 Fusero VPS Deployment Guide
|
||
|
||
This guide walks you through deploying the Fusero full-stack app to a plain Ubuntu VPS using Kubernetes (k3s), Helm, and automatic HTTPS via cert-manager.
|
||
|
||
---
|
||
|
||
## 📋 Prerequisites
|
||
|
||
- ✅ Ubuntu 22.04 VPS with root or sudo access
|
||
- ✅ Domain names pointed to your VPS IP:
|
||
- api.fusero.nl → for the backend
|
||
- app.fusero.nl → for the frontend
|
||
- ✅ Git access to your repo
|
||
|
||
---
|
||
|
||
## ☸️ 1. Install Kubernetes (k3s)
|
||
|
||
curl -sfL https://get.k3s.io | sh -
|
||
|
||
Set kubeconfig so kubectl works:
|
||
echo 'export KUBECONFIG=/etc/rancher/k3s/k3s.yaml' >> ~/.bashrc
|
||
source ~/.bashrc
|
||
|
||
Verify:
|
||
kubectl get nodes
|
||
|
||
---
|
||
|
||
## 📦 2. Install Helm
|
||
|
||
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
|
||
|
||
Verify:
|
||
helm version
|
||
|
||
---
|
||
|
||
## 📁 3. Clone the Project
|
||
|
||
git clone https://your.gitea.repo/fusero-app-boilerplate.git
|
||
cd fusero-app-boilerplate
|
||
|
||
---
|
||
|
||
## 🔐 4. Set Up HTTPS (cert-manager)
|
||
|
||
Install cert-manager:
|
||
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.14.3/cert-manager.yaml
|
||
|
||
Check pods:
|
||
kubectl get pods -n cert-manager
|
||
|
||
Create file cluster-issuer.yaml with this content:
|
||
|
||
apiVersion: cert-manager.io/v1
|
||
kind: ClusterIssuer
|
||
metadata:
|
||
name: letsencrypt-prod
|
||
spec:
|
||
acme:
|
||
server: https://acme-v02.api.letsencrypt.org/directory
|
||
email: your@email.com
|
||
privateKeySecretRef:
|
||
name: letsencrypt-prod
|
||
solvers:
|
||
- http01:
|
||
ingress:
|
||
class: nginx
|
||
|
||
Apply it:
|
||
kubectl apply -f cluster-issuer.yaml
|
||
|
||
---
|
||
|
||
## 🌍 5. Update DNS
|
||
|
||
Ensure both api.fusero.nl and app.fusero.nl point to your VPS IP address.
|
||
|
||
Check propagation:
|
||
ping api.fusero.nl
|
||
|
||
---
|
||
|
||
## 🚀 6. Deploy with Helm
|
||
|
||
Ensure you're in the repo root and the chart directory exists.
|
||
|
||
helm upgrade --install fusero ./chart -f chart/values-prod.yaml
|
||
|
||
This deploys frontend, backend, Postgres, ingress, and HTTPS.
|
||
|
||
---
|
||
|
||
## 📜 7. Verify Access
|
||
|
||
Frontend: https://app.fusero.nl
|
||
Backend API: https://api.fusero.nl
|
||
|
||
---
|
||
|
||
## 🔁 8. (Optional) Rerun DB Migrations
|
||
|
||
kubectl delete job fusero-backend-db-init
|
||
helm upgrade fusero ./chart -f chart/values-prod.yaml
|
||
|
||
---
|
||
|
||
## 🧪 9. Useful Commands
|
||
|
||
View backend logs:
|
||
kubectl logs deployment/fusero-backend
|
||
|
||
View frontend logs:
|
||
kubectl logs deployment/fusero-frontend
|
||
|
||
View pods and services:
|
||
kubectl get pods,svc,deployments
|
||
|
||
---
|
||
|
||
## ✅ You’re Done!
|
||
|
||
You now have a production deployment of Fusero on a raw VPS with:
|
||
- Kubernetes (via k3s)
|
||
- TLS via Let's Encrypt
|
||
- Helm-managed services
|
||
- DNS routing for subdomains
|
||
|
||
For CI/CD automation via Gitea, see `.gitea-ci.yml` in the repo root.
|