From 64e537067e8853a3e7c52dcca26dfdf7e3ffc8d7 Mon Sep 17 00:00:00 2001 From: onie Date: Sat, 17 Oct 2026 11:58:23 +0700 Subject: [PATCH] Portofolio gosambi.uk v2: proyek kasir, rental PS, homelab + auto-deploy --- .gitea/workflows/deploy.yml | 44 +++++++++++++++ README.md | 14 +++++ index.html | 110 ++++++++++++++++++++++++++++++++++++ 3 files changed, 168 insertions(+) create mode 100644 .gitea/workflows/deploy.yml create mode 100644 README.md create mode 100644 index.html diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml new file mode 100644 index 0000000..8836ba7 --- /dev/null +++ b/.gitea/workflows/deploy.yml @@ -0,0 +1,44 @@ +name: Deploy Portfolio to Production +on: + push: + branches: + - main + workflow_dispatch: +jobs: + deploy: + runs-on: ubuntu-latest + steps: + - name: Setup SSH Key + run: | + mkdir -p ~/.ssh + echo "${{ secrets.DEPLOY_PRIVATE_KEY }}" > ~/.ssh/id_rsa + chmod 600 ~/.ssh/id_rsa + printf "Host %s\n IdentityFile ~/.ssh/id_rsa\n StrictHostKeyChecking accept-new\n" "${{ secrets.DEPLOY_HOST }}" >> ~/.ssh/config + chmod 600 ~/.ssh/config + - name: Deploy via SSH (git pull + publish) + run: | + ssh -o ConnectTimeout=15 ${{ secrets.DEPLOY_USER }}@${{ secrets.DEPLOY_HOST }} << 'DEPLOY_SCRIPT' + set -e + REPO_URL="http://onie:125icko@@100.101.65.69:3033/onie/portfolio.git" + WORKDIR="/home/gosa/portfolio" + TARGET="/DATA/AppData/portfolio/index.html" + echo "=== Portfolio Deployment Started ===" + if [ ! -d "$WORKDIR/.git" ]; then + echo "Cloning repo first time..." + rm -rf "$WORKDIR" + git clone -b main "$REPO_URL" "$WORKDIR" + fi + cd "$WORKDIR" + git fetch origin + git checkout main + git reset --hard origin/main + echo "Copying index.html to nginx volume..." + cp index.html /tmp/pf-index.html + echo "125icko@" | su -c "cp /tmp/pf-index.html $TARGET && echo DEPLOYED-OK" + echo "=== Deployment Completed ===" + DEPLOY_SCRIPT + - name: Verify Deployment + run: | + sleep 5 + curl -s -o /dev/null -w "gosambi.uk=%{http_code}\n" https://gosambi.uk/ --max-time 15 + curl -s -o /dev/null -w "www.gosambi.uk=%{http_code}\n" https://www.gosambi.uk/ --max-time 15 diff --git a/README.md b/README.md new file mode 100644 index 0000000..260f8c6 --- /dev/null +++ b/README.md @@ -0,0 +1,14 @@ +# Portofolio gosambi.uk +Halaman portofolio statis (1 file `index.html` + nginx) untuk domain root **gosambi.uk** dan **www.gosambi.uk**. + +## Live +- https://gosambi.uk +- https://www.gosambi.uk + +## Deploy +Otomatis via Gitea Actions: setiap push ke `main` menjalankan `.gitea/workflows/deploy.yml` +yang git-pull di server (`/home/gosa/portfolio`) lalu copy `index.html` ke volume nginx +(`/DATA/AppData/portfolio/index.html`). + +## Edit lokal +Sumber: `D:\HomeLabs\portfolio\index.html` — edit lalu `git push`, tunggu ~1 menit, refresh situs. diff --git a/index.html b/index.html new file mode 100644 index 0000000..038d32a --- /dev/null +++ b/index.html @@ -0,0 +1,110 @@ + + + + + +gosambi - Web Developer + + + + +
+
+

Halo, saya gosambi

+

Web Developer - aplikasi mobile, REST API & sistem operasional (kasir, rental PS) + homelab enthusiast

+ +
+ +
+

Tentang

+
+

Saya membangun sistem operasional end-to-end: aplikasi kasir mobile (Expo/React Native), + REST API (Express + Prisma + PostgreSQL), sampai dashboard web (EJS) untuk operasional harian. + Semua service saya jalankan di home server sendiri (CasaOS + Docker + Cloudflare Tunnel) - + dari API kasir, Gitea, Nextcloud, sampai monitoring.

+
+
+ +
+

Keahlian

+
+ React Native / ExpoJavaScript / TypeScriptNode.js / Express + Prisma ORMPostgreSQLEJS / Web Dashboard + DockerLinux / CasaOSCloudflare TunnelGitea + CI/CD +
+
+ +
+

Proyek

+
+

App Kasir (Mobile) - mobile

+

Aplikasi kasir mobile untuk transaksi harian - kasir, produk, laporan. Dibangun dengan Expo, + terhubung ke API kasir di home server.

+
ExpoReact NativeJavaScriptREST API
+ +
+
+

API Kasir (Service) - live

+

REST API backend untuk aplikasi kasir mobile: autentikasi, produk, transaksi, laporan. + Live 24/7 di home server dengan Docker + auto-deploy dari Gitea.

+
ExpressPrismaPostgreSQLDockerSwagger
+ +
+
+

Rental PS (Web + API) - live (lokal)

+

Sistem manajemen rental PlayStation: unit PS, timer rental, menu makanan/minuman, + order transaksi, dashboard pemasukan + dokumentasi Swagger di /api-docs.

+
ExpressEJSPrismaPostgreSQLDocker
+ +
+
+

Homelab gosambi.uk - infra

+

Infrastruktur self-hosted di CasaOS: Gitea + runner CI/CD, Nextcloud, n8n, Uptime Kuma, + portofolio ini, dan halaman link - semua lewat satu Cloudflare Tunnel tanpa buka port.

+
CasaOSDockerCloudflare Tunnelnginx
+ +
+
+ +
+

Kontak

+
+

Punya proyek atau sekadar ngobrol? Hubungi saya lewat halaman link:

+ +
+
+ + +
+ +