{"id":19900065,"url":"https://github.com/m-lab/epoxy","last_synced_at":"2025-05-02T22:32:10.788Z","repository":{"id":4896097,"uuid":"44538626","full_name":"m-lab/epoxy","owner":"m-lab","description":"A system for safe boot management over the Internet, based on iPXE.","archived":false,"fork":false,"pushed_at":"2025-04-13T13:45:04.000Z","size":345,"stargazers_count":3,"open_issues_count":7,"forks_count":1,"subscribers_count":9,"default_branch":"main","last_synced_at":"2025-04-19T07:46:16.902Z","etag":null,"topics":["platform"],"latest_commit_sha":null,"homepage":null,"language":"Go","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/m-lab.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":"AUTHORS","dei":null,"publiccode":null,"codemeta":null}},"created_at":"2015-10-19T13:58:48.000Z","updated_at":"2024-01-12T18:06:10.000Z","dependencies_parsed_at":"2024-01-03T20:28:44.989Z","dependency_job_id":"48a5e1ea-4839-414d-bff1-bc0bd582fd3a","html_url":"https://github.com/m-lab/epoxy","commit_stats":{"total_commits":251,"total_committers":7,"mean_commits":"35.857142857142854","dds":0.398406374501992,"last_synced_commit":"459c96b733b4d453e134bef2702651660f6a80e7"},"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/m-lab%2Fepoxy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/m-lab%2Fepoxy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/m-lab%2Fepoxy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/m-lab%2Fepoxy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/m-lab","download_url":"https://codeload.github.com/m-lab/epoxy/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251528925,"owners_count":21603903,"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":["platform"],"created_at":"2024-11-12T20:11:03.239Z","updated_at":"2025-05-02T22:32:10.771Z","avatar_url":"https://github.com/m-lab.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ePoxy\n\nA system for safe boot management over the Internet.\n\n## Building\n\nTo build the ePoxy boot server:\n\n    go get github.com/m-lab/epoxy/cmd/epoxy_boot_server\n\n## Deployment\n\nThe ePoxy server is designed to run from within a docker container. The M-Lab\ndeployment targets a stand-alone GCE VM. The cloudbuild.yaml configuration\nembeds static zones for specific regional deployments for each GCP project.\n\nBefore deploying to a new Project complete the following steps in advance:\n\n* Allocate static IP address and register DNS\n\n      PROJECT=mlab-sandbox ZONE=us-east1-c setup_epoxy_dns.sh\n\n* Allocate server certificte and key\n\n      TODO: add steps to allocate server certs.\n\n* Create GCS bucket `gs://epoxy-${PROJECT}-private` and copy server certificate\n  \u0026 key.\n\n      gsutil mb -p mlab-sandbox gs://epoxy-mlab-sandbox-private\n      gsutil cp server-certs.pem server-key.pem gs://epoxy-mlab-sandbox-private\n\n\n## Testing\n\n### Testing Server\n\nThe datastore emulator depends on the [Google Cloud\nSDK](https://cloud.google.com/sdk/downloads). After installing `gcloud`,\ninstall the datastore emulator component:\n\n    gcloud components install cloud-datastore-emulator\n\nNext, start the datastore emulator:\n\n    gcloud beta emulators datastore start\n\nLook for the `DATASTORE_EMULATOR_HOST` reported on stdout. This environment\nvariable should be set for all subsequent commands.\n\nAdd a sample Host record to the Datastore emulator:\n\n    TODO(soltesz): create command to add a minimal host record directly to DS.\n\nStart the epoxy server:\n\n    export DATASTORE_EMULATOR_HOST=\u003c ... \u003e\n    export PUBLIC_ADDRESS=localhost:8080\n    export GCLOUD_PROJECT=\"my-project\"\n    ./bin/epoxy_boot_server\n\nThe ePoxy server is now connected to the local datastore emulator, and can\nserve client requests.\n\n### Testing Client\n\nAfter starting the datastore emuulator and a local epoxy boot server, you can\nsimulate a client request using `curl`.\n\n    SERVER=localhost:8080\n    curl --dump-header - --location -XPOST --data-binary \"{}\" \\\n        https://${SERVER}/v1/boot/mlab4.iad1t.measurement-lab.org/stage1.ipxe\n\nIf the host record is found in Datastore, then a stage1 boot script should be\nreturned. If the host record is not found, then:\n\n    TODO(soltesz): handle 404 cases with a valid ipxe script.\n\nIf developing with the mlab-sandbox GCP, then verify that the deployment was\nsuccessful through travis and the AppEngine Cloud Console. Then set the SERVER\naddress for the boot-api service. For example, for mlab-sandbox, use:\n\n    SERVER=boot-api-dot-mlab-sandbox.appspot.com\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fm-lab%2Fepoxy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fm-lab%2Fepoxy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fm-lab%2Fepoxy/lists"}