Commit Graph
100 Commits
Author SHA1 Message Date
alexz d5e58923bc Add PROXY_SECRET for IBM i proxy auth 2026-03-26 23:30:48 +00:00
alexz 4da14d5a23 Fix default Ollama model to gpt-oss:20b 2026-03-26 16:32:50 +00:00
alexz d3dd39ceeb Add Ollama and CONTEXT_ROOT config to erp-integration app 2026-03-26 15:21:06 +00:00
alexz 68da19bafe Expose port 8001 on host for external reverse proxy 2026-03-19 16:27:20 +00:00
alexz 8ffb7e01ae Add SAP logo for erp-integration app 2026-03-19 16:18:46 +00:00
alexz 1f8a4d5ae3 Use symlinked APP_DATA_DIR, add MCP_API_BASE_URL and SHAREPOINT_BASE_URL env vars 2026-03-19 16:14:00 +00:00
alexz 9f0e1c7f8b Mount data/uploads from original ERP-Integration project 2026-03-19 15:44:54 +00:00
alexz cd07a5b8c8 Fix: add min/max validation to API key field 2026-03-19 09:14:32 +00:00
alexz 7fd226d229 Added erp-integration: SAP S/4HANA Migration Dashboard app 2026-03-19 09:09:41 +00:00
alexz 5bffff1d9b nas-samba: configurable admin user (uses SMB_PASSWORD) 2026-03-16 23:34:28 +00:00
alexz 61b1dea366 nas-samba: clean up duplicate files, single server.js in app/ 2026-03-16 23:31:40 +00:00
alexz c94cbd7f36 nas-samba: use SMB_PASSWORD for admin login, configurable username 2026-03-16 23:29:10 +00:00
alexz 618e023996 nas-samba: rebuilt as single Ubuntu image with Samba + CloudNAS (no MongoDB) 2026-03-16 23:22:42 +00:00
alexz 0104827234 feat: add cloudNAS web UI service 2026-03-09 18:53:18 +00:00
alexz 92a97e140f revert: remove cockpit, keep nas-samba only 2026-03-09 18:40:46 +00:00
alexz b9d573aeac fix: use internalPort 9090 for cockpit, let Traefik handle routing, use interface field for SMB IP binding 2026-03-09 18:38:20 +00:00
alexz 3c438ca093 fix: remove internalPort and port binding for host network cockpit 2026-03-09 18:36:52 +00:00
alexz d6bc7128df fix: add networkMode host to cockpit service 2026-03-09 18:34:29 +00:00
alexz 4b0659bd47 fix: use quay.io/cockpit/ws correct image registry 2026-03-09 18:23:31 +00:00
alexz 2351ad84bc feat: add Cockpit web UI service to nas-samba app 2026-03-09 18:21:09 +00:00
alexz a16b5a232e fix: use variable BIND_IP in hostPort for SMB ports 2026-03-09 18:19:14 +00:00
alexz 0ffb0f7256 fix: use hostPort string format for IP binding, remove hostIp field 2026-03-09 18:18:15 +00:00
alexz 37ae3a06de Add nas-samba app 2026-03-09 18:09:37 +00:00
alexzandClaude Opus 4.6 d0ff3536d2 fix: set executable bit on shared scripts for rego-tunnel and cistech-tunnel
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 19:07:09 +00:00
alexzandClaude Opus 4.5 0104b45331 rego-tunnel: fix pipefail crash in host-routing.sh remove_all()
The nft|grep|grep|head pipeline fails when no masquerade rule exists,
causing the script to exit under set -euo pipefail. Add || true to
match the cistech-tunnel version.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 21:11:25 +00:00
alexzandClaude Opus 4.5 efc3ad00af rego-tunnel: move all scripts to dynamic mounts
- Move entrypoint.sh from build/scripts/ to shared/
- Create startup-vnc.sh in shared/ (was base64-encoded in Dockerfile)
- Remove baked-in scripts and CMD from Dockerfile (keep vnc.service unit only)
- Entrypoint now: chmod +x all shared scripts, symlinks startup-vnc.sh
  to /opt/scripts/ so systemd vnc.service still finds it
- Fix host watcher: use /bin/bash in ExecStart for permission resilience
- Bump tipi_version to 7

