{"id":26802376,"url":"https://github.com/red5pro/terraform-digitalocean-red5pro","last_synced_at":"2026-02-25T17:25:02.316Z","repository":{"id":215316216,"uuid":"698399284","full_name":"red5pro/terraform-digitalocean-red5pro","owner":"red5pro","description":"Terraform module for Red5 Pro in Digital Ocean","archived":false,"fork":false,"pushed_at":"2025-04-22T14:41:38.000Z","size":156,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-04-22T15:44:00.331Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://www.red5.net/","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/red5pro.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-09-29T20:33:51.000Z","updated_at":"2025-04-22T14:38:34.000Z","dependencies_parsed_at":"2024-04-17T13:26:57.634Z","dependency_job_id":"f9bc823b-650b-4ee9-bb73-5b17d8bc9dc9","html_url":"https://github.com/red5pro/terraform-digitalocean-red5pro","commit_stats":null,"previous_names":["red5pro/terraform-digitalocean-red5pro"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/red5pro/terraform-digitalocean-red5pro","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/red5pro%2Fterraform-digitalocean-red5pro","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/red5pro%2Fterraform-digitalocean-red5pro/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/red5pro%2Fterraform-digitalocean-red5pro/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/red5pro%2Fterraform-digitalocean-red5pro/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/red5pro","download_url":"https://codeload.github.com/red5pro/terraform-digitalocean-red5pro/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/red5pro%2Fterraform-digitalocean-red5pro/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259299123,"owners_count":22836477,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-03-29T21:17:52.318Z","updated_at":"2026-02-25T17:24:57.292Z","avatar_url":"https://github.com/red5pro.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Digital Ocean Red5 Pro Terraform module\n[Red5 Pro](https://www.red5.net/) is a real-time video streaming server plaform known for its low-latency streaming capabilities, making it ideal for interactive applications like online gaming, streaming events and video conferencing etc.\n\nThis a reusable Terraform installer module for [Red5 Pro](https://www.red5pro.com/docs/installation/installation/do-install/) that provisions infrastucture over [Digital Ocean(DO)](https://www.digitalocean.com/).\n\n## This module has 3 variants of Red5 Pro deployments\n\n- **standalone** - Standalone Red5 Pro server\n- **cluster** - Stream Manager 2.0 cluster with autoscaling nodes\n- **autoscale** - Autoscaling Stream Managers 2.0 with autoscaling nodes\n\n---\n\n## Preparation\n\n* Install **terraform** https://developer.hashicorp.com/terraform/downloads\n  * Open your web browser and visit the [Terraform download page](https://developer.hashicorp.com/terraform/downloads), ensuring you get version 1.0.0 or higher. \n  * Download the suitable version for your operating system, \n  * Extract the compressed file, and then copy the Terraform binary to a location within your system's path\n    * Configure path on Linux/macOS \n      * Open a terminal and type the following:\n\n        ```$ sudo mv /path/to/terraform /usr/local/bin```\n    * Configure path on Windows OS\n      * Click 'Start', search for 'Control Panel', and open it.\n      * Navigate to System \u003e Advanced System Settings \u003e Environment Variables.\n      * Under System variables, find 'PATH' and click 'Edit'.\n      * Click 'New' and paste the directory location where you extracted the terraform.exe file.\n      * Confirm changes by clicking 'OK' and close all open windows.\n      * Open a new terminal and verify that Terraform has been successfully installed.\n\n* Install **Digital Ocean CLI** https://docs.digitalocean.com/reference/doctl/how-to/install/\n* Install **jq** Linux or Mac OS only - `apt install jq` or `brew install jq` (It is using in bash scripts to create/delete Stream Manager node group using API)\n* Install **bc** Linux or Mac OS only - `apt install bc` or `brew install bc` (It is using in bash scripts to create/delete Stream Manager node group using API)\n* Download Red5 Pro server build: (Example: red5pro-server-0.0.0.b0-release.zip) https://account.red5pro.com/downloads\n* Get Red5 Pro License key: (Example: 1111-2222-3333-4444) https://account.red5pro.com\n* Get Digital Ocean API key or use existing (To access Digital Ocean Cloud) \n  * Follow the documentation for generating API keys - https://docs.digitalocean.com/reference/api/create-personal-access-token/\n* Copy Red5 Pro server build to the root folder of your project\n\nExample:  \n\n```bash\ncp ~/Downloads/red5pro-server-0.0.0.b0-release.zip ./\n```\n\n## Standalone Red5 Pro server deployment (standalone) - [Example](https://github.com/red5pro/terraform-digitalocean-red5pro/tree/master/examples/standalone)\n\n### Terraform Deployed Resources (standalone)\n\n- VPC\n- Public subnet\n- Firewall for Standalone Red5 Pro server\n- SSH key pair (use existing or create a new one)\n- Standalone Red5 Pro server instance\n- SSL certificate for Standalone Red5 Pro server instance. Options:\n  - `none` - Red5 Pro server without HTTPS and SSL certificate. Only HTTP on port `5080`\n  - `letsencrypt` - Red5 Pro server with HTTPS and SSL certificate obtained by Let's Encrypt. HTTP on port `5080`, HTTPS on port `443`\n  - `imported` - Red5 Pro server with HTTPS and imported SSL certificate. HTTP on port `5080`, HTTPS on port `443`\n\n## Usage (standalone)\n\n```hcl\nprovider \"digitalocean\" {\n  token                     = \"dop_v1_example\"                                               # Digital Ocean token (https://cloud.digitalocean.com/account/api/tokens)\n}\n\nmodule \"red5pro\" {\n  source                     = \"red5pro/red5pro/digitalocean\"\n  digital_ocean_region       = \"nyc1\"                                                        # Digital Ocean region where resources will create\n  ubuntu_version             = \"22.04\"                                                       # The version of ubuntu which is used to create droplet, it can either be 20.04 or 22.04\n  type                       = \"standalone\"                                                  # Deployment type: standalone, cluster, autoscale\n  name                       = \"red5pro-standalone\"                                          # Name to be used on all the resources as identifier\n\n  # Red5 Pro artifacts configuration\n  path_to_red5pro_build       = \"./red5pro-server-0.0.0.0-release.zip\"                       # Absolute path or relative path to Red5 Pro server ZIP file\n  \n  # SSH key configuration\n  ssh_key_use_existing              = false                                                  # Use existing SSH key pair or create a new one. true = use existing, false = create new SSH key pair\n  ssh_key_name_existing             = \"example_key\"                                          # SSH key name existing in Digital Ocean\n  ssh_key_private_key_path_existing = \"/PATH/TO/EXISTING/SSH/PRIVATE/KEY/example_key.pem\"    # SSH private key path existing in local machine\n\n  # Digital Ocean project configuration\n  digital_ocean_project_use_existing  = false                                                # false - create a new project, true - use existing project\n  digital_ocean_existing_project_name = \"Exaple-Project-Name\"                                # Existing Project name in digital Ocean\n\n  # Digital Ocean VPC configuration\n  vpc_use_existing            = false                                                        # Use existing VPC or create a new one. true = use existing, false = create new\n  vpc_name_existing           = \"example-vpc\"                                                # VPC name of existing VPC if vpc_create is false\n\n  # Standalone Red5 Pro server Droplet configuration\n  standalone_server_droplet_size                 = \"c-2\"                                     # Droplet size for Red5 Pro server in Digital Ocean\n  standalone_server_reserved_ip_use_existing     = false                                     # True - Create the reserved IP for Standalone server, False - Use existing reserved IP for Standalone server\n  standalone_server_existing_reserved_ip_address = \"1.2.3.4\"                                 # Already created reserved IP address for Standalone server\n\n  # Red5Pro server configuration\n  red5pro_license_key                           = \"1111-2222-3333-4444\"                      # Red5 Pro license key (https://account.red5pro.com/login)\n  red5pro_api_enable                            = true                                       # true - enable Red5 Pro server API, false - disable Red5 Pro server API (https://www.red5pro.com/docs/development/api/overview/)\n  red5pro_api_key                               = \"examplekey\"                               # Red5 Pro server API key (https://www.red5pro.com/docs/development/api/overview/)\n\n  standalone_red5pro_inspector_enable                      = false                                      # true - enable Red5 Pro server inspector, false - disable Red5 Pro server inspector (https://www.red5pro.com/docs/troubleshooting/inspector/overview/)\n  standalone_red5pro_restreamer_enable                     = false                                      # true - enable Red5 Pro server restreamer, false - disable Red5 Pro server restreamer (https://www.red5pro.com/docs/special/restreamer/overview/)\n  standalone_red5pro_socialpusher_enable                   = false                                      # true - enable Red5 Pro server socialpusher, false - disable Red5 Pro server socialpusher (https://www.red5pro.com/docs/special/social-media-plugin/overview/)\n  standalone_red5pro_suppressor_enable                     = false                                      # true - enable Red5 Pro server suppressor, false - disable Red5 Pro server suppressor\n  standalone_red5pro_hls_enable                            = false                                      # true - enable Red5 Pro server HLS, false - disable Red5 Pro server HLS (https://www.red5pro.com/docs/protocols/hls-plugin/hls-vod/)\n  standalone_red5pro_round_trip_auth_enable                = false                                      # true - enable Red5 Pro server round trip authentication, false - disable Red5 Pro server round trip authentication (https://www.red5pro.com/docs/special/round-trip-auth/overview/)\n  standalone_red5pro_round_trip_auth_host                  = \"round-trip-auth.example.com\"              # Round trip authentication server host\n  standalone_red5pro_round_trip_auth_port                  = 3000                                       # Round trip authentication server port\n  standalone_red5pro_round_trip_auth_protocol              = \"http\"                                     # Round trip authentication server protocol\n  standalone_red5pro_round_trip_auth_endpoint_validate     = \"/validateCredentials\"                     # Round trip authentication server endpoint for validate\n  standalone_red5pro_round_trip_auth_endpoint_invalidate   = \"/invalidateCredentials\"                   # Round trip authentication server endpoint for invalidate\n\n  # Video on demand via Cloud Storage\n  standalone_red5pro_cloudstorage_enable                             = false                            # Red5 Pro server cloud storage enable/disable (https://www.red5.net/docs/special/cloudstorage-plugin/digital-ocean-storage/)\n  standalone_red5pro_cloudstorage_digitalocean_spaces_access_key     = \"\"                               # Red5 Pro server cloud storage - Digital Ocean space access key (DO Spaces)\n  standalone_red5pro_cloudstorage_digitalocean_spaces_secret_key     = \"\"                               # Red5 Pro server cloud storage - Digital Ocean space secret key (DO Spaces)\n  standalone_red5pro_cloudstorage_digitalocean_spaces_name           = \"bucket-example-name\"            # Red5 Pro server cloud storage - Digital Ocean space name (DO Spaces)\n  standalone_red5pro_cloudstorage_digitalocean_spaces_region         = \"nyc1\"                           # Red5 Pro server cloud storage - Digital Ocean space region (DO Spaces) (Valid locations are: ams3, fra1, nyc3, sfo3, sgp1)\n  standalone_red5pro_cloudstorage_postprocessor_enable               = false                            # Red5 Pro server cloud storage - enable/disable Red5 Pro server postprocessor (https://www.red5.net/docs/special/cloudstorage-plugin/server-configuration/)\n  standalone_red5pro_cloudstorage_spaces_file_access                 = true                             # true - Cloud storage files private access only   false - Cloud storage files public access\n  standalone_red5pro_cloudstorage_postprocessor_mp4_enable           = true                             # Red5 Pro server cloud storage - enable/disable Red5 Pro server postprocessor to convert flv to MP4 (https://www.red5.net/docs/protocols/converting/overview/)\n\n  # Standalone Red5 Pro server HTTPS (SSL) certificate configuration\n  https_ssl_certificate = \"none\" # none - do not use HTTPS/SSL certificate, letsencrypt - create new Let's Encrypt HTTPS/SSL certificate, imported - use existing HTTPS/SSL certificate\n\n  # # Example of Let's Encrypt HTTPS/SSL certificate configuration - please uncomment and provide your domain name and email\n  # https_ssl_certificate                       = \"letsencrypt\"\n  # https_ssl_certificate_domain_name           = \"red5pro.example.com\"\n  # https_ssl_certificate_email                 = \"email@example.com\"\n\n  # # Example of imported HTTPS/SSL certificate configuration - please uncomment and provide your domain name, certificate and key paths\n  # https_ssl_certificate                       = \"imported\"\n  # https_ssl_certificate_domain_name           = \"red5pro.example.com\"\n  # https_ssl_certificate_cert_path             = \"/PATH/TO/SSL/CERT/fullchain.pem\"\n  # https_ssl_certificate_key_path              = \"/PATH/TO/SSL/KEY/privkey.pem\"\n\n}\n\noutput \"module_output\" {\n  sensitive = true\n  value     = module.red5pro\n}\n```\n\n---\n\n## Red5 Pro Stream Manager cluster deployment (cluster) - [Example](https://github.com/red5pro/terraform-digitalocean-red5pro/tree/master/examples/cluster)\n\n- VPC\n- Public subnet\n- Firewall for Stream Manager 2.0\n- Firewall for Kafka\n- Firewall for Red5 Pro (SM2.0) Autoscaling nodes\n- SSH key pair (use existing or create a new one)\n- Standalone Kafka instance (optional).\n- Stream Manager 2.0 instance. Optionally include a Kafka server on the same instance.\n- SSL certificate for Stream Manager 2.0 instance. Options:\n  - `none` - Stream Manager 2.0 without HTTPS and SSL certificate. Only HTTP on port `80`\n  - `letsencrypt` - Stream Manager 2.0 with HTTPS and SSL certificate obtained by Let's Encrypt. HTTP on port `80`, HTTPS on port `443`\n  - `imported` - Stream Manager 2.0 with HTTPS and imported SSL certificate. HTTP on port `80`, HTTPS on port `443`\n- Red5 Pro (SM2.0) node instance image (origins, edges, transcoders, relays)\n- Red5 Pro (SM2.0) Autoscaling node group (origins, edges, transcoders, relays)\n\n## Usage (cluster)\n\n```hcl\nprovider \"digitalocean\" {\n  token                     = \"dop_v1_example\"                                               # Digital Ocean token (https://cloud.digitalocean.com/account/api/tokens)\n}   \n\nmodule \"red5pro\" {\n  source                     = \"red5pro/red5pro/digitalocean\"\n  digital_ocean_region       = \"nyc1\"                                                        # Digital Ocean region where resources will create\n  ubuntu_version             = \"22.04\"                                                       # The version of ubuntu which is used to create droplet, it can either be 20.04 or 22.04\n  type                       = \"cluster\"                                                     # Deployment type: standalone, cluster, autoscale\n  name                       = \"red5pro-cluster\"                                             # Name to be used on all the resources as identifier\n  digital_ocean_access_token = \"dop_v1_example\"                                              # Digital Ocean access token (https://cloud.digitalocean.com/account/api/tokens)\n  \n  # Red5 Pro artifacts configuration\n  path_to_red5pro_build              = \"./red5pro-server-0.0.0.0-release.zip\"                # Absolute path or relative path to Red5 Pro server ZIP file\n \n  # SSH key configuration\n  ssh_key_use_existing              = false                                                  # Use existing SSH key pair or create a new one. true = use existing, false = create new SSH key pair\n  ssh_key_name_existing             = \"example_key\"                                          # SSH key name existing in Digital Ocean\n  ssh_key_private_key_path_existing = \"/PATH/TO/EXISTING/SSH/PRIVATE/KEY/example_key.pem\"    # SSH private key path existing in local machine\n\n  # Digital Ocean project configuration\n  digital_ocean_project_use_existing  = false                                                # false - create a new project, true - use existing project\n  digital_ocean_existing_project_name = \"Exaple-Project-Name\"                                # Existing Project name in digital Ocean\n\n  # Digital Ocean VPC configuration\n  vpc_use_existing            = false                                                        # Use existing VPC or create a new one. true = use existing, false = create new\n  vpc_name_existing           = \"example-vpc\"                                                # VPC name of existing VPC if vpc_create is false\n\n  # Stream Manager Configuration\n  stream_manager_reserved_ip_use_existing     = false                                        # True - Create a reserved IP for Stream Manager, False - Use existing reserved IP for stream manager\n  stream_manager_existing_reserved_ip_address = \"1.2.3.4\"                                    # Existing reserved IP for stream manager\n  stream_manager_droplet_size                 = \"c-4\"                                        # Stream Manager droplet size\n  stream_manager_auth_user                    = \"example_user\"                               # Stream Manager 2.0 authentication user name\n  stream_manager_auth_password                = \"example_password\"                           # Stream Manager 2.0 authentication password\n  stream_manager_proxy_user       = \"example_proxy_user\"                                     # Stream Manager 2.0 proxy user name\n  stream_manager_proxy_password   = \"example_proxy_password\"                                 # Stream Manager 2.0 proxy password\n  stream_manager_spatial_user     = \"example_spatial_user\"                                   # Stream Manager 2.0 spatial user name\n  stream_manager_spatial_password = \"example_spatial_password\"                               # Stream Manager 2.0 spatial password\n  stream_manager_version          = \"latest\"                                                 # Stream Manager 2.0 docker images version (latest, 14.1.0, 14.1.1, etc.) - https://hub.docker.com/r/red5pro/as-admin/tags\n\n  # Terraform Service configuration\n  kafka_standalone_instance_create = false                                                   # true - Create a dedicate terraform service droplet, false - install terraform service locally on the stream manager                                                   # Terraform service parallelism\n  kafka_standalone_droplet_size    = \"c-4\"                                                   # Terraform service droplet size\n\n  # Red5 Pro general configuration\n  red5pro_license_key         = \"1111-2222-3333-4444\"                                        # Red5 Pro license key (https://account.red5pro.com/login)\n  red5pro_api_enable          = true                                                         # true - enable Red5 Pro server API, false - disable Red5 Pro server API (https://www.red5pro.com/docs/development/api/overview/)\n  red5pro_api_key             = \"examplekey\"                                                 # Red5 Pro server API key (https://www.red5pro.com/docs/development/api/overview/)\n\n  # Stream Manager 2.0 server HTTPS (SSL) certificate configuration\n  https_ssl_certificate = \"none\" # none - do not use HTTPS/SSL certificate, letsencrypt - create new Let's Encrypt HTTPS/SSL certificate, imported - use existing HTTPS/SSL certificate\n\n  # Example of Let's Encrypt HTTPS/SSL certificate configuration - please uncomment and provide your domain name and email\n  # https_ssl_certificate             = \"letsencrypt\"\n  # https_ssl_certificate_domain_name = \"red5pro.example.com\"\n  # https_ssl_certificate_email       = \"email@example.com\"\n\n  # Example of imported HTTPS/SSL certificate configuration - please uncomment and provide your domain name, certificate and key paths\n  # https_ssl_certificate             = \"imported\"\n  # https_ssl_certificate_domain_name = \"red5pro.example.com\"\n  # https_ssl_certificate_cert_path   = \"/PATH/TO/SSL/CERT/fullchain.pem\"\n  # https_ssl_certificate_key_path    = \"/PATH/TO/SSL/KEY/privkey.pem\"\n\n  # Red5 Pro autoscaling Origin node image configuration\n  node_image_create                                      = true                            # Default: true for Autoscaling and Cluster, true - create new Origin node image, false - not create new Origin node image\n  node_image_droplet_size                                = \"c-2\"                           # droplet type for Origin node image\n\n# Extra configuration for Red5 Pro autoscaling nodes\n  # Webhooks configuration - (Optional) https://www.red5.net/docs/special/webhooks/overview/\n  node_config_webhooks = {\n    enable           = false,\n    target_nodes     = [\"origin\", \"edge\", \"transcoder\"],\n    webhook_endpoint = \"https://test.webhook.app/api/v1/broadcast/webhook\"\n  }\n  # Round trip authentication configuration - (Optional) https://www.red5.net/docs/special/authplugin/simple-auth/\n  node_config_round_trip_auth = {\n    enable                   = false,\n    target_nodes             = [\"origin\", \"edge\", \"transcoder\"],\n    auth_host                = \"round-trip-auth.example.com\",\n    auth_port                = 443,\n    auth_protocol            = \"https://\",\n    auth_endpoint_validate   = \"/validateCredentials\",\n    auth_endpoint_invalidate = \"/invalidateCredentials\"\n  }\n  # Restreamer configuration - (Optional) https://www.red5.net/docs/special/restreamer/overview/\n  node_config_restreamer = {\n    enable               = false,\n    target_nodes         = [\"origin\", \"transcoder\"],\n    restreamer_tsingest  = true,\n    restreamer_ipcam     = true,\n    restreamer_whip      = true,\n    restreamer_srtingest = true\n  }\n  # Social Pusher configuration - (Optional) https://www.red5.net/docs/development/social-media-plugin/rest-api/\n  node_config_social_pusher = {\n    enable       = false,\n    target_nodes = [\"origin\", \"edge\", \"transcoder\"],\n  }\n\n  # Red5 Pro autoscaling Node group - (Optional)\n  node_group_create                    = true                      # Linux or Mac OS only. true - create new Node group, false - not create new Node group\n  node_group_origins_min               = 1                         # Number of minimum Origins\n  node_group_origins_max               = 20                        # Number of maximum Origins\n  node_group_origins_droplet_size      = \"c-2\"                     # Origins Instance Type\n  node_group_origins_volume_size       = 50                        # Volume size in GB for Origins\n  node_group_origins_connection_limit  = 20                        # Maximum number of publishers to the origin server\n  node_group_edges_min                 = 1                         # Number of minimum Edges\n  node_group_edges_max                 = 40                        # Number of maximum Edges\n  node_group_edges_droplet_size        = \"c-2\"                     # Edges Instance Type\n  node_group_edges_volume_size         = 50                        # Volume size in GB for Edges\n  node_group_edges_connection_limit    = 200                       # Maximum number of subscribers to the edge server\n  node_group_transcoders_min           = 0                         # Number of minimum Transcoders\n  node_group_transcoders_max           = 20                        # Number of maximum Transcoders\n  node_group_transcoders_droplet_size  = \"c-2\"                     # Transcoders Instance Type\n  node_group_transcoders_volume_size   = 50                        # Volume size in GB for Transcoders\n  node_group_transcoders_connection_limit = 20                     # Maximum number of publishers to the transcoder server\n  node_group_relays_min                = 0                         # Number of minimum Relays\n  node_group_relays_max                = 20                        # Number of maximum Relays\n  node_group_relays_droplet_size       = \"c-2\"                     # Relays Instance Type\n  node_group_relays_volume_size        = 50                        # Volume size in GB for Relays\n}\n\noutput \"module_output\" {\n  sensitive = true\n  value     = module.red5pro\n}\n```\n\n---\n\n## Red5 Pro Stream Manager cluster with Load Balancer Stream Managers (autoscale) - [Example](https://github.com/red5pro/terraform-digitalocean-red5pro/tree/master/examples/autoscale)\n\n- VPC\n- Public subnet\n- Firewall for Stream Manager 2.0\n- Firewall for Kafka\n- Firewall for Red5 Pro (SM2.0) Autoscaling nodes\n- SSH key pair (use existing or create a new one)\n- Standalone Kafka instance\n- Stream Manager 2.0 instance image\n- Instance poll for Stream Manager 2.0 instances\n- Load Balancer for Stream Manager 2.0 instances.\n- SSL certificate for Application Load Balancer. Options:\n  - Create Load Balancer with SSL\n  - Create Load Balancer without SSL\n- Red5 Pro (SM2.0) node instance image (origins, edges, transcoders, relays)\n- Red5 Pro (SM2.0) Autoscaling node group (origins, edges, transcoders, relays)\n\n## Usage (autoscale)\n\n```hcl\n\nprovider \"digitalocean\" {\n  token                     = \"dop_v1_example\"                                               # Digital Ocean token (https://cloud.digitalocean.com/account/api/tokens)\n}\n\nmodule \"red5pro\" {\n  source                     = \"red5pro/red5pro/digitalocean\"\n  digital_ocean_region       = \"nyc1\"                                                        # Digital Ocean region where resources will create\n  ubuntu_version             = \"22.04\"                                                       # The version of ubuntu which is used to create droplet, it can either be 20.04 or 22.04\n  type                       = \"autoscale\"                                                     # Deployment type: standalone, cluster, autoscale\n  name                       = \"red5pro-autoscale\"                                             # Name to be used on all the resources as identifier\n  digital_ocean_access_token = \"dop_v1_example\"                                              # Digital Ocean access token (https://cloud.digitalocean.com/account/api/tokens)\n  \n  # Red5 Pro artifacts configuration\n  path_to_red5pro_build              = \"./red5pro-server-0.0.0.0-release.zip\"                # Absolute path or relative path to Red5 Pro server ZIP file\n \n  # SSH key configuration\n  ssh_key_use_existing              = false                                                  # Use existing SSH key pair or create a new one. true = use existing, false = create new SSH key pair\n  ssh_key_name_existing             = \"example_key\"                                          # SSH key name existing in Digital Ocean\n  ssh_key_private_key_path_existing = \"/PATH/TO/EXISTING/SSH/PRIVATE/KEY/example_key.pem\"    # SSH private key path existing in local machine\n\n  # Digital Ocean project configuration\n  digital_ocean_project_use_existing  = false                                                # false - create a new project, true - use existing project\n  digital_ocean_existing_project_name = \"Exaple-Project-Name\"                                # Existing Project name in digital Ocean\n\n  # Digital Ocean VPC configuration\n  vpc_use_existing            = false                                                        # Use existing VPC or create a new one. true = use existing, false = create new\n  vpc_name_existing           = \"example-vpc\"                                                # VPC name of existing VPC if vpc_create is false\n\n  # Stream Manager Configuration\n  stream_managers_amount       = 2                                                           # Total number stream manager required to setup in autoscale\n  stream_manager_droplet_size  = \"c-4\"                                                       # Stream Manager droplet size\n  stream_manager_auth_user     = \"example_user\"                                              # Stream Manager 2.0 authentication user name\n  stream_manager_auth_password = \"example_password\"                                          # Stream Manager 2.0 authentication password\n  stream_manager_proxy_user    = \"example_proxy_user\"                                        # Stream Manager 2.0 proxy user name\n  stream_manager_proxy_password   = \"example_proxy_password\"                                 # Stream Manager 2.0 proxy password\n  stream_manager_spatial_user     = \"example_spatial_user\"                                   # Stream Manager 2.0 spatial user name\n  stream_manager_spatial_password = \"example_spatial_password\"                               # Stream Manager 2.0 spatial password\n  stream_manager_version          = \"latest\"                                                 # Stream Manager 2.0 docker images version (latest, 14.1.0, 14.1.1, etc.) - https://hub.docker.com/r/red5pro/as-admin/tags\n\n  # Terraform Service configuration\n  kafka_standalone_droplet_size    = \"c-4\"                                                   # Terraform service droplet size\n\n  # Load Balancer configuration for Stream Manager\n  create_load_balancer_with_ssl  = true                                                      # Create a new SSL certificate for Load Balancer (autoscaling)\n  load_balancer_size             = \"lb-small\"                                                # The size of the Load Balancer. It must be either lb-small, lb-medium, or lb-large  \n  load_balancer_cert_chain       = \"./chain.pem\"                                             # Only If 'lb_ssl_create' = true  File path for SSL/TLS CA Certificate chain (autoscaling)\n  load_balancer_cert_private_key = \"./privkey.pem\"                                           # Only If 'lb_ssl_create' = true  File path for SSL/TLS Certificate Private Key (autoscaling)\n  load_balancer_cert_public      = \"./cert.pem\"                                              # Only If 'lb_ssl_create' = true  File path for SSL/TLS Certificate Public Cert (autoscaling)\n\n  # Red5 Pro general configuration\n  red5pro_license_key         = \"1111-2222-3333-4444\"                                        # Red5 Pro license key (https://account.red5pro.com/login)\n  red5pro_api_enable          = true                                                         # true - enable Red5 Pro server API, false - disable Red5 Pro server API (https://www.red5pro.com/docs/development/api/overview/)\n  red5pro_api_key             = \"examplekey\"                                                 # Red5 Pro server API key (https://www.red5pro.com/docs/development/api/overview/)\n\n  # Red5 Pro autoscaling Origin node image configuration\n  node_image_create           = true                                                         # Default: true for Autoscaling and Cluster, true - create new Origin node image, false - not create new Origin node image\n  node_image_droplet_size     = \"c-2\"                                                        # droplet type for Origin node image\n\n# Extra configuration for Red5 Pro autoscaling nodes\n  # Webhooks configuration - (Optional) https://www.red5.net/docs/special/webhooks/overview/\n  node_config_webhooks = {\n    enable           = false,\n    target_nodes     = [\"origin\", \"edge\", \"transcoder\"],\n    webhook_endpoint = \"https://test.webhook.app/api/v1/broadcast/webhook\"\n  }\n  # Round trip authentication configuration - (Optional) https://www.red5.net/docs/special/authplugin/simple-auth/\n  node_config_round_trip_auth = {\n    enable                   = false,\n    target_nodes             = [\"origin\", \"edge\", \"transcoder\"],\n    auth_host                = \"round-trip-auth.example.com\",\n    auth_port                = 443,\n    auth_protocol            = \"https://\",\n    auth_endpoint_validate   = \"/validateCredentials\",\n    auth_endpoint_invalidate = \"/invalidateCredentials\"\n  }\n  # Restreamer configuration - (Optional) https://www.red5.net/docs/special/restreamer/overview/\n  node_config_restreamer = {\n    enable               = false,\n    target_nodes         = [\"origin\", \"transcoder\"],\n    restreamer_tsingest  = true,\n    restreamer_ipcam     = true,\n    restreamer_whip      = true,\n    restreamer_srtingest = true\n  }\n  # Social Pusher configuration - (Optional) https://www.red5.net/docs/development/social-media-plugin/rest-api/\n  node_config_social_pusher = {\n    enable       = false,\n    target_nodes = [\"origin\", \"edge\", \"transcoder\"],\n  }\n\n  # Red5 Pro autoscaling Node group - (Optional)\n  node_group_create                    = true                      # Linux or Mac OS only. true - create new Node group, false - not create new Node group\n  node_group_origins_min               = 1                         # Number of minimum Origins\n  node_group_origins_max               = 20                        # Number of maximum Origins\n  node_group_origins_droplet_size      = \"c-2\"                     # Origins Instance Type\n  node_group_origins_volume_size       = 50                        # Volume size in GB for Origins\n  node_group_origins_connection_limit  = 20                        # Maximum number of publishers to the origin server\n  node_group_edges_min                 = 1                         # Number of minimum Edges\n  node_group_edges_max                 = 40                        # Number of maximum Edges\n  node_group_edges_droplet_size        = \"c-2\"                     # Edges Instance Type\n  node_group_edges_volume_size         = 50                        # Volume size in GB for Edges\n  node_group_edges_connection_limit    = 200                       # Maximum number of subscribers to the edge server\n  node_group_transcoders_min           = 0                         # Number of minimum Transcoders\n  node_group_transcoders_max           = 20                        # Number of maximum Transcoders\n  node_group_transcoders_droplet_size  = \"c-2\"                     # Transcoders Instance Type\n  node_group_transcoders_volume_size   = 50                        # Volume size in GB for Transcoders\n  node_group_transcoders_connection_limit = 20                     # Maximum number of publishers to the transcoder server\n  node_group_relays_min                = 0                         # Number of minimum Relays\n  node_group_relays_max                = 20                        # Number of maximum Relays\n  node_group_relays_droplet_size       = \"c-2\"                     # Relays Instance Type\n  node_group_relays_volume_size        = 50                        # Volume size in GB for Relays\n}\n\noutput \"module_output\" {\n  sensitive = true\n  value     = module.red5pro\n}\n```\n\n---\n\n**NOTES**\n\n\u003e - WebRTC broadcast does not work in WEB browsers without an HTTPS (SSL) certificate.\n\u003e - To activate HTTPS/SSL, you need to add a DNS A record for the public IP address of your Red5 Pro server or Stream Manager 2.0.\n---\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fred5pro%2Fterraform-digitalocean-red5pro","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fred5pro%2Fterraform-digitalocean-red5pro","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fred5pro%2Fterraform-digitalocean-red5pro/lists"}