{"id":51116555,"url":"https://github.com/oracle-devrel/terraform-oci-cloud-camera","last_synced_at":"2026-06-24T22:30:36.256Z","repository":{"id":44624575,"uuid":"454539531","full_name":"oracle-devrel/terraform-oci-cloud-camera","owner":"oracle-devrel","description":"Cloud camera processing environment in OCI","archived":false,"fork":false,"pushed_at":"2025-01-21T20:17:33.000Z","size":93,"stargazers_count":2,"open_issues_count":1,"forks_count":0,"subscribers_count":4,"default_branch":"main","last_synced_at":"2026-04-21T15:31:52.257Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"HCL","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"upl-1.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/oracle-devrel.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-02-01T20:25:58.000Z","updated_at":"2025-01-21T20:17:37.000Z","dependencies_parsed_at":"2024-05-16T17:29:49.337Z","dependency_job_id":"bf0734b3-c6f9-401a-b4dd-3b3597d99c7d","html_url":"https://github.com/oracle-devrel/terraform-oci-cloud-camera","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":"oracle-devrel/repo-template","purl":"pkg:github/oracle-devrel/terraform-oci-cloud-camera","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oracle-devrel%2Fterraform-oci-cloud-camera","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oracle-devrel%2Fterraform-oci-cloud-camera/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oracle-devrel%2Fterraform-oci-cloud-camera/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oracle-devrel%2Fterraform-oci-cloud-camera/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/oracle-devrel","download_url":"https://codeload.github.com/oracle-devrel/terraform-oci-cloud-camera/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oracle-devrel%2Fterraform-oci-cloud-camera/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34752465,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-24T02:00:07.484Z","response_time":106,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":"2026-06-24T22:30:36.201Z","updated_at":"2026-06-24T22:30:36.251Z","avatar_url":"https://github.com/oracle-devrel.png","language":"HCL","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Example environment for cloud camera processing.\n\n[![License: UPL](https://img.shields.io/badge/license-UPL-green)](https://img.shields.io/badge/license-UPL-green) [![Quality gate](https://sonarcloud.io/api/project_badges/quality_gate?project=oracle-devrel_terraform-oci-cloud-camera)](https://sonarcloud.io/dashboard?id=oracle-devrel_terraform-oci-cloud-camera)\n\n## Introduction\nThis is a really basic topology for having an OCI Compute instance setup with a GUI and VLC.  From there, the possibilities are pretty endless... receive a stream, forward it on, save the stream, etc.  This is the basic environment for other potential future projects that work with camera feeds from embedded systems (such as Raspberry Pis, ESP32s, etc.).\n\nHere's an overview of some of the big points for the OCI Compute instance in this example:\n* GUI installed\n* VNC installed\n* VLC installed\n* Firewalld disabled\n* SELinux disabled\n* Password for OPC configured (so that if the GUI locks, it can be unlocked)\n\nAs far as specific Network Security Group policies, here's a highlight (see `nsg.tf` for more info):\n* Outbound HTTPS is permitted\n* Inbound UDP on the service port is permitted for the CIDRs in `var.permitted_access_cidrs`\n* All inbound ICMP is permitted for the CIDRs in `var.permitted_access_cidrs`\n* All inbound UDP is permitted for the CIDRs in `var.permitted_access_cidrs`\n\nIt's pretty basic, but provides a solid foundation for future iteration and work in handling video feeds.\n\n## Getting Started\nYou must have an OCI account.  [Click here](https://www.oracle.com/cloud/free/?source=:ex:tb:::::WWMK220120P00033\u0026SC=:ex:tb:::::WWMK220120P00033\u0026pcode=WWMK220120P00033) to create a new cloud account.\n\nThere are a couple of options for deploying this project:\n* Oracle Cloud Resource Manager\n* Terraform CLI\n* Oracle Cloud Shell\n\nIt might seem odd and counter-productive to set a password for the `opc` user account. Since you'll be accessing the instance via a GUI, this password is largely available for if/when the screen might lock and you need to unlock it.\n\n### Oracle Cloud Resource Manager\nThis is really easy to do!  Simply click [![Deploy to Oracle Cloud](https://oci-resourcemanager-plugin.plugins.oci.oraclecloud.com/latest/deploy-to-oracle-cloud.svg)](https://cloud.oracle.com/resourcemanager/stacks/create?region=home\u0026zipUrl=https://github.com/oracle-devrel/terraform-oci-cloud-camera/releases/latest/download/terraform-oci-cloud-camera-orm.zip) and follow the on-screen prompts.\n\nMake sure to apply the stack, by either checking the box during its creation (see next image) or manually after it is created:\n\n![Run apply after stack creation](./docs/orm.png)\n\nAfter you apply the stack, to see the output variables, from within the ORM Stack, click on *Jobs* and then click on the name of the Apply job that was created.  Click on *Outputs* to see the different outputs.\n\n### Terraform CLI\nClone this repo:\n\n```\ngit clone https://github.com/oracle-devrel/terraform-oci-cloud-camera\n```\n\nCopy `terraform.tfvars.template` to `terraform.tfvars`, then modify the contents (fill-in-the-blanks for your tenancy).\n\nRun `terraform init`.  Review what Terraform thinks should be done by running `terraform plan` and if you're satisified with it, then run `terraform apply`.\n\n### Oracle Cloud Shell\nFollow the same directions used for Terraform CLI (above), however you'll need to modify the contents of the `provider.tf` file first.  Look at the comment blocks, commenting out the lines used for Terraform CLI and uncommenting the line(s) needed for Cloud Shell.  Once this is done, proceed with the same steps (`terraform init`, `terraform plan` and then `terraform apply` if you're happy with what it's proposing be done).\n\n## Usage\nOnce the project is deployed, you will want to SSH to the Compute instance.  Here's what you'll want to do:\n\n1. SSH to Compute instance (make sure to forward port `tcp/5901`).\n    On MacOS, a command like `ssh opc@\u003cpub_ip\u003e -L 5901:localhost:5901` would work.  Note that the command is given in the outputs (available via all deployment methods).\n2. Wait until cloud-init is finished.\n    You can monitor it with: `sudo tail -f /var/log/cloud-init-output.log`.  Once it says that it's complete, continue on (otherwise it'll still be processing and not quite ready).\n3. Connect via VNC to the Compute instance.\n    Use your favorite VNC viewer to connect to the Compute instance.  Because you've redirected/forwarded port 5901 from the Compute instance (you've deployed) to your local system (also on port 5901), you'll need to connect to your `localhost` on port 5901.\n    \n    As an example, on MacOS, you might go to `Finder` \u003e `Go` \u003e `Connect to Server...`, then enter the correct path (this is also provided as an output when running Terraform to deploy the project): `vnc://localhost:5901`.\n3. Enter the VNC password you specified (the `vnc_passwd` Terraform variable) to connect to VNC.\n\nCongratulations - you're connected and ready to have fun with it!\n\n### Prerequisites\nYou must have an OCI account.  [Click here](https://www.oracle.com/cloud/free/?source=:ex:tb:::::WWMK220120P00033\u0026SC=:ex:tb:::::WWMK220120P00033\u0026pcode=WWMK220120P00033) to create a new cloud account.\n\n## Requirements\n\n| Name | Version |\n|------|---------|\n| \u003ca name=\"requirement_terraform\"\u003e\u003c/a\u003e [terraform](#requirement\\_terraform) | \u003e= 1.0.0 |\n\n## Providers\n\n| Name | Version |\n|------|---------|\n| \u003ca name=\"provider_oci\"\u003e\u003c/a\u003e [oci](#provider\\_oci) | 4.60.0 |\n| \u003ca name=\"provider_oci.home\"\u003e\u003c/a\u003e [oci.home](#provider\\_oci.home) | 4.60.0 |\n| \u003ca name=\"provider_random\"\u003e\u003c/a\u003e [random](#provider\\_random) | 3.1.0 |\n\n## Modules\n\nNo modules.\n\n## Resources\n\n| Name | Type |\n|------|------|\n| [oci_core_instance.cloud_camera](https://registry.terraform.io/providers/hashicorp/oci/latest/docs/resources/core_instance) | resource |\n| [oci_core_internet_gateway.this](https://registry.terraform.io/providers/hashicorp/oci/latest/docs/resources/core_internet_gateway) | resource |\n| [oci_core_network_security_group.cloud_camera](https://registry.terraform.io/providers/hashicorp/oci/latest/docs/resources/core_network_security_group) | resource |\n| [oci_core_network_security_group_security_rule.inbound_icmp](https://registry.terraform.io/providers/hashicorp/oci/latest/docs/resources/core_network_security_group_security_rule) | resource |\n| [oci_core_network_security_group_security_rule.inbound_udp_all](https://registry.terraform.io/providers/hashicorp/oci/latest/docs/resources/core_network_security_group_security_rule) | resource |\n| [oci_core_network_security_group_security_rule.inbound_udp_feed](https://registry.terraform.io/providers/hashicorp/oci/latest/docs/resources/core_network_security_group_security_rule) | resource |\n| [oci_core_network_security_group_security_rule.outbound_https](https://registry.terraform.io/providers/hashicorp/oci/latest/docs/resources/core_network_security_group_security_rule) | resource |\n| [oci_core_route_table.public](https://registry.terraform.io/providers/hashicorp/oci/latest/docs/resources/core_route_table) | resource |\n| [oci_core_subnet.this](https://registry.terraform.io/providers/hashicorp/oci/latest/docs/resources/core_subnet) | resource |\n| [oci_core_vcn.this](https://registry.terraform.io/providers/hashicorp/oci/latest/docs/resources/core_vcn) | resource |\n| [oci_identity_tag.release](https://registry.terraform.io/providers/hashicorp/oci/latest/docs/resources/identity_tag) | resource |\n| [oci_identity_tag_namespace.devrel](https://registry.terraform.io/providers/hashicorp/oci/latest/docs/resources/identity_tag_namespace) | resource |\n| [random_id.tag](https://registry.terraform.io/providers/hashicorp/random/latest/docs/resources/id) | resource |\n| [oci_core_images.latest_ol8](https://registry.terraform.io/providers/hashicorp/oci/latest/docs/data-sources/core_images) | data source |\n| [oci_core_images.specified](https://registry.terraform.io/providers/hashicorp/oci/latest/docs/data-sources/core_images) | data source |\n| [oci_core_images.this](https://registry.terraform.io/providers/hashicorp/oci/latest/docs/data-sources/core_images) | data source |\n| [oci_identity_availability_domains.ads](https://registry.terraform.io/providers/hashicorp/oci/latest/docs/data-sources/identity_availability_domains) | data source |\n| [oci_identity_region_subscriptions.home_region_subscriptions](https://registry.terraform.io/providers/hashicorp/oci/latest/docs/data-sources/identity_region_subscriptions) | data source |\n\n## Inputs\n\n| Name | Description | Type | Default | Required |\n|------|-------------|------|---------|:--------:|\n| \u003ca name=\"input_compartment_ocid\"\u003e\u003c/a\u003e [compartment\\_ocid](#input\\_compartment\\_ocid) | The compartment OCID to deploy resources to | `string` | `\"\"` | no |\n| \u003ca name=\"input_compute_image_name\"\u003e\u003c/a\u003e [compute\\_image\\_name](#input\\_compute\\_image\\_name) | The name of the compute image to use for the compute instances. | `string` | `\"\"` | no |\n| \u003ca name=\"input_compute_shape\"\u003e\u003c/a\u003e [compute\\_shape](#input\\_compute\\_shape) | See https://docs.oracle.com/en-us/iaas/Content/Compute/References/computeshapes.htm for the different compute shapes available. | `string` | `\"VM.Standard.A1.Flex\"` | no |\n| \u003ca name=\"input_fingerprint\"\u003e\u003c/a\u003e [fingerprint](#input\\_fingerprint) | 'API Key' fingerprint, more details can be found at https://docs.cloud.oracle.com/en-us/iaas/Content/General/Concepts/credentials.htm#two | `string` | `\"\"` | no |\n| \u003ca name=\"input_opc_passwd\"\u003e\u003c/a\u003e [opc\\_passwd](#input\\_opc\\_passwd) | The password to use for the opc OL8 account. | `string` | n/a | yes |\n| \u003ca name=\"input_permitted_access_cidrs\"\u003e\u003c/a\u003e [permitted\\_access\\_cidrs](#input\\_permitted\\_access\\_cidrs) | The CIDR block(s) permitted to access the server | `list(string)` | n/a | yes |\n| \u003ca name=\"input_private_key\"\u003e\u003c/a\u003e [private\\_key](#input\\_private\\_key) | The private key (provided as a string value) | `string` | `\"\"` | no |\n| \u003ca name=\"input_private_key_password\"\u003e\u003c/a\u003e [private\\_key\\_password](#input\\_private\\_key\\_password) | The password to use for the private key | `string` | `\"\"` | no |\n| \u003ca name=\"input_private_key_path\"\u003e\u003c/a\u003e [private\\_key\\_path](#input\\_private\\_key\\_path) | Path to private key used to create OCI 'API Key', more details can be found at https://docs.cloud.oracle.com/en-us/iaas/Content/General/Concepts/credentials.htm#two | `string` | `\"\"` | no |\n| \u003ca name=\"input_region\"\u003e\u003c/a\u003e [region](#input\\_region) | OCI Region as documented at https://docs.cloud.oracle.com/en-us/iaas/Content/General/Concepts/regions.htm | `string` | `\"us-phoenix-1\"` | no |\n| \u003ca name=\"input_ssh_pub_key\"\u003e\u003c/a\u003e [ssh\\_pub\\_key](#input\\_ssh\\_pub\\_key) | The SSH public key contents to use for the compute instances. | `string` | `\"\"` | no |\n| \u003ca name=\"input_ssh_pub_key_path\"\u003e\u003c/a\u003e [ssh\\_pub\\_key\\_path](#input\\_ssh\\_pub\\_key\\_path) | The path to the SSH public key to use for the compute instances. | `string` | `\"\"` | no |\n| \u003ca name=\"input_tenancy_ocid\"\u003e\u003c/a\u003e [tenancy\\_ocid](#input\\_tenancy\\_ocid) | OCI tenant OCID, more details can be found at https://docs.cloud.oracle.com/en-us/iaas/Content/API/Concepts/apisigningkey.htm#five | `any` | n/a | yes |\n| \u003ca name=\"input_udp_service_port\"\u003e\u003c/a\u003e [udp\\_service\\_port](#input\\_udp\\_service\\_port) | The UDP port to use for streaming | `number` | `8100` | no |\n| \u003ca name=\"input_user_ocid\"\u003e\u003c/a\u003e [user\\_ocid](#input\\_user\\_ocid) | OCI user OCID, more details can be found at https://docs.cloud.oracle.com/en-us/iaas/Content/API/Concepts/apisigningkey.htm#five | `string` | `\"\"` | no |\n| \u003ca name=\"input_vnc_passwd\"\u003e\u003c/a\u003e [vnc\\_passwd](#input\\_vnc\\_passwd) | The password to use for connecting to the VNC session. | `string` | n/a | yes |\n\n## Outputs\n\n| Name | Description |\n|------|-------------|\n| \u003ca name=\"output_pub_ip\"\u003e\u003c/a\u003e [pub\\_ip](#output\\_pub\\_ip) | n/a |\n| \u003ca name=\"output_ssh_with_vnc_cmd\"\u003e\u003c/a\u003e [ssh\\_with\\_vnc\\_cmd](#output\\_ssh\\_with\\_vnc\\_cmd) | n/a |\n| \u003ca name=\"output_ssh_cmd\"\u003e\u003c/a\u003e [ssh\\_cmd](#output\\_ssh\\_cmd) | n/a |\n\n## Notes/Issues\nNone at this time.\n\n## URLs\n* https://support.oracle.com/knowledge/Oracle%20Linux%20and%20Virtualization/457458_1.html\n\n## Contributing\nThis project is open source.  Please submit your contributions by forking this repository and submitting a pull request!  Oracle appreciates any contributions that are made by the open source community.\n\n## License\nCopyright (c) 2024 Oracle and/or its affiliates.\n\nLicensed under the Universal Permissive License (UPL), Version 1.0.\n\nSee [LICENSE](LICENSE.txt) for more details.\n\nORACLE AND ITS AFFILIATES DO NOT PROVIDE ANY WARRANTY WHATSOEVER, EXPRESS OR IMPLIED, FOR ANY SOFTWARE, MATERIAL OR CONTENT OF ANY KIND CONTAINED OR PRODUCED WITHIN THIS REPOSITORY, AND IN PARTICULAR SPECIFICALLY DISCLAIM ANY AND ALL IMPLIED WARRANTIES OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.  FURTHERMORE, ORACLE AND ITS AFFILIATES DO NOT REPRESENT THAT ANY CUSTOMARY SECURITY REVIEW HAS BEEN PERFORMED WITH RESPECT TO ANY SOFTWARE, MATERIAL OR CONTENT CONTAINED OR PRODUCED WITHIN THIS REPOSITORY. IN ADDITION, AND WITHOUT LIMITING THE FOREGOING, THIRD PARTIES MAY HAVE POSTED SOFTWARE, MATERIAL OR CONTENT TO THIS REPOSITORY WITHOUT ANY REVIEW. USE AT YOUR OWN RISK. ","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foracle-devrel%2Fterraform-oci-cloud-camera","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foracle-devrel%2Fterraform-oci-cloud-camera","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foracle-devrel%2Fterraform-oci-cloud-camera/lists"}