All scripts are now dynamically controlled via volume mounts.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 21:05:14 +00:00
alexzandClaude Opus 4.5 7ac32e9199 cistech-tunnel: use /bin/bash in ExecStart for permission resilience
Invoke host-routing.sh via /bin/bash so the watcher service works
even if the execute bit gets cleared by permission resets.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 20:51:02 +00:00
alexzandClaude Opus 4.5 cb54689e7c cistech-tunnel: auto-fix script permissions at container startup
Add chmod +x in entrypoint.sh to ensure all shared scripts are
executable even if permissions get reverted by git pull or appstore
update operations.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 20:44:33 +00:00
alexzandClaude Opus 4.5 992db16848 cistech-tunnel: remove entrypoint from docker-compose.json
Runtipi's compose generator doesn't translate the entrypoint field.
The entrypoint is instead set via user-config override.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 20:42:34 +00:00
alexzandClaude Opus 4.5 16b7a66c01 cistech-tunnel: move all scripts to dynamic mounts
- Move entrypoint.sh from build/scripts/ to shared/ (no longer baked into image)
- Add entrypoint directive to docker-compose.json pointing to /shared/entrypoint.sh
- Update entrypoint.sh to reference /shared/startup-vnc.sh instead of /opt/scripts/
- Bump tipi_version to 7

All scripts are now dynamically controlled via volume mounts from the shared/
directory. The Docker image is a clean base with only packages installed.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 20:39:20 +00:00
alexz 1def782149 Update apps/cistech-tunnel/build/Dockerfile 2026-02-04 20:29:37 +00:00
alexz 55c11cce90 Update apps/cistech-tunnel/build/Dockerfile 2026-02-04 20:29:03 +00:00
alexz ed21a14f68 Update apps/cistech-tunnel/shared/entrypoint.sh 2026-02-04 20:16:54 +00:00
alexz 004c58b445 Update apps/cistech-tunnel/shared/entrypoint.sh 2026-02-04 20:14:41 +00:00
alexzandClaude Opus 4.5 8c9ebea489 fix: Install noVNC from GitHub instead of apt package
The apt novnc package (v1.0.0) has module export issues causing
JavaScript errors. Switch to noVNC v1.4.0 from GitHub which has
proper ES6 module exports.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-18 01:04:45 +00:00
alexz 19cb09f05e . 2026-01-18 00:57:34 +00:00
alexz ae86df8732 . 2026-01-17 18:01:02 +00:00
alexz a2f0b40fa8 . 2026-01-17 17:58:31 +00:00
alexz bf60412640 Use test_connection function for keepalive check
Replaces inline ping with existing test_connection function
2026-01-17 17:57:46 +00:00
alexz 5f057c50ed Add TARGET_SUBNET to openconnect-vpn script
Derive TARGET_SUBNET from TARGET_IP (first 3 octets + .0/24)
for iptables FORWARD rules to allow full subnet routing.
2026-01-17 17:56:45 +00:00
alexz b2e38b3cb4 Derive TARGET_SUBNET dynamically from TARGET_IP
Extract first 3 octets from TARGET_IP and append .0/24
2026-01-17 17:53:34 +00:00
alexz 47e1790a8b Add TARGET_SUBNET for iptables rules with /24 CIDR
Keep TARGET_IP as single host, add hardcoded TARGET_SUBNET=10.3.1.0/24
for iptables rules and routes to allow full subnet routing.
2026-01-17 17:52:44 +00:00
alexz b67b8f18a4 Fix TARGET_IP to include /24 CIDR for iptables rules
The iptables rules were using 10.3.1.0 (single IP) instead of
10.3.1.0/24 (subnet), causing routing from other machines to fail.
2026-01-17 17:51:49 +00:00
alexz c6749fe856 refactor(cistech-tunnel): add IBMI_HOST and test_connection function
- Add hardcoded IBMI_HOST=10.3.1.201 for testing
- Create test_connection() function for reuse
- Use IBMI_HOST for connection tests and keepalive pings
- TARGET_IP still used for routing rules
2026-01-17 16:53:40 +00:00
alexz 4c7ff9d6a0 fix(cistech-tunnel): reset DNS and clean tun interface before connecting 2026-01-17 16:49:32 +00:00
alexz e93edb73af fix(cistech-tunnel): remove sudo from openconnect command - already running as root 2026-01-17 16:45:01 +00:00
alexz 9a6e2f67e6 feat(cistech-tunnel): add auto-connect, menu flag, watchdog, fix host routing
- Auto-connect on startup (skip with -m/--menu flag)
- Add VPN watchdog for auto-reconnect
- Add live TOTP display
- Fix host-routing.sh pipefail issue with grep
- Better forwarding rules similar to rego-tunnel
2026-01-17 16:40:55 +00:00
alexz 84b1eb3f5d . 2026-01-17 16:33:22 +00:00
alexz 1bd5a21a94 fix(cistech-tunnel): add sudo and system dbus for openconnect-sso 2026-01-17 16:21:26 +00:00
alexz 5c3147536c refactor(cistech-tunnel): move runtime scripts to shared folder
- Add entrypoint.sh and startup-vnc.sh to shared folder
- Override command in docker-compose.json to use /shared/entrypoint.sh
- Scripts can now be modified without rebuilding image
2026-01-17 16:10:22 +00:00
alexz 8656441976 fix(cistech-tunnel): add software rendering support for Qt WebEngine
- Add QT_QUICK_BACKEND=software, LIBGL_ALWAYS_SOFTWARE=1
- Add mesa-utils, libgl1-mesa-dri for llvmpipe software renderer
- Add missing xcb libraries (libxcb-render0, libxcb-shm0, etc.)
- Use --use-gl=swiftshader in chromium flags
2026-01-17 16:08:51 +00:00
alexz 0d52d54eed fix(cistech-tunnel): add Qt no-sandbox flags to xstartup 2026-01-17 15:59:31 +00:00
alexz 1b59e304b0 fix(cistech-tunnel): add --no-sandbox for chromium running as root 2026-01-17 15:57:53 +00:00
alexz fb915487dc fix(cistech-tunnel): add all xcb libraries for Qt6 2026-01-17 15:53:24 +00:00
alexz a3b02b694e fix(cistech-tunnel): add libxcb-cursor0 for Qt xcb plugin 2026-01-17 15:42:58 +00:00
alexz 9b2a42bdc9 fix(cistech-tunnel): add libegl1 libgl1 libopengl0 for PyQt6 WebEngine 2026-01-17 15:36:00 +00:00
alexz 98f3cc95eb . 2026-01-17 15:27:29 +00:00
alexz 12f626b088 chore: remove .github workflows 2026-01-17 15:14:03 +00:00
alexz b9b3f89910 .
Test / test (push) Has been cancelled
2026-01-17 14:35:13 +00:00
alexz 24594915a9 .
Test / test (push) Has been cancelled
2026-01-17 14:29:47 +00:00
alexz 6f6538fa73 .
Test / test (push) Has been cancelled
2026-01-17 14:25:26 +00:00
alexz 239179931c .
Test / test (push) Has been cancelled
2026-01-17 14:24:28 +00:00
alexz f1793baa57 .
Test / test (push) Has been cancelled
2026-01-17 14:23:50 +00:00
alexz 418390fe8d .
Test / test (push) Has been cancelled
2026-01-17 11:43:28 +00:00
alexzandClaude Opus 4.5 4fd8688685 revert(cistech-tunnel): restore to original working state at a7691b1
Test / test (push) Has been cancelled
- Removed shared/ folder (host routing scripts)
- Restored original config.json, docker-compose.json
- Restored original Dockerfile and entrypoint.sh

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-17 11:30:34 +00:00
alexzandClaude Opus 4.5 f410510a7f revert(cistech-tunnel): restore to working state at 5d54ed6
Test / test (push) Has been cancelled
- Removed build/ folder
- Restored source/ folder with original Dockerfile and entrypoint.sh
- Reverted config files to original working state
- Cleaned up shared/ to only contain host routing scripts

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-17 11:28:10 +00:00
alexz 274125e862 .
Test / test (push) Has been cancelled
2026-01-17 11:21:35 +00:00
alexzandClaude Opus 4.5 837dffddd5 refactor(cistech-tunnel): remove all systemd dependencies
Test / test (push) Has been cancelled
- Dockerfile: Removed systemd, systemd-sysv, network-manager packages
- Dockerfile: Removed systemd service cleanup, vnc.service, cgroup volume
- docker-compose.json/yml: Removed /sys/fs/cgroup volume mount
- Bumped tipi_version to 4

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-17 11:16:32 +00:00
alexzandClaude Opus 4.5 1ef9d21ba4 fix(cistech-tunnel): remove systemd dependency, use port 6092
Test / test (push) Has been cancelled
- entrypoint.sh: Start VNC directly instead of systemd /sbin/init
- Changed NOVNC_PORT from 6080 to 6092 everywhere
- Dockerfile: Updated EXPOSE and default NOVNC_PORT
- Bumped tipi_version to 3

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-17 11:13:54 +00:00
alexzandClaude Opus 4.5 9307cab1bb fix(cistech-tunnel): correct routing config and sync compose files
Test / test (push) Has been cancelled
- host-routing.sh: Updated to use cistech values (172.30.0.10, br-vpn-static)
- config.json: Added TARGET_IP form field, bumped tipi_version to 2
- docker-compose.json: Added TARGET_IP environment variable
- docker-compose.yml: Synced with docker-compose.json (correct image, port 6080, all env vars)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-17 11:10:59 +00:00
alexz e462edd99b .
Test / test (push) Has been cancelled
2026-01-17 10:53:29 +00:00
alexzandClaude Opus 4.5 48d0407c79 Add build.sh script for cistech-tunnel
Test / test (push) Has been cancelled
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-17 10:37:50 +00:00
alexzandClaude Opus 4.5 3c427af6fe Restructure cistech-tunnel to match rego-tunnel pattern
Test / test (push) Has been cancelled
- build/: Dockerfile + entrypoint.sh (base image with VNC/noVNC)
- shared/: Runtime scripts mounted into container
  - xstartup: VNC startup, launches openconnect-vpn in xterm
  - openconnect-vpn: Main VPN script with menu, auto-connect, watchdog
