├── .gitignore ├── azure └── .gitignore ├── digitalocean └── .gitignore ├── aws └── .gitignore ├── googlecloud ├── .gitignore └── solution.yaml ├── README.md ├── Makefile ├── packer.json └── LICENSE /.gitignore: -------------------------------------------------------------------------------- 1 | *~ 2 | .DS_Store 3 | -------------------------------------------------------------------------------- /azure/.gitignore: -------------------------------------------------------------------------------- 1 | client_secret 2 | -------------------------------------------------------------------------------- /digitalocean/.gitignore: -------------------------------------------------------------------------------- 1 | api_token 2 | -------------------------------------------------------------------------------- /aws/.gitignore: -------------------------------------------------------------------------------- 1 | *access_key 2 | *secret_access_key 3 | -------------------------------------------------------------------------------- /googlecloud/.gitignore: -------------------------------------------------------------------------------- 1 | nkn-dev.json 2 | nkn-public.json 3 | nkn-testnet.json 4 | package 5 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Scripts to automatically build NKN full node image on DigitalOcean, Google Cloud 2 | using [packer](https://www.packer.io) 3 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | BUILD=packer build 2 | TEMPLATE=packer.json 3 | GC_LICENSE=/projects/nkn-public/global/licenses/nkn-full-node 4 | 5 | .PHONY: do 6 | do: 7 | $(BUILD) -only=digitalocean \ 8 | -var 'do_api_token=$(shell cat digitalocean/api_token)' \ 9 | $(TEMPLATE) 10 | 11 | .PHONY: gc-dev 12 | gc-dev: 13 | $(BUILD) -only=googlecompute \ 14 | -var 'gc_project_id=nkn-dev' \ 15 | -var 'gc_license=$(GC_LICENSE)' \ 16 | -var 'gc_account_file=googlecloud/nkn-dev.json' \ 17 | -var 'gc_zone=us-west1-a' \ 18 | $(TEMPLATE) 19 | 20 | .PHONY: gc-public 21 | gc-public: 22 | $(BUILD) -only=googlecompute \ 23 | -var 'gc_project_id=nkn-public' \ 24 | -var 'gc_license=$(GC_LICENSE)' \ 25 | -var 'gc_account_file=googlecloud/nkn-public.json' \ 26 | -var 'gc_zone=us-west1-a' \ 27 | $(TEMPLATE) 28 | 29 | .PHONY: gc-package 30 | gc-package: 31 | rm -rf googlecloud/package 32 | docker run --rm --workdir /mounted \ 33 | --mount type=bind,source="$(shell pwd)",target=/mounted \ 34 | --user $(shell id -u):$(shell id -g) gcr.io/cloud-marketplace-tools/dm/autogen \ 35 | --input_type YAML --single_input googlecloud/solution.yaml \ 36 | --output_type PACKAGE --output googlecloud/package 37 | cd googlecloud/package && zip --exclude "*.DS_Store*" --exclude "*__MACOSX*" -r package.zip * 38 | 39 | .PHONY: aws 40 | aws: 41 | $(BUILD) -only=amazon-ebs \ 42 | -var 'aws_access_key=$(shell cat aws/access_key)' \ 43 | -var 'aws_secret_access_key=$(shell cat aws/secret_access_key)' \ 44 | -var 'aws_region=us-east-1' \ 45 | $(TEMPLATE) 46 | 47 | .PHONY: aws-marketplace 48 | aws-marketplace: 49 | $(BUILD) -only=amazon-ebs \ 50 | -var 'aws_access_key=$(shell cat aws/marketplace_access_key)' \ 51 | -var 'aws_secret_access_key=$(shell cat aws/marketplace_secret_access_key)' \ 52 | -var 'aws_region=us-east-1' \ 53 | $(TEMPLATE) 54 | 55 | .PHONY: azure 56 | azure: 57 | $(BUILD) -only=azure-arm \ 58 | -var 'azure_client_secret=$(shell cat azure/client_secret)' \ 59 | -var 'azure_client_id=ef478b29-3eea-43fb-a976-d440eb4616d4' \ 60 | -var 'azure_subscription_id=c2c2a793-38b2-43a6-ad76-b0f36b868494' \ 61 | -var 'azure_tenant_id=fca45903-25c1-4b28-8e6c-3164d0d79b30' \ 62 | -var 'azure_resource_group_name=yilunpacker' \ 63 | -var 'azure_storage_account=yilunpacker' \ 64 | $(TEMPLATE) 65 | 66 | .PHONY: docker 67 | docker: 68 | $(BUILD) -only=docker \ 69 | -var 'docker_repository=gcr.io/nkn-public/nkn-mainnet' \ 70 | $(TEMPLATE) 71 | 72 | all-public: do gc-public aws-marketplace 73 | -------------------------------------------------------------------------------- /packer.json: -------------------------------------------------------------------------------- 1 | { 2 | "variables": { 3 | "chain_snapshot_url": "https://nkn.org/ChainDB_light_latest.tar.gz", 4 | "output_name": "nkn-commercial-{{timestamp}}", 5 | "do_api_token": "", 6 | "gc_project_id": "", 7 | "gc_zone": "", 8 | "gc_account_file": "", 9 | "gc_license": "", 10 | "aws_access_key": "", 11 | "aws_secret_access_key": "", 12 | "aws_region": "", 13 | "azure_client_id": "", 14 | "azure_client_secret": "", 15 | "azure_subscription_id": "", 16 | "azure_tenant_id": "", 17 | "azure_resource_group_name": "", 18 | "azure_storage_account": "", 19 | "docker_repository": "" 20 | }, 21 | "builders": [ 22 | { 23 | "type": "digitalocean", 24 | "api_token": "{{user `do_api_token`}}", 25 | "image": "ubuntu-18-04-x64", 26 | "region": "sfo2", 27 | "snapshot_name": "{{user `output_name`}}", 28 | "size": "s-1vcpu-1gb", 29 | "ssh_username": "root" 30 | }, 31 | { 32 | "type": "googlecompute", 33 | "account_file": "{{user `gc_account_file`}}", 34 | "project_id": "{{user `gc_project_id`}}", 35 | "zone": "{{user `gc_zone`}}", 36 | "image_name": "{{user `output_name`}}", 37 | "source_image_family": "ubuntu-2204-lts", 38 | "disk_size": 25, 39 | "ssh_username": "packer", 40 | "image_licenses": ["{{user `gc_license`}}"] 41 | }, 42 | { 43 | "type": "amazon-ebs", 44 | "access_key": "{{user `aws_access_key`}}", 45 | "secret_key": "{{user `aws_secret_access_key`}}", 46 | "region": "{{user `aws_region`}}", 47 | "ami_name": "{{user `output_name`}}", 48 | "instance_type": "t2.small", 49 | "source_ami_filter": { 50 | "filters": { 51 | "virtualization-type": "hvm", 52 | "name": "ubuntu/images/*ubuntu-bionic-18.04-amd64-server-*", 53 | "root-device-type": "ebs" 54 | }, 55 | "owners": ["099720109477"], 56 | "most_recent": true 57 | }, 58 | "launch_block_device_mappings": [ 59 | { 60 | "device_name": "/dev/sda1", 61 | "volume_size": 25, 62 | "volume_type": "gp2", 63 | "delete_on_termination": true 64 | } 65 | ], 66 | "ssh_username": "ubuntu" 67 | }, 68 | { 69 | "type": "azure-arm", 70 | "client_id": "{{user `azure_client_id`}}", 71 | "client_secret": "{{user `azure_client_secret`}}", 72 | "subscription_id": "{{user `azure_subscription_id`}}", 73 | "tenant_id": "{{user `azure_tenant_id`}}", 74 | "resource_group_name": "{{user `azure_resource_group_name`}}", 75 | "storage_account": "{{user `azure_storage_account`}}", 76 | "capture_container_name": "images", 77 | "capture_name_prefix": "packer", 78 | "os_type": "Linux", 79 | "image_publisher": "Canonical", 80 | "image_offer": "UbuntuServer", 81 | "image_sku": "18.04-LTS", 82 | "location": "West US", 83 | "vm_size": "Standard_B1s" 84 | }, 85 | { 86 | "type": "docker", 87 | "image": "ubuntu:18.04", 88 | "commit": true, 89 | "changes": [ 90 | "WORKDIR /home/nkn/nkn-commercial", 91 | "ENTRYPOINT /home/nkn/nkn-commercial/nkn-commercial" 92 | ] 93 | } 94 | ], 95 | "provisioners": [ 96 | { 97 | "type": "shell", 98 | "inline": [ 99 | "sleep 60", 100 | "echo 'debconf debconf/frontend select Noninteractive' | sudo debconf-set-selections", 101 | "sudo apt-get install -y -q apt-utils software-properties-common", 102 | "sudo add-apt-repository -y ppa:longsleep/golang-backports", 103 | "sudo apt-get update -y -q", 104 | "sudo apt-get upgrade -y -q", 105 | "sudo apt-get install -y -q golang-1.15 git supervisor psmisc zip unzip lsof jq make wget xxd", 106 | "sudo mkdir -p /home/nkn/nkn-commercial/", 107 | "sudo groupadd nkn", 108 | "sudo useradd -g nkn -b /home -s /usr/sbin/nologin nkn", 109 | "sudo chown -R nkn:nkn /home/nkn/", 110 | "cd /home/nkn/nkn-commercial/ && sudo -u nkn curl -L -s -o linux-amd64.zip https://commercial.nkn.org/downloads/nkn-commercial/linux-amd64.zip && sudo -u nkn unzip linux-amd64.zip && sudo -u nkn mv linux-amd64/* . && sudo rm -rf linux-amd64.zip linux-amd64", 111 | "cd /home/nkn/nkn-commercial/ && sudo ./nkn-commercial -d /home/nkn/nkn-commercial/ -u nkn install && sudo systemctl stop nkn-commercial" 112 | ] 113 | }, 114 | { 115 | "type": "shell", 116 | "environment_vars": ["CHAIN="], 117 | "inline": [ 118 | "sudo -u nkn mkdir -p /home/nkn/nkn-commercial/services/nkn-node/ && cd /home/nkn/nkn-commercial/services/nkn-node/ && sudo -u nkn curl -L -s {{user `chain_snapshot_url`}} | sudo -u nkn tar -zxf -" 119 | ], 120 | "except": ["docker"] 121 | }, 122 | { 123 | "type": "shell", 124 | "inline": [ 125 | "sudo rm -f /home/*/.ssh/authorized_keys", 126 | "sudo rm -f /root/.ssh/authorized_keys" 127 | ] 128 | }, 129 | { 130 | "type": "shell", 131 | "execute_command": "chmod +x {{ .Path }}; {{ .Vars }} sudo -E sh '{{ .Path }}'", 132 | "inline": [ 133 | "/usr/sbin/waagent -force -deprovision+user && export HISTSIZE=0 && sync" 134 | ], 135 | "inline_shebang": "/bin/sh -x", 136 | "only": ["azure-arm"] 137 | } 138 | ], 139 | "post-processors": [ 140 | [ 141 | { 142 | "type": "docker-tag", 143 | "repository": "{{user `docker_repository`}}", 144 | "tag": "{{timestamp}}", 145 | "only": ["docker"] 146 | }, 147 | { 148 | "type": "docker-push", 149 | "only": ["docker"] 150 | }, 151 | { 152 | "type": "docker-tag", 153 | "repository": "{{user `docker_repository`}}", 154 | "tag": "latest", 155 | "only": ["docker"] 156 | }, 157 | { 158 | "type": "docker-push", 159 | "only": ["docker"] 160 | } 161 | ] 162 | ] 163 | } 164 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | Copyright 2019 NKN Labs, Inc. 179 | 180 | Licensed under the Apache License, Version 2.0 (the "License"); 181 | you may not use this file except in compliance with the License. 182 | You may obtain a copy of the License at 183 | 184 | http://www.apache.org/licenses/LICENSE-2.0 185 | 186 | Unless required by applicable law or agreed to in writing, software 187 | distributed under the License is distributed on an "AS IS" BASIS, 188 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 189 | See the License for the specific language governing permissions and 190 | limitations under the License. 191 | -------------------------------------------------------------------------------- /googlecloud/solution.yaml: -------------------------------------------------------------------------------- 1 | partnerId: nkn-public 2 | solutionId: nkn-full-node 3 | partnerInfo: 4 | name: NKN.org 5 | url: https://www.google.com 6 | description: | 7 | NKN is a P2P network connectivity protocol & ecosystem powered by a novel 8 | public blockchain. Using our open source software, internet users can share 9 | network connections and unused bandwidth to build an open, efficient, and 10 | robust network. This network infrastructure enables application developers to 11 | build the decentralized Internet so everyone can enjoy secure, low cost, and 12 | universally accessible connectivity. 13 | shortDescription: | 14 | NKN is the new kind of P2P network connectivity protocol & ecosystem powered 15 | by a novel public blockchain. Our open source software allows Internet users 16 | to share network connections and NKN’s network infrastructure enables app 17 | developers to build decentralized applications. 18 | solutionInfo: 19 | name: NKN Commercial 20 | version: 2.0 21 | url: https://www.nkn.org 22 | tagline: An all-in-one service provider node for NKN ecosystem 23 | description: | 24 | NKN Commercial offers a fully installed and configured NKN relay node as well 25 | as the option to run other services such as nCDN - Content Delivery Service 26 | and dataRide - secure messaging, streaming and file transfer service all in a 27 | single VM for Google Cloud. By running NKN Commercial, you connect to NKN’s 28 | public network to relay data and earn rewards. Be part of the NKN community by 29 | helping to build the decentralized Internet so everyone can enjoy secure, low 30 | cost, and universally accessible connectivity.

31 | NKN Commercial includes the following features:
32 | 38 | supportInfo: | 39 | Once the node has been started you can check the status using any of these methods:

40 |

53 | Please join NKN's Discord group for more technical support and discussions. 54 | supportUrl: https://discord.gg/c7mTynX 55 | eulaUrl: https://commercial.nkn.org/eula 56 | documentations: 57 | - url: https://forum.nkn.org/t/nkn-commercial-an-all-in-one-mining-software-for-nkn-ecosystem/2281 58 | title: NKN Commercial Introduction 59 | destinations: 60 | - DESTINATION_POST_DEPLOY 61 | - DESTINATION_CONFIGURATION 62 | - url: https://medium.com/nknetwork/deploy-nkn-full-node-from-google-cloud-marketplace-10b795d57e63 63 | title: Deploy NKN Full Node from Google Cloud 64 | destinations: 65 | - DESTINATION_POST_DEPLOY 66 | - DESTINATION_CONFIGURATION 67 | packagedSoftwareGroups: 68 | - type: SOFTWARE_GROUP_OS 69 | components: 70 | - name: Ubuntu 71 | version: 22.04 LTS 72 | - components: 73 | - name: NKN Commercial 74 | version: 1.0.0 75 | spec: 76 | version: 1.0 77 | singleVm: 78 | images: 79 | # if more than one image is provided, the user will be able to select which one they want 80 | - project: nkn-public 81 | name: nkn-commercial-1677220113 82 | label: NKN Commercial 83 | machineType: 84 | # Check http://cloud.google.com/compute/docs/machine-types for all available types 85 | defaultMachineType: 86 | gceMachineType: e2-small 87 | bootDisk: 88 | # Describes the default and minimum disk size (GB) that user should have to run your solution properly 89 | diskSize: 90 | defaultSizeGb: 25 91 | minSizeGb: 25 92 | diskType: 93 | # For more information about disk types: http://cloud.google.com/compute/docs/reference/latest/diskTypes 94 | # Some types: pd-standard, local-ssd, pd-ssd 95 | defaultType: pd-standard 96 | ipForwarding: 97 | defaultOff: true 98 | firewallRules: 99 | - protocol: TCP 100 | port: 30001-65535 101 | defaultOff: false 102 | - protocol: UDP 103 | port: 30001-65535 104 | defaultOff: false 105 | - protocol: TCP 106 | port: 80 107 | defaultOff: false 108 | - protocol: TCP 109 | port: 443 110 | defaultOff: false 111 | gceStartupScript: 112 | bashScriptContent: | 113 | beneficiaryAddr=$(curl "http://metadata.google.internal/computeMetadata/v1/instance/attributes/beneficiary-addr" -H "Metadata-Flavor: Google") 114 | [ ! -s /home/nkn/nkn-commercial/config.json ] && echo "{\"beneficiaryAddr\": \"$beneficiaryAddr\"}" > /home/nkn/nkn-commercial/config.json && chown nkn:nkn /home/nkn/nkn-commercial/config.json && systemctl restart nkn-commercial 115 | gceMetadataItems: 116 | - key: beneficiary-addr 117 | valueFromDeployInputField: beneficiaryAddr 118 | # Here we can specify extra input fields to be passed to the deployment manager 119 | deployInput: 120 | sections: 121 | # The place int he Deployment Manager config that this section will appear. More details in deployment_package_autogen_spec.proto 122 | - placement: MAIN 123 | # List of input fields that this section has 124 | fields: 125 | - required: true 126 | name: beneficiaryAddr 127 | title: Beneficiary Address 128 | description: The NKN wallet address that will receive all the rewards 129 | stringBox: 130 | test_default_value: NKN 131 | logo: 132 | raw: 133 | contentType: PNG 134 | content: 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 135 | icon: 136 | raw: 137 | contentType: PNG 138 | content: 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 139 | --------------------------------------------------------------------------------