commit 7f14c826f2ccf69f725233fd5d7421849c73f40f
Author: JamBox <8935453+JamesVanBoxtel@users.noreply.github.com>
Date: Sun Feb 15 20:04:18 2026 -0800
Initial server-stack setup
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..32179ea
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+caddy_data/
+gitea_data/
+apps/*/data/
diff --git a/apps/jamesvanboxtel/Dockerfile b/apps/jamesvanboxtel/Dockerfile
new file mode 100644
index 0000000..e503af9
--- /dev/null
+++ b/apps/jamesvanboxtel/Dockerfile
@@ -0,0 +1,6 @@
+FROM node:20-alpine
+WORKDIR /app
+COPY package.json server.js ./
+RUN npm install
+EXPOSE 8080
+CMD ["node", "server.js"]
diff --git a/apps/jamesvanboxtel/package.json b/apps/jamesvanboxtel/package.json
new file mode 100644
index 0000000..c8f3e18
--- /dev/null
+++ b/apps/jamesvanboxtel/package.json
@@ -0,0 +1,8 @@
+{
+ "name": "jamesvanboxtel",
+ "version": "1.0.0",
+ "private": true,
+ "dependencies": {
+ "express": "^4.21.0"
+ }
+}
diff --git a/apps/jamesvanboxtel/server.js b/apps/jamesvanboxtel/server.js
new file mode 100644
index 0000000..8d3f43a
--- /dev/null
+++ b/apps/jamesvanboxtel/server.js
@@ -0,0 +1,22 @@
+const express = require("express");
+const app = express();
+
+app.get("/", (req, res) => {
+ res.send(`
+
+
+
+
+ jamesvanboxtel.com
+
+
+
+ jamesvanboxtel.com
+
+`);
+});
+
+app.listen(8080, () => console.log("jamesvanboxtel running on :8080"));
diff --git a/apps/tessavb/Dockerfile b/apps/tessavb/Dockerfile
new file mode 100644
index 0000000..e503af9
--- /dev/null
+++ b/apps/tessavb/Dockerfile
@@ -0,0 +1,6 @@
+FROM node:20-alpine
+WORKDIR /app
+COPY package.json server.js ./
+RUN npm install
+EXPOSE 8080
+CMD ["node", "server.js"]
diff --git a/apps/tessavb/package.json b/apps/tessavb/package.json
new file mode 100644
index 0000000..4aa97d1
--- /dev/null
+++ b/apps/tessavb/package.json
@@ -0,0 +1,8 @@
+{
+ "name": "tessavb",
+ "version": "1.0.0",
+ "private": true,
+ "dependencies": {
+ "express": "^4.21.0"
+ }
+}
diff --git a/apps/tessavb/server.js b/apps/tessavb/server.js
new file mode 100644
index 0000000..710f220
--- /dev/null
+++ b/apps/tessavb/server.js
@@ -0,0 +1,22 @@
+const express = require("express");
+const app = express();
+
+app.get("/", (req, res) => {
+ res.send(`
+
+
+
+
+ tessavb.com
+
+
+
+ tessavb.com
+
+`);
+});
+
+app.listen(8080, () => console.log("tessavb running on :8080"));
diff --git a/deploy.sh b/deploy.sh
new file mode 100755
index 0000000..92b8131
--- /dev/null
+++ b/deploy.sh
@@ -0,0 +1,4 @@
+#!/bin/bash
+cd /home/$USER/server-stack
+git pull origin main
+docker compose up -d --build
diff --git a/docker-compose.yml b/docker-compose.yml
new file mode 100644
index 0000000..d09416a
--- /dev/null
+++ b/docker-compose.yml
@@ -0,0 +1,36 @@
+services:
+ caddy:
+ image: lucaslorentz/caddy-docker-proxy:ci-alpine
+ container_name: caddy
+ ports:
+ - "80:80"
+ - "443:443"
+ environment:
+ - CADDY_INGRESS_NETWORKS=server-stack_server-network
+ networks:
+ - server-network
+ volumes:
+ - /var/run/docker.sock:/var/run/docker.sock
+ - ./caddy_data:/data
+ restart: unless-stopped
+
+ gitea:
+ image: gitea/gitea:latest
+ container_name: gitea
+ environment:
+ - USER_UID=1000
+ - USER_GID=1000
+ networks:
+ - server-network
+ volumes:
+ - ./gitea_data:/data
+ - /etc/timezone:/etc/timezone:ro
+ - /etc/localtime:/etc/localtime:ro
+ labels:
+ caddy: git.jamesvanboxtel.com
+ caddy.reverse_proxy: "{{upstreams 3000}}"
+ restart: always
+
+networks:
+ server-network:
+ external: false
diff --git a/hooks.json b/hooks.json
new file mode 100644
index 0000000..ab30e38
--- /dev/null
+++ b/hooks.json
@@ -0,0 +1,7 @@
+[
+ {
+ "id": "redeploy-apps",
+ "execute-command": "/home/james/server-stack/deploy.sh",
+ "command-working-directory": "/home/james/server-stack"
+ }
+]