Skip to content

Add support for adding new Nextcloud domains to existing HPB installa…#1

Open
warioishere wants to merge 4 commits intomainfrom
claude/add-nextcloud-domains-01PZtxy6FGr3hrRbpeXsEDKF
Open

Add support for adding new Nextcloud domains to existing HPB installa…#1
warioishere wants to merge 4 commits intomainfrom
claude/add-nextcloud-domains-01PZtxy6FGr3hrRbpeXsEDKF

Conversation

@warioishere
Copy link
Owner

@warioishere warioishere commented Nov 21, 2025

This change makes the setup script re-runnable and adds the capability to add new Nextcloud domains to an existing High-Performance Backend setup without regenerating existing secrets.

Key features:

  • Detection of existing HPB installation
  • ADD_DOMAINS_MODE to preserve existing configuration and secrets
  • Parsing of existing domains and secrets from configuration files
  • Generation of new secrets only for newly added domains
  • Appending new domains to existing secrets file with timestamp
  • Support for both interactive and unattended modes
  • Automatic detection of previously installed services

Changes made:

  1. setup-nextcloud-hpb.sh:

    • Added is_hpb_installed() to detect existing installation
    • Added parse_existing_domains() to extract existing Nextcloud domains
    • Added parse_existing_secrets() to load existing domain secrets
    • Added parse_existing_global_secrets() to load Janus/TURN/hash/block keys
    • Added ADD_DOMAINS_MODE flag and detection logic in main()
    • Modified show_dialogs() to display existing domains when adding new ones
    • Auto-detect SERVER_FQDN from existing configuration in ADD_DOMAINS_MODE
    • Skip service selection dialog in ADD_DOMAINS_MODE
    • Prevent overwriting secrets file header in ADD_DOMAINS_MODE
  2. src/setup-signaling.sh:

    • Modified signaling_step4() to handle existing + new domains
    • Preserve existing secrets for existing domains
    • Generate new secrets only for new domains
    • Modified signaling_write_secrets_to_file() to append new domains with timestamp instead of overwriting entire file
  3. src/setup-collabora.sh:

    • Modified collabora_step4() to include existing domains when regenerating Collabora configuration with new domains
  4. settings.sh:

    • Added ADD_DOMAINS_MODE configuration option with documentation

Usage:

  • Fresh install: Run script normally
  • Add domains: Run script again, it will detect existing installation and prompt to add new domains, preserving all existing secrets
  • Unattended add: Set ADD_DOMAINS_MODE=true in settings file

The secrets file now maintains a complete history with new domains appended at the end with timestamps for easy tracking.

…tion

This change makes the setup script re-runnable and adds the capability to
add new Nextcloud domains to an existing High-Performance Backend setup
without regenerating existing secrets.

Key features:
- Detection of existing HPB installation
- ADD_DOMAINS_MODE to preserve existing configuration and secrets
- Parsing of existing domains and secrets from configuration files
- Generation of new secrets only for newly added domains
- Appending new domains to existing secrets file with timestamp
- Support for both interactive and unattended modes
- Automatic detection of previously installed services

Changes made:
1. setup-nextcloud-hpb.sh:
   - Added is_hpb_installed() to detect existing installation
   - Added parse_existing_domains() to extract existing Nextcloud domains
   - Added parse_existing_secrets() to load existing domain secrets
   - Added parse_existing_global_secrets() to load Janus/TURN/hash/block keys
   - Added ADD_DOMAINS_MODE flag and detection logic in main()
   - Modified show_dialogs() to display existing domains when adding new ones
   - Auto-detect SERVER_FQDN from existing configuration in ADD_DOMAINS_MODE
   - Skip service selection dialog in ADD_DOMAINS_MODE
   - Prevent overwriting secrets file header in ADD_DOMAINS_MODE

2. src/setup-signaling.sh:
   - Modified signaling_step4() to handle existing + new domains
   - Preserve existing secrets for existing domains
   - Generate new secrets only for new domains
   - Modified signaling_write_secrets_to_file() to append new domains
     with timestamp instead of overwriting entire file

3. src/setup-collabora.sh:
   - Modified collabora_step4() to include existing domains when
     regenerating Collabora configuration with new domains

4. settings.sh:
   - Added ADD_DOMAINS_MODE configuration option with documentation

Usage:
- Fresh install: Run script normally
- Add domains: Run script again, it will detect existing installation
  and prompt to add new domains, preserving all existing secrets
- Unattended add: Set ADD_DOMAINS_MODE=true in settings file

The secrets file now maintains a complete history with new domains
appended at the end with timestamps for easy tracking.
Users can now choose which specific service(s) to add new Nextcloud
domains to when re-running the script on an existing installation.

Features:
- New interactive dialog to select services (Signaling, Collabora, or both)
- ADD_DOMAINS_TO_SIGNALING flag for selective Signaling domain addition
- ADD_DOMAINS_TO_COLLABORA flag for selective Collabora domain addition
- Clear logging and separation in secrets file by service
- Unattended mode support with validation

Use cases:
1. Add domain only to Talk (Signaling): User wants video calls but not Office
2. Add domain only to Office (Collabora): User wants document editing but not Talk
3. Add domain to both: Full feature access for new Nextcloud instance

Changes made:
1. setup-nextcloud-hpb.sh:
   - Added ADD_DOMAINS_TO_SIGNALING and ADD_DOMAINS_TO_COLLABORA flags
   - Added HAS_SIGNALING_INSTALLED and HAS_COLLABORA_INSTALLED detection
   - Added dynamic service selection dialog in ADD_DOMAINS_MODE
   - Added validation for unattended mode to require at least one service
   - Improved logging to distinguish between services

2. src/setup-signaling.sh:
   - Modified signaling_step4() to only process when ADD_DOMAINS_TO_SIGNALING=true
   - Updated domain skip logic to be signaling-specific
   - Updated signaling_write_secrets_to_file() to label as "SIGNALING"

3. src/setup-collabora.sh:
   - Modified collabora_step4() to only process when ADD_DOMAINS_TO_COLLABORA=true
   - Updated collabora_write_secrets_to_file() to append new domains
     with service label "COLLABORA"

4. settings.sh:
   - Added ADD_DOMAINS_TO_SIGNALING configuration option
   - Added ADD_DOMAINS_TO_COLLABORA configuration option
   - Added documentation for selective service targeting

Example unattended usage:
  ADD_DOMAINS_MODE=true
  ADD_DOMAINS_TO_SIGNALING=true
  ADD_DOMAINS_TO_COLLABORA=false
  NEXTCLOUD_SERVER_FQDNS="talk-only.example.com"

The secrets file now clearly shows which service each domain was added to:
  === New Nextcloud Domains Added to SIGNALING 2025-11-21 ===
  === New Nextcloud Domains Added to COLLABORA 2025-11-21 ===
Enables per-customer resource limits (video quality, bitrate, concurrent
sessions) for shared HPB infrastructure. Perfect for SaaS/rental business
models where multiple customers share one VPS.

Features:
- Four preset tiers: Budget, Standard, Premium, Unlimited
- Interactive tier selection per domain during setup
- Unattended mode support via NEXTCLOUD_SERVER_TIERS setting
- Automatic limit application in signaling backend config
- Tier tracking in secrets file for easy management

Tier definitions:
1. Budget (SD 480p):
   - 10 concurrent sessions
   - 500 Kbps video stream limit
   - 750 Kbps screen share limit
   - Best for: Small teams, cost-conscious customers

2. Standard (HD 720p):
   - 20 concurrent sessions
   - 1000 Kbps (1 Mbps) video stream limit
   - 1500 Kbps screen share limit
   - Best for: Medium businesses, balanced quality/cost

3. Premium (Full HD 1080p):
   - 40 concurrent sessions
   - 2000 Kbps (2 Mbps) video stream limit
   - 2500 Kbps screen share limit
   - Best for: Large organizations, quality-focused

4. Unlimited (No Limits):
   - 0 = unlimited sessions
   - 0 = no bitrate restrictions
   - Best for: Enterprise customers, premium pricing

Benefits:
- Multi-tenancy: 50-70 customers on one 6c/8GB VPS (vs 30-40 unlimited)
- Fair usage: Prevents one customer from monopolizing resources
- Revenue optimization: Upsell tiers, charge based on quality
- Resource protection: Predictable capacity planning
- SLA compliance: Guaranteed resources per tier

Technical implementation:
1. setup-nextcloud-hpb.sh:
   - Added NEXTCLOUD_SERVER_TIERS variable
   - Added get_tier_limits() function with tier definitions
   - Added ask_tier_selection() for interactive mode
   - Parse tier array from comma-separated setting
   - Ensure tier for each domain (defaults to 'standard')

2. src/setup-signaling.sh:
   - Added SIGNALING_NC_SERVER_TIER associative array
   - Apply tier limits during domain processing
   - Uncomment limit lines in config when non-zero
   - Include tier name in secrets file output
   - Track tier alongside secrets for management

3. settings.sh:
   - Added NEXTCLOUD_SERVER_TIERS configuration option
   - Documented all tier specifications
   - Example usage for unattended mode

Usage examples:

Interactive mode (fresh install):
  sudo ./setup-nextcloud-hpb.sh
  # Script prompts for tier per domain

Interactive mode (add domains):
  sudo ./setup-nextcloud-hpb.sh
  # Script detects existing HPB, offers to add domains
  # Prompts for tier for each new domain

Unattended mode:
  # settings.sh
  NEXTCLOUD_SERVER_FQDNS="customer1.com,customer2.com,customer3.com"
  NEXTCLOUD_SERVER_TIERS="budget,standard,premium"
  sudo ./setup-nextcloud-hpb.sh settings.sh

Configuration output (/etc/nextcloud-spreed-signaling/server.conf):
  [nextcloud-backend-0]
  url = https://customer1.com
  secret = abc123...
  sessionlimit = 10
  maxstreambitrate = 500000
  maxscreenbitrate = 750000

Secrets file output:
  === Signaling / Nextcloud Talk ===
  ...
   - customer1.com  -> abc123... (Tier: Budget (SD 480p))
   - customer2.com  -> def456... (Tier: Standard (HD 720p))
   - customer3.com  -> ghi789... (Tier: Premium (Full HD 1080p))

This feature enables profitable multi-tenant HPB hosting with
fair resource allocation and revenue optimization.
Added detailed step-by-step German customer guide for setting up
Nextcloud Talk and Office after purchasing an HPB subscription.

Features:
- Complete setup instructions for Talk (video conferencing)
- Complete setup instructions for Office (document editing)
- Troubleshooting section with common problems and solutions
- Tier-specific information (Budget/Standard/Premium/Unlimited)
- Security best practices
- Mobile app information
- Support contact template

Structure:
1. Overview and credentials explanation
2. Part 1: Nextcloud Talk setup (STUN/TURN + Signaling)
3. Part 2: Nextcloud Office setup (Collabora)
4. Testing instructions
5. Optional advanced settings
6. Package information and limits
7. FAQ / Troubleshooting
8. Support contact information
9. Security notes
10. Mobile apps section

The guide is written in clear, customer-friendly German language
suitable for non-technical users running a rental/SaaS HPB business.

Perfect for:
- Email attachment after customer signup
- Support knowledge base
- Self-service documentation
- Reducing support tickets
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants