# Apache VirtualHost config for Cathode # Drop in /etc/apache2/sites-available/cathode.conf # Enable with: sudo a2ensite cathode # # Required modules: # sudo a2enmod ssl proxy proxy_http proxy_wstunnel rewrite headers # # For TLS certs use certbot: # sudo certbot --apache -d cathode.example.com # HTTP → HTTPS redirect ServerName cathode.example.com Redirect permanent / https://cathode.example.com/ ServerName cathode.example.com # TLS (certbot will fill these in, or provide your own) SSLEngine on SSLCertificateFile /etc/letsencrypt/live/cathode.example.com/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/cathode.example.com/privkey.pem # Modern TLS SSLProtocol -all +TLSv1.2 +TLSv1.3 SSLHonorCipherOrder off # Serve Cathode static files DocumentRoot /var/www/cathode Options -Indexes +FollowSymLinks AllowOverride None Require all granted # Proxy WeeChat relay API — REST and WebSocket # WeeChat listens on localhost:9000 — adjust if needed # Enable proxy for this vhost ProxyRequests off # WebSocket proxy: must come before the plain HTTP proxy rule # Apache uses mod_proxy_wstunnel for WebSocket upgrades RewriteEngine on RewriteCond %{HTTP:Upgrade} =websocket [NC] RewriteRule ^/api(.*) ws://localhost:9000/api$1 [P,L] # Plain HTTP proxy for REST requests to /api ProxyPass /api http://localhost:9000/api ProxyPassReverse /api http://localhost:9000/api # Pass real client IP ProxyPreserveHost on RequestHeader set X-Real-IP "%{REMOTE_ADDR}s" # Timeouts for long-lived WebSocket connections ProxyTimeout 3600 # Security headers Header always set X-Content-Type-Options "nosniff" Header always set X-Frame-Options "DENY" Header always set Referrer-Policy "strict-origin-when-cross-origin" # Logging ErrorLog ${APACHE_LOG_DIR}/cathode_error.log CustomLog ${APACHE_LOG_DIR}/cathode_access.log combined # ── Local / LAN setup (no domain, plain HTTP) ──────────────────────────────── # If you're on a LAN without a domain, use this simpler block. # Cathode connect screen: uncheck TLS, use ws:// (port 8080 here). # # # DocumentRoot /var/www/cathode # # Options -Indexes # Require all granted # # # ProxyRequests off # RewriteEngine on # RewriteCond %{HTTP:Upgrade} =websocket [NC] # RewriteRule ^/api(.*) ws://localhost:9000/api$1 [P,L] # ProxyPass /api http://localhost:9000/api # ProxyPassReverse /api http://localhost:9000/api # ProxyTimeout 3600 #