Commit Graph

19 Commits

Author SHA1 Message Date
be146b2bb5 fix: add extra_hosts for smtp.ionos.de to asciinema
Force IONOS SMTP server IP (213.165.67.97) in /etc/hosts
to bypass potential DNS resolution issues.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-09 04:05:00 +01:00
143e102154 fix: simplify asciinema SMTP configuration
Removed unnecessary SMTP settings that were causing issues:
- URL_PORT (not needed)
- SMTP_AUTH (default behavior)
- SMTP_RETRIES (default behavior)
- SMTP_NO_MX_LOOKUPS (causing connection issues)
- MAIL_REPLY_TO_ADDRESS (not essential)
- UNCLAIMED_RECORDING_TTL (not essential)

Using minimal working SMTP configuration.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-09 04:00:10 +01:00
c3a8b55a58 fix: set SMTP_NO_MX_LOOKUPS to false
Email delivery still failing with true, trying false.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-09 03:33:20 +01:00
be6ab97e56 test: change SMTP_NO_MX_LOOKUPS to true
Testing with MX lookups disabled (true).

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-09 03:31:14 +01:00
1bbe3085a7 test: add SMTP_NO_MX_LOOKUPS=false to asciinema config
Testing with MX lookups disabled (false).

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-09 03:30:05 +01:00
a9327650b3 fix: remove extra SMTP settings from asciinema config
Removed SMTP_NO_MX_LOOKUPS and SMTP_ALLOWED_TLS_VERSIONS settings
that were added during troubleshooting. Using only basic SMTP
configuration that works for other services (mattermost, tandoor).

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-09 03:23:11 +01:00
98db62b07b fix: change SMTP_AUTH from login to always
SMTP_AUTH must be 'always', 'never', or 'if_available', not 'login'.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-09 03:12:50 +01:00
8ece868a45 fix: add SMTP_AUTH and SMTP_ALLOWED_TLS_VERSIONS
Added SMTP_AUTH: login and SMTP_ALLOWED_TLS_VERSIONS to help
with SSL handshake on port 465.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-09 03:10:43 +01:00
7799bb2a82 fix: use SMTP_SSL without SMTP_TLS for port 465
For implicit SSL on port 465, we need SMTP_SSL: true and should
NOT set SMTP_TLS (which is for STARTTLS on port 587).
Added SMTP_NO_MX_LOOKUPS to skip MX record lookups.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-09 03:06:26 +01:00
958891d4be fix: revert to use EMAIL_SMTP_PORT from .env
Reverted to use ${EMAIL_SMTP_PORT} from .env (port 465) since
this configuration works for other services.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-09 03:04:09 +01:00
042fd5ccd8 fix: switch to port 587 with STARTTLS for IONOS SMTP
Port 465 with implicit SSL is not working. Switching to port 587
with STARTTLS (SMTP_TLS: always) which is more compatible with
Swoosh SMTP adapter.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-09 03:01:35 +01:00
64f22a2822 fix: add SMTP SSL verification and MX lookup settings
Added SMTP_NO_MX_LOOKUPS, SMTP_TLS_VERIFY_HOST, and
SMTP_TLS_VERIFY_CERT settings to fix SSL connection issues
with IONOS SMTP on port 465.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-09 02:59:45 +01:00
bb3bab937b fix: remove colon from SMTP_TLS value
Environment variables are strings. Use 'never' not ':never' so
the Elixir code can convert it to an atom properly.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-09 02:57:29 +01:00
c4a1a44bae fix: set SMTP_TLS to :never for Elixir atom
SMTP_TLS must be an Elixir atom (:never, :always, or :if_available).
Using :never for implicit SSL on port 465.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-09 02:55:54 +01:00
20458cda6a fix: set SMTP_TLS false and SMTP_SSL true for port 465
IONOS SMTP on port 465 uses implicit SSL, not STARTTLS.
Set SMTP_TLS: false and SMTP_SSL: true.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-09 02:54:17 +01:00
339073ab5a fix: use SMTP_TLS instead of SMTP_SSL for asciinema
Port 465 requires implicit TLS, not SSL. Changed SMTP_SSL to SMTP_TLS
with value 'always' and added SMTP_AUTH: always.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-09 02:53:41 +01:00
74e5d071a3 fix: configure asciinema SMTP with EMAIL_FROM and disable signup
- Add EMAIL_FROM to arty.yml environment defaults
- Configure asciinema to use EMAIL_FROM for MAIL_FROM_ADDRESS
- Set SMTP_SSL to true for IONOS SMTP on port 465
- Set SIGN_UP_DISABLED default to false (will enable after admin creation)
- Follow netdata compose.yaml pattern for Traefik labels
- Add proper HTTP to HTTPS redirect middlewares
- Configure compression and security headers

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-09 02:50:40 +01:00
dc0bc061f8 fix: use compose_network for asciinema stack
Changed network reference from ${NETWORK_NAME} variable to hardcoded
compose_network to fix deployment issue where arty doesn't export
environment variables to docker compose.

Changes:
- Network: ${NETWORK_NAME} → compose_network
- Removed external network declaration (inherited from root)

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-09 02:10:00 +01:00
c0611cb04f feat: add Asciinema terminal recording server stack
Added new asciinema stack for self-hosted terminal recording and sharing
platform with custom "Pivoine" theme inspired by pivoine.art aesthetic.

New Services:
- **asciinema**: Terminal recording server at asciinema.pivoine.art
  - PostgreSQL backend for recording persistence
  - Email authentication via IONOS SMTP magic links
  - Public/private recording visibility controls
  - Embed recordings on any website
  - Custom rose/magenta themed UI

Custom Theme (asciinema/theme/custom.css):
- Primary color: RGB(206, 39, 91) - Deep rose/magenta
- Dark charcoal backgrounds: HSL(0, 0%, 17.5%)
- High contrast design with bold color accents
- Styled components: navigation, cards, forms, buttons, terminal player
- Smooth animations and hover effects
- Responsive design with mobile breakpoints
- Custom scrollbars, selection colors, loading states

Infrastructure Updates:
- PostgreSQL: Added `asciinema` database to init script
- arty.yml: Added ASCIINEMA_* environment variables
- compose.yaml: Included asciinema stack in root composition
- CLAUDE.md: Comprehensive documentation with CLI setup guide
- Backup: Added asciinema-backup plan (11 AM daily, 7d/4w/6m/2y retention)

Configuration:
- URL: https://asciinema.pivoine.art
- Database: PostgreSQL `asciinema` database
- SMTP: Email auth via IONOS SMTP
- Unclaimed TTL: 30 days (auto-cleanup)
- Secret: Generated 64-char hex key in .env

Features:
- Record terminal sessions with asciinema CLI
- Web player with play/pause controls and speed adjustment
- User profiles with personal recording collections
- Embed recordings via iframe or direct links
- Privacy controls (public/private recordings)
- Automatic cleanup of unclaimed recordings

Integration Points:
- Documentation: Embed terminal demos
- Blog posts: Share command-line tutorials
- GitHub: Link recordings in README files
- Tutorials: Interactive terminal walkthroughs

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-09 02:00:20 +01:00