{"id":30184405,"url":"https://github.com/nextlevelshit/malta-digital-independence-workshop","last_synced_at":"2025-08-12T12:07:44.959Z","repository":{"id":309411104,"uuid":"1035933589","full_name":"nextlevelshit/malta-digital-independence-workshop","owner":"nextlevelshit","description":"Technical setup for a Workshop in Digital Indepence for Malta's Science in the City Festival 2025 https://scienceinthecity.org.mt/","archived":false,"fork":false,"pushed_at":"2025-08-11T17:56:22.000Z","size":22,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-11T19:42:50.448Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Nix","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/nextlevelshit.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,"zenodo":null}},"created_at":"2025-08-11T10:07:04.000Z","updated_at":"2025-08-11T17:56:25.000Z","dependencies_parsed_at":"2025-08-11T19:42:53.706Z","dependency_job_id":"438d2194-87ec-405d-b3d6-c779959906ac","html_url":"https://github.com/nextlevelshit/malta-digital-independence-workshop","commit_stats":null,"previous_names":["nextlevelshit/malta-digital-independence-workshop"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/nextlevelshit/malta-digital-independence-workshop","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nextlevelshit%2Fmalta-digital-independence-workshop","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nextlevelshit%2Fmalta-digital-independence-workshop/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nextlevelshit%2Fmalta-digital-independence-workshop/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nextlevelshit%2Fmalta-digital-independence-workshop/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nextlevelshit","download_url":"https://codeload.github.com/nextlevelshit/malta-digital-independence-workshop/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nextlevelshit%2Fmalta-digital-independence-workshop/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270057798,"owners_count":24519528,"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","status":"online","status_checked_at":"2025-08-12T02:00:09.011Z","response_time":80,"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":"2025-08-12T12:07:43.663Z","updated_at":"2025-08-12T12:07:44.947Z","avatar_url":"https://github.com/nextlevelshit.png","language":"Nix","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🍪 CODE CRISPIES Workshop Infrastructure\n\nThis repository contains the infrastructure for the Co-op Cloud workshop, providing three distinct deployment environments.\n\n---\n## 🚀 Quick Start\n\n```bash\n# 1. Start the local development virtual machine\nmake local-vm-run\n\n# 2. Build \u0026 flash USB drives for participants\nmake build-usb\nmake flash-usb USB_DEVICE=/dev/sdX\n\n# 3. Deploy the production cloud infrastructure\nexport HCLOUD_TOKEN=\"your_token_here\"\nmake deploy-cloud\n````\n\n-----\n\n## 📁 Project Structure\n\n```\n├── flake.nix              # All Nix configurations (USB, VM)\n├── terraform/             # Hetzner Cloud infrastructure\n├── scripts/deploy.sh      # Cloud setup automation\n├── docs/USB_BOOT_INSTRUCTIONS.md\n└── Makefile              # Build \u0026 deploy commands\n```\n\n-----\n\n## 🌍 Three Environments\n\n### 1\\. Cloud (Production)\n\n  - [cite\\_start]**What:** Hetzner VMs named `hopper.codecrispi.es`, `curie.codecrispi.es`, etc. [cite: 52]\n  - **Purpose:** The live environment for workshop participants.\n\n### 2\\. USB Boot (Workshop)\n\n  - [cite\\_start]**What:** A bootable NixOS live environment. [cite: 4]\n  - **Purpose:** Used by participants to connect to their cloud servers. [cite\\_start]It includes helper functions like `connect hopper`. [cite: 12]\n\n### 3\\. Local (Development)\n\n  - **What:** A self-contained Virtual Machine (VM) that runs on your local computer.\n  - **Purpose:** The VM hosts simulated participant containers (e.g., `hopper.local`) and includes a lightweight desktop with a web browser, providing a perfect, isolated environment to test the entire workshop flow without needing cloud servers.\n\n-----\n\n## 🔧 Local Development Workflow\n\n1.  **Start the VM**\n    Run the following command. A new window will open and automatically boot into a lightweight desktop.\n\n    ```bash\n    make local-vm-run\n    ```\n\n2.  **Work Inside the VM**\n    All testing is now done inside the VM's graphical desktop.\n\n      * Open the **Terminal** to run commands.\n      * Open **Firefox** to view the deployed web applications.\n\n3.  **Example: Deploying WordPress**\n\n      * **In the VM's Terminal**, get a root shell and SSH into the first participant's container:\n        ```bash\n        # Become root (no password needed)\n        sudo -i\n\n        # Connect to participant 1 (hopper.local)\n        ssh root@192.168.100.11\n        ```\n      * **Inside the container**, deploy a WordPress site with `abra`:\n        ```bash\n        abra app new wordpress -S --domain=blog.hopper.local\n        abra app deploy blog.hopper.local\n        ```\n      * **In the VM's Firefox**, navigate to the address `http://blog.hopper.local`. You will see the WordPress installation screen.\n\n-----\n\n## 🧹 Cleanup\n\n```bash\n# Clean local build artifacts\nmake clean\n\n# Destroy Hetzner cloud infrastructure\nmake destroy-cloud\n\n# To stop the local VM, simply close its window.\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnextlevelshit%2Fmalta-digital-independence-workshop","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnextlevelshit%2Fmalta-digital-independence-workshop","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnextlevelshit%2Fmalta-digital-independence-workshop/lists"}