Commit Graph

63 Commits

Author SHA1 Message Date
438bbccadf feat: configure Coolify to connect to internal terminal server
- Add TERMINAL_HOST and TERMINAL_PORT environment variables to Coolify app
- Configure Coolify to use dev_coolify_terminal container on port 6002
- Add dependency on coolify_terminal service with health check
- Keep terminal server internal-only without direct Traefik routing
- Coolify app will proxy /terminal/ws to internal terminal server

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-17 14:29:43 +01:00
2b5d4d527d fix: use coolify-realtime image without path stripping for terminal 2025-11-17 14:21:41 +01:00
7fd0199e1a feat: strip /terminal/ws prefix before routing to soketi 2025-11-17 14:18:25 +01:00
0e5b539936 fix: remove path stripping from terminal router 2025-11-17 14:15:51 +01:00
f95a3ff143 fix: use standard soketi image for terminal on port 6002 2025-11-17 14:13:39 +01:00
710222e705 feat: add dedicated terminal service on port 6002 with path stripping 2025-11-17 14:10:29 +01:00
48fd6f87fe revert: restore working soketi configuration 2025-11-17 14:04:48 +01:00
eb10348988 fix: merge terminal into single coolify_soketi container with dual ports 2025-11-17 13:40:33 +01:00
417fbb6ff1 feat: configure Coolify to use terminal server internally 2025-11-17 13:35:23 +01:00
3050bbb859 feat: add dedicated coolify_terminal service for port 6002 2025-11-17 13:31:00 +01:00
6f1cce8c88 fix: remove unnecessary volumes and env vars from soketi 2025-11-17 13:28:09 +01:00
8e6c73f82d feat: use coolify-realtime image for port 6002 support 2025-11-17 13:27:24 +01:00
85ef8ecb36 feat: add terminal WebSocket router on port 6002 2025-11-17 13:25:48 +01:00
d812ede999 revert: restore original soketi configuration 2025-11-17 13:23:59 +01:00
fc23e22112 fix: use CMD-SHELL for soketi healthcheck with && 2025-11-17 13:21:13 +01:00
84c9d91bcf fix: remove explicit service link from soketi router 2025-11-17 13:19:34 +01:00
96004a38c2 fix: add path prefix stripping for terminal WebSocket
- Add stripprefix middleware to remove /terminal prefix
- Route /terminal/ws to /ws on terminal server (port 6002)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-17 13:13:21 +01:00
cd47bce06b fix: use coolify-realtime image with terminal WebSocket support
- Switch from standard soketi to coolify-realtime:1.0.10 image
- Add SSH volume mount for terminal functionality
- Update health check to verify both ports 6001 and 6002
- Add explicit service link for realtime HTTPS router

This fixes both realtime WebSocket and terminal/ws functionality.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-17 13:10:08 +01:00
d90f0179df feat: route Coolify terminal WebSocket to Soketi port 6002
- Move /terminal/ws routing from main Coolify container to Soketi
- Configure Traefik to route terminal WebSocket traffic to port 6002
- Add high priority (100) to ensure path matching
- Based on official Coolify docker-compose.prod.yml configuration

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-17 13:04:08 +01:00
27c3218784 fix: map /terminal/ws path to port 6002
Route terminal WebSocket to port 6002 on Coolify container
as requested.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-17 12:58:35 +01:00
1af4ec5fca fix: add dedicated router for terminal WebSocket without compression
The terminal WebSocket is served by main Coolify on port 8080.
Create separate router with priority 100 for /terminal/ws path
without compression middleware which blocks WebSocket upgrades.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-17 12:56:34 +01:00
4dee03dd86 fix: use direct container URL for terminal WebSocket routing
Route to dev_coolify_soketi container via URL instead of port-only,
which allows Traefik to reach the correct container.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-17 12:49:27 +01:00
d1357206e8 fix: route terminal WebSocket to Soketi container port 6001
Terminal WebSocket should connect through the Soketi/realtime
container which handles Pusher protocol on port 6001.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-17 12:49:07 +01:00
f36c10a5b4 feat: add Traefik route for terminal WebSocket path
Route /terminal/ws to port 6002 on Coolify container
Set priority 100 to take precedence over main router

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-17 12:47:02 +01:00
41841f800e fix: remove terminal-specific routing (handled by main router)
The /terminal/ws endpoint is part of the main Coolify application
on port 8080, not a separate service. WebSocket requests should go
through the main router automatically.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-17 12:41:44 +01:00
251ea6b775 feat: add Traefik route for Coolify terminal WebSocket
- Route /terminal/ws path to port 6002 on Coolify container
- Enable WebSocket terminal functionality in Coolify UI
- Path-based routing on main domain

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-17 12:39:56 +01:00
22deecdbe8 revert: remove terminal port 6002 configuration
Port 6002 is not active in default Coolify deployment.
Terminal functionality appears to work through main port 8080
or requires additional configuration not documented.

