commit 5e1c4f797d521d509e95dcbfabea3e714b3ef88c Author: sayudhalw Date: Thu Jul 16 12:53:06 2026 +0700 Add pelajaran 1 (Nginx) and pelajaran 2 (Node) lab starters. diff --git a/README.md b/README.md new file mode 100644 index 0000000..28a6056 --- /dev/null +++ b/README.md @@ -0,0 +1,48 @@ +# learn — lab fullstack + homelab + +Repo Gitea: https://git.sayudha.uk/sayudhalw/learn + +Edit di Cursor di Mac, commit, lalu `git push`. Deploy ke `ubuntu-vm` terpisah (Docker). + +## Isi (`main`) + +| Folder | Pelajaran | Port di VM | +|--------|-----------|------------| +| `pelajaran-1/` | Nginx + HTML statis | `8088` | +| `pelajaran-2/` | Node.js di Docker | `8091` | + +## Git remote + +```bash +git remote -v +# gitea git@gitea:sayudhalw/learn.git +``` + +Butuh entry SSH (sudah disarankan di mesin ini): + +```text +Host gitea + HostName 192.168.0.104 + Port 2222 + User git + ProxyJump proxmox +``` + +## Sync kode ke ubuntu-vm (jalankan container) + +```bash +rsync -av pelajaran-1/ ubuntu-vm:~/learn/pelajaran-1/ +rsync -av pelajaran-2/ ubuntu-vm:~/learn/pelajaran-2/ +``` + +```bash +ssh ubuntu-vm 'cd ~/learn/pelajaran-1 && docker compose up -d' +ssh ubuntu-vm 'cd ~/learn/pelajaran-2 && docker compose up -d --build' +``` + +## Tunnel browser (dari Mac) + +```bash +ssh -N -L 8088:127.0.0.1:8088 ubuntu-vm # pelajaran 1 +ssh -N -L 8091:127.0.0.1:8091 ubuntu-vm # pelajaran 2 +``` diff --git a/pelajaran-1/docker-compose.yml b/pelajaran-1/docker-compose.yml new file mode 100644 index 0000000..35afd82 --- /dev/null +++ b/pelajaran-1/docker-compose.yml @@ -0,0 +1,8 @@ +services: + web: + image: nginx:alpine + ports: + - "8088:80" + volumes: + - ./index.html:/usr/share/nginx/html/index.html:ro + restart: unless-stopped diff --git a/pelajaran-1/index.html b/pelajaran-1/index.html new file mode 100644 index 0000000..0c36ab4 --- /dev/null +++ b/pelajaran-1/index.html @@ -0,0 +1,26 @@ + + + + + + Hello Homelab + + + +

Hello dari homelab

+

Ini halaman statis di Docker di VM Ubuntu (Proxmox).

+

Host: ubuntu-vm · Hypervisor: sayudha (PVE 9.2)

+ + diff --git a/pelajaran-2/Dockerfile b/pelajaran-2/Dockerfile new file mode 100644 index 0000000..308a8b2 --- /dev/null +++ b/pelajaran-2/Dockerfile @@ -0,0 +1,5 @@ +FROM node:22-alpine +WORKDIR /app +COPY server.js . +EXPOSE 3000 +CMD ["node", "server.js"] diff --git a/pelajaran-2/docker-compose.yml b/pelajaran-2/docker-compose.yml new file mode 100644 index 0000000..fad64f8 --- /dev/null +++ b/pelajaran-2/docker-compose.yml @@ -0,0 +1,6 @@ +services: + web: + build: . + ports: + - "8091:3000" + restart: unless-stopped diff --git a/pelajaran-2/server.js b/pelajaran-2/server.js new file mode 100644 index 0000000..5952085 --- /dev/null +++ b/pelajaran-2/server.js @@ -0,0 +1,30 @@ +const http = require("http"); + +const server = http.createServer((request, response) => { + // request = apa yang browser minta + // response = apa yang kita kirim balik + + const waktu = new Date().toLocaleString("id-ID"); + + response.writeHead(200, { + "Content-Type": "text/html; charset=utf-8", + }); + + response.end(` + + + + Hello Node + + +

Hello dari Node di homelab

+

Ini bukan file HTML diam. Teks di bawah dibuat oleh JavaScript saat request datang.

+

Waktu server sekarang: ${waktu}

+

Path yang diminta: ${request.url}

+ +`); +}); + +server.listen(3000, () => { + console.log("Server siap di port 3000"); +});