- Removed source/ folder (replaced by build/)
- Updated docker-compose.json with proper volume mounts
- Changed port to 6080 (noVNC default)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-17 10:36:41 +00:00
alexzandClaude Opus 4.5 5d54ed6f80 cistech-tunnel: Remove redundant entrypoint mount
Test / test (push) Has been cancelled
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-17 10:25:40 +00:00
alexzandClaude Opus 4.5 685488c7d4 cistech-tunnel: Mount entrypoint.sh from shared folder
Test / test (push) Has been cancelled
No more image rebuild needed for script changes.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-17 10:22:01 +00:00
alexzandClaude Opus 4.5 ec40aa2ec1 Fix cistech-tunnel: restore echo pipe in elif branch
Test / test (push) Has been cancelled
The elif branch was missing 'echo "" |' which caused openconnect-sso
to hang waiting for stdin input when OC_PASSWORD is not set.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-17 10:20:24 +00:00
alexzandClaude Opus 4.5 498926ae5d cistech-tunnel: Auto-fetch server cert, add VPN password field
Test / test (push) Has been cancelled
- entrypoint.sh: Auto-fetch pin-sha256 from VPN URL if not provided
- config.json: Remove OC_SERVERCERT (auto-fetched), add OC_PASSWORD
- docker-compose.json: Add OC_PASSWORD env var

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-17 10:12:26 +00:00
alexzandClaude Opus 4.5 046552d09a Update cistech-tunnel: proper image tag, clean Dockerfile, add TOTP field
Test / test (push) Has been cancelled
- docker-compose.json: Use git.alexzaw.dev/alexz/cistech-vpn:latest
- config.json: Add OC_TOTP_SECRET field, keep server cert as default
- Dockerfile: Remove hardcoded credentials (come from env at runtime)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-17 10:07:29 +00:00
alexzandClaude Opus 4.5 27c46542e8 Add host routing watcher for cistech-tunnel (same pattern as rego-tunnel)
Test / test (push) Has been cancelled
- Add shared/host-routing.sh with nft for NAT masquerade
- Add shared/install-host-services.sh to set up systemd watcher
- Add shared/uninstall-host-services.sh for cleanup
- Add /runtime volume mount for trigger file
- Update entrypoint.sh to trigger host routing when VPN connects

Run install-host-services.sh on host after app install.
Requires image rebuild for entrypoint changes.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-17 09:58:28 +00:00
alexz 0c952a2623 .
Test / test (push) Has been cancelled
2026-01-17 09:43:31 +00:00
alexzandClaude Opus 4.5 50cdd3ea1c Suppress noisy job control messages and ignore empty menu input
Test / test (push) Has been cancelled
- Add disown after vpnui & to suppress "killed" messages
- Ignore empty/whitespace input in menu loop
- Remove "Invalid choice" error (just ignore silently)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-17 09:38:49 +00:00
alexzandClaude Opus 4.5 7c76016fcf Fix FORWARD rules: wait for Cisco chains, then delete+reinsert at pos 1
Test / test (push) Has been cancelled
After VPN reconnects, Cisco agent creates its chains asynchronously,
pushing our ACCEPT rules down where they're ineffective. Fix:
1. Wait up to 30s for ciscovpn chain to exist
2. Delete any existing rules (they may be in wrong position)
3. Insert fresh rules at position 1

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-17 09:26:18 +00:00
alexzandClaude Opus 4.5 0dca06fbc8 Fix host routing: use nft for NAT, insert FORWARD rules before Cisco chains
Test / test (push) Has been cancelled
- host-routing.sh: Use nft instead of iptables for NAT masquerade
  (iptables-nft backend doesn't support iptables -t nat commands)
- cisco-vpn: Use -I FORWARD 1 instead of -A FORWARD to insert rules
  BEFORE Cisco VPN chains (which have catch-all DROP rules)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-17 09:21:09 +00:00
alexz 4c067c14d8 .
Test / test (push) Has been cancelled
2026-01-17 08:49:44 +00:00
alexz 529842a411 Add VPN watchdog with auto-reconnect and disable screen blanking
Test / test (push) Has been cancelled
- Added start_watchdog() function that:
  - Checks VPN every 60 seconds
  - Sends keepalive ping every 5 minutes to prevent idle timeout
  - Auto-reconnects up to 3 times if VPN drops
- Disabled screen blanking in xstartup and after VPN connects
- Removed useless monitor loop that only logged
2026-01-17 05:26:58 +00:00
alexz 99847c3ff0 Update build/README.md for current architecture
Test / test (push) Has been cancelled
2026-01-17 04:02:07 +00:00
alexz 96d4e32672 Update documentation for native Docker architecture
Test / test (push) Has been cancelled
- Rewrote description.md with current architecture
- Removed README.md (outdated Windows VM docs)
- Added install/uninstall instructions for host services
2026-01-17 04:01:14 +00:00
alexz c3581c7ecc Add install/uninstall scripts for host systemd services
Test / test (push) Has been cancelled
- install-host-services.sh: Creates watcher path/service units
- uninstall-host-services.sh: Removes units and cleans up
- Run once on host after app install
2026-01-17 03:59:06 +00:00
alexz 657081678f cisco-vpn: Remove all VM references, use container IP
Test / test (push) Has been cancelled
- Removed get_vm_bridge_ip() and get_container_gateway()
- Added get_container_ip() for eth0 (172.31.0.x network)
- Updated setup_forwarding() and show_network_status()
- No more ens3/VM references
2026-01-17 03:03:53 +00:00
alexz 89e8f5cffc host-routing.sh: Complete rewrite - simplified, no VM/redsocks
Test / test (push) Has been cancelled
- Hardcoded container IP (172.31.0.10) and bridge (br-rego-vpn)
- Simple start/stop/restart actions
- Removes stale routes before applying new ones
- Logs to /var/log/rego-routing.log
- Removed: redsocks, nft, VM subnet, container_apply
2026-01-17 02:59:34 +00:00
alexz 5e0004c0d8 .
Test / test (push) Has been cancelled
2026-01-17 02:42:09 +00:00
alexz aa071a1fdb cisco-vpn: -m flag goes straight to menu without any checks
Test / test (push) Has been cancelled
2026-01-17 02:38:38 +00:00
alexz 2b9688ce44 cisco-vpn: Fix missing ;; in case statement for menu option 1
Test / test (push) Has been cancelled
2026-01-17 02:37:39 +00:00
alexz fa398e8c86 cisco-vpn: Strip ANSI color codes from log file
Test / test (push) Has been cancelled
2026-01-17 02:36:32 +00:00
alexz c7cf401b0a cisco-vpn: Daily log rotation with 7-day retention
Test / test (push) Has been cancelled
- Logs now saved to /var/log/cisco-vpn/YYYY-MM-DD.log
- Automatic cleanup of logs older than 7 days
- Each day gets its own log file
2026-01-17 02:34:22 +00:00
alexz 38530ea0df cisco-vpn: Remove sudo (running as root) and add file logging
Test / test (push) Has been cancelled
- Removed all sudo commands since container runs as root
- Added LOG_FILE at /var/log/cisco-vpn.log
- Modified log() to write to both console and file
- Added startup logging with env var status
2026-01-17 02:33:07 +00:00
alexz c933d6e6da Fix: Import Docker env vars into VNC session
Test / test (push) Has been cancelled
Systemd services don't inherit container environment variables.
Added sourcing from /proc/1/environ in xstartup to fix this.
2026-01-17 02:19:13 +00:00
alexz e4b648e447 fix script
Test / test (push) Has been cancelled
2026-01-17 02:12:39 +00:00
alexz e5d4b4d2e5 Fix noVNC startup script: correct bash variable syntax
Test / test (push) Has been cancelled
Renovate / renovate (push) Has been cancelled
Changed ${NOVNC_PORT-:-6080} to ${NOVNC_PORT:-6080}
The extra dash was causing websockify to not start properly.
2026-01-17 01:55:18 +00:00
alexz 35e0d67446 .
Test / test (push) Has been cancelled
2026-01-17 01:08:29 +00:00