initial commit

This commit is contained in:
admin 2025-06-17 19:03:48 -06:00
parent 93088f823a
commit 84a3af4433
273 changed files with 5142 additions and 1454 deletions

3
.gitignore vendored
View File

@ -4,5 +4,8 @@
/configs/code-server/.config/*
!/configs/code-server/.config/.gitkeep
/configs/cloudflare/
/configs/nginx/
.env
.env*

View File

@ -180,6 +180,7 @@ initialize_available_ports() {
["HOMEPAGE_PORT"]=3010
["GITEA_WEB_PORT"]=3030
["GITEA_SSH_PORT"]=2222
["CLIENT_WEBSITE_PORT"]=8080
)
# Find available ports for each service

View File

@ -2,32 +2,35 @@
# Cloudflare Tunnel Configuration
# Auto-generated by Changemaker Configuration Wizard
tunnel: ${CF_TUNNEL_ID} # e.g. 1234567890abcdef
credentials-file: /home/coder/.cloudflared/${CF_TUNNEL_ID}.json # e.g. /home/coder/.cloudflared/[insert tunnel number].json
tunnel: fe0acd01-e83c-44a3-a8ff-c0d76eec8cc5 # e.g. 1234567890abcdef
credentials-file: /home/bunker-admin/.cloudflared/fe0acd01-e83c-44a3-a8ff-c0d76eec8cc5.json # e.g. /home/coder/.cloudflared/[insert tunnel number].json
ingress:
- hostname: homepage.test.com
- hostname: dashboard.lindalindsay.org
service: http://localhost:3010
- hostname: code.test.com
- hostname: code.lindalindsay.org
service: http://localhost:8888
- hostname: listmonk.test.com
service: http://localhost:9001
- hostname: listmonk.lindalindsay.org
service: http://localhost:9000
- hostname: docs.test.com
- hostname: docs.lindalindsay.org
service: http://localhost:4000
- hostname: test.com
service: http://localhost:4002
- hostname: blog.lindalindsay.org
service: http://localhost:4001
- hostname: lindalindsay.org
service: http://localhost:8080
- hostname: n8n.test.com
- hostname: n8n.lindalindsay.org
service: http://localhost:5678
- hostname: db.test.com
- hostname: db.lindalindsay.org
service: http://localhost:8090
- hostname: git.test.com
- hostname: git.lindalindsay.org
service: http://localhost:3030
# Catch-all rule (required)

View File

@ -190,3 +190,327 @@
[2025-05-28T14:56:56.936Z] error: <dockerStatsService> Error: connect EACCES /var/run/docker.sock
at PipeConnectWrap.afterConnect [as oncomplete] (node:net:1636:16)
at PipeConnectWrap.callbackTrampoline (node:internal/async_hooks:130:17)
[2025-06-17T23:54:13.991Z] error: undefined
[2025-06-17T23:54:13.999Z] error: TypeError: Invalid URL
at new URL (node:internal/url:818:25)
at d (/app/.next/server/pages/api/releases.js:1:5196)
at h (/app/.next/server/pages/api/services/proxy.js:45:33437)
at async X (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages-api.runtime.prod.js:20:18441)
at async z.render (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages-api.runtime.prod.js:20:19237)
at async NextNodeServer.runApi (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/next-server.js:671:9)
at async NextNodeServer.handleCatchallRenderRequest (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/next-server.js:302:37)
at async NextNodeServer.handleRequestImpl (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/base-server.js:899:17)
at async invokeRender (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/lib/router-server.js:237:21)
at async handleRequest (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/lib/router-server.js:428:24)
[2025-06-17T23:54:19.085Z] error: undefined
[2025-06-17T23:54:19.087Z] error: TypeError: Invalid URL
at new URL (node:internal/url:818:25)
at d (/app/.next/server/pages/api/releases.js:1:5196)
at h (/app/.next/server/pages/api/services/proxy.js:45:33437)
at async X (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages-api.runtime.prod.js:20:18441)
at async z.render (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages-api.runtime.prod.js:20:19237)
at async NextNodeServer.runApi (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/next-server.js:671:9)
at async NextNodeServer.handleCatchallRenderRequest (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/next-server.js:302:37)
at async NextNodeServer.handleRequestImpl (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/base-server.js:899:17)
at async invokeRender (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/lib/router-server.js:237:21)
at async handleRequest (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/lib/router-server.js:428:24)
[2025-06-17T23:54:30.616Z] error: undefined
[2025-06-17T23:54:30.618Z] error: TypeError: Invalid URL
at new URL (node:internal/url:818:25)
at d (/app/.next/server/pages/api/releases.js:1:5196)
at h (/app/.next/server/pages/api/services/proxy.js:45:33437)
at async X (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages-api.runtime.prod.js:20:18441)
at async z.render (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages-api.runtime.prod.js:20:19237)
at async NextNodeServer.runApi (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/next-server.js:671:9)
at async NextNodeServer.handleCatchallRenderRequest (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/next-server.js:302:37)
at async NextNodeServer.handleRequestImpl (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/base-server.js:899:17)
at async invokeRender (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/lib/router-server.js:237:21)
at async handleRequest (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/lib/router-server.js:428:24)
[2025-06-17T23:54:36.244Z] error: undefined
[2025-06-17T23:54:36.248Z] error: TypeError: Invalid URL
at new URL (node:internal/url:818:25)
at d (/app/.next/server/pages/api/releases.js:1:5196)
at h (/app/.next/server/pages/api/services/proxy.js:45:33437)
at async X (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages-api.runtime.prod.js:20:18441)
at async z.render (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages-api.runtime.prod.js:20:19237)
at async NextNodeServer.runApi (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/next-server.js:671:9)
at async NextNodeServer.handleCatchallRenderRequest (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/next-server.js:302:37)
at async NextNodeServer.handleRequestImpl (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/base-server.js:899:17)
at async invokeRender (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/lib/router-server.js:237:21)
at async handleRequest (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/lib/router-server.js:428:24)
[2025-06-17T23:54:39.324Z] error: undefined
[2025-06-17T23:54:39.326Z] error: TypeError: Invalid URL
at new URL (node:internal/url:818:25)
at d (/app/.next/server/pages/api/releases.js:1:5196)
at h (/app/.next/server/pages/api/services/proxy.js:45:33437)
at async X (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages-api.runtime.prod.js:20:18441)
at async z.render (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages-api.runtime.prod.js:20:19237)
at async NextNodeServer.runApi (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/next-server.js:671:9)
at async NextNodeServer.handleCatchallRenderRequest (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/next-server.js:302:37)
at async NextNodeServer.handleRequestImpl (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/base-server.js:899:17)
at async invokeRender (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/lib/router-server.js:237:21)
at async handleRequest (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/lib/router-server.js:428:24)
[2025-06-17T23:55:14.756Z] error: undefined
[2025-06-17T23:55:14.760Z] error: TypeError: Invalid URL
at new URL (node:internal/url:818:25)
at d (/app/.next/server/pages/api/releases.js:1:5196)
at h (/app/.next/server/pages/api/services/proxy.js:45:33437)
at async X (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages-api.runtime.prod.js:20:18441)
at async z.render (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages-api.runtime.prod.js:20:19237)
at async NextNodeServer.runApi (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/next-server.js:671:9)
at async NextNodeServer.handleCatchallRenderRequest (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/next-server.js:302:37)
at async NextNodeServer.handleRequestImpl (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/base-server.js:899:17)
at async invokeRender (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/lib/router-server.js:237:21)
at async handleRequest (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/lib/router-server.js:428:24)
[2025-06-17T23:57:31.673Z] error: undefined
[2025-06-17T23:57:31.675Z] error: TypeError: Invalid URL
at new URL (node:internal/url:818:25)
at d (/app/.next/server/pages/api/releases.js:1:5196)
at h (/app/.next/server/pages/api/services/proxy.js:45:33437)
at async X (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages-api.runtime.prod.js:20:18441)
at async z.render (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages-api.runtime.prod.js:20:19237)
at async NextNodeServer.runApi (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/next-server.js:671:9)
at async NextNodeServer.handleCatchallRenderRequest (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/next-server.js:302:37)
at async NextNodeServer.handleRequestImpl (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/base-server.js:899:17)
at async invokeRender (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/lib/router-server.js:237:21)
at async handleRequest (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/lib/router-server.js:428:24)
[2025-06-17T23:57:42.114Z] error: undefined
[2025-06-17T23:57:42.119Z] error: TypeError: Invalid URL
at new URL (node:internal/url:818:25)
at d (/app/.next/server/pages/api/releases.js:1:5196)
at h (/app/.next/server/pages/api/services/proxy.js:45:33437)
at async X (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages-api.runtime.prod.js:20:18441)
at async z.render (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages-api.runtime.prod.js:20:19237)
at async NextNodeServer.runApi (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/next-server.js:671:9)
at async NextNodeServer.handleCatchallRenderRequest (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/next-server.js:302:37)
at async NextNodeServer.handleRequestImpl (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/base-server.js:899:17)
at async invokeRender (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/lib/router-server.js:237:21)
at async handleRequest (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/lib/router-server.js:428:24)
[2025-06-17T23:58:29.366Z] error: undefined
[2025-06-17T23:58:29.367Z] error: TypeError: Invalid URL
at new URL (node:internal/url:818:25)
at d (/app/.next/server/pages/api/releases.js:1:5196)
at h (/app/.next/server/pages/api/services/proxy.js:45:33437)
at async X (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages-api.runtime.prod.js:20:18441)
at async z.render (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages-api.runtime.prod.js:20:19237)
at async NextNodeServer.runApi (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/next-server.js:671:9)
at async NextNodeServer.handleCatchallRenderRequest (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/next-server.js:302:37)
at async NextNodeServer.handleRequestImpl (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/base-server.js:899:17)
at async invokeRender (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/lib/router-server.js:237:21)
at async handleRequest (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/lib/router-server.js:428:24)
[2025-06-17T23:58:36.141Z] error: undefined
[2025-06-17T23:58:36.142Z] error: TypeError: Invalid URL
at new URL (node:internal/url:818:25)
at d (/app/.next/server/pages/api/releases.js:1:5196)
at h (/app/.next/server/pages/api/services/proxy.js:45:33437)
at async X (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages-api.runtime.prod.js:20:18441)
at async z.render (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages-api.runtime.prod.js:20:19237)
at async NextNodeServer.runApi (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/next-server.js:671:9)
at async NextNodeServer.handleCatchallRenderRequest (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/next-server.js:302:37)
at async NextNodeServer.handleRequestImpl (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/base-server.js:899:17)
at async invokeRender (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/lib/router-server.js:237:21)
at async handleRequest (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/lib/router-server.js:428:24)
[2025-06-17T23:58:39.452Z] error: undefined
[2025-06-17T23:58:39.453Z] error: TypeError: Invalid URL
at new URL (node:internal/url:818:25)
at d (/app/.next/server/pages/api/releases.js:1:5196)
at h (/app/.next/server/pages/api/services/proxy.js:45:33437)
at async X (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages-api.runtime.prod.js:20:18441)
at async z.render (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages-api.runtime.prod.js:20:19237)
at async NextNodeServer.runApi (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/next-server.js:671:9)
at async NextNodeServer.handleCatchallRenderRequest (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/next-server.js:302:37)
at async NextNodeServer.handleRequestImpl (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/base-server.js:899:17)
at async invokeRender (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/lib/router-server.js:237:21)
at async handleRequest (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/lib/router-server.js:428:24)
[2025-06-17T23:58:41.463Z] error: undefined
[2025-06-17T23:58:41.465Z] error: TypeError: Invalid URL
at new URL (node:internal/url:818:25)
at d (/app/.next/server/pages/api/releases.js:1:5196)
at h (/app/.next/server/pages/api/services/proxy.js:45:33437)
at async X (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages-api.runtime.prod.js:20:18441)
at async z.render (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages-api.runtime.prod.js:20:19237)
at async NextNodeServer.runApi (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/next-server.js:671:9)
at async NextNodeServer.handleCatchallRenderRequest (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/next-server.js:302:37)
at async NextNodeServer.handleRequestImpl (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/base-server.js:899:17)
at async invokeRender (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/lib/router-server.js:237:21)
at async handleRequest (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/lib/router-server.js:428:24)
[2025-06-17T23:59:05.503Z] error: undefined
[2025-06-17T23:59:05.505Z] error: TypeError: Invalid URL
at new URL (node:internal/url:818:25)
at d (/app/.next/server/pages/api/releases.js:1:5196)
at h (/app/.next/server/pages/api/services/proxy.js:45:33437)
at async X (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages-api.runtime.prod.js:20:18441)
at async z.render (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages-api.runtime.prod.js:20:19237)
at async NextNodeServer.runApi (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/next-server.js:671:9)
at async NextNodeServer.handleCatchallRenderRequest (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/next-server.js:302:37)
at async NextNodeServer.handleRequestImpl (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/base-server.js:899:17)
at async invokeRender (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/lib/router-server.js:237:21)
at async handleRequest (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/lib/router-server.js:428:24)
[2025-06-18T00:00:24.773Z] error: undefined
[2025-06-18T00:00:24.774Z] error: TypeError: Invalid URL
at new URL (node:internal/url:818:25)
at d (/app/.next/server/pages/api/releases.js:1:5196)
at h (/app/.next/server/pages/api/services/proxy.js:45:33437)
at async X (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages-api.runtime.prod.js:20:18441)
at async z.render (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages-api.runtime.prod.js:20:19237)
at async NextNodeServer.runApi (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/next-server.js:671:9)
at async NextNodeServer.handleCatchallRenderRequest (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/next-server.js:302:37)
at async NextNodeServer.handleRequestImpl (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/base-server.js:899:17)
at async invokeRender (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/lib/router-server.js:237:21)
at async handleRequest (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/lib/router-server.js:428:24)
[2025-06-18T00:00:29.878Z] error: undefined
[2025-06-18T00:00:29.880Z] error: TypeError: Invalid URL
at new URL (node:internal/url:818:25)
at d (/app/.next/server/pages/api/releases.js:1:5196)
at h (/app/.next/server/pages/api/services/proxy.js:45:33437)
at async X (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages-api.runtime.prod.js:20:18441)
at async z.render (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages-api.runtime.prod.js:20:19237)
at async NextNodeServer.runApi (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/next-server.js:671:9)
at async NextNodeServer.handleCatchallRenderRequest (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/next-server.js:302:37)
at async NextNodeServer.handleRequestImpl (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/base-server.js:899:17)
at async invokeRender (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/lib/router-server.js:237:21)
at async handleRequest (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/lib/router-server.js:428:24)
[2025-06-18T00:00:45.598Z] error: undefined
[2025-06-18T00:00:45.601Z] error: TypeError: Invalid URL
at new URL (node:internal/url:818:25)
at d (/app/.next/server/pages/api/releases.js:1:5196)
at h (/app/.next/server/pages/api/services/proxy.js:45:33437)
at async X (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages-api.runtime.prod.js:20:18441)
at async z.render (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages-api.runtime.prod.js:20:19237)
at async NextNodeServer.runApi (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/next-server.js:671:9)
at async NextNodeServer.handleCatchallRenderRequest (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/next-server.js:302:37)
at async NextNodeServer.handleRequestImpl (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/base-server.js:899:17)
at async invokeRender (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/lib/router-server.js:237:21)
at async handleRequest (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/lib/router-server.js:428:24)
[2025-06-18T00:04:43.766Z] error: undefined
[2025-06-18T00:04:43.768Z] error: TypeError: Invalid URL
at new URL (node:internal/url:818:25)
at d (/app/.next/server/pages/api/releases.js:1:5196)
at h (/app/.next/server/pages/api/services/proxy.js:45:33437)
at async X (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages-api.runtime.prod.js:20:18441)
at async z.render (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages-api.runtime.prod.js:20:19237)
at async NextNodeServer.runApi (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/next-server.js:671:9)
at async NextNodeServer.handleCatchallRenderRequest (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/next-server.js:302:37)
at async NextNodeServer.handleRequestImpl (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/base-server.js:899:17)
at async invokeRender (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/lib/router-server.js:237:21)
at async handleRequest (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/lib/router-server.js:428:24)
[2025-06-18T00:04:49.367Z] error: undefined
[2025-06-18T00:04:49.370Z] error: TypeError: Invalid URL
at new URL (node:internal/url:818:25)
at d (/app/.next/server/pages/api/releases.js:1:5196)
at h (/app/.next/server/pages/api/services/proxy.js:45:33437)
at async X (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages-api.runtime.prod.js:20:18441)
at async z.render (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages-api.runtime.prod.js:20:19237)
at async NextNodeServer.runApi (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/next-server.js:671:9)
at async NextNodeServer.handleCatchallRenderRequest (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/next-server.js:302:37)
at async NextNodeServer.handleRequestImpl (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/base-server.js:899:17)
at async invokeRender (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/lib/router-server.js:237:21)
at async handleRequest (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/lib/router-server.js:428:24)
[2025-06-18T00:05:32.544Z] error: undefined
[2025-06-18T00:05:32.546Z] error: TypeError: Invalid URL
at new URL (node:internal/url:818:25)
at d (/app/.next/server/pages/api/releases.js:1:5196)
at h (/app/.next/server/pages/api/services/proxy.js:45:33437)
at async X (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages-api.runtime.prod.js:20:18441)
at async z.render (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages-api.runtime.prod.js:20:19237)
at async NextNodeServer.runApi (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/next-server.js:671:9)
at async NextNodeServer.handleCatchallRenderRequest (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/next-server.js:302:37)
at async NextNodeServer.handleRequestImpl (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/base-server.js:899:17)
at async invokeRender (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/lib/router-server.js:237:21)
at async handleRequest (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/lib/router-server.js:428:24)
[2025-06-18T00:05:37.819Z] error: undefined
[2025-06-18T00:05:37.823Z] error: TypeError: Invalid URL
at new URL (node:internal/url:818:25)
at d (/app/.next/server/pages/api/releases.js:1:5196)
at h (/app/.next/server/pages/api/services/proxy.js:45:33437)
at async X (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages-api.runtime.prod.js:20:18441)
at async z.render (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages-api.runtime.prod.js:20:19237)
at async NextNodeServer.runApi (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/next-server.js:671:9)
at async NextNodeServer.handleCatchallRenderRequest (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/next-server.js:302:37)
at async NextNodeServer.handleRequestImpl (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/base-server.js:899:17)
at async invokeRender (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/lib/router-server.js:237:21)
at async handleRequest (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/lib/router-server.js:428:24)
[2025-06-18T00:06:00.759Z] error: undefined
[2025-06-18T00:06:00.761Z] error: TypeError: Invalid URL
at new URL (node:internal/url:818:25)
at d (/app/.next/server/pages/api/releases.js:1:5196)
at h (/app/.next/server/pages/api/services/proxy.js:45:33437)
at async X (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages-api.runtime.prod.js:20:18441)
at async z.render (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages-api.runtime.prod.js:20:19237)
at async NextNodeServer.runApi (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/next-server.js:671:9)
at async NextNodeServer.handleCatchallRenderRequest (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/next-server.js:302:37)
at async NextNodeServer.handleRequestImpl (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/base-server.js:899:17)
at async invokeRender (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/lib/router-server.js:237:21)
at async handleRequest (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/lib/router-server.js:428:24)
[2025-06-18T00:06:11.417Z] error: undefined
[2025-06-18T00:06:11.418Z] error: TypeError: Invalid URL
at new URL (node:internal/url:818:25)
at d (/app/.next/server/pages/api/releases.js:1:5196)
at h (/app/.next/server/pages/api/services/proxy.js:45:33437)
at async X (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages-api.runtime.prod.js:20:18441)
at async z.render (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages-api.runtime.prod.js:20:19237)
at async NextNodeServer.runApi (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/next-server.js:671:9)
at async NextNodeServer.handleCatchallRenderRequest (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/next-server.js:302:37)
at async NextNodeServer.handleRequestImpl (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/base-server.js:899:17)
at async invokeRender (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/lib/router-server.js:237:21)
at async handleRequest (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/lib/router-server.js:428:24)
[2025-06-18T00:12:24.745Z] error: undefined
[2025-06-18T00:12:24.748Z] error: TypeError: Invalid URL
at new URL (node:internal/url:818:25)
at d (/app/.next/server/pages/api/releases.js:1:5196)
at h (/app/.next/server/pages/api/services/proxy.js:45:33437)
at async X (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages-api.runtime.prod.js:20:18441)
at async z.render (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages-api.runtime.prod.js:20:19237)
at async NextNodeServer.runApi (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/next-server.js:671:9)
at async NextNodeServer.handleCatchallRenderRequest (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/next-server.js:302:37)
at async NextNodeServer.handleRequestImpl (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/base-server.js:899:17)
at async invokeRender (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/lib/router-server.js:237:21)
at async handleRequest (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/lib/router-server.js:428:24)
[2025-06-18T00:12:30.316Z] error: undefined
[2025-06-18T00:12:30.317Z] error: TypeError: Invalid URL
at new URL (node:internal/url:818:25)
at d (/app/.next/server/pages/api/releases.js:1:5196)
at h (/app/.next/server/pages/api/services/proxy.js:45:33437)
at async X (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages-api.runtime.prod.js:20:18441)
at async z.render (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages-api.runtime.prod.js:20:19237)
at async NextNodeServer.runApi (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/next-server.js:671:9)
at async NextNodeServer.handleCatchallRenderRequest (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/next-server.js:302:37)
at async NextNodeServer.handleRequestImpl (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/base-server.js:899:17)
at async invokeRender (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/lib/router-server.js:237:21)
at async handleRequest (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/lib/router-server.js:428:24)
[2025-06-18T00:21:16.859Z] error: undefined
[2025-06-18T00:21:16.862Z] error: TypeError: Invalid URL
at new URL (node:internal/url:818:25)
at d (/app/.next/server/pages/api/releases.js:1:5196)
at h (/app/.next/server/pages/api/services/proxy.js:45:33437)
at async X (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages-api.runtime.prod.js:20:18441)
at async z.render (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages-api.runtime.prod.js:20:19237)
at async NextNodeServer.runApi (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/next-server.js:671:9)
at async NextNodeServer.handleCatchallRenderRequest (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/next-server.js:302:37)
at async NextNodeServer.handleRequestImpl (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/base-server.js:899:17)
at async invokeRender (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/lib/router-server.js:237:21)
at async handleRequest (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/lib/router-server.js:428:24)
[2025-06-18T00:21:21.978Z] error: undefined
[2025-06-18T00:21:21.980Z] error: TypeError: Invalid URL
at new URL (node:internal/url:818:25)
at d (/app/.next/server/pages/api/releases.js:1:5196)
at h (/app/.next/server/pages/api/services/proxy.js:45:33437)
at async X (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages-api.runtime.prod.js:20:18441)
at async z.render (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages-api.runtime.prod.js:20:19237)
at async NextNodeServer.runApi (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/next-server.js:671:9)
at async NextNodeServer.handleCatchallRenderRequest (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/next-server.js:302:37)
at async NextNodeServer.handleRequestImpl (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/base-server.js:899:17)
at async invokeRender (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/lib/router-server.js:237:21)
at async handleRequest (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/lib/router-server.js:428:24)
[2025-06-18T00:21:38.005Z] error: undefined
[2025-06-18T00:21:38.008Z] error: TypeError: Invalid URL
at new URL (node:internal/url:818:25)
at d (/app/.next/server/pages/api/releases.js:1:5196)
at h (/app/.next/server/pages/api/services/proxy.js:45:33437)
at async X (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages-api.runtime.prod.js:20:18441)
at async z.render (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/compiled/next-server/pages-api.runtime.prod.js:20:19237)
at async NextNodeServer.runApi (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/next-server.js:671:9)
at async NextNodeServer.handleCatchallRenderRequest (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/next-server.js:302:37)
at async NextNodeServer.handleRequestImpl (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/base-server.js:899:17)
at async invokeRender (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/lib/router-server.js:237:21)
at async handleRequest (/app/node_modules/.pnpm/next@15.3.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/server/lib/router-server.js:428:24)

View File

@ -4,7 +4,6 @@
- Essential Tools:
- Code Server:
href: "http://localhost:8888"
# href: "https://code.albertademocracytaskforce.org" # Uncomment for public access
description: VS Code in the browser
icon: mdi-code-braces
widget:
@ -13,7 +12,6 @@
server: my-docker
- Listmonk:
href: "http://localhost:9000"
# href: "https://listmonk.albertademocracytaskforce.org" # Uncomment for public access
description: Newsletter & mailing list manager
icon: mdi-email-newsletter
widget:
@ -22,7 +20,6 @@
server: my-docker
- NocoDB:
href: "http://localhost:8090"
# href: "https://db.albertademocracytaskforce.org" # Uncomment for public access
description: No-code database platform
icon: mdi-database
widget:
@ -31,7 +28,6 @@
server: my-docker
- Gitea:
href: "http://localhost:3030"
# href: "https://git.albertademocracytaskforce.org" # Uncomment for public access
description: Git repository hosting
icon: mdi-git
widget:
@ -42,7 +38,6 @@
- Content & Documentation:
- MkDocs (Live):
href: "http://localhost:4000"
# href: "https://docs.albertademocracytaskforce.org" # Uncomment for public access
description: Live documentation server with hot reload
icon: mdi-book-open-page-variant
widget:
@ -51,7 +46,6 @@
server: my-docker
- Static Site:
href: "http://localhost:4001"
# href: "https://albertademocracytaskforce.org" # Uncomment for public access
description: Built documentation hosting
icon: mdi-web
widget:
@ -62,7 +56,6 @@
- Automation & Infrastructure:
- n8n:
href: "http://localhost:5678"
# href: "https://n8n.albertademocracytaskforce.org" # Uncomment for public access
description: Workflow automation platform
icon: mdi-workflow
widget:

View File

@ -0,0 +1,87 @@
---
# For public access, replace "http://localhost" with your subdomain URLs
- Essential Tools:
- Code Server:
href: "http://localhost:8888"
# href: "https://code.albertademocracytaskforce.org" # Uncomment for public access
description: VS Code in the browser
icon: mdi-code-braces
widget:
type: docker
container: code-server-changemaker
server: my-docker
- Listmonk:
href: "http://localhost:9000"
# href: "https://listmonk.albertademocracytaskforce.org" # Uncomment for public access
description: Newsletter & mailing list manager
icon: mdi-email-newsletter
widget:
type: docker
container: listmonk_app
server: my-docker
- NocoDB:
href: "http://localhost:8090"
# href: "https://db.albertademocracytaskforce.org" # Uncomment for public access
description: No-code database platform
icon: mdi-database
widget:
type: docker
container: changemakerlite-nocodb-1
server: my-docker
- Gitea:
href: "http://localhost:3030"
# href: "https://git.albertademocracytaskforce.org" # Uncomment for public access
description: Git repository hosting
icon: mdi-git
widget:
type: docker
container: gitea_changemaker
server: my-docker
- Content & Documentation:
- MkDocs (Live):
href: "http://localhost:4000"
# href: "https://docs.albertademocracytaskforce.org" # Uncomment for public access
description: Live documentation server with hot reload
icon: mdi-book-open-page-variant
widget:
type: docker
container: mkdocs-changemaker
server: my-docker
- Static Site:
href: "http://localhost:4001"
# href: "https://albertademocracytaskforce.org" # Uncomment for public access
description: Built documentation hosting
icon: mdi-web
widget:
type: docker
container: mkdocs-site-server-changemaker
server: my-docker
- Automation & Infrastructure:
- n8n:
href: "http://localhost:5678"
# href: "https://n8n.albertademocracytaskforce.org" # Uncomment for public access
description: Workflow automation platform
icon: mdi-workflow
widget:
type: docker
container: n8n-changemaker
server: my-docker
- PostgreSQL (Listmonk):
href: "#"
description: Database for Listmonk
icon: mdi-database-outline
widget:
type: docker
container: listmonk_db
server: my-docker
- PostgreSQL (NocoDB):
href: "#"
description: Database for NocoDB
icon: mdi-database-outline
widget:
type: docker
container: changemakerlite-root_db-1
server: my-docker

View File

@ -21,7 +21,3 @@
- search:
provider: duckduckgo
target: _blank
- unifi_console:
text_size: md
text: "Services Available: Code Server, Listmonk, NocoDB, MkDocs, n8n, Gitea"

View File

@ -230,6 +230,23 @@ services:
timeout: 5s
retries: 5
# Client Website Server
client-website-server:
image: lscr.io/linuxserver/nginx:latest
container_name: client-website-server-changemaker
environment:
- PUID=${USER_ID:-1000}
- PGID=${GROUP_ID:-1000}
- TZ=Etc/UTC
volumes:
- ./site:/config/www
- ./configs/nginx/client-website/default.conf:/config/nginx/site-confs/default.conf
ports:
- "${CLIENT_WEBSITE_PORT:-8080}:80"
restart: unless-stopped
networks:
- changemaker-lite
networks:
changemaker-lite:
driver: bridge

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
mkdocs/docs/assets/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

View File

@ -1,231 +0,0 @@
# Getting Started
Welcome to Changemaker Lite! This guide will help you get up and running quickly.
## Prerequisites
Before starting, ensure you have:
- [Docker](https://docs.docker.com/get-docker/) installed
- [Docker Compose](https://docs.docker.com/compose/install/) installed
- Git for cloning the repository
- Basic familiarity with terminal/command line
## Installation
### 1. Clone Repository
```bash
git clone https://gitea.bnkops.com/admin/Changemaker.git
cd changemaker.lite
```
### 2. Configuration
Run the configuration script to set up environment variables:
```bash
./config.sh
```
This creates a `.env` file with default settings. You can edit this file to customize:
- Service ports
- Database credentials
- User/group IDs
- Domain settings
### 3. Start Services
Launch all services with Docker Compose:
```bash
docker compose up -d
```
Wait a few minutes for all services to start, especially on first run as Docker images need to be downloaded.
### 4. Verify Installation
Check that services are running:
```bash
docker compose ps
```
All services should show as "Up" status.
## First Steps
### Access the Dashboard
Start with the **Homepage Dashboard**: http://localhost:3010
- Central hub for all services
- Live status monitoring
- Quick access to all applications
### Access Documentation
1. **Development Server**: http://localhost:4000
- Live preview with auto-reload
- Used while writing documentation
2. **Production Server**: http://localhost:4001
- Serves built static site
- Optimized for performance
### Start Coding
1. Open **Code Server**: http://localhost:8888
2. Navigate to `/home/coder/mkdocs/` workspace
3. Edit documentation files in `docs/` directory
4. See changes instantly in development server
### Set Up Email Campaigns
1. Access **Listmonk**: http://localhost:9000
2. Log in with admin credentials (set in config)
3. Configure SMTP settings
4. Create your first mailing list
### Create Workflows
1. Open **n8n**: http://localhost:5678
2. Log in with admin credentials
3. Create your first workflow
4. Connect different services together
### Manage Data with NocoDB
1. Access **NocoDB**: http://localhost:8090
2. Complete the initial setup
3. Create your first project
4. Import data or create new tables
### Access All Services via Homepage
1. Open **Homepage**: http://localhost:3010
2. View all services in one dashboard
3. Monitor service status
4. Quick access to all applications
## Configuration Details
### Environment Variables
Key settings in `.env` file:
```env
# Service Ports
HOMEPAGE_PORT=3010
CODE_SERVER_PORT=8888
MKDOCS_PORT=4000
MKDOCS_SITE_SERVER_PORT=4001
LISTMONK_PORT=9000
N8N_PORT=5678
NOCODB_PORT=8090
# Database
POSTGRES_USER=listmonk
POSTGRES_PASSWORD=your_secure_password
POSTGRES_DB=listmonk
# User/Group IDs (match your system)
USER_ID=1000
GROUP_ID=1000
```
### Volume Mounts
Important directories:
- `./mkdocs/`: Documentation source files
- `./configs/`: Service configurations
- `./assets/`: Shared assets and uploads
- Docker volumes for persistent data
## Common Tasks
### Writing Documentation
1. Edit files in `mkdocs/docs/` using Code Server
2. Preview changes at http://localhost:4000
3. Build static site: `docker exec mkdocs-changemaker mkdocs build`
4. View built site at http://localhost:4001
### Managing Services
```bash
# View logs
docker compose logs [service-name]
# Restart service
docker compose restart [service-name]
# Stop all services
docker compose down
# Update services
docker compose pull && docker compose up -d
```
### Backup Important Data
- Export n8n workflows
- Backup PostgreSQL database
- Version control your documentation files
- Save service configurations
## Troubleshooting
### Port Conflicts
If ports are already in use, edit `.env` file:
```env
CODE_SERVER_PORT=8889 # Change from 8888
MKDOCS_PORT=4002 # Change from 4000
```
Then restart: `docker compose down && docker compose up -d`
### Permission Issues
Ensure correct user/group IDs in `.env`:
```bash
# Get your user ID
id -u
# Get your group ID
id -g
```
Update `.env` with these values and restart services.
### Service Won't Start
Check logs for specific errors:
```bash
docker compose logs [service-name]
```
Common issues:
- Port conflicts
- Permission problems
- Missing environment variables
- Network connectivity
## Next Steps
- Explore the [Services](services/index.md) documentation
- Set up your first [n8n workflow](services/n8n.md)
- Configure [Listmonk](services/listmonk.md) for email campaigns
- Customize your [MkDocs](services/mkdocs.md) theme and content
## Getting Help
- Check service-specific documentation
- Review Docker container logs
- Verify environment configuration
- Test network connectivity between services

View File

@ -1,60 +1,61 @@
# Welcome to Changemaker Lite
# Linda Lindsay for Ward B School Trustee
A streamlined, self-hosted platform for documentation and development.
## Defending and Supporting Public Education
## Quick Start
Welcome to the official policy platform and blog for **Linda Lindsay**, candidate for Edmonton Public School Board Trustee in Ward B. This site serves as the central hub for detailed policy positions, campaign updates, and educational insights from an experienced educator committed to progressive public education.
Get up and running in minutes:
## About Linda Lindsay
```bash
# Clone the repository
git clone https://gitea.bnkops.com/admin/Changemaker.git
cd changemaker.lite
Linda Lindsay is a proud Edmontonian, born and raised in the city she now calls home. As a lifelong resident of Ward B for twenty-eight years, Linda has deep roots in the community where she and her husband raised and educated their children. She is now a blessed grandmother who understands the importance of quality education for future generations.
# Configure environment
./config.sh
### Educational Background & Experience
# Start all services
docker compose up -d
```
Linda's passion for public education stems from her own experience as a student. From grade one through graduation, she was mentored by strong, dedicated teachers who supported her academically, musically, and athletically. In grade nine, she decided to become a teacher herself, inspired by the educators who shaped her life.
## Services
As an experienced educator, Linda has worked within the Edmonton Public School system during times of strong and reliable funding models. She understands firsthand the challenges facing today's classrooms, which serve diverse populations of students with complex needs.
Changemaker Lite includes these essential services:
### Personal Connection to Special Needs
- **[Homepage](services/homepage.md)** (Port 3010) - Service dashboard and monitoring
- **[Code Server](services/code-server.md)** (Port 8888) - VS Code in your browser
- **[MkDocs](services/mkdocs.md)** (Port 4000) - Documentation with live preview
- **[Static Server](services/static-server.md)** (Port 4001) - Built site hosting
- **[Waypoint Editor](services/waypoint-editor.md)** (Port 3020) - Visual page editor
- **[Listmonk](services/listmonk.md)** (Port 9000) - Newsletter management
- **[PostgreSQL](services/postgresql.md)** (Port 5432) - Database backend
- **[n8n](services/n8n.md)** (Port 5678) - Workflow automation
- **[NocoDB](services/nocodb.md)** (Port 8090) - No-code database platform
Linda brings a unique perspective to the trustee role through her personal experience as a parent. One of her grown children lives with special needs, giving her intimate knowledge of the challenges families face in securing appropriate supports within the education system.
## Getting Started
## What This Site Offers
1. **Documentation**: Start writing in [Code Server](http://localhost:8888)
2. **Preview**: See live changes at [MkDocs](http://localhost:4000)
3. **Production**: View built site at [Static Server](http://localhost:4001)
4. **Email**: Set up campaigns with [Listmonk](http://localhost:9000)
5. **Automation**: Create workflows in [n8n](http://localhost:5678)
### 🏛️ Policy Platform
This site will feature Linda's comprehensive policy positions on:
## Project Structure
- **Funding & Resources**: Advocating for a return to strong, reliable funding models
- **Special Needs Support**: Ensuring adequate resources and supports for all students
- **Inclusive Education**: Supporting diverse classroom populations
- **Community Engagement**: Strengthening connections between schools and neighborhoods
```
changemaker.lite/
├── docker-compose.yml # Service definitions
├── config.sh # Setup script
├── mkdocs/ # Documentation source
│ ├── docs/ # Markdown files
│ └── mkdocs.yml # Configuration
├── configs/ # Service configurations
└── assets/ # Shared assets
```
### 📝 Campaign Blog
Stay updated with:
## Learn More
- Campaign news and events
- Educational policy analysis
- Community insights and feedback
- Progressive education advocacy
- [Services Overview](services/index.md) - Detailed service documentation
- [Blog](blog/index.md) - Updates and tutorials
- [GitHub Repository](https://gitea.bnkops.com/admin/Changemaker) - Source code and issues
### 🎯 Mission Alignment
Linda strongly supports and stands by the **Edmonton Public School mission statement**:
> *"A commitment to high quality public education that serves the community and empowers each student to live a life of dignity, fulfillment, empathy, and possibility."*
## Election Information
**Election Date**: October 20, 2025
**Position**: Edmonton Public School Board Trustee
**Ward**: Ward B
## Connect with the Campaign
- **Email**: [lindalindsaypublictrustee@gmail.com](mailto:lindalindsaypublictrustee@gmail.com)
- **Facebook**: [Follow on Facebook](https://www.facebook.com/share/16b4yqAw5d/?mibextid=wwXIfr)
- **Bluesky**: [Follow on Bluesky](https://bsky.app/profile/lindalindsay.bsky.social)
---
*Linda Lindsay is passionate about a strong and progressive public school system that serves and supports all students in all neighborhoods. With her experience as an educator, parent, and community member, she brings the knowledge and dedication needed to advocate effectively for Edmonton's public education system.*
**VOTE FOR LINDA LINDSAY - Ward B School Trustee**

View File

@ -4,6 +4,5 @@
{% endblock %}
{% block announce %}
<a href="https://homepage.albertademocracytaskforce.org" class="login-button">Login</a>
Changemaker Archive. <a href="https://docs.bnkops.com">Learn more</a>
<a href="https://dashboard.lindalindsay.org" class="login-button">Login</a>
{% endblock %}

View File

@ -0,0 +1,9 @@
{% extends "base.html" %}
{% block extrahead %}
{% endblock %}
{% block announce %}
<a href="https://homepage.albertademocracytaskforce.org" class="login-button">Login</a>
Changemaker Archive. <a href="https://docs.bnkops.com">Learn more</a>
{% endblock %}

View File

@ -1,59 +0,0 @@
# Code Server
Visual Studio Code in your browser for remote development.
## Overview
Code Server provides a full Visual Studio Code experience in your web browser, allowing you to develop from any device. It runs on your server and provides access to your development environment through a web interface.
## Features
- Full VS Code experience in the browser
- Extensions support
- Terminal access
- Git integration
- File editing and management
- Multi-language support
## Access
- **Default Port**: 8888
- **URL**: `http://localhost:8888`
- **Default Workspace**: `/home/coder/mkdocs/`
## Configuration
### Environment Variables
- `DOCKER_USER`: The user to run code-server as (default: `coder`)
- `DEFAULT_WORKSPACE`: Default workspace directory
- `USER_ID`: User ID for file permissions
- `GROUP_ID`: Group ID for file permissions
### Volumes
- `./configs/code-server/.config`: VS Code configuration
- `./configs/code-server/.local`: Local data
- `./mkdocs`: Main workspace directory
## Usage
1. Access Code Server at `http://localhost:8888`
2. Open the `/home/coder/mkdocs/` workspace
3. Start editing your documentation files
4. Install extensions as needed
5. Use the integrated terminal for commands
## Useful Extensions
Consider installing these extensions for better documentation work:
- Markdown All in One
- Material Design Icons
- GitLens
- Docker
- YAML
## Official Documentation
For more detailed information, visit the [official Code Server documentation](https://coder.com/docs/code-server).

View File

@ -1,199 +0,0 @@
# Homepage
Modern dashboard for accessing all your self-hosted services.
## Overview
Homepage is a modern, fully static, fast, secure fully configurable application dashboard with integrations for over 100 services. It provides a beautiful and customizable interface to access all your Changemaker Lite services from a single location.
## Features
- **Service Dashboard**: Central hub for all your applications
- **Docker Integration**: Automatic service discovery and monitoring
- **Customizable Layout**: Flexible grid-based layout system
- **Service Widgets**: Live status and metrics for services
- **Quick Search**: Fast navigation with built-in search
- **Bookmarks**: Organize frequently used links
- **Dark/Light Themes**: Multiple color schemes available
- **Responsive Design**: Works on desktop and mobile devices
## Access
- **Default Port**: 3010
- **URL**: `http://localhost:3010`
- **Configuration**: YAML-based configuration files
## Configuration
### Environment Variables
- `HOMEPAGE_PORT`: External port mapping (default: 3010)
- `PUID`: User ID for file permissions (default: 1000)
- `PGID`: Group ID for file permissions (default: 1000)
- `TZ`: Timezone setting (default: Etc/UTC)
- `HOMEPAGE_ALLOWED_HOSTS`: Allowed hosts for the dashboard
### Configuration Files
Homepage uses YAML configuration files located in `./configs/homepage/`:
- `settings.yaml`: Global settings and theme configuration
- `services.yaml`: Service definitions and widgets
- `bookmarks.yaml`: Bookmark categories and links
- `widgets.yaml`: Dashboard widgets configuration
- `docker.yaml`: Docker integration settings
### Volumes
- `./configs/homepage:/app/config`: Configuration files
- `./assets/icons:/app/public/icons`: Custom service icons
- `./assets/images:/app/public/images`: Background images and assets
- `/var/run/docker.sock:/var/run/docker.sock`: Docker socket for container monitoring
## Changemaker Lite Services
Homepage is pre-configured with all Changemaker Lite services:
### Essential Tools
- **Code Server** (Port 8888): VS Code in the browser
- **Listmonk** (Port 9000): Newsletter & mailing list manager
- **NocoDB** (Port 8090): No-code database platform
### Content & Documentation
- **MkDocs** (Port 4000): Live documentation server
- **Static Site** (Port 4001): Built documentation hosting
### Automation & Data
- **n8n** (Port 5678): Workflow automation platform
- **PostgreSQL** (Port 5432): Database backends
## Customization
### Adding Custom Services
Edit `configs/homepage/services.yaml` to add new services:
```yaml
- Custom Category:
- My Service:
href: http://localhost:8080
description: Custom service description
icon: mdi-application
widget:
type: ping
url: http://localhost:8080
```
### Custom Icons
Add custom icons to `./assets/icons/` directory and reference them in services.yaml:
```yaml
icon: /icons/my-custom-icon.png
```
### Themes and Styling
Modify `configs/homepage/settings.yaml` to customize appearance:
```yaml
theme: dark # or light
color: purple # slate, gray, zinc, neutral, stone, red, orange, amber, yellow, lime, green, emerald, teal, cyan, sky, blue, indigo, violet, purple, fuchsia, pink, rose
```
### Widgets
Enable live monitoring widgets in `configs/homepage/services.yaml`:
```yaml
- Service Name:
widget:
type: docker
container: container-name
server: my-docker
```
## Service Monitoring
Homepage can display real-time status information for your services:
- **Docker Integration**: Container status and resource usage
- **HTTP Ping**: Service availability monitoring
- **Custom APIs**: Integration with service-specific APIs
## Docker Integration
Homepage monitors Docker containers automatically when configured:
1. Ensure Docker socket is mounted (`/var/run/docker.sock`)
2. Configure container mappings in `docker.yaml`
3. Add widget configurations to `services.yaml`
## Security Considerations
- Homepage runs with limited privileges
- Configuration files should have appropriate permissions
- Consider network isolation for production deployments
- Use HTTPS for external access
- Regularly update the Homepage image
## Troubleshooting
### Common Issues
**Configuration not loading**: Check YAML syntax in configuration files
```bash
docker logs homepage-changemaker
```
**Icons not displaying**: Verify icon paths and file permissions
```bash
ls -la ./assets/icons/
```
**Services not reachable**: Verify network connectivity between containers
```bash
docker exec homepage-changemaker ping service-name
```
**Widget data not updating**: Check Docker socket permissions and container access
```bash
docker exec homepage-changemaker ls -la /var/run/docker.sock
```
## Configuration Examples
### Basic Service Widget
```yaml
- Code Server:
href: http://localhost:8888
description: VS Code in the browser
icon: code-server
widget:
type: docker
container: code-server-changemaker
```
### Custom Dashboard Layout
```yaml
# settings.yaml
layout:
style: columns
columns: 3
# Responsive breakpoints
responsive:
mobile: 1
tablet: 2
desktop: 3
```
## Official Documentation
For comprehensive configuration guides and advanced features:
- [Homepage Documentation](https://gethomepage.dev/)
- [GitHub Repository](https://github.com/gethomepage/homepage)
- [Configuration Examples](https://gethomepage.dev/configs/)
- [Widget Integrations](https://gethomepage.dev/widgets/)

View File

@ -1,168 +0,0 @@
# Services
Changemaker Lite includes several powerful services that work together to provide a complete documentation and development platform. Each service is containerized and can be accessed through its dedicated port.
## Available Services
### [Code Server](code-server.md)
**Port: 8888** | Visual Studio Code in your browser for remote development
- Full IDE experience
- Extensions support
- Git integration
- Terminal access
### [Listmonk](listmonk.md)
**Port: 9000** | Self-hosted newsletter and mailing list manager
- Email campaigns
- Subscriber management
- Analytics
- Template system
### [PostgreSQL](postgresql.md)
**Port: 5432** | Reliable database backend
- Data persistence for Listmonk
- ACID compliance
- High performance
- Backup and restore capabilities
### [MkDocs Material](mkdocs.md)
**Port: 4000** | Documentation site generator with live preview
- Material Design theme
- Live reload
- Search functionality
- Markdown support
### [Static Site Server](static-server.md)
**Port: 4001** | Nginx-powered static site hosting
- High-performance serving
- Built documentation hosting
- Caching and compression
- Security headers
### [n8n](n8n.md)
**Port: 5678** | Workflow automation tool
- Visual workflow editor
- 400+ integrations
- Custom code execution
- Webhook support
### [NocoDB](nocodb.md)
**Port: 8090** | No-code database platform
- Smart spreadsheet interface
- Form builder and API generation
- Real-time collaboration
- Multi-database support
### [Homepage](homepage.md)
**Port: 3010** | Modern dashboard for all services
- Service dashboard and monitoring
- Docker integration
- Customizable layout
- Quick search and bookmarks
## Service Architecture
```
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Homepage │ │ Code Server │ │ MkDocs │
│ :3010 │ │ :8888 │ │ :4000 │
└─────────────────┘ └─────────────────┘ └─────────────────┘
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Static Server │ │ Listmonk │ │ n8n │
│ :4001 │ │ :9000 │ │ :5678 │
└─────────────────┘ └─────────────────┘ └─────────────────┘
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ NocoDB │ │ PostgreSQL │ │ PostgreSQL │
│ :8090 │ │ (listmonk-db) │ │ (root_db) │
└─────────────────┘ │ :5432 │ │ :5432 │
│ └─────────────────┘ └─────────────────┘
└──────────────────────────────────────────────────────┘
```
## Getting Started
1. **Start all services**: `docker compose up -d`
2. **Check service status**: `docker compose ps`
3. **View logs**: `docker compose logs [service-name]`
4. **Stop services**: `docker compose down`
## Service Dependencies
- **Listmonk** depends on **PostgreSQL** (listmonk-db)
- **NocoDB** depends on **PostgreSQL** (root_db)
- **Static Server** serves content built by **MkDocs**
- **n8n** can integrate with all other services
- All services share the `changemaker` network
## Environment Configuration
Services are configured through environment variables in your `.env` file:
```env
# Port configurations
CODE_SERVER_PORT=8888
LISTMONK_PORT=9000
LISTMONK_DB_PORT=5432
MKDOCS_PORT=4000
MKDOCS_SITE_SERVER_PORT=4001
N8N_PORT=5678
# User and group IDs
USER_ID=1000
GROUP_ID=1000
# Database configuration
POSTGRES_USER=listmonk
POSTGRES_PASSWORD=your_password
POSTGRES_DB=listmonk
# n8n configuration
N8N_ENCRYPTION_KEY=your_encryption_key
N8N_USER_EMAIL=admin@example.com
N8N_USER_PASSWORD=your_password
```
## Monitoring and Maintenance
### Health Checks
```bash
# Check all services
docker compose ps
# Check specific service logs
docker compose logs listmonk-app
docker compose logs code-server
```
### Updates
```bash
# Pull latest images
docker compose pull
# Restart with new images
docker compose down && docker compose up -d
```
### Backups
- **PostgreSQL**: Regular database backups
- **n8n**: Export workflows and credentials
- **Code Server**: Backup configuration and workspace
- **MkDocs**: Version control your documentation
## Troubleshooting
### Common Issues
1. **Port Conflicts**: Ensure ports are not used by other applications
2. **Permission Issues**: Check `USER_ID` and `GROUP_ID` settings
3. **Network Issues**: Verify services can communicate through the `changemaker` network
4. **Data Persistence**: Ensure volumes are properly mounted
### Getting Help
- Check individual service documentation
- Review container logs for error messages
- Verify environment variable configuration
- Test network connectivity between services

View File

@ -1,66 +0,0 @@
# Listmonk
Self-hosted newsletter and mailing list manager.
## Overview
Listmonk is a modern, feature-rich newsletter and mailing list manager designed for high performance and easy management. It provides a complete solution for email campaigns, subscriber management, and analytics.
## Features
- Newsletter and email campaign management
- Subscriber list management
- Template system with HTML/markdown support
- Campaign analytics and tracking
- API for integration
- Multi-list support
- Bounce handling
- Privacy-focused design
## Access
- **Default Port**: 9000
- **URL**: `http://localhost:9000`
- **Admin User**: Set via `LISTMONK_ADMIN_USER` environment variable
- **Admin Password**: Set via `LISTMONK_ADMIN_PASSWORD` environment variable
## Configuration
### Environment Variables
- `LISTMONK_ADMIN_USER`: Admin username
- `LISTMONK_ADMIN_PASSWORD`: Admin password
- `POSTGRES_USER`: Database username
- `POSTGRES_PASSWORD`: Database password
- `POSTGRES_DB`: Database name
### Database
Listmonk uses PostgreSQL as its backend database. The database is automatically configured through the docker-compose setup.
### Uploads
- Upload directory: `./assets/uploads`
- Used for media files, templates, and attachments
## Getting Started
1. Access Listmonk at `http://localhost:9000`
2. Log in with your admin credentials
3. Set up your first mailing list
4. Configure SMTP settings for sending emails
5. Import subscribers or create subscription forms
6. Create your first campaign
## Important Notes
- Configure SMTP settings before sending emails
- Set up proper domain authentication (SPF, DKIM) for better deliverability
- Regularly backup your subscriber data and campaigns
- Monitor bounce rates and maintain list hygiene
## Official Documentation
For comprehensive guides and API documentation, visit:
- [Listmonk Documentation](https://listmonk.app/docs/)
- [GitHub Repository](https://github.com/knadh/listmonk)

View File

@ -1,124 +0,0 @@
# MkDocs Material
Modern documentation site generator with live preview.
## Overview
MkDocs Material is a powerful documentation framework built on top of MkDocs, providing a beautiful Material Design theme and advanced features for creating professional documentation sites.
## Features
- Material Design theme
- Live preview during development
- Search functionality
- Navigation and organization
- Code syntax highlighting
- Mathematical expressions support
- Responsive design
- Customizable themes and colors
## Access
- **Development Port**: 4000
- **Development URL**: `http://localhost:4000`
- **Live Reload**: Automatically refreshes on file changes
## Configuration
### Main Configuration
Configuration is managed through `mkdocs.yml` in the project root.
### Volumes
- `./mkdocs`: Documentation source files
- `./assets/images`: Shared images directory
### Environment Variables
- `SITE_URL`: Base domain for the site
- `USER_ID`: User ID for file permissions
- `GROUP_ID`: Group ID for file permissions
## Directory Structure
```
mkdocs/
├── mkdocs.yml # Configuration file
├── docs/ # Documentation source
│ ├── index.md # Homepage
│ ├── services/ # Service documentation
│ ├── blog/ # Blog posts
│ └── overrides/ # Template overrides
└── site/ # Built static site
```
## Writing Documentation
### Markdown Basics
- Use standard Markdown syntax
- Support for tables, code blocks, and links
- Mathematical expressions with MathJax
- Admonitions for notes and warnings
### Example Page
```markdown
# Page Title
This is a sample documentation page.
## Section
Content goes here with **bold** and *italic* text.
### Code Example
```python
def hello_world():
print("Hello, World!")
```
!!! note
This is an informational note.
```
## Building and Deployment
### Development
The development server runs automatically with live reload.
### Building Static Site
```bash
docker exec mkdocs-changemaker mkdocs build
```
The built site will be available in the `mkdocs/site/` directory.
## Customization
### Themes and Colors
Customize appearance in `mkdocs.yml`:
```yaml
theme:
name: material
palette:
primary: blue
accent: indigo
```
### Custom CSS
Add custom styles in `docs/stylesheets/extra.css`.
## Official Documentation
For comprehensive MkDocs Material documentation:
- [MkDocs Material](https://squidfunk.github.io/mkdocs-material/)
- [MkDocs Documentation](https://www.mkdocs.org/)
- [Markdown Guide](https://www.markdownguide.org/)

Some files were not shown because too many files have changed in this diff Show More