Need to investigate Coolify terminal enablement further.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-17 12:37:08 +01:00
46105b1f25 feat: enable Coolify terminal interface
- Add Traefik routing for terminal service on port 6002
- Accessible at terminal.coolify.dev.pivoine.art
- Enable web-based terminal access for deployments

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-17 12:35:08 +01:00
94a8df8fa1 refactor: simplify Coolify realtime subdomain
Change from coolify-realtime.coolify.dev.pivoine.art
to realtime.coolify.dev.pivoine.art for cleaner URLs

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-17 12:28:36 +01:00
102484d88c fix: remove unused Coolify mail env vars, use database config
Coolify stores SMTP settings in the database (instance_settings table)
rather than reading from environment variables.

SMTP settings configured directly in database:
- smtp_enabled: true
- smtp_host: net_mailpit
- smtp_port: 1025
- smtp_from_address: hi@pivoine.art
- smtp_from_name: Coolify

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-17 11:48:32 +01:00
ab1d350af3 feat: enable email notifications in Coolify
- Add MAIL_MAILER=smtp to use SMTP transport
- Configure MAIL_HOST and MAIL_PORT to use Mailpit relay
- Set MAIL_FROM_ADDRESS and MAIL_FROM_NAME for sender info
- No encryption/auth needed for internal Mailpit relay

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-17 11:40:55 +01:00
26fa1be36c feat: enable email notifications in Gitea
- Add ENABLE_NOTIFY_MAIL: true to enable email notifications
- Set DEFAULT_EMAIL_NOTIFICATIONS: enabled as default for users
- Uses existing Mailpit mail relay configuration

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-17 08:01:21 +01:00
ffbcecc09d feat: replace Basic Auth with Authelia
Replace HTTP Basic Auth with Authelia ForwardAuth for consistent
authentication across infrastructure:

- Asciinema Admin (admin.asciinema.dev.pivoine.art): Removed Basic Auth,
  added Authelia protection
- FaceFusion (facefusion.ai.pivoine.art): Removed Basic Auth, added
  Authelia protection

Updated Authelia access control to include both services with one_factor
policy.

All services now use Authelia for authentication, eliminating the need
to manage separate Basic Auth credentials.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-15 21:54:27 +01:00
b19afa6a04 fix: move Gitea APP_NAME to root level config 2025-11-15 19:18:24 +01:00
eb61a9971c feat: set Gitea APP_NAME to dev.pivoine.art 2025-11-15 19:16:38 +01:00
56a8f2d6a3 feat: add custom Gitea landing page and re-enable public access
- Disable REQUIRE_SIGNIN_VIEW to allow public landing page
- Mount custom templates directory
- Add custom home.tmpl with simple welcome page and sign-in button
- Remove default Gitea promotional content

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-15 19:00:37 +01:00
c57897652e feat: set Gitea default theme to edge-dark and require sign-in
- Change default theme from gitea-dark to edge-dark
- Enable REQUIRE_SIGNIN_VIEW to hide landing page from anonymous users

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-15 18:56:33 +01:00
51267cc674 feat: add Mailpit SMTP relay and migrate all services
- Add Mailpit service to NET stack with web UI at mailpit.pivoine.art
- Configure Mailpit to relay all emails through IONOS SMTP
- Migrate all 11+ services to use Mailpit instead of direct IONOS SMTP:
  * SEXY: Directus API
  * UTIL: Joplin, Mattermost, Vaultwarden, Tandoor, Linkwarden
  * DEV: Gitea, n8n, Asciinema
  * AI: Open WebUI
  * NET: Netdata (via msmtp)
- Centralize SMTP credentials in mailpit-relay.yaml
- Simplify service configs (no auth/TLS for internal SMTP)
- Enable email monitoring via Mailpit web UI with Basic Auth

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-15 18:34:38 +01:00
b5eec43304 feat: add runner config to mount Docker socket in job containers 2025-11-15 17:39:04 +01:00
808044bc2e fix: use catthehacker/ubuntu images with Docker for Gitea runner 2025-11-15 17:32:10 +01:00
c78ffb953a fix: mount Docker binary in Gitea runner for Docker commands 2025-11-15 17:31:01 +01:00
3dab00b6d4 fix: add privileged mode to Gitea runner for Docker access 2025-11-15 17:30:18 +01:00
c506a92800 feat: move asciinema to dev stack under asciinema.dev.pivoine.art
- Moved asciinema service from standalone stack to dev/compose.yaml
- Updated hostname from asciinema.pivoine.art to asciinema.dev.pivoine.art
- Updated environment variables to use DEV_ASCIINEMA_ prefix
- Updated restic backup volume reference (asciinema_data -> dev_asciinema_data)
- Moved custom.exs to dev/asciinema-custom.exs
- Removed standalone asciinema/compose.yaml directory
- Container name changes from asciinema_app to dev_asciinema
- Volume name changes from asciinema_data to dev_asciinema_data
- Preserved admin interface at admin.asciinema.dev.pivoine.art with Basic Auth

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-15 16:34:28 +01:00
4f01e01cae feat: move n8n to dev stack under n8n.dev.pivoine.art
- Moved n8n service from standalone stack to dev/compose.yaml
- Updated hostname from n8n.pivoine.art to n8n.dev.pivoine.art
- Updated environment variables to use DEV_N8N_ prefix
- Updated restic backup volume reference (n8n_n8n_data -> dev_n8n_data)
- Removed standalone n8n/compose.yaml
- Container name changes from n8n_app to dev_n8n
- Volume name changes from n8n_n8n_data to dev_n8n_data

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-15 16:28:15 +01:00
91fd8be904 refactor: consolidate WebSocket config to PUSHER_* variables
- Change PUSHER_HOST to public URL (coolify-realtime.coolify.dev.pivoine.art)
- Update PUSHER_PORT from 6001 to 443 (HTTPS)
- Add PUSHER_SCHEME=https
- Remove VITE_PUSHER_* variables (redundant)
- Change label quotes from single to double

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-15 14:48:36 +01:00
5a42268369 feat: add VITE_PUSHER environment variables for frontend WebSocket
Configure browser to connect to Soketi via HTTPS through Traefik:
- VITE_PUSHER_HOST: coolify-realtime.coolify.dev.pivoine.art
- VITE_PUSHER_PORT: 443
- VITE_PUSHER_SCHEME: https

This fixes the 'Cannot connect to real-time service' warning.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-15 14:39:06 +01:00
ab632fd054 feat: expose Soketi WebSocket server via Traefik
Add Traefik labels to Soketi to make it accessible at
coolify-realtime.coolify.dev.pivoine.art for browser WebSocket connections

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-15 14:05:44 +01:00
8a1eee975f fix: update Soketi healthcheck to use 127.0.0.1 instead of localhost
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-15 13:56:37 +01:00
44ecff89c8 fix: use correct Coolify port 8080 for Traefik routing 2025-11-15 13:32:44 +01:00
3ff112ccb3 fix: use shared core PostgreSQL for Coolify instead of separate instance 2025-11-15 13:31:05 +01:00