{"id":24811118,"url":"https://github.com/thin-edge/tedge-demo-container","last_synced_at":"2025-08-22T23:20:31.258Z","repository":{"id":153865145,"uuid":"622964424","full_name":"thin-edge/tedge-demo-container","owner":"thin-edge","description":"thin-edge.io demo container setup to showcase thin-edge.io and all its features","archived":false,"fork":false,"pushed_at":"2025-01-30T14:08:38.000Z","size":364,"stargazers_count":4,"open_issues_count":2,"forks_count":3,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-03-25T13:25:53.740Z","etag":null,"topics":["thin-edge"],"latest_commit_sha":null,"homepage":"","language":"RobotFramework","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/thin-edge.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2023-04-03T12:26:25.000Z","updated_at":"2025-01-30T14:04:47.000Z","dependencies_parsed_at":"2023-11-22T22:22:43.038Z","dependency_job_id":"c4706a6c-5ec3-465d-aaa7-5223e988d68b","html_url":"https://github.com/thin-edge/tedge-demo-container","commit_stats":null,"previous_names":[],"tags_count":50,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thin-edge%2Ftedge-demo-container","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thin-edge%2Ftedge-demo-container/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thin-edge%2Ftedge-demo-container/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thin-edge%2Ftedge-demo-container/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thin-edge","download_url":"https://codeload.github.com/thin-edge/tedge-demo-container/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248449950,"owners_count":21105590,"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":["thin-edge"],"created_at":"2025-01-30T12:19:26.328Z","updated_at":"2025-08-22T23:20:31.252Z","avatar_url":"https://github.com/thin-edge.png","language":"RobotFramework","funding_links":[],"categories":[],"sub_categories":[],"readme":"# tedge-demo-container\n\nthin-edge.io demo container setup to showcase thin-edge.io and all its features\n\n## Pre-requisites\n\nThe following pre-requisites are required before you can get started:\n\n* docker\n* docker compose v2 (not the python one)\n\nCheck out the list of [known working setups](./docs/USER_GUIDE.md#known-working-environments) to see what software you can use for your Operating Systemd to meet the pre-requisites.\n\n## Starting a demo container using go-c8y-cli\n\nIf you're a Cumulocity user, then you can use the [Cumulocity CLI tool, go-c8y-cli](https://goc8ycli.netlify.app/) and the thin-edge.io extension for it ([c8y-tedge](https://github.com/thin-edge/c8y-tedge)), to quickly launch demo containers without having to checkout this project.\n\nFirst, you'll need to install go-c8y-cli (in addition to having docker and docker compose already installed):\n\n* [Install go-c8y-cli](https://goc8ycli.netlify.app/docs/installation/)\n\nThen, install the [c8y-tedge](https://github.com/thin-edge/c8y-tedge) extension:\n\n```sh\nc8y extensions install thin-edge/c8y-tedge\n\n# or update it to the latest version\nc8y extensions update tedge\n```\n\nLaunch a new container demo using (note: this will also open your web browser to the device after it is onboarded):\n\n```sh\nc8y tedge demo start mydemo01\n```\n\nLike most cli commands, you can view extra options by looking at the help, using the `--help` flag on any given command.\n\n```sh\nc8y tedge demo start --help\n```\n\nAfterwards, you can stop the demo and delete the related devices in the cloud using:\n\n```sh\nc8y tedge demo stop\n```\n\n## Getting started\n\n1. Download the docker compose file from the repository\n\n    ```sh\n    curl -LSs https://raw.githubusercontent.com/thin-edge/tedge-demo-container/main/demos/docker-compose/device/docker-compose.yaml \u003e docker-compose.yaml\n    ```\n\n    Or alternatively you can download it using `wget`\n\n    ```sh\n    wget https://raw.githubusercontent.com/thin-edge/tedge-demo-container/main/demos/docker-compose/device/docker-compose.yaml\n    ```\n\n2. Start the docker-compose project (in the background)\n\n    ```sh\n    docker compose up -d\n    ```\n\n3. Bootstrap the device\n\n    ```sh\n    docker compose exec tedge bootstrap.sh\n    ```\n\n4. Click on the link to your tedge device which is shown on the console\n\n\nCheck out the [USER GUIDE](./docs/USER_GUIDE.md) for more details on other commands that can be run.\n\n**Note**\n\nThe tedge container has the following default SSH user which can be used with the SSH protocol of the Cumulocity IoT Cloud Remote Access (CRA) feature.\n\n|Property|Value|\n|--------|-----|\n|SSH User|iotadmin|\n|SSH Password|iotadmin|\n\n## Building the project yourself\n\nThe project also includes another docker-compose file to build the project locally. This allows you to manually tweak any of the container images to add/remove things as you see fit.\n\nAfter you have cloned the project you still need to install, [just](https://github.com/casey/just). `just` is used as the project's task runner to simplify the commands required during development. Check out their [installation instructions](https://just.systems/man/en/chapter_1.html) to see how to install it on your machine.\n\nOnce you have [just](https://github.com/casey/just) installed, you can proceed with the following instructions:\n\n1. Create the `.env` template file\n\n    ```sh\n    just create-env\n    ```\n\n    Fill in the values for each of the environment variables in the [.env](./.env) file. Whilst the settings in the `.env` file are not mandatory, it does allow you to set sensible defaults for your setup so that you don't have to enter your username or Cumulocity URL multiple times during the bootstrapping phase.\n\n2. Start the docker compose project (this will also build the containers)\n\n    ```sh\n    just up\n    ```\n\n3. Bootstrap the main device (don't worry you only have to do this once)\n\n    ```sh\n    just bootstrap\n    ```\n\n    You will be prompted for the required details. You can hit `\u003center\u003e` to accept the default values. The default values are provided via the `.env` file from the first step.\n\n    Alternatively, if you're a [go-c8y-cli](https://goc8ycli.netlify.app/) user, and have the [c8y-tedge](https://github.com/thin-edge/c8y-tedge) extension installed, then you can bootstrap the device using:\n\n    ```sh\n    just bootstrap-c8y\n    ```\n\n4. Click on the device link shown on your console\n\n5. That's it 🚀\n\n## Running Tests\n\nIntegration tests are included in the demo to ensure that everything is working as it should. The tests can be run using the following steps:\n\n1. Edit the `.env` file and add the following environment variables\n\n    ```sh\n    DEVICE_ID=tedge_unique_name_abcdef\n    C8Y_BASEURL=example.tenant.c8y.io\n    C8Y_USER=myuser@example.com\n    C8Y_PASSWORD=\"your_password\"\n    ```\n\n2. Start the demo and bootstrap it\n\n    ```sh\n    just up\n    just bootstrap --no-prompt\n    ```\n\n3. Run the tests\n\n    ```sh\n    just test\n    ```\n\n## What is included?\n\nThe following features are covered by the demo.\n\n**Main device**\n\n* [x] Availability Monitoring\n* [x] Configuration management\n* [x] mqtt-logger (to better understand what messages are going in and out)\n* [x] Device reboot\n* [x] Device Profile\n* [x] Firmware Update (simulated)\n* [x] Log management\n    * [x] log files\n* [x] Remote Access\n    * [x] SSH\n* [x] Services\n    * [x] tedge services\n* [x] Shell\n* [x] Software management\n    * [x] apt\n    * [x] container (docker, docker-compose)\n* [x] Telemetry\n    * [x] Measurements (via collectd)\n    * [x] Events\n        * [x] On boot-up service: sends an event on startup\n\n**Child devices**\n\n* [x] Availability Monitoring\n* [x] Configuration management\n* [x] Device reboot\n* [x] Device Profile\n* [x] Firmware Update (simulated)\n* [x] Log management\n    * [x] log files\n* [x] Services\n    * [x] tedge services\n* [x] Shell\n* [x] Software management\n    * [x] apk (Alpine based image)\n    * [x] apt (Debian based image)\n\n## Known issues\n\nThere are currently no known issues.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthin-edge%2Ftedge-demo-container","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthin-edge%2Ftedge-demo-container","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthin-edge%2Ftedge-demo-container/lists"}