├── .github └── workflows │ └── flowzone.yml ├── .gitignore ├── .versionbot └── CHANGELOG.yml ├── CHANGELOG.md ├── Dockerfile ├── LICENSE ├── README.md ├── VERSION ├── bin └── balena-mdns-publisher ├── config ├── confd │ ├── conf.d │ │ └── env.toml │ └── templates │ │ └── env.tmpl └── services │ └── balena-mdns-publisher.service ├── docker-hc ├── package-lock.json ├── package.json ├── repo.yml ├── src └── app.ts ├── tsconfig.json └── typings └── dbus-native.d.ts /.github/workflows/flowzone.yml: -------------------------------------------------------------------------------- 1 | name: Flowzone 2 | on: 3 | pull_request: 4 | types: [opened, synchronize, closed] 5 | branches: 6 | - "main" 7 | - "master" 8 | jobs: 9 | flowzone: 10 | name: Flowzone 11 | uses: product-os/flowzone/.github/workflows/flowzone.yml@master 12 | secrets: inherit 13 | with: 14 | docker_images: balena/balena-mdns-publisher 15 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Numerous always-ignore extensions 2 | *.diff 3 | *.err 4 | *.orig 5 | *.log 6 | *.rej 7 | *.swo 8 | *.swp 9 | *.zip 10 | *.vi 11 | *~ 12 | *.sass-cache 13 | .#* 14 | 15 | # OS or Editor folders 16 | .DS_Store 17 | ._* 18 | Thumbs.db 19 | .cache 20 | .project 21 | .settings 22 | .tmproj 23 | *.esproj 24 | nbproject 25 | *.sublime-project 26 | *.sublime-workspace 27 | 28 | # Komodo 29 | *.komodoproject 30 | .komodotools 31 | 32 | # Folders to ignore 33 | .hg 34 | .svn 35 | .CVS 36 | .idea 37 | node_modules 38 | dist/ 39 | build/ 40 | 41 | config/env 42 | Procfile 43 | deployment/ 44 | 45 | src/**/*.js 46 | src/**/*.js.map 47 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Change Log 2 | 3 | All notable changes to this project will be documented in this file 4 | automatically by Versionist. DO NOT EDIT THIS FILE MANUALLY! 5 | This project adheres to [Semantic Versioning](http://semver.org/). 6 | 7 | # v1.27.192 8 | ## (2025-01-21) 9 | 10 | 11 |
12 | Update balena/open-balena-base Docker tag to v18.0.24 [balena-renovate[bot]] 13 | 14 | > ## open-balena-base-18.0.24 15 | > ### (2025-01-21) 16 | > 17 | > * Update dependency node to v22.13.1 [Self-hosted Renovate Bot] 18 | > 19 | 20 |
21 | 22 | # v1.27.191 23 | ## (2025-01-07) 24 | 25 | 26 |
27 | Update balena/open-balena-base Docker tag to v18.0.23 [balena-renovate[bot]] 28 | 29 | > ## open-balena-base-18.0.23 30 | > ### (2025-01-07) 31 | > 32 | > * Update dependency node to v22.13.0 [Self-hosted Renovate Bot] 33 | > 34 | 35 |
36 | 37 | # v1.27.190 38 | ## (2025-01-06) 39 | 40 | 41 |
42 | Update balena/open-balena-base Docker tag to v18.0.22 [balena-renovate[bot]] 43 | 44 | > ## open-balena-base-18.0.22 45 | > ### (2025-01-06) 46 | > 47 | > * Update dependency npm to v11 [Self-hosted Renovate Bot] 48 | > 49 | 50 |
51 | 52 | # v1.27.189 53 | ## (2024-12-05) 54 | 55 | 56 |
57 | Update balena/open-balena-base Docker tag to v18.0.21 [balena-renovate[bot]] 58 | 59 | > ## open-balena-base-18.0.21 60 | > ### (2024-12-04) 61 | > 62 | > * Update dependency npm to v10.9.2 [Self-hosted Renovate Bot] 63 | > 64 | 65 |
66 | 67 | # v1.27.188 68 | ## (2024-12-03) 69 | 70 | 71 |
72 | Update balena/open-balena-base Docker tag to v18.0.20 [balena-renovate[bot]] 73 | 74 | > ## open-balena-base-18.0.20 75 | > ### (2024-12-03) 76 | > 77 | > * Update dependency node to v22.12.0 [Self-hosted Renovate Bot] 78 | > 79 | 80 |
81 | 82 | # v1.27.187 83 | ## (2024-12-02) 84 | 85 | * Lock file maintenance [balena-renovate[bot]] 86 | 87 | # v1.27.186 88 | ## (2024-12-02) 89 | 90 | * Lock file maintenance [balena-renovate[bot]] 91 | 92 | # v1.27.185 93 | ## (2024-11-25) 94 | 95 | * Lock file maintenance [balena-renovate[bot]] 96 | 97 | # v1.27.184 98 | ## (2024-11-21) 99 | 100 | 101 |
102 | Update balena/open-balena-base Docker tag to v18.0.19 [balena-renovate[bot]] 103 | 104 | > ## open-balena-base-18.0.19 105 | > ### (2024-11-21) 106 | > 107 | > * Update dependency npm to v10.9.1 [Self-hosted Renovate Bot] 108 | > 109 | 110 |
111 | 112 | # v1.27.183 113 | ## (2024-11-18) 114 | 115 | 116 |
117 | Update balena/open-balena-base Docker tag to v18.0.18 [balena-renovate[bot]] 118 | 119 | > ## open-balena-base-18.0.18 120 | > ### (2024-11-18) 121 | > 122 | > * Update ghcr.io/balena-io-modules/confd-releases Docker tag to v0.0.6 [Self-hosted Renovate Bot] 123 | > 124 | 125 |
126 | 127 | # v1.27.182 128 | ## (2024-11-18) 129 | 130 | * Lock file maintenance [balena-renovate[bot]] 131 | 132 | # v1.27.181 133 | ## (2024-11-11) 134 | 135 | * Lock file maintenance [balena-renovate[bot]] 136 | 137 | # v1.27.180 138 | ## (2024-11-04) 139 | 140 | 141 |
142 | Update balena/open-balena-base Docker tag to v18.0.17 [balena-renovate[bot]] 143 | 144 | > ## open-balena-base-18.0.17 145 | > ### (2024-11-04) 146 | > 147 | > * Update dependency node to v22.11.0 [Self-hosted Renovate Bot] 148 | > 149 | 150 |
151 | 152 | # v1.27.179 153 | ## (2024-11-04) 154 | 155 | * Lock file maintenance [balena-renovate[bot]] 156 | 157 | # v1.27.178 158 | ## (2024-11-03) 159 | 160 | * Update dependency @types/node to v22 [balena-renovate[bot]] 161 | 162 | # v1.27.177 163 | ## (2024-11-03) 164 | 165 | * Update Node.js to v22 [balena-renovate[bot]] 166 | 167 | # v1.27.176 168 | ## (2024-10-28) 169 | 170 | * Lock file maintenance [Self-hosted Renovate Bot] 171 | 172 | # v1.27.175 173 | ## (2024-10-21) 174 | 175 | * Update dependency @balena/lint to v9 [Self-hosted Renovate Bot] 176 | 177 | # v1.27.174 178 | ## (2024-10-21) 179 | 180 | * Lock file maintenance [Self-hosted Renovate Bot] 181 | 182 | # v1.27.173 183 | ## (2024-10-16) 184 | 185 | 186 |
187 | Update balena/open-balena-base Docker tag to v18.0.16 [Self-hosted Renovate Bot] 188 | 189 | > ## open-balena-base-18.0.16 190 | > ### (2024-10-16) 191 | > 192 | > * Update dependency node to v22.10.0 [Self-hosted Renovate Bot] 193 | > 194 | 195 |
196 | 197 | # v1.27.172 198 | ## (2024-10-14) 199 | 200 | * Lock file maintenance [Self-hosted Renovate Bot] 201 | 202 | # v1.27.171 203 | ## (2024-10-07) 204 | 205 | * Lock file maintenance [Self-hosted Renovate Bot] 206 | 207 | # v1.27.170 208 | ## (2024-10-03) 209 | 210 | 211 |
212 | Update balena/open-balena-base Docker tag to v18.0.15 [Self-hosted Renovate Bot] 213 | 214 | > ## open-balena-base-18.0.15 215 | > ### (2024-10-03) 216 | > 217 | > * Update dependency npm to v10.9.0 [Self-hosted Renovate Bot] 218 | > 219 | 220 |
221 | 222 | # v1.27.169 223 | ## (2024-09-30) 224 | 225 | * Lock file maintenance [Self-hosted Renovate Bot] 226 | 227 | # v1.27.168 228 | ## (2024-09-23) 229 | 230 | * Lock file maintenance [Self-hosted Renovate Bot] 231 | 232 | # v1.27.167 233 | ## (2024-09-17) 234 | 235 | 236 |
237 | Update balena/open-balena-base Docker tag to v18.0.14 [Self-hosted Renovate Bot] 238 | 239 | > ## open-balena-base-18.0.14 240 | > ### (2024-09-17) 241 | > 242 | > * Update dependency node to v22.9.0 [Self-hosted Renovate Bot] 243 | > 244 | 245 |
246 | 247 | # v1.27.166 248 | ## (2024-09-16) 249 | 250 | * Optimize finding which devices to publish & unpublish [Thodoris Greasidis] 251 | 252 | # v1.27.165 253 | ## (2024-09-16) 254 | 255 | * Optimize the API request to fetch only the uuid & of only the accessible devices [Thodoris Greasidis] 256 | 257 | # v1.27.164 258 | ## (2024-09-16) 259 | 260 | * Update dependency balena-sdk to v20 [Self-hosted Renovate Bot] 261 | 262 | # v1.27.163 263 | ## (2024-09-16) 264 | 265 | * Lock file maintenance [Self-hosted Renovate Bot] 266 | 267 | # v1.27.162 268 | ## (2024-09-09) 269 | 270 | * Lock file maintenance [Self-hosted Renovate Bot] 271 | 272 | # v1.27.161 273 | ## (2024-09-03) 274 | 275 | 276 |
277 | Update balena/open-balena-base Docker tag to v18.0.13 [Self-hosted Renovate Bot] 278 | 279 | > ## open-balena-base-18.0.13 280 | > ### (2024-09-03) 281 | > 282 | > * Update dependency node to v22.8.0 [Self-hosted Renovate Bot] 283 | > 284 | 285 |
286 | 287 | # v1.27.160 288 | ## (2024-09-02) 289 | 290 | * Lock file maintenance [Self-hosted Renovate Bot] 291 | 292 | # v1.27.159 293 | ## (2024-08-28) 294 | 295 | 296 |
297 | Update balena/open-balena-base Docker tag to v18.0.12 [Self-hosted Renovate Bot] 298 | 299 | > ## open-balena-base-18.0.12 300 | > ### (2024-08-28) 301 | > 302 | > * Update dependency npm to v10.8.3 [Self-hosted Renovate Bot] 303 | > 304 | 305 |
306 | 307 | # v1.27.158 308 | ## (2024-08-26) 309 | 310 | * Lock file maintenance [Self-hosted Renovate Bot] 311 | 312 | # v1.27.157 313 | ## (2024-08-22) 314 | 315 | 316 |
317 | Update balena/open-balena-base Docker tag to v18.0.11 [Self-hosted Renovate Bot] 318 | 319 | > ## open-balena-base-18.0.11 320 | > ### (2024-08-22) 321 | > 322 | > * Update dependency node to v22.7.0 [Self-hosted Renovate Bot] 323 | > 324 | 325 |
326 | 327 | # v1.27.156 328 | ## (2024-08-19) 329 | 330 | * Lock file maintenance [Self-hosted Renovate Bot] 331 | 332 | # v1.27.155 333 | ## (2024-08-19) 334 | 335 | * Lock file maintenance [Self-hosted Renovate Bot] 336 | 337 | # v1.27.154 338 | ## (2024-08-12) 339 | 340 | * Lock file maintenance [Self-hosted Renovate Bot] 341 | 342 | # v1.27.153 343 | ## (2024-08-06) 344 | 345 | 346 |
347 | Update balena/open-balena-base Docker tag to v18.0.10 [Self-hosted Renovate Bot] 348 | 349 | > ## open-balena-base-18.0.10 350 | > ### (2024-08-06) 351 | > 352 | > * Update dependency node to v22.6.0 [Self-hosted Renovate Bot] 353 | > 354 | > ## open-balena-base-18.0.9 355 | > ### (2024-07-23) 356 | > 357 | > * Update ghcr.io/balena-io-modules/confd-releases Docker tag to v0.0.5 [Self-hosted Renovate Bot] 358 | > 359 | 360 |
361 | 362 | # v1.27.152 363 | ## (2024-08-05) 364 | 365 | * Lock file maintenance [Self-hosted Renovate Bot] 366 | 367 | # v1.27.151 368 | ## (2024-07-29) 369 | 370 | * Lock file maintenance [Self-hosted Renovate Bot] 371 | 372 | # v1.27.150 373 | ## (2024-07-23) 374 | 375 | 376 |
377 | Update balena/open-balena-base Docker tag to v18.0.8 [Self-hosted Renovate Bot] 378 | 379 | > ## open-balena-base-18.0.8 380 | > ### (2024-07-23) 381 | > 382 | > * Switch to self-hosted [Anton Belodedenko] 383 | > 384 | 385 |
386 | 387 | # v1.27.149 388 | ## (2024-07-22) 389 | 390 | * Lock file maintenance [Self-hosted Renovate Bot] 391 | 392 | # v1.27.148 393 | ## (2024-07-19) 394 | 395 | 396 |
397 | Update balena/open-balena-base Docker tag to v18.0.7 [Self-hosted Renovate Bot] 398 | 399 | > ## open-balena-base-18.0.7 400 | > ### (2024-07-19) 401 | > 402 | > * Update dependency node to v22.5.1 [Self-hosted Renovate Bot] 403 | > 404 | 405 |
406 | 407 | # v1.27.147 408 | ## (2024-07-15) 409 | 410 | * Lock file maintenance [Self-hosted Renovate Bot] 411 | 412 | # v1.27.146 413 | ## (2024-07-10) 414 | 415 | 416 |
417 | Update balena/open-balena-base Docker tag to v18.0.6 [Self-hosted Renovate Bot] 418 | 419 | > ## open-balena-base-18.0.6 420 | > ### (2024-07-10) 421 | > 422 | > * Update dependency npm to v10.8.2 [Self-hosted Renovate Bot] 423 | > 424 | 425 |
426 | 427 | # v1.27.145 428 | ## (2024-07-08) 429 | 430 | 431 |
432 | Update balena/open-balena-base Docker tag to v18.0.5 [Self-hosted Renovate Bot] 433 | 434 | > ## open-balena-base-18.0.5 435 | > ### (2024-07-08) 436 | > 437 | > * Update dependency node to v22.4.1 [Self-hosted Renovate Bot] 438 | > 439 | 440 |
441 | 442 | # v1.27.144 443 | ## (2024-07-08) 444 | 445 | * Lock file maintenance [Self-hosted Renovate Bot] 446 | 447 | # v1.27.143 448 | ## (2024-07-02) 449 | 450 | 451 |
452 | Update balena/open-balena-base Docker tag to v18.0.4 [Self-hosted Renovate Bot] 453 | 454 | > ## open-balena-base-18.0.4 455 | > ### (2024-07-02) 456 | > 457 | > * Update dependency node to v22.4.0 [Self-hosted Renovate Bot] 458 | > 459 | 460 |
461 | 462 | # v1.27.142 463 | ## (2024-07-01) 464 | 465 | 466 |
467 | Update balena/open-balena-base Docker tag to v18.0.3 [Self-hosted Renovate Bot] 468 | 469 | > ## open-balena-base-18.0.3 470 | > ### (2024-07-01) 471 | > 472 | > * Empty commit to rebuild open-balena-base to fix CVE-2024-6387. [Carlo Miguel F. Cruz] 473 | > 474 | 475 |
476 | 477 | # v1.27.141 478 | ## (2024-07-01) 479 | 480 | * Lock file maintenance [Self-hosted Renovate Bot] 481 | 482 | # v1.27.140 483 | ## (2024-06-24) 484 | 485 | * Lock file maintenance [Self-hosted Renovate Bot] 486 | 487 | # v1.27.139 488 | ## (2024-06-17) 489 | 490 | * Lock file maintenance [Self-hosted Renovate Bot] 491 | 492 | # v1.27.138 493 | ## (2024-06-11) 494 | 495 | 496 |
497 | Update balena/open-balena-base Docker tag to v18.0.2 [Self-hosted Renovate Bot] 498 | 499 | > ## open-balena-base-18.0.2 500 | > ### (2024-06-11) 501 | > 502 | > * Update dependency node to v22.3.0 [Self-hosted Renovate Bot] 503 | > 504 | 505 |
506 | 507 | # v1.27.137 508 | ## (2024-06-10) 509 | 510 | * Lock file maintenance [Self-hosted Renovate Bot] 511 | 512 | # v1.27.136 513 | ## (2024-06-03) 514 | 515 | * Lock file maintenance [Self-hosted Renovate Bot] 516 | 517 | # v1.27.135 518 | ## (2024-05-29) 519 | 520 | 521 |
522 | Update balena/open-balena-base Docker tag to v18.0.1 [Self-hosted Renovate Bot] 523 | 524 | > ## open-balena-base-18.0.1 525 | > ### (2024-05-29) 526 | > 527 | > * Update dependency npm to v10.8.1 [Self-hosted Renovate Bot] 528 | > 529 | 530 |
531 | 532 | # v1.27.134 533 | ## (2024-05-28) 534 | 535 | * Use caret ranges for dependencies for more flexibility [Pagan Gazzard] 536 | 537 | # v1.27.133 538 | ## (2024-05-28) 539 | 540 | 541 |
542 | Update balena/open-balena-base Docker tag to v18 [Self-hosted Renovate Bot] 543 | 544 | > ## open-balena-base-18.0.0 545 | > ### (2024-05-28) 546 | > 547 | > * Update to nodejs 22.2.0 [Pagan Gazzard] 548 | > 549 | 550 |
551 | 552 | # v1.27.132 553 | ## (2024-05-28) 554 | 555 | * Update dependency lint-staged to v15.2.5 [Self-hosted Renovate Bot] 556 | 557 | # v1.27.131 558 | ## (2024-05-27) 559 | 560 | * Lock file maintenance [Self-hosted Renovate Bot] 561 | 562 | # v1.27.130 563 | ## (2024-05-24) 564 | 565 | * Update dependency lint-staged to v15.2.4 [Self-hosted Renovate Bot] 566 | 567 | # v1.27.129 568 | ## (2024-05-20) 569 | 570 | * Update dependency @types/lodash to v4.17.4 [Self-hosted Renovate Bot] 571 | 572 | # v1.27.128 573 | ## (2024-05-20) 574 | 575 | * Lock file maintenance [Self-hosted Renovate Bot] 576 | 577 | # v1.27.127 578 | ## (2024-05-19) 579 | 580 | * Update dependency @types/lodash to v4.17.3 [Self-hosted Renovate Bot] 581 | 582 | # v1.27.126 583 | ## (2024-05-19) 584 | 585 | * Update dependency @types/lodash to v4.17.2 [Self-hosted Renovate Bot] 586 | 587 | # v1.27.125 588 | ## (2024-05-15) 589 | 590 | 591 |
592 | Update balena/open-balena-base Docker tag to v17.0.20 [Self-hosted Renovate Bot] 593 | 594 | > ## open-balena-base-17.0.20 595 | > ### (2024-05-15) 596 | > 597 | > * Update dependency npm to v10.8.0 [Self-hosted Renovate Bot] 598 | > 599 | 600 |
601 | 602 | # v1.27.124 603 | ## (2024-05-13) 604 | 605 | * Lock file maintenance [Self-hosted Renovate Bot] 606 | 607 | # v1.27.123 608 | ## (2024-05-09) 609 | 610 | 611 |
612 | Update balena/open-balena-base Docker tag to v17.0.19 [Self-hosted Renovate Bot] 613 | 614 | > ## open-balena-base-17.0.19 615 | > ### (2024-05-09) 616 | > 617 | > * Update ghcr.io/balena-io-modules/confd-releases Docker tag to v0.0.4 [Self-hosted Renovate Bot] 618 | > 619 | 620 |
621 | 622 | # v1.27.122 623 | ## (2024-05-07) 624 | 625 | * Update dependency @types/lodash to v4.17.1 [Self-hosted Renovate Bot] 626 | 627 | # v1.27.121 628 | ## (2024-05-06) 629 | 630 | * Lock file maintenance [Self-hosted Renovate Bot] 631 | 632 | # v1.27.120 633 | ## (2024-05-01) 634 | 635 | 636 |
637 | Update balena/open-balena-base Docker tag to v17.0.18 [Self-hosted Renovate Bot] 638 | 639 | > ## open-balena-base-17.0.18 640 | > ### (2024-05-01) 641 | > 642 | > * Update ghcr.io/balena-io-modules/confd-releases Docker tag to v0.0.3 [Self-hosted Renovate Bot] 643 | > 644 | 645 |
646 | 647 | # v1.27.119 648 | ## (2024-05-01) 649 | 650 | 651 |
652 | Update balena/open-balena-base Docker tag to v17.0.17 [Self-hosted Renovate Bot] 653 | 654 | > ## open-balena-base-17.0.17 655 | > ### (2024-05-01) 656 | > 657 | > * Install confd from pre-packaged OCI [Kyle Harding] 658 | > 659 | 660 |
661 | 662 | # v1.27.118 663 | ## (2024-04-30) 664 | 665 | 666 |
667 | Update balena/open-balena-base Docker tag to v17.0.16 [Self-hosted Renovate Bot] 668 | 669 | > ## open-balena-base-17.0.16 670 | > ### (Invalid date) 671 | > 672 | > * Update dependency npm to v10.7.0 [Self-hosted Renovate Bot] 673 | > 674 | 675 |
676 | 677 | # v1.27.117 678 | ## (2024-04-29) 679 | 680 | * Lock file maintenance [Self-hosted Renovate Bot] 681 | 682 | # v1.27.116 683 | ## (2024-04-25) 684 | 685 | 686 |
687 | Update balena/open-balena-base Docker tag to v17.0.15 [Self-hosted Renovate Bot] 688 | 689 | > ## open-balena-base-17.0.15 690 | > ### (2024-04-25) 691 | > 692 | > * Update dependency npm to v10.6.0 [Self-hosted Renovate Bot] 693 | > 694 | 695 |
696 | 697 | # v1.27.115 698 | ## (2024-04-22) 699 | 700 | * Update dependency @balena/lint to v8.0.2 [Self-hosted Renovate Bot] 701 | 702 | # v1.27.114 703 | ## (2024-04-22) 704 | 705 | * Lock file maintenance [Self-hosted Renovate Bot] 706 | 707 | # v1.27.113 708 | ## (2024-04-15) 709 | 710 | * Lock file maintenance [Self-hosted Renovate Bot] 711 | 712 | # v1.27.112 713 | ## (2024-04-12) 714 | 715 | * Update dependency typescript to v5.4.5 [Self-hosted Renovate Bot] 716 | 717 | # v1.27.111 718 | ## (2024-04-12) 719 | 720 | * Update dependency @balena/lint to v8 [Self-hosted Renovate Bot] 721 | 722 | # v1.27.110 723 | ## (2024-04-10) 724 | 725 | 726 |
727 | Update balena/open-balena-base Docker tag to v17.0.14 [Self-hosted Renovate Bot] 728 | 729 | > ## open-balena-base-17.0.14 730 | > ### (2024-04-10) 731 | > 732 | > * Update dependency npm to v10.5.2 [Self-hosted Renovate Bot] 733 | > 734 | 735 |
736 | 737 | # v1.27.109 738 | ## (2024-04-10) 739 | 740 | 741 |
742 | Update balena/open-balena-base Docker tag to v17.0.13 [Self-hosted Renovate Bot] 743 | 744 | > ## open-balena-base-17.0.13 745 | > ### (2024-04-10) 746 | > 747 | > * Update dependency node to v21.7.3 [Self-hosted Renovate Bot] 748 | > 749 | 750 |
751 | 752 | # v1.27.108 753 | ## (2024-04-08) 754 | 755 | * Lock file maintenance [Self-hosted Renovate Bot] 756 | 757 | # v1.27.107 758 | ## (2024-04-07) 759 | 760 | * Update dependency typescript to v5.4.4 [Self-hosted Renovate Bot] 761 | 762 | # v1.27.106 763 | ## (2024-04-03) 764 | 765 | 766 |
767 | Update balena/open-balena-base Docker tag to v17.0.12 [Self-hosted Renovate Bot] 768 | 769 | > ## open-balena-base-17.0.12 770 | > ### (2024-04-03) 771 | > 772 | > * Update dependency node to v21.7.2 [Self-hosted Renovate Bot] 773 | > 774 | 775 |
776 | 777 | # v1.27.105 778 | ## (2024-04-03) 779 | 780 | 781 |
782 | Update balena/open-balena-base Docker tag to v17.0.11 [Self-hosted Renovate Bot] 783 | 784 | > ## open-balena-base-17.0.11 785 | > ### (2024-04-03) 786 | > 787 | > * Update dependency npm to v10.5.1 [Self-hosted Renovate Bot] 788 | > 789 | 790 |
791 | 792 | # v1.27.104 793 | ## (2024-04-01) 794 | 795 | * Update dependency balena-sdk to v19.5.10 [Self-hosted Renovate Bot] 796 | 797 | # v1.27.103 798 | ## (2024-04-01) 799 | 800 | * Update dependency balena-sdk to v19.5.9 [Self-hosted Renovate Bot] 801 | 802 | # v1.27.102 803 | ## (2024-04-01) 804 | 805 | * Lock file maintenance [Self-hosted Renovate Bot] 806 | 807 | # v1.27.101 808 | ## (2024-03-25) 809 | 810 | * Lock file maintenance [Self-hosted Renovate Bot] 811 | 812 | # v1.27.100 813 | ## (2024-03-23) 814 | 815 | * Update dependency typescript to v5.4.3 [Self-hosted Renovate Bot] 816 | 817 | # v1.27.99 818 | ## (2024-03-21) 819 | 820 | * Update dependency balena-sdk to v19.5.8 [Self-hosted Renovate Bot] 821 | 822 | # v1.27.98 823 | ## (2024-03-18) 824 | 825 | * Lock file maintenance [Self-hosted Renovate Bot] 826 | 827 | # v1.27.97 828 | ## (2024-03-18) 829 | 830 | * Lock file maintenance [Self-hosted Renovate Bot] 831 | 832 | # v1.27.96 833 | ## (2024-03-15) 834 | 835 | * Update dependency @types/lodash to v4.17.0 [Self-hosted Renovate Bot] 836 | 837 | # v1.27.95 838 | ## (2024-03-11) 839 | 840 | * Update dependency balena-sdk to v19.5.7 [Self-hosted Renovate Bot] 841 | 842 | # v1.27.94 843 | ## (2024-03-11) 844 | 845 | * Lock file maintenance [Self-hosted Renovate Bot] 846 | 847 | # v1.27.93 848 | ## (2024-03-10) 849 | 850 | * Update dependency balena-sdk to v19.5.6 [Self-hosted Renovate Bot] 851 | 852 | # v1.27.92 853 | ## (2024-03-09) 854 | 855 | * Update dependency typescript to v5.4.2 [Self-hosted Renovate Bot] 856 | 857 | # v1.27.91 858 | ## (2024-03-08) 859 | 860 | 861 |
862 | Update balena/open-balena-base Docker tag to v17.0.10 [Self-hosted Renovate Bot] 863 | 864 | > ## open-balena-base-17.0.10 865 | > ### (2024-03-08) 866 | > 867 | > * Update dependency node to v21.7.1 [Self-hosted Renovate Bot] 868 | > 869 | 870 |
871 | 872 | # v1.27.90 873 | ## (2024-03-06) 874 | 875 | 876 |
877 | Update balena/open-balena-base Docker tag to v17.0.9 [Self-hosted Renovate Bot] 878 | 879 | > ## open-balena-base-17.0.9 880 | > ### (2024-03-06) 881 | > 882 | > * Update dependency node to v21.7.0 [Self-hosted Renovate Bot] 883 | > 884 | 885 |
886 | 887 | # v1.27.89 888 | ## (2024-03-04) 889 | 890 | * Lock file maintenance [Self-hosted Renovate Bot] 891 | 892 | # v1.27.88 893 | ## (2024-02-29) 894 | 895 | * Update dependency balena-sdk to v19.5.5 [Self-hosted Renovate Bot] 896 | 897 | # v1.27.87 898 | ## (2024-02-28) 899 | 900 | 901 |
902 | Update balena/open-balena-base Docker tag to v17.0.8 [Self-hosted Renovate Bot] 903 | 904 | > ## open-balena-base-17.0.8 905 | > ### (2024-02-28) 906 | > 907 | > * Update dependency npm to v10.5.0 [Self-hosted Renovate Bot] 908 | > 909 | 910 |
911 | 912 | # v1.27.86 913 | ## (2024-02-27) 914 | 915 | 916 |
917 | Update balena/open-balena-base Docker tag to v17.0.7 [Self-hosted Renovate Bot] 918 | 919 | > ## open-balena-base-17.0.7 920 | > ### (2024-02-27) 921 | > 922 | > * Fix docker cache-from for no-system variants [Kyle Harding] 923 | > 924 | 925 |
926 | 927 | # v1.27.85 928 | ## (2024-02-27) 929 | 930 | 931 |
932 | Update balena/open-balena-base Docker tag to v17.0.6 [Self-hosted Renovate Bot] 933 | 934 | > ## open-balena-base-17.0.6 935 | > ### (2024-02-27) 936 | > 937 | > * Move the no-systemd compatibility tag to a suffix [Kyle Harding] 938 | > 939 | 940 |
941 | 942 | # v1.27.84 943 | ## (2024-02-26) 944 | 945 | * Lock file maintenance [Self-hosted Renovate Bot] 946 | 947 | # v1.27.83 948 | ## (2024-02-26) 949 | 950 | * Lock file maintenance [Self-hosted Renovate Bot] 951 | 952 | # v1.27.82 953 | ## (2024-02-22) 954 | 955 | * Update dependency husky to v9 [Self-hosted Renovate Bot] 956 | 957 | # v1.27.81 958 | ## (2024-02-19) 959 | 960 | * Lock file maintenance [Self-hosted Renovate Bot] 961 | 962 | # v1.27.80 963 | ## (2024-02-17) 964 | 965 | * Update dependency balena-sdk to v19.5.4 [Self-hosted Renovate Bot] 966 | 967 | # v1.27.79 968 | ## (2024-02-17) 969 | 970 | * Update dependency balena-sdk to v19.5.3 [Self-hosted Renovate Bot] 971 | 972 | # v1.27.78 973 | ## (2024-02-16) 974 | 975 | * Update dependency balena-sdk to v19.5.2 [Self-hosted Renovate Bot] 976 | 977 | # v1.27.77 978 | ## (2024-02-14) 979 | 980 | 981 |
982 | Update balena/open-balena-base Docker tag to v17.0.5 [Self-hosted Renovate Bot] 983 | 984 | > ## open-balena-base-17.0.5 985 | > ### (2024-02-14) 986 | > 987 | > * Update dependency node to v21.6.2 [Self-hosted Renovate Bot] 988 | > 989 | 990 |
991 | 992 | # v1.27.76 993 | ## (2024-02-12) 994 | 995 | * Lock file maintenance [Self-hosted Renovate Bot] 996 | 997 | # v1.27.75 998 | ## (2024-02-08) 999 | 1000 | * Update dependency lint-staged to v15.2.2 [Self-hosted Renovate Bot] 1001 | 1002 | # v1.27.74 1003 | ## (2024-02-05) 1004 | 1005 | * Update dependency balena-sdk to v19.5.1 [Self-hosted Renovate Bot] 1006 | 1007 | # v1.27.73 1008 | ## (2024-02-05) 1009 | 1010 | * Update dependency @balena/lint to v7.3.0 [Self-hosted Renovate Bot] 1011 | 1012 | # v1.27.72 1013 | ## (2024-02-05) 1014 | 1015 | * Lock file maintenance [Self-hosted Renovate Bot] 1016 | 1017 | # v1.27.71 1018 | ## (2024-02-03) 1019 | 1020 | * Update dependency lint-staged to v15.2.1 [Self-hosted Renovate Bot] 1021 | 1022 | # v1.27.70 1023 | ## (2024-02-02) 1024 | 1025 | * Update dependency @balena/lint to v7.2.6 [Self-hosted Renovate Bot] 1026 | 1027 | # v1.27.69 1028 | ## (2024-02-02) 1029 | 1030 | * Update dependency @balena/lint to v7.2.5 [Self-hosted Renovate Bot] 1031 | 1032 | # v1.27.68 1033 | ## (2024-01-29) 1034 | 1035 | * Update dependency balena-sdk to v19.5.0 [Self-hosted Renovate Bot] 1036 | 1037 | # v1.27.67 1038 | ## (2024-01-29) 1039 | 1040 | * Lock file maintenance [Self-hosted Renovate Bot] 1041 | 1042 | # v1.27.66 1043 | ## (2024-01-26) 1044 | 1045 | * Update dependency balena-sdk to v19.4.0 [Self-hosted Renovate Bot] 1046 | 1047 | # v1.27.65 1048 | ## (2024-01-24) 1049 | 1050 | 1051 |
1052 | Update balena/open-balena-base Docker tag to v17.0.4 [Self-hosted Renovate Bot] 1053 | 1054 | > ## open-balena-base-17.0.4 1055 | > ### (2024-01-24) 1056 | > 1057 | > * Update dependency npm to v10.4.0 [Self-hosted Renovate Bot] 1058 | > 1059 | 1060 |
1061 | 1062 | # v1.27.64 1063 | ## (2024-01-22) 1064 | 1065 | 1066 |
1067 | Update balena/open-balena-base Docker tag to v17.0.3 [Self-hosted Renovate Bot] 1068 | 1069 | > ## open-balena-base-17.0.3 1070 | > ### (2024-01-22) 1071 | > 1072 | > * Update dependency node to v21.6.1 [Self-hosted Renovate Bot] 1073 | > 1074 | 1075 |
1076 | 1077 | # v1.27.63 1078 | ## (2024-01-22) 1079 | 1080 | * Lock file maintenance [Self-hosted Renovate Bot] 1081 | 1082 | # v1.27.62 1083 | ## (2024-01-15) 1084 | 1085 | 1086 |
1087 | Update balena/open-balena-base Docker tag to v17.0.2 [Self-hosted Renovate Bot] 1088 | 1089 | > ## open-balena-base-17.0.2 1090 | > ### (2024-01-15) 1091 | > 1092 | > * Update dependency node to v21.6.0 [Self-hosted Renovate Bot] 1093 | > 1094 | 1095 |
1096 | 1097 | # v1.27.61 1098 | ## (2024-01-15) 1099 | 1100 | * Lock file maintenance [Self-hosted Renovate Bot] 1101 | 1102 | # v1.27.60 1103 | ## (2024-01-10) 1104 | 1105 | 1106 |
1107 | Update balena/open-balena-base Docker tag to v17.0.1 [Self-hosted Renovate Bot] 1108 | 1109 | > ## open-balena-base-17.0.1 1110 | > ### (2024-01-10) 1111 | > 1112 | > * Update dependency npm to v10.3.0 [Self-hosted Renovate Bot] 1113 | > 1114 | 1115 |
1116 | 1117 | # v1.27.59 1118 | ## (2024-01-08) 1119 | 1120 | * Lock file maintenance [Self-hosted Renovate Bot] 1121 | 1122 | # v1.27.58 1123 | ## (2024-01-08) 1124 | 1125 | * Lock file maintenance [Self-hosted Renovate Bot] 1126 | 1127 | # v1.27.57 1128 | ## (2024-01-03) 1129 | 1130 | * Update dependency balena-sdk to v19.3.5 [Self-hosted Renovate Bot] 1131 | 1132 | # v1.27.56 1133 | ## (2024-01-03) 1134 | 1135 | * Bump balena-sdk to latest [Otávio Jacobi] 1136 | * Update dependency balena-sdk to v19 [Self-hosted Renovate Bot] 1137 | 1138 | # v1.27.55 1139 | ## (2024-01-02) 1140 | 1141 | 1142 |
1143 | Update balena/open-balena-base Docker tag to v17 [Self-hosted Renovate Bot] 1144 | 1145 | > ## open-balena-base-17.0.0 1146 | > ### (2023-12-20) 1147 | > 1148 | > * Update nodejs to 21.4.0 [Pagan Gazzard] 1149 | > 1150 | 1151 |
1152 | 1153 | # v1.27.54 1154 | ## (2024-01-01) 1155 | 1156 | * Lock file maintenance [Self-hosted Renovate Bot] 1157 | 1158 | # v1.27.53 1159 | ## (2023-12-25) 1160 | 1161 | * Lock file maintenance [Self-hosted Renovate Bot] 1162 | 1163 | # v1.27.52 1164 | ## (2023-12-19) 1165 | 1166 | * Remove repo config from flowzone.yml [Kyle Harding] 1167 | 1168 | # v1.27.51 1169 | ## (2023-12-18) 1170 | 1171 | * Lock file maintenance [Self-hosted Renovate Bot] 1172 | 1173 | # v1.27.50 1174 | ## (2023-12-13) 1175 | 1176 | 1177 |
1178 | Update balena/open-balena-base Docker tag to v16.0.18 [Self-hosted Renovate Bot] 1179 | 1180 | > ## open-balena-base-16.0.18 1181 | > ### (2023-12-13) 1182 | > 1183 | > * add missing data. host [ab77] 1184 | > 1185 | 1186 |
1187 | 1188 | # v1.27.49 1189 | ## (2023-12-13) 1190 | 1191 | * deprecate registry hostname [ab77] 1192 | 1193 | # v1.27.48 1194 | ## (2023-12-11) 1195 | 1196 | * Lock file maintenance [Self-hosted Renovate Bot] 1197 | 1198 | # v1.27.47 1199 | ## (2023-12-09) 1200 | 1201 | * Update dependency typescript to v5.3.3 [Self-hosted Renovate Bot] 1202 | 1203 | # v1.27.46 1204 | ## (2023-12-06) 1205 | 1206 | 1207 |
1208 | Update balena/open-balena-base Docker tag to v16.0.17 [Self-hosted Renovate Bot] 1209 | 1210 | > ## open-balena-base-16.0.17 1211 | > ### (2023-12-06) 1212 | > 1213 | > * Update dependency npm to v10.2.5 [Self-hosted Renovate Bot] 1214 | > 1215 | 1216 |
1217 | 1218 | # v1.27.45 1219 | ## (2023-12-06) 1220 | 1221 | * Update dependency lint-staged to v15.2.0 [Self-hosted Renovate Bot] 1222 | 1223 | # v1.27.44 1224 | ## (2023-12-05) 1225 | 1226 | 1227 |
1228 | Update balena/open-balena-base Docker tag to v16.0.16 [Self-hosted Renovate Bot] 1229 | 1230 | > ## open-balena-base-16.0.16 1231 | > ### (2023-12-05) 1232 | > 1233 | > * remove self-hosted Sentry config [ab77] 1234 | > 1235 | 1236 |
1237 | 1238 | # v1.27.43 1239 | ## (2023-12-04) 1240 | 1241 | * Lock file maintenance [Self-hosted Renovate Bot] 1242 | 1243 | # v1.27.42 1244 | ## (2023-11-28) 1245 | 1246 | * Update dependency lint-staged to v15 [Self-hosted Renovate Bot] 1247 | 1248 | # v1.27.41 1249 | ## (2023-11-27) 1250 | 1251 | * Lock file maintenance [Self-hosted Renovate Bot] 1252 | 1253 | # v1.27.40 1254 | ## (2023-11-24) 1255 | 1256 | * Update dependency @types/lodash to v4.14.202 [Self-hosted Renovate Bot] 1257 | 1258 | # v1.27.39 1259 | ## (2023-11-23) 1260 | 1261 | * Update dependency typescript to v5.3.2 [Self-hosted Renovate Bot] 1262 | 1263 | # v1.27.38 1264 | ## (2023-11-22) 1265 | 1266 | 1267 |
1268 | Update balena/open-balena-base Docker tag to v16.0.15 [Self-hosted Renovate Bot] 1269 | 1270 | > ## open-balena-base-16.0.15 1271 | > ### (2023-11-22) 1272 | > 1273 | > * Update dependency node to v20.10.0 [Self-hosted Renovate Bot] 1274 | > 1275 | 1276 |
1277 | 1278 | # v1.27.37 1279 | ## (2023-11-20) 1280 | 1281 | * Lock file maintenance [Self-hosted Renovate Bot] 1282 | 1283 | # v1.27.36 1284 | ## (2023-11-15) 1285 | 1286 | 1287 |
1288 | Update balena/open-balena-base Docker tag to v16.0.14 [Self-hosted Renovate Bot] 1289 | 1290 | > ## open-balena-base-16.0.14 1291 | > ### (2023-11-15) 1292 | > 1293 | > * Update dependency npm to v10.2.4 [Self-hosted Renovate Bot] 1294 | > 1295 | 1296 |
1297 | 1298 | # v1.27.35 1299 | ## (2023-11-13) 1300 | 1301 | * Update dependency @balena/lint to v7.2.4 [Self-hosted Renovate Bot] 1302 | 1303 | # v1.27.34 1304 | ## (2023-11-13) 1305 | 1306 | * Lock file maintenance [Self-hosted Renovate Bot] 1307 | 1308 | # v1.27.33 1309 | ## (2023-11-13) 1310 | 1311 | * Lock file maintenance [Self-hosted Renovate Bot] 1312 | 1313 | # v1.27.32 1314 | ## (2023-11-12) 1315 | 1316 | * Update dependency @balena/lint to v7.2.3 [Self-hosted Renovate Bot] 1317 | 1318 | # v1.27.31 1319 | ## (2023-11-12) 1320 | 1321 | * Update dependency @balena/lint to v7.2.2 [Self-hosted Renovate Bot] 1322 | 1323 | # v1.27.30 1324 | ## (2023-11-10) 1325 | 1326 | * Update dependency @types/lodash to v4.14.201 [Self-hosted Renovate Bot] 1327 | 1328 | # v1.27.29 1329 | ## (2023-11-10) 1330 | 1331 | * Update dependency @types/request-promise to v4.1.51 [Self-hosted Renovate Bot] 1332 | 1333 | # v1.27.28 1334 | ## (2023-11-06) 1335 | 1336 | * Lock file maintenance [Self-hosted Renovate Bot] 1337 | 1338 | # v1.27.27 1339 | ## (2023-11-02) 1340 | 1341 | 1342 |
1343 | Update balena/open-balena-base Docker tag to v16.0.13 [Self-hosted Renovate Bot] 1344 | 1345 | > ## open-balena-base-16.0.13 1346 | > ### (2023-11-02) 1347 | > 1348 | > * Update dependency npm to v10.2.3 [Self-hosted Renovate Bot] 1349 | > 1350 | 1351 |
1352 | 1353 | # v1.27.26 1354 | ## (2023-10-31) 1355 | 1356 | 1357 |
1358 | Update balena/open-balena-base Docker tag to v16.0.12 [Self-hosted Renovate Bot] 1359 | 1360 | > ## open-balena-base-16.0.12 1361 | > ### (2023-11-01) 1362 | > 1363 | > * Update dependency node to v20.9.0 [Self-hosted Renovate Bot] 1364 | > 1365 | 1366 |
1367 | 1368 | # v1.27.25 1369 | ## (2023-10-31) 1370 | 1371 | 1372 |
1373 | Update balena/open-balena-base Docker tag to v16.0.11 [Self-hosted Renovate Bot] 1374 | 1375 | > ## open-balena-base-16.0.11 1376 | > ### (2023-11-01) 1377 | > 1378 | > * Update dependency npm to v10.2.2 [Self-hosted Renovate Bot] 1379 | > 1380 | 1381 |
1382 | 1383 | # v1.27.24 1384 | ## (2023-10-30) 1385 | 1386 | * Lock file maintenance [Self-hosted Renovate Bot] 1387 | 1388 | # v1.27.23 1389 | ## (2023-10-23) 1390 | 1391 | * Lock file maintenance [Self-hosted Renovate Bot] 1392 | 1393 | # v1.27.22 1394 | ## (2023-10-21) 1395 | 1396 | * Update dependency @types/request-promise to v4.1.50 [Self-hosted Renovate Bot] 1397 | 1398 | # v1.27.21 1399 | ## (2023-10-21) 1400 | 1401 | * Update dependency @balena/lint to v7.2.1 [Self-hosted Renovate Bot] 1402 | 1403 | # v1.27.20 1404 | ## (2023-10-21) 1405 | 1406 | * Update dependency @types/lodash to v4.14.200 [Self-hosted Renovate Bot] 1407 | 1408 | # v1.27.19 1409 | ## (2023-10-18) 1410 | 1411 | 1412 |
1413 | Update balena/open-balena-base Docker tag to v16.0.10 [Self-hosted Renovate Bot] 1414 | 1415 | > ## open-balena-base-16.0.10 1416 | > ### (2023-10-18) 1417 | > 1418 | > * Update dependency node to v20.8.1 [Self-hosted Renovate Bot] 1419 | > 1420 | 1421 |
1422 | 1423 | # v1.27.18 1424 | ## (2023-10-18) 1425 | 1426 | 1427 |
1428 | Update balena/open-balena-base Docker tag to v16.0.9 [Self-hosted Renovate Bot] 1429 | 1430 | > ## open-balena-base-16.0.9 1431 | > ### (2023-10-18) 1432 | > 1433 | > * Update dependency npm to v10.2.1 [Self-hosted Renovate Bot] 1434 | > 1435 | 1436 |
1437 | 1438 | # v1.27.17 1439 | ## (2023-10-03) 1440 | 1441 | 1442 |
1443 | Update balena/open-balena-base Docker tag to v16.0.8 [Self-hosted Renovate Bot] 1444 | 1445 | > ## open-balena-base-16.0.8 1446 | > ### (2023-10-03) 1447 | > 1448 | > * Update dependency npm to v10.2.0 [Self-hosted Renovate Bot] 1449 | > 1450 | 1451 |
1452 | 1453 | # v1.27.16 1454 | ## (2023-10-02) 1455 | 1456 | * Update dependency @types/request-promise to v4.1.49 [Self-hosted Renovate Bot] 1457 | 1458 | # v1.27.15 1459 | ## (2023-10-02) 1460 | 1461 | * Update dependency @types/lodash to v4.14.199 [Self-hosted Renovate Bot] 1462 | 1463 | # v1.27.14 1464 | ## (2023-10-02) 1465 | 1466 | * Update dependency typescript to v5 [Self-hosted Renovate Bot] 1467 | 1468 | # v1.27.13 1469 | ## (2023-10-02) 1470 | 1471 | * Update balena/open-balena-base from 16.0.0 to 16.0.7 [Anton Belodedenko] 1472 | 1473 | # v1.27.12 1474 | ## (2023-10-02) 1475 | 1476 | * Update dependency @balena/lint to v7 [Self-hosted Renovate Bot] 1477 | 1478 | # v1.27.11 1479 | ## (2023-09-21) 1480 | 1481 | * Update repo.yml [Kyle Harding] 1482 | 1483 | # v1.27.10 1484 | ## (2023-09-11) 1485 | 1486 | * Update open-balena-base package.json to specify nodejs 20 [Pagan Gazzard] 1487 | 1488 | # v1.27.9 1489 | ## (2023-09-11) 1490 | 1491 | 1492 |
1493 | Update open-balena-base to 16.0.0 [Pagan Gazzard] 1494 | 1495 | > ## open-balena-base-16.0.0 1496 | > ### (2023-09-11) 1497 | > 1498 | > * Update nodejs to 20.6.1 and npm to 10.1.0 [Pagan Gazzard] 1499 | > 1500 | > ## open-balena-base-15.1.1 1501 | > ### (2023-09-07) 1502 | > 1503 | > * fix env var resolution from token map [ab77] 1504 | > 1505 | 1506 |
1507 | 1508 | # v1.27.8 1509 | ## (2023-09-07) 1510 | 1511 | * Update balena/open-balena-base Docker tag to v15.1.0 [Self-hosted Renovate Bot] 1512 | 1513 | # v1.27.7 1514 | ## (2023-09-07) 1515 | 1516 | * Update balena/open-balena-base Docker tag to v15.0.5 [Self-hosted Renovate Bot] 1517 | 1518 | # v1.27.6 1519 | ## (2023-08-18) 1520 | 1521 | * Update dependency lint-staged to v13.3.0 [Self-hosted Renovate Bot] 1522 | 1523 | # v1.27.5 1524 | ## (2023-08-17) 1525 | 1526 | * Update dependency @types/lodash to v4.14.197 [Self-hosted Renovate Bot] 1527 | 1528 | # v1.27.4 1529 | ## (2023-08-17) 1530 | 1531 | * Update balena/open-balena-base Docker tag to v15.0.3 [Self-hosted Renovate Bot] 1532 | 1533 | # v1.27.3 1534 | ## (2023-07-10) 1535 | 1536 | 1537 |
1538 | Update open-balena-base to 15.0.0 [Pagan Gazzard] 1539 | 1540 | > ## open-balena-base-15.0.0 1541 | > ### (2023-07-06) 1542 | > 1543 | > * Upgrade to debian bookworm [Pagan Gazzard] 1544 | > 1545 | > ## open-balena-base-14.11.1 1546 | > ### (2023-07-05) 1547 | > 1548 | > * Update Node.js to v18.16.1 [Self-hosted Renovate Bot] 1549 | > 1550 | > ## open-balena-base-14.11.0 1551 | > ### (2023-07-05) 1552 | > 1553 | > * Update dependency npm to v9.8.0 [Self-hosted Renovate Bot] 1554 | > 1555 | > ## open-balena-base-14.10.2 1556 | > ### (2023-06-21) 1557 | > 1558 | > * Update dependency npm to v9.7.2 [Self-hosted Renovate Bot] 1559 | > 1560 | > ## open-balena-base-14.10.1 1561 | > ### (2023-06-21) 1562 | > 1563 | > * Update dependency node to v18.16.1 [Self-hosted Renovate Bot] 1564 | > 1565 | > ## open-balena-base-14.10.0 1566 | > ### (2023-06-07) 1567 | > 1568 | > * Update dependency npm to v9.7.1 [Self-hosted Renovate Bot] 1569 | > 1570 | > ## open-balena-base-14.9.4 1571 | > ### (2023-06-01) 1572 | > 1573 | > * Set systemd stopsignal to SIGRTMIN+3 [Pagan Gazzard] 1574 | > 1575 | 1576 |
1577 | 1578 | # v1.27.2 1579 | ## (2023-05-30) 1580 | 1581 | * Update dependency @types/lodash to v4.14.195 [Self-hosted Renovate Bot] 1582 | 1583 | # v1.27.1 1584 | ## (2023-05-22) 1585 | 1586 | * Update balena/open-balena-base Docker tag to v14.9.3 [Renovate Bot] 1587 | 1588 | # v1.27.0 1589 | ## (2023-05-01) 1590 | 1591 | * Update dependency lint-staged to v13.2.2 [Renovate Bot] 1592 | 1593 | # v1.26.0 1594 | ## (2023-05-01) 1595 | 1596 | * Update balena/open-balena-base Docker tag to v14.9.1 [Renovate Bot] 1597 | 1598 | # v1.25.2 1599 | ## (2023-05-01) 1600 | 1601 | * Update dependency @types/lodash to v4.14.194 [Renovate Bot] 1602 | 1603 | # v1.25.1 1604 | ## (2023-05-01) 1605 | 1606 | * Update dependency @balena/lint to v6.2.2 [Renovate Bot] 1607 | 1608 | # v1.25.0 1609 | ## (2023-03-22) 1610 | 1611 | 1612 |
1613 | Update open-balena-base to 14.7.2 [Pagan Gazzard] 1614 | 1615 | > ## open-balena-base-14.7.2 1616 | > ### (2023-03-22) 1617 | > 1618 | > * Maintain legacy docker tags behaviour [Kyle Harding] 1619 | > 1620 | > ## open-balena-base-14.7.1 1621 | > ### (2023-03-20) 1622 | > 1623 | > * Update dependency npm to v9.6.2 [Renovate Bot] 1624 | > 1625 | > ## open-balena-base-14.7.0 1626 | > ### (2023-03-20) 1627 | > 1628 | > * Update dependency node [Renovate Bot] 1629 | > 1630 | > ## open-balena-base-14.6.1 1631 | > ### (2023-03-14) 1632 | > 1633 | > * Restart confd if it fails to start [Anton Belodedenko] 1634 | > 1635 | > ## open-balena-base-14.6.0 1636 | > ### (2023-03-02) 1637 | > 1638 | > * Update dependency npm to 9.6.0 [Renovate Bot] 1639 | > 1640 | 1641 |
1642 | 1643 | # v1.24.4 1644 | ## (2023-02-23) 1645 | 1646 | * Update balena/open-balena-base Docker tag to v14.5.4 [Renovate Bot] 1647 | 1648 | # v1.24.3 1649 | ## (2023-02-22) 1650 | 1651 | * Update balena/open-balena-base Docker tag to v14.5.3 [Renovate Bot] 1652 | 1653 | # v1.24.2 1654 | ## (2023-02-21) 1655 | 1656 | * Update balena/open-balena-base Docker tag to v14.5.2 [Renovate Bot] 1657 | 1658 | # v1.24.1 1659 | ## (2023-02-20) 1660 | 1661 | * Update balena/open-balena-base Docker tag to v14.5.1 [Renovate Bot] 1662 | 1663 | # v1.24.0 1664 | ## (2023-02-17) 1665 | 1666 | * Update balena/open-balena-base Docker tag to v14.5.0 [Renovate Bot] 1667 | 1668 | # v1.23.3 1669 | ## (2023-02-17) 1670 | 1671 | * Update balena/open-balena-base Docker tag to v14.4.2 [Renovate Bot] 1672 | 1673 | # v1.23.2 1674 | ## (2023-02-13) 1675 | 1676 | * Update dependency lint-staged to 13.1.2 [Renovate Bot] 1677 | 1678 | # v1.23.1 1679 | ## (2023-02-07) 1680 | 1681 | * Update dependency lint-staged to 13.1.1 [Renovate Bot] 1682 | 1683 | # v1.23.0 1684 | ## (2023-02-06) 1685 | 1686 | * Update engines entry to specify npm 9 [Pagan Gazzard] 1687 | 1688 | # v1.22.0 1689 | ## (2023-02-03) 1690 | 1691 | * Update balena/open-balena-base Docker tag to v14.4.1 [Renovate Bot] 1692 | 1693 | # v1.21.1 1694 | ## (2023-01-30) 1695 | 1696 | * Update dependency typescript to 4.9.5 [Renovate Bot] 1697 | 1698 | # v1.21.0 1699 | ## (2023-01-09) 1700 | 1701 | * Update balena/open-balena-base Docker tag to v14.2.0 [Renovate Bot] 1702 | 1703 | # v1.20.6 1704 | ## (2022-12-14) 1705 | 1706 | * Update balena/open-balena-base Docker tag to v14.1.4 [Renovate Bot] 1707 | 1708 | # v1.20.5 1709 | ## (2022-12-09) 1710 | 1711 | * Update dependency lint-staged to 13.1.0 [Renovate Bot] 1712 | 1713 | # v1.20.4 1714 | ## (2022-12-08) 1715 | 1716 | * Update dependency typescript to 4.9.4 [Renovate Bot] 1717 | 1718 | # v1.20.3 1719 | ## (2022-12-08) 1720 | 1721 | * Update dependency @types/lodash to 4.14.191 [Renovate Bot] 1722 | 1723 | # v1.20.2 1724 | ## (2022-12-08) 1725 | 1726 | * Update balena/open-balena-base Docker tag to v14.1.3 [Renovate Bot] 1727 | 1728 | # v1.20.1 1729 | ## (2022-11-25) 1730 | 1731 | * Update dependency lint-staged to 13.0.4 [Renovate Bot] 1732 | 1733 | # v1.20.0 1734 | ## (2022-11-24) 1735 | 1736 | * Update balena/open-balena-base Docker tag to v14.1.0 [Renovate Bot] 1737 | 1738 | # v1.19.3 1739 | ## (2022-11-23) 1740 | 1741 | * Update dependency @types/lodash to 4.14.190 [Renovate Bot] 1742 | 1743 | # v1.19.2 1744 | ## (2022-11-17) 1745 | 1746 | * Update dependency typescript to 4.9.3 [Renovate Bot] 1747 | 1748 | # v1.19.1 1749 | ## (2022-11-17) 1750 | 1751 | * Update dependency @types/lodash to 4.14.189 [Renovate Bot] 1752 | 1753 | # v1.19.0 1754 | ## (2022-11-17) 1755 | 1756 | * Update npm to 9.1.1 [Renovate Bot] 1757 | 1758 | # v1.18.4 1759 | ## (2022-11-09) 1760 | 1761 | * Update balena/open-balena-base Docker tag to v14.0.1 [Renovate Bot] 1762 | 1763 | # v1.18.3 1764 | ## (2022-11-07) 1765 | 1766 | * Update dependency @balena/lint to 6.2.1 [Renovate Bot] 1767 | 1768 | # v1.18.2 1769 | ## (2022-11-04) 1770 | 1771 | * Update dependency @types/lodash to 4.14.188 [Renovate Bot] 1772 | 1773 | # v1.18.1 1774 | ## (2022-11-01) 1775 | 1776 | * Update dependency @types/lodash to 4.14.187 [Renovate Bot] 1777 | 1778 | # v1.18.0 1779 | ## (2022-10-27) 1780 | 1781 | 1782 |
1783 | Update open-balena-base to 14.0.0 [Pagan Gazzard] 1784 | 1785 | > ## open-balena-base-14.0.0 1786 | > ### (2022-10-27) 1787 | > 1788 | > * Update to nodejs 18 [Pagan Gazzard] 1789 | > 1790 |
1791 | 1792 | # v1.17.4 1793 | ## (2022-10-24) 1794 | 1795 | * Update balena/open-balena-base Docker tag to v13.6.1 [Renovate Bot] 1796 | 1797 | # v1.17.3 1798 | ## (2022-10-23) 1799 | 1800 | * Update dependency @types/node to 16.18.0 [Renovate Bot] 1801 | 1802 | # v1.17.2 1803 | ## (2022-10-18) 1804 | 1805 | * Update dependency @types/node to 16.11.67 [Renovate Bot] 1806 | 1807 | # v1.17.1 1808 | ## (2022-10-15) 1809 | 1810 | * Update dependency @types/node to 16.11.66 [Renovate Bot] 1811 | 1812 | # v1.17.0 1813 | ## (2022-10-14) 1814 | 1815 | * Update balena/open-balena-base Docker tag to v13.6.0 [Renovate Bot] 1816 | 1817 | # v1.16.15 1818 | ## (2022-10-14) 1819 | 1820 | * Update balena/open-balena-base Docker tag to v13.5.3 [Renovate Bot] 1821 | 1822 | # v1.16.14 1823 | ## (2022-10-10) 1824 | 1825 | * Update dependency @types/node to 16.11.65 [Renovate Bot] 1826 | 1827 | # v1.16.13 1828 | ## (2022-10-06) 1829 | 1830 | * Update dependency typescript to 4.8.4 [Renovate Bot] 1831 | 1832 | # v1.16.12 1833 | ## (2022-10-06) 1834 | 1835 | * Update dependency @types/node to 16.11.64 [Renovate Bot] 1836 | 1837 | # v1.16.11 1838 | ## (2022-10-06) 1839 | 1840 | * Update dependency @types/lodash to 4.14.186 [Renovate Bot] 1841 | 1842 | # v1.16.10 1843 | ## (2022-10-06) 1844 | 1845 | * Update balena/open-balena-base Docker tag to v13.5.2 [Renovate Bot] 1846 | 1847 | # v1.16.9 1848 | ## (2022-10-06) 1849 | 1850 | * Switch to Flowzone [ab77] 1851 | 1852 | # v1.16.8 1853 | ## (2022-09-26) 1854 | 1855 | * Update dependency @types/node to 16.11.62 [Renovate Bot] 1856 | 1857 | # v1.16.7 1858 | ## (2022-09-23) 1859 | 1860 | * Update dependency @types/node to 16.11.60 [Renovate Bot] 1861 | 1862 | # v1.16.6 1863 | ## (2022-09-13) 1864 | 1865 | * Update dependency @types/node to 16.11.59 [Renovate Bot] 1866 | 1867 | # v1.16.5 1868 | ## (2022-09-11) 1869 | 1870 | * Update dependency @types/lodash to 4.14.185 [Renovate Bot] 1871 | 1872 | # v1.16.4 1873 | ## (2022-09-08) 1874 | 1875 | * Update dependency @types/node to 16.11.58 [Renovate Bot] 1876 | 1877 | # v1.16.3 1878 | ## (2022-09-08) 1879 | 1880 | * Update dependency typescript to 4.8.3 [Renovate Bot] 1881 | 1882 | # v1.16.2 1883 | ## (2022-08-24) 1884 | 1885 | * Update dependency @types/node to 16.11.56 [Renovate Bot] 1886 | 1887 | # v1.16.1 1888 | ## (2022-08-24) 1889 | 1890 | * Update dependency @types/node to 16.11.55 [Renovate Bot] 1891 | 1892 | # v1.16.0 1893 | ## (2022-08-24) 1894 | 1895 | * Update balena/open-balena-base Docker tag to v13.5.1 [Renovate Bot] 1896 | 1897 | # v1.15.16 1898 | ## (2022-08-19) 1899 | 1900 | * Update dependency @types/lodash to 4.14.184 [Renovate Bot] 1901 | 1902 | # v1.15.15 1903 | ## (2022-08-19) 1904 | 1905 | * Update dependency @types/node to 16.11.50 [Renovate Bot] 1906 | 1907 | # v1.15.14 1908 | ## (2022-08-18) 1909 | 1910 | * Update dependency @types/lodash to 4.14.183 [Renovate Bot] 1911 | 1912 | # v1.15.13 1913 | ## (2022-07-12) 1914 | 1915 | 1916 |
1917 | Update open-balena-base to 13.4.0 [Pagan Gazzard] 1918 | 1919 | > ## open-balena-base-13.4.0 1920 | > ### (2022-07-09) 1921 | > 1922 | > * Update nodejs to 16.16.0 and npm to 8.13.2 [Pagan Gazzard] 1923 | > 1924 |
1925 | 1926 | # v1.15.12 1927 | ## (2022-07-12) 1928 | 1929 | * Update dependency typescript to 4.7.4 [Renovate Bot] 1930 | 1931 | # v1.15.11 1932 | ## (2022-07-12) 1933 | 1934 | * Update dependency lint-staged to 13.0.3 [Renovate Bot] 1935 | 1936 | # v1.15.10 1937 | ## (2022-07-12) 1938 | 1939 | * Update dependency @types/node to 16.11.43 [Renovate Bot] 1940 | 1941 | # v1.15.9 1942 | ## (2022-06-13) 1943 | 1944 | * Update @balena/lint from 6.1.1 to 6.2.0 [Renovate Bot] 1945 | 1946 | # v1.15.8 1947 | ## (2022-06-13) 1948 | 1949 | * Update lint-staged from 11.2.6 to 13.0.1 [Renovate Bot] 1950 | 1951 | # v1.15.7 1952 | ## (2022-06-13) 1953 | 1954 | * Update typescript from 4.4.4 to 4.7.3 [Renovate Bot] 1955 | 1956 | # v1.15.6 1957 | ## (2022-06-13) 1958 | 1959 | * Update husky from 4.3.8 to 8.0.1 [Renovate Bot] 1960 | 1961 | # v1.15.5 1962 | ## (2022-06-13) 1963 | 1964 | * Update @types/node from 16.11.6 to 16.11.39 [Renovate Bot] 1965 | 1966 | # v1.15.4 1967 | ## (2022-06-13) 1968 | 1969 | * Update @types/lodash from 4.14.176 to 4.14.182 [Renovate Bot] 1970 | 1971 | # v1.15.3 1972 | ## (2022-06-13) 1973 | 1974 | * Update balena/open-balena-base from v13.3.1 to v13.3.2 [Renovate Bot] 1975 | * Update Pin dependencies [Renovate Bot] 1976 | 1977 | # v1.15.2 1978 | ## (2022-05-05) 1979 | 1980 | 1981 |
1982 | Update open-balena-base to 13.3.1 [Pagan Gazzard] 1983 | 1984 | > ## open-balena-base-13.3.1 1985 | > ### (2022-05-05) 1986 | > 1987 | > * Add SystemMaxUse for journald.conf [Pagan Gazzard] 1988 | > 1989 |
1990 | 1991 | # v1.15.1 1992 | ## (2022-05-03) 1993 | 1994 | 1995 |
1996 | Update open-balena-base to 13.3.0 [Pagan Gazzard] 1997 | 1998 | > ## open-balena-base-13.3.0 1999 | > ### (2022-05-02) 2000 | > 2001 | > * Update nodejs to 16.15.0 and npm to 8.8.0 [Pagan Gazzard] 2002 | > 2003 |
2004 | 2005 | # v1.15.0 2006 | ## (2022-04-08) 2007 | 2008 | * Update open-balena-base to 13.2.3 Update open-balena-base from 13.2.1 to 13.2.3 [ab77] 2009 | 2010 | # v1.14.8 2011 | ## (2022-03-21) 2012 | 2013 | 2014 |
2015 | Update open-balena-base to 13.2.1 [Pagan Gazzard] 2016 | 2017 | > ## open-balena-base-13.2.1 2018 | > ### (2022-03-21) 2019 | > 2020 | > * Update nodejs to 16.14.2 and npm to 8.5.5 [Pagan Gazzard] 2021 | > 2022 | > ## open-balena-base-13.2.0 2023 | > ### (2022-02-22) 2024 | > 2025 | > * Consistent SENTRY environment names [ab77] 2026 | > 2027 |
2028 | 2029 | # v1.14.7 2030 | ## (2022-02-24) 2031 | 2032 | * Check for non-zero file instead [ab77] 2033 | 2034 | # v1.14.6 2035 | ## (2022-02-24) 2036 | 2037 | * Fix health-check to work with public DNS configs [ab77] 2038 | 2039 | # v1.14.5 2040 | ## (2022-02-21) 2041 | 2042 | 2043 |
2044 | Update open-balena-base to 13.1.0 [Pagan Gazzard] 2045 | 2046 | > ## open-balena-base-13.1.0 2047 | > ### (2022-02-21) 2048 | > 2049 | > * Update nodejs to 16.14.0 and npm to 8.5.1 [Pagan Gazzard] 2050 | > 2051 | > ## open-balena-base-13.0.7 2052 | > ### (2022-02-16) 2053 | > 2054 | > * Avoid cryptic names and rename bcr to registry-proxy [Kyle Harding] 2055 | > 2056 | > ## open-balena-base-13.0.6 2057 | > ### (2022-02-15) 2058 | > 2059 | > * Add new balena container registry (bcr) host [Kyle Harding] 2060 | > 2061 | > ## open-balena-base-13.0.5 2062 | > ### (2022-02-01) 2063 | > 2064 | > * Refactor ROOT_CA handling/resolution [ab77] 2065 | > 2066 |
2067 | 2068 | # v1.14.4 2069 | ## (2022-01-25) 2070 | 2071 | * Use local IP for HC [ab77] 2072 | 2073 | # v1.14.3 2074 | ## (2022-01-13) 2075 | 2076 | 2077 |
2078 | Update open-balena-base to 13.0.4 [Pagan Gazzard] 2079 | 2080 | > ## open-balena-base-13.0.4 2081 | > ### (2022-01-11) 2082 | > 2083 | > * Update to nodejs 16.13.2 and npm 8.3.0 [Pagan Gazzard] 2084 | > 2085 |
2086 | 2087 | # v1.14.2 2088 | ## (2021-12-10) 2089 | 2090 | * More specific healthcheck [ab77] 2091 | 2092 | # v1.14.1 2093 | ## (2021-12-09) 2094 | 2095 | 2096 |
2097 | Update open-balena-base to 13.0.3 [Pagan Gazzard] 2098 | 2099 | > ## open-balena-base-13.0.3 2100 | > ### (2021-12-08) 2101 | > 2102 | > * Update to nodejs 16.13.1 and npm 8.2.0 [Pagan Gazzard] 2103 | > 2104 |
2105 | 2106 | # v1.14.0 2107 | ## (2021-11-24) 2108 | 2109 | 2110 |
2111 | Update open-balena-base to 13.0.2 [ab77] 2112 | 2113 | > ## open-balena-base-13.0.2 2114 | > ### (2021-11-19) 2115 | > 2116 | > * Stage stack global environment [ab77] 2117 | > 2118 | > ## open-balena-base-13.0.1 2119 | > ### (2021-11-01) 2120 | > 2121 | > * Install python3 for node-gyp 8.x which is used by npm 8 [Pagan Gazzard] 2122 | > 2123 |
2124 | 2125 | # v1.13.0 2126 | ## (2021-11-01) 2127 | 2128 | 2129 |
2130 | Update open-balena-base to 13.0.0 [Pagan Gazzard] 2131 | 2132 | > ## open-balena-base-13.0.0 2133 | > ### (2021-10-30) 2134 | > 2135 | > * Update nodejs to 16.13.0 and npm 8.1.1 [Pagan Gazzard] 2136 | > 2137 | > ## open-balena-base-12.2.0 2138 | > ### (2021-10-18) 2139 | > 2140 | > * Update nodejs to 14.18.1 and npm to 6.14.15 [Pagan Gazzard] 2141 | > 2142 |
2143 | 2144 | # v1.12.1 2145 | ## (2021-10-14) 2146 | 2147 | 2148 |
2149 | Update open-balena-base to 12.1.1 [Akis Kesoglou] 2150 | 2151 | > ## open-balena-base-12.1.1 2152 | > ### (2021-10-14) 2153 | > 2154 | > * Simplify config by baking the device UUID into the DNS_TLD if available [Akis Kesoglou] 2155 | > * Fix configuration for non-BoB deployments [Akis Kesoglou] 2156 | > 2157 |
2158 | 2159 | # v1.12.0 2160 | ## (2021-09-24) 2161 | 2162 | 2163 |
2164 | Update open-balena-base to 12.1.0 [ab77] 2165 | 2166 | > ## open-balena-base-12.1.0 2167 | > ### (2021-09-24) 2168 | > 2169 | > * Auto-configure balenaMachine(bob) [ab77] 2170 | > 2171 | > ## open-balena-base-12.0.3 2172 | > ### (2021-09-01) 2173 | > 2174 | > * Attempt to load root CA certificate bundle from file [ab77] 2175 | > 2176 |
2177 | 2178 | # v1.11.4 2179 | ## (2021-09-01) 2180 | 2181 | 2182 |
2183 | Insert BALENA_DEVICE_UUID if running on balenaOS [ab77] 2184 | 2185 | > ## open-balena-base-12.0.3 2186 | > ### (2021-09-01) 2187 | > 2188 | > * Attempt to load root CA certificate bundle from file [ab77] 2189 | > 2190 |
2191 | 2192 | # v1.11.3 2193 | ## (2021-08-25) 2194 | 2195 | * Refactor MDNS_SUBDOMAINS handling [ab77] 2196 | 2197 | # v1.11.2 2198 | ## (2021-08-24) 2199 | 2200 | 2201 |
2202 | Update open-balena-base to 12.0.2 [Pagan Gazzard] 2203 | 2204 | > ## open-balena-base-12.0.2 2205 | > ### (2021-08-24) 2206 | > 2207 | > * Use multi-user.target as the default target [Pagan Gazzard] 2208 | > 2209 |
2210 | 2211 | # v1.11.1 2212 | ## (2021-08-24) 2213 | 2214 | * patch: Revert "switch to open-balena-base:no-systemd" [Thomas Manning] 2215 | 2216 | # v1.11.0 2217 | ## (2021-08-23) 2218 | 2219 | * minor: switch to open-balena-base:no-systemd. removed system service file, update readme. [Thomas Manning] 2220 | 2221 | # v1.10.1 2222 | ## (2021-08-19) 2223 | 2224 | 2225 |
2226 | Add avahi-utils package [ab77] 2227 | 2228 | > ## open-balena-base-12.0.1 2229 | > ### (2021-08-19) 2230 | > 2231 | > * Use basic.target as the default target [Pagan Gazzard] 2232 | > 2233 |
2234 | 2235 | # v1.10.0 2236 | ## (2021-08-19) 2237 | 2238 | 2239 |
2240 | Update open-balena-base to 12.0.0 [Pagan Gazzard] 2241 | 2242 | > ## open-balena-base-12.0.0 2243 | > ### (2021-08-17) 2244 | > 2245 | > * Update to debian bullseye [Pagan Gazzard] 2246 | > 2247 |
2248 | 2249 | # v1.9.16 2250 | ## (2021-08-18) 2251 | 2252 | * Correctly handle cases with no IPv6 connectivity [ab77] 2253 | 2254 | # v1.9.15 2255 | ## (2021-08-18) 2256 | 2257 | 2258 |
2259 | Add IPv6 support [ab77] 2260 | 2261 | > ## open-balena-base-11.3.12 2262 | > ### (2021-08-13) 2263 | > 2264 | > * Add hosts [ab77] 2265 | > 2266 | > ## open-balena-base-11.3.11 2267 | > ### (2021-08-13) 2268 | > 2269 | > * Remove deprecated etcd config [ab77] 2270 | > 2271 | > ## open-balena-base-11.3.10 2272 | > ### (2021-08-13) 2273 | > 2274 | > * Add missing init script [ab77] 2275 | > 2276 |
2277 | 2278 | # v1.9.14 2279 | ## (2021-08-13) 2280 | 2281 | 2282 |
2283 | Update open-balena-base to 11.3.9 [Pagan Gazzard] 2284 | 2285 | > ## open-balena-base-11.3.9 2286 | > ### (2021-08-13) 2287 | > 2288 | > * Update no-systemd variant [ab77] 2289 | > 2290 |
2291 | 2292 | # v1.9.13 2293 | ## (2021-08-12) 2294 | 2295 | 2296 |
2297 | Update open-balena-base to 11.3.8 [Pagan Gazzard] 2298 | 2299 | > ## open-balena-base-11.3.8 2300 | > ### (2021-08-12) 2301 | > 2302 | > * Update nodejs to 14.17.5 [Pagan Gazzard] 2303 | > 2304 |
2305 | 2306 | # v1.9.12 2307 | ## (2021-07-30) 2308 | 2309 | * Update open-balena-base to 11.3.7 Update open-balena-base from 11.3.3 to 11.3.7 [ab77] 2310 | 2311 | # v1.9.11 2312 | ## (2021-07-29) 2313 | 2314 | 2315 |
2316 | Update open-balena-base to 11.3.3 [Pagan Gazzard] 2317 | 2318 | > ## open-balena-base-11.3.3 2319 | > ### (2021-07-29) 2320 | > 2321 | > * Add parallel HOSTs and env vars [ab77] 2322 | > 2323 |
2324 | 2325 | # v1.9.10 2326 | ## (2021-07-05) 2327 | 2328 | 2329 |
2330 | Update open-balena-base to 11.3.2 [Pagan Gazzard] 2331 | 2332 | > ## open-balena-base-11.3.2 2333 | > ### (2021-07-02) 2334 | > 2335 | > * Update nodejs to 14.17.2 [Pagan Gazzard] 2336 | > 2337 | > ## open-balena-base-11.3.1 2338 | > ### (2021-06-30) 2339 | > 2340 | > * Delete .github directory [dfunckt] 2341 | > 2342 | > ## open-balena-base-11.3.0 2343 | > ### (2021-06-30) 2344 | > 2345 | > * Update nodejs to 14.17.1 [Trong Nghia Nguyen] 2346 | > 2347 |
2348 | 2349 | # v1.9.9 2350 | ## (2021-07-01) 2351 | 2352 | * Delete .github directory [dfunckt] 2353 | 2354 | # v1.9.8 2355 | ## (2021-05-14) 2356 | 2357 | 2358 |
2359 | Update open-balena-base to 11.2.0 [Pagan Gazzard] 2360 | 2361 | > ## open-balena-base-11.2.0 2362 | > ### (2021-05-14) 2363 | > 2364 | > * Update nodejs to 14.17.0 and npm to 6.14.13 [Pagan Gazzard] 2365 | > 2366 |
2367 | 2368 | # v1.9.7 2369 | ## (2021-04-09) 2370 | 2371 | 2372 |
2373 | Update open-balena-base to 11.1.2 [Pagan Gazzard] 2374 | 2375 | > ## open-balena-base-11.1.2 2376 | > ### (2021-04-08) 2377 | > 2378 | > * Update nodejs to 14.16.1 and npm to 6.14.12 [Pagan Gazzard] 2379 | > 2380 | > ## open-balena-base-11.1.1 2381 | > ### (2021-03-17) 2382 | > 2383 | > * Drop CircleCI [ab77] 2384 | > 2385 |
2386 | 2387 | # v1.9.6 2388 | ## (2021-02-24) 2389 | 2390 | 2391 |
2392 | Update open-balena-base to 11.1.0 [Pagan Gazzard] 2393 | 2394 | > ## open-balena-base-11.1.0 2395 | > ### (2021-02-24) 2396 | > 2397 | > * Update nodejs to 14.16.0 [Pagan Gazzard] 2398 | > 2399 |
2400 | 2401 | # v1.9.5 2402 | ## (2021-02-17) 2403 | 2404 | 2405 |
2406 | Update open-balena-base to 11.0.5 [Pagan Gazzard] 2407 | 2408 | > ## open-balena-base-11.0.5 2409 | > ### (2021-02-15) 2410 | > 2411 | > * Update nodejs to 14.15.5 and npm to 6.14.11 [Pagan Gazzard] 2412 | > 2413 |
2414 | 2415 | # v1.9.4 2416 | ## (2021-01-29) 2417 | 2418 | * Remove Hedley and Will from CODEOWNERS [dfunckt] 2419 | 2420 | # v1.9.3 2421 | ## (2021-01-29) 2422 | 2423 | * Add .versionbot/CHANGELOG.yml for nested changelogs [Pagan Gazzard] 2424 | 2425 | # v1.9.2 2426 | ## (2021-01-13) 2427 | 2428 | 2429 |
2430 | Update open-balena-base to 11.0.4 [Pagan Gazzard] 2431 | 2432 | > ## open-balena-base-11.0.4 2433 | > ### (2021-01-08) 2434 | > 2435 | > * Update nodejs to 14.15.4 and npm to 6.14.10 [Pagan Gazzard] 2436 | > 2437 |
2438 | 2439 | # v1.9.1 2440 | ## (2020-12-23) 2441 | 2442 | 2443 |
2444 | Update open-balena-base to 11.0.3 [Pagan Gazzard] 2445 | 2446 | > ## open-balena-base-11.0.3 2447 | > ### (2020-12-18) 2448 | > 2449 | > * Update nodejs to 14.15.3 and npm to 6.14.9 [Pagan Gazzard] 2450 | > 2451 |
2452 | 2453 | # v1.9.0 2454 | ## (2020-11-20) 2455 | 2456 | * Update open-balena-base to 11.0.2 [Pagan Gazzard] 2457 | 2458 | # v1.8.0 2459 | ## (2020-10-28) 2460 | 2461 | 2462 |
2463 | Update open-balena-base to 11.0.0 [Pagan Gazzard] 2464 | 2465 | > ## open-balena-base-11.0.0 2466 | > ### (2020-10-27) 2467 | > 2468 | > * Update to nodejs 14 [Pagan Gazzard] 2469 | > 2470 | > ## open-balena-base-10.1.1 2471 | > ### (2020-10-09) 2472 | > 2473 | > * Fix no-systemd nodejs version [Pagan Gazzard] 2474 | > 2475 |
2476 | 2477 | # v1.7.9 2478 | ## (2020-07-28) 2479 | 2480 | * Update dependencies [Pagan Gazzard] 2481 | 2482 | # v1.7.8 2483 | ## (2020-07-27) 2484 | 2485 | 2486 |
2487 | Update open-balena-base to 9.4.3 [Pagan Gazzard] 2488 | 2489 | > ## open-balena-base-9.4.3 2490 | > ### (2020-07-24) 2491 | > 2492 | > * Update nodejs to 12.18.3 and npm to 6.14.7 [Pagan Gazzard] 2493 | > 2494 |
2495 | 2496 | # v1.7.7 2497 | ## (2020-07-02) 2498 | 2499 | 2500 |
2501 | Update open-balena-base to 9.4.2 [Pagan Gazzard] 2502 | 2503 | > ## open-balena-base-9.4.2 2504 | > ### (2020-06-30) 2505 | > 2506 | > * Update nodejs to 12.18.2 [Pagan Gazzard] 2507 | 2508 | > ## open-balena-base-9.4.1 2509 | > ### (2020-06-19) 2510 | > 2511 | > * Update nodejs to 12.18.1 [Pagan Gazzard] 2512 | 2513 | > ## open-balena-base-9.4.0 2514 | > ### (2020-06-08) 2515 | > 2516 | > * Update nodejs to 12.18.0 [Pagan Gazzard] 2517 | 2518 | > ## open-balena-base-9.3.0 2519 | > ### (2020-05-29) 2520 | > 2521 | > * Update nodejs to 12.17.0 and npm to 6.14.5 [Pagan Gazzard] 2522 |
2523 | 2524 | # v1.7.6 2525 | ## (2020-05-01) 2526 | 2527 | 2528 |
2529 | Update open-balena-base to 9.2.4 [Pagan Gazzard] 2530 | 2531 | > ## open-balena-base-9.2.4 2532 | > ### (2020-04-30) 2533 | > 2534 | > * Update nodejs to 12.16.3 [Pagan Gazzard] 2535 | 2536 | > ## open-balena-base-9.2.3 2537 | > ### (2020-04-15) 2538 | > 2539 | > * Forward log from journald to console by default [Trong Nghia Nguyen] 2540 |
2541 | 2542 | # v1.7.5 2543 | ## (2020-04-09) 2544 | 2545 | 2546 |
2547 | Update open-balena-base to 9.2.2 [Pagan Gazzard] 2548 | 2549 | > ## open-balena-base-9.2.2 2550 | > ### (2020-04-09) 2551 | > 2552 | > * Update nodejs to 12.16.2, npm to 6.14.4 [Pagan Gazzard] 2553 |
2554 | 2555 | # v1.7.4 2556 | ## (2020-02-20) 2557 | 2558 | 2559 |
2560 | Update open-balena-base to 9.2.1 [Pagan Gazzard] 2561 | 2562 | > ## open-balena-base-9.2.1 2563 | > ### (2020-02-20) 2564 | > 2565 | > * Update nodejs to 12.16.1 [Pagan Gazzard] 2566 |
2567 | 2568 | # v1.7.3 2569 | ## (2020-02-13) 2570 | 2571 | 2572 |
2573 | Update open-balena-base to 9.2.0 [Pagan Gazzard] 2574 | 2575 | > ## open-balena-base-9.2.0 2576 | > ### (2020-02-11) 2577 | > 2578 | > * Update nodejs to 12.16.0 [Pagan Gazzard] 2579 | 2580 | > ## open-balena-base-9.1.0 2581 | > ### (2020-02-06) 2582 | > 2583 | > * Update nodejs to 12.15.0 and npm to 6.13.7 [Pagan Gazzard] 2584 |
2585 | 2586 | # v1.7.2 2587 | ## (2020-01-20) 2588 | 2589 | 2590 |
2591 | Update open-balena-base to 9.0.5 [Pagan Gazzard] 2592 | 2593 | > ## open-balena-base-9.0.5 2594 | > ### (2020-01-10) 2595 | > 2596 | > * Update nodejs to 12.14.1 and npm to 6.13.6 [Pagan Gazzard] 2597 | 2598 | > ## open-balena-base-9.0.4 2599 | > ### (2020-01-07) 2600 | > 2601 | > * Mask apt-daily-upgrade.timer [Pagan Gazzard] 2602 |
2603 | 2604 | # v1.7.1 2605 | ## (2019-12-24) 2606 | 2607 | 2608 |
2609 | Update open-balena-base to 9.0.3 [Pagan Gazzard] 2610 | 2611 | > ## open-balena-base-9.0.3 2612 | > ### (2019-12-24) 2613 | > 2614 | > * Update nodejs to 12.14.0 and npm to 6.13.4 [Pagan Gazzard] 2615 | 2616 | > ## open-balena-base-9.0.2 2617 | > ### (2019-12-20) 2618 | > 2619 | > * Don't use UID used in node archive when unpacking as root [Federico Fissore] 2620 | 2621 | > ## open-balena-base-9.0.1 2622 | > ### (2019-11-15) 2623 | > 2624 | > * Update node to 12 in no systemd variant [Roman Mazur] 2625 |
2626 | 2627 | # v1.7.0 2628 | ## (2019-10-21) 2629 | 2630 | 2631 |
2632 | Update open-balena-base to 9.0.0 [Pagan Gazzard] 2633 | 2634 | > ## open-balena-base-9.0.0 2635 | > ### (2019-10-21) 2636 | > 2637 | > * Update to nodejs 12 [Pagan Gazzard] 2638 | 2639 | > ## open-balena-base-8.1.0 2640 | > ### (2019-09-24) 2641 | > 2642 | > * Respect BALENA_TLD env variable in nosystemd variant [Roman Mazur] 2643 | > * Optimize for caching [Roman Mazur] 2644 | > * Use balena node base image [Roman Mazur] 2645 | > * Add a base image without systemd [Roman Mazur] 2646 |
2647 | 2648 | # v1.6.6 2649 | ## (2019-08-20) 2650 | 2651 | 2652 |
2653 | Update open-balena-base to 8.0.3 [Pagan Gazzard] 2654 | 2655 | > ## open-balena-base-8.0.3 2656 | > ### (2019-08-16) 2657 | > 2658 | > * 🔒: Update Node to 10.16.3 and NPM to 6.10.3 [Andreas Fitzek] 2659 |
2660 | 2661 | # v1.6.5 2662 | ## (2019-08-13) 2663 | 2664 | * npm: Fix audit vulnerabilities [Heds Simons] 2665 | 2666 | # v1.6.4 2667 | ## (2019-08-07) 2668 | 2669 | * gitignore: start ignoring stuff [Matthew McGinn] 2670 | 2671 | # v1.6.3 2672 | ## (2019-08-06) 2673 | 2674 | 2675 |
2676 | Update open-balena-base to 8.0.2 [Pagan Gazzard] 2677 | 2678 | > ## open-balena-base-8.0.2 2679 | > ### (2019-08-06) 2680 | > 2681 | > * Update nodejs to 10.16.1 and npm to 6.10.2 [Pagan Gazzard] 2682 |
2683 | 2684 | # v1.6.2 2685 | ## (2019-07-23) 2686 | 2687 | * cleanup: Clean up code/README/LICENSE for public exposure [Heds Simons] 2688 | 2689 | # v1.6.1 2690 | ## (2019-07-17) 2691 | 2692 | 2693 |
2694 | Update open-balena-base to 8.0.1 [Pagan Gazzard] 2695 | 2696 | > ## open-balena-base-8.0.1 2697 | > ### (2019-07-17) 2698 | > 2699 | > * mdns: Ensure multipart subdomains are allowed [Heds Simons] 2700 |
2701 | 2702 | # v1.6.0 2703 | ## (2019-07-08) 2704 | 2705 | 2706 |
2707 | Update open-balena-base to 8.0.0 [Pagan Gazzard] 2708 | 2709 | > ## open-balena-base-8.0.0 2710 | > ### (2019-07-08) 2711 | > 2712 | > * Upgrade to debian buster [Pagan Gazzard] 2713 |
2714 | 2715 | # v1.5.0 2716 | ## (2019-06-24) 2717 | 2718 | * devices: Publish/unpublish public device URL [Heds Simons] 2719 | 2720 | # v1.4.1 2721 | ## (2019-06-20) 2722 | 2723 | * Update open-balena-base to 7.2.2 [Pagan Gazzard] 2724 | 2725 |
2726 | View details 2727 | 2728 | ## open-balena-base-7.2.2 2729 | ### (2019-06-19) 2730 | 2731 | * systemd: move StartLimitIntervalSec to proper conf section [Matthew McGinn] 2732 |
2733 | 2734 | # v1.4.0 2735 | ## (2019-06-07) 2736 | 2737 | * Update open-balena-base to 7.2.1 [Pagan Gazzard] 2738 | 2739 |
2740 | View details 2741 | 2742 | ## open-balena-base-7.2.1 2743 | ### (2019-06-03) 2744 | 2745 | * Fix adding htoprc [Pagan Gazzard] 2746 | 2747 | ## open-balena-base-7.2.0 2748 | ### (2019-05-29) 2749 | 2750 | * Add default htop settings to hide threads and use a tree view [Pagan Gazzard] 2751 | 2752 | ## open-balena-base-7.1.0 2753 | ### (2019-05-29) 2754 | 2755 | * Update nodejs to 10.16.0 and npm to 6.9.0 [Pagan Gazzard] 2756 | 2757 | ## open-balena-base-7.0.2 2758 | ### (2019-05-06) 2759 | 2760 | * Disable the apt daily timer [Pagan Gazzard] 2761 | 2762 | ## open-balena-base-7.0.1 2763 | ### (2019-05-06) 2764 | 2765 | * Disable start limit for confd.service [Pagan Gazzard] 2766 |
2767 | 2768 | ## 1.3.2 - 2019-04-30 2769 | 2770 | * Networking: Allow the use of non-host networking [Heds Simons] 2771 | 2772 | ## 1.3.1 - 2019-04-29 2773 | 2774 | * Build: Empty commit to bump MS build correctly [Heds Simons] 2775 | 2776 | ## 1.3.0 - 2019-04-18 2777 | 2778 | * Typescript: Move publisher to TypeScript [Heds Simons] 2779 | 2780 | ## 1.2.1 - 2019-04-03 2781 | 2782 | * Subdomains: Allow list of advertised subdomains via envvar [Heds Simons] 2783 | 2784 | ## 1.2.0 - 2019-03-14 2785 | 2786 | * Open-balena-base: Update open-balena-base to v7.0.0 [Heds Simons] 2787 | 2788 | ## 1.1.0 - 2019-03-12 2789 | 2790 | * Open-balena-base: Update open-balena-base to v6.0.0 [Heds Simons] 2791 | 2792 | ## 1.0.6 - 2019-03-11 2793 | 2794 | * Codeowners: Add @hedss, @wrboyce and @Page- [Heds Simons] 2795 | 2796 | ## 1.0.5 - 2019-01-14 2797 | 2798 | * Addresses: Add the `resin-image-maker.img` prefix [Heds Simons] 2799 | 2800 | ## v1.0.4 - 2018-10-25 2801 | 2802 | * Base: Update base to v4.5.0 of `open-balena-base` [Heds Simons] 2803 | 2804 | ## v1.0.3 - 2018-09-28 2805 | 2806 | * Dns: Ensure DNS is prioritised over MDNS [Heds Simons] 2807 | 2808 | ## v1.0.2 - 2018-09-24 2809 | 2810 | * Logging: Enable logging output to also go to console [Heds Simons] 2811 | 2812 | ## v1.0.1 - 2018-09-18 2813 | 2814 | * Npm: Add `package-lock.json` file [Heds Simons] 2815 | 2816 | ## v1.0.0 - 2018-08-29 2817 | 2818 | * Initial commit of project. [Heds Simons] 2819 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM balena/open-balena-base:18.0.24 as base 2 | 3 | RUN apt-get update && \ 4 | apt-get install -yq --no-install-recommends \ 5 | libdbus-glib-1-dev \ 6 | avahi-utils \ 7 | && apt-get clean && rm -rf /var/lib/apt/lists/* 8 | 9 | WORKDIR /usr/src/app 10 | 11 | # Copies the package.json first for better cache on later pushes 12 | COPY package.json package-lock.json /usr/src/app/ 13 | 14 | # Install the publisher 15 | RUN JOBS=MAX npm ci --unsafe-perm --production && npm cache clean --force && rm -rf /tmp/* 16 | 17 | # Copy and enable the service 18 | COPY config/services /etc/systemd/system 19 | RUN systemctl enable balena-mdns-publisher.service 20 | 21 | # Build service 22 | FROM base as build 23 | 24 | RUN JOBS=MAX npm ci 25 | 26 | COPY . /usr/src/app/ 27 | 28 | RUN JOBS=MAX npm run build 29 | 30 | # Final image 31 | FROM base 32 | 33 | # Copy built code 34 | COPY --from=build /usr/src/app/build /usr/src/app/build 35 | COPY --from=build /usr/src/app/bin /usr/src/app/bin 36 | COPY --from=build /usr/src/app/config /usr/src/app/config 37 | COPY --from=base /usr/src/app/node_modules /usr/src/app/node_modules 38 | 39 | COPY docker-hc /usr/src/app/ 40 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | GNU AFFERO GENERAL PUBLIC LICENSE 2 | Version 3, 19 November 2007 3 | 4 | Copyright (C) 2007 Free Software Foundation, Inc. 5 | Everyone is permitted to copy and distribute verbatim copies 6 | of this license document, but changing it is not allowed. 7 | 8 | Preamble 9 | 10 | The GNU Affero General Public License is a free, copyleft license for 11 | software and other kinds of works, specifically designed to ensure 12 | cooperation with the community in the case of network server software. 13 | 14 | The licenses for most software and other practical works are designed 15 | to take away your freedom to share and change the works. By contrast, 16 | our General Public Licenses are intended to guarantee your freedom to 17 | share and change all versions of a program--to make sure it remains free 18 | software for all its users. 19 | 20 | When we speak of free software, we are referring to freedom, not 21 | price. Our General Public Licenses are designed to make sure that you 22 | have the freedom to distribute copies of free software (and charge for 23 | them if you wish), that you receive source code or can get it if you 24 | want it, that you can change the software or use pieces of it in new 25 | free programs, and that you know you can do these things. 26 | 27 | Developers that use our General Public Licenses protect your rights 28 | with two steps: (1) assert copyright on the software, and (2) offer 29 | you this License which gives you legal permission to copy, distribute 30 | and/or modify the software. 31 | 32 | A secondary benefit of defending all users' freedom is that 33 | improvements made in alternate versions of the program, if they 34 | receive widespread use, become available for other developers to 35 | incorporate. Many developers of free software are heartened and 36 | encouraged by the resulting cooperation. However, in the case of 37 | software used on network servers, this result may fail to come about. 38 | The GNU General Public License permits making a modified version and 39 | letting the public access it on a server without ever releasing its 40 | source code to the public. 41 | 42 | The GNU Affero General Public License is designed specifically to 43 | ensure that, in such cases, the modified source code becomes available 44 | to the community. It requires the operator of a network server to 45 | provide the source code of the modified version running there to the 46 | users of that server. Therefore, public use of a modified version, on 47 | a publicly accessible server, gives the public access to the source 48 | code of the modified version. 49 | 50 | An older license, called the Affero General Public License and 51 | published by Affero, was designed to accomplish similar goals. This is 52 | a different license, not a version of the Affero GPL, but Affero has 53 | released a new version of the Affero GPL which permits relicensing under 54 | this license. 55 | 56 | The precise terms and conditions for copying, distribution and 57 | modification follow. 58 | 59 | TERMS AND CONDITIONS 60 | 61 | 0. Definitions. 62 | 63 | "This License" refers to version 3 of the GNU Affero General Public License. 64 | 65 | "Copyright" also means copyright-like laws that apply to other kinds of 66 | works, such as semiconductor masks. 67 | 68 | "The Program" refers to any copyrightable work licensed under this 69 | License. Each licensee is addressed as "you". "Licensees" and 70 | "recipients" may be individuals or organizations. 71 | 72 | To "modify" a work means to copy from or adapt all or part of the work 73 | in a fashion requiring copyright permission, other than the making of an 74 | exact copy. The resulting work is called a "modified version" of the 75 | earlier work or a work "based on" the earlier work. 76 | 77 | A "covered work" means either the unmodified Program or a work based 78 | on the Program. 79 | 80 | To "propagate" a work means to do anything with it that, without 81 | permission, would make you directly or secondarily liable for 82 | infringement under applicable copyright law, except executing it on a 83 | computer or modifying a private copy. Propagation includes copying, 84 | distribution (with or without modification), making available to the 85 | public, and in some countries other activities as well. 86 | 87 | To "convey" a work means any kind of propagation that enables other 88 | parties to make or receive copies. Mere interaction with a user through 89 | a computer network, with no transfer of a copy, is not conveying. 90 | 91 | An interactive user interface displays "Appropriate Legal Notices" 92 | to the extent that it includes a convenient and prominently visible 93 | feature that (1) displays an appropriate copyright notice, and (2) 94 | tells the user that there is no warranty for the work (except to the 95 | extent that warranties are provided), that licensees may convey the 96 | work under this License, and how to view a copy of this License. If 97 | the interface presents a list of user commands or options, such as a 98 | menu, a prominent item in the list meets this criterion. 99 | 100 | 1. Source Code. 101 | 102 | The "source code" for a work means the preferred form of the work 103 | for making modifications to it. "Object code" means any non-source 104 | form of a work. 105 | 106 | A "Standard Interface" means an interface that either is an official 107 | standard defined by a recognized standards body, or, in the case of 108 | interfaces specified for a particular programming language, one that 109 | is widely used among developers working in that language. 110 | 111 | The "System Libraries" of an executable work include anything, other 112 | than the work as a whole, that (a) is included in the normal form of 113 | packaging a Major Component, but which is not part of that Major 114 | Component, and (b) serves only to enable use of the work with that 115 | Major Component, or to implement a Standard Interface for which an 116 | implementation is available to the public in source code form. A 117 | "Major Component", in this context, means a major essential component 118 | (kernel, window system, and so on) of the specific operating system 119 | (if any) on which the executable work runs, or a compiler used to 120 | produce the work, or an object code interpreter used to run it. 121 | 122 | The "Corresponding Source" for a work in object code form means all 123 | the source code needed to generate, install, and (for an executable 124 | work) run the object code and to modify the work, including scripts to 125 | control those activities. However, it does not include the work's 126 | System Libraries, or general-purpose tools or generally available free 127 | programs which are used unmodified in performing those activities but 128 | which are not part of the work. For example, Corresponding Source 129 | includes interface definition files associated with source files for 130 | the work, and the source code for shared libraries and dynamically 131 | linked subprograms that the work is specifically designed to require, 132 | such as by intimate data communication or control flow between those 133 | subprograms and other parts of the work. 134 | 135 | The Corresponding Source need not include anything that users 136 | can regenerate automatically from other parts of the Corresponding 137 | Source. 138 | 139 | The Corresponding Source for a work in source code form is that 140 | same work. 141 | 142 | 2. Basic Permissions. 143 | 144 | All rights granted under this License are granted for the term of 145 | copyright on the Program, and are irrevocable provided the stated 146 | conditions are met. This License explicitly affirms your unlimited 147 | permission to run the unmodified Program. The output from running a 148 | covered work is covered by this License only if the output, given its 149 | content, constitutes a covered work. This License acknowledges your 150 | rights of fair use or other equivalent, as provided by copyright law. 151 | 152 | You may make, run and propagate covered works that you do not 153 | convey, without conditions so long as your license otherwise remains 154 | in force. You may convey covered works to others for the sole purpose 155 | of having them make modifications exclusively for you, or provide you 156 | with facilities for running those works, provided that you comply with 157 | the terms of this License in conveying all material for which you do 158 | not control copyright. Those thus making or running the covered works 159 | for you must do so exclusively on your behalf, under your direction 160 | and control, on terms that prohibit them from making any copies of 161 | your copyrighted material outside their relationship with you. 162 | 163 | Conveying under any other circumstances is permitted solely under 164 | the conditions stated below. Sublicensing is not allowed; section 10 165 | makes it unnecessary. 166 | 167 | 3. Protecting Users' Legal Rights From Anti-Circumvention Law. 168 | 169 | No covered work shall be deemed part of an effective technological 170 | measure under any applicable law fulfilling obligations under article 171 | 11 of the WIPO copyright treaty adopted on 20 December 1996, or 172 | similar laws prohibiting or restricting circumvention of such 173 | measures. 174 | 175 | When you convey a covered work, you waive any legal power to forbid 176 | circumvention of technological measures to the extent such circumvention 177 | is effected by exercising rights under this License with respect to 178 | the covered work, and you disclaim any intention to limit operation or 179 | modification of the work as a means of enforcing, against the work's 180 | users, your or third parties' legal rights to forbid circumvention of 181 | technological measures. 182 | 183 | 4. Conveying Verbatim Copies. 184 | 185 | You may convey verbatim copies of the Program's source code as you 186 | receive it, in any medium, provided that you conspicuously and 187 | appropriately publish on each copy an appropriate copyright notice; 188 | keep intact all notices stating that this License and any 189 | non-permissive terms added in accord with section 7 apply to the code; 190 | keep intact all notices of the absence of any warranty; and give all 191 | recipients a copy of this License along with the Program. 192 | 193 | You may charge any price or no price for each copy that you convey, 194 | and you may offer support or warranty protection for a fee. 195 | 196 | 5. Conveying Modified Source Versions. 197 | 198 | You may convey a work based on the Program, or the modifications to 199 | produce it from the Program, in the form of source code under the 200 | terms of section 4, provided that you also meet all of these conditions: 201 | 202 | a) The work must carry prominent notices stating that you modified 203 | it, and giving a relevant date. 204 | 205 | b) The work must carry prominent notices stating that it is 206 | released under this License and any conditions added under section 207 | 7. This requirement modifies the requirement in section 4 to 208 | "keep intact all notices". 209 | 210 | c) You must license the entire work, as a whole, under this 211 | License to anyone who comes into possession of a copy. This 212 | License will therefore apply, along with any applicable section 7 213 | additional terms, to the whole of the work, and all its parts, 214 | regardless of how they are packaged. This License gives no 215 | permission to license the work in any other way, but it does not 216 | invalidate such permission if you have separately received it. 217 | 218 | d) If the work has interactive user interfaces, each must display 219 | Appropriate Legal Notices; however, if the Program has interactive 220 | interfaces that do not display Appropriate Legal Notices, your 221 | work need not make them do so. 222 | 223 | A compilation of a covered work with other separate and independent 224 | works, which are not by their nature extensions of the covered work, 225 | and which are not combined with it such as to form a larger program, 226 | in or on a volume of a storage or distribution medium, is called an 227 | "aggregate" if the compilation and its resulting copyright are not 228 | used to limit the access or legal rights of the compilation's users 229 | beyond what the individual works permit. Inclusion of a covered work 230 | in an aggregate does not cause this License to apply to the other 231 | parts of the aggregate. 232 | 233 | 6. Conveying Non-Source Forms. 234 | 235 | You may convey a covered work in object code form under the terms 236 | of sections 4 and 5, provided that you also convey the 237 | machine-readable Corresponding Source under the terms of this License, 238 | in one of these ways: 239 | 240 | a) Convey the object code in, or embodied in, a physical product 241 | (including a physical distribution medium), accompanied by the 242 | Corresponding Source fixed on a durable physical medium 243 | customarily used for software interchange. 244 | 245 | b) Convey the object code in, or embodied in, a physical product 246 | (including a physical distribution medium), accompanied by a 247 | written offer, valid for at least three years and valid for as 248 | long as you offer spare parts or customer support for that product 249 | model, to give anyone who possesses the object code either (1) a 250 | copy of the Corresponding Source for all the software in the 251 | product that is covered by this License, on a durable physical 252 | medium customarily used for software interchange, for a price no 253 | more than your reasonable cost of physically performing this 254 | conveying of source, or (2) access to copy the 255 | Corresponding Source from a network server at no charge. 256 | 257 | c) Convey individual copies of the object code with a copy of the 258 | written offer to provide the Corresponding Source. This 259 | alternative is allowed only occasionally and noncommercially, and 260 | only if you received the object code with such an offer, in accord 261 | with subsection 6b. 262 | 263 | d) Convey the object code by offering access from a designated 264 | place (gratis or for a charge), and offer equivalent access to the 265 | Corresponding Source in the same way through the same place at no 266 | further charge. You need not require recipients to copy the 267 | Corresponding Source along with the object code. If the place to 268 | copy the object code is a network server, the Corresponding Source 269 | may be on a different server (operated by you or a third party) 270 | that supports equivalent copying facilities, provided you maintain 271 | clear directions next to the object code saying where to find the 272 | Corresponding Source. Regardless of what server hosts the 273 | Corresponding Source, you remain obligated to ensure that it is 274 | available for as long as needed to satisfy these requirements. 275 | 276 | e) Convey the object code using peer-to-peer transmission, provided 277 | you inform other peers where the object code and Corresponding 278 | Source of the work are being offered to the general public at no 279 | charge under subsection 6d. 280 | 281 | A separable portion of the object code, whose source code is excluded 282 | from the Corresponding Source as a System Library, need not be 283 | included in conveying the object code work. 284 | 285 | A "User Product" is either (1) a "consumer product", which means any 286 | tangible personal property which is normally used for personal, family, 287 | or household purposes, or (2) anything designed or sold for incorporation 288 | into a dwelling. In determining whether a product is a consumer product, 289 | doubtful cases shall be resolved in favor of coverage. For a particular 290 | product received by a particular user, "normally used" refers to a 291 | typical or common use of that class of product, regardless of the status 292 | of the particular user or of the way in which the particular user 293 | actually uses, or expects or is expected to use, the product. A product 294 | is a consumer product regardless of whether the product has substantial 295 | commercial, industrial or non-consumer uses, unless such uses represent 296 | the only significant mode of use of the product. 297 | 298 | "Installation Information" for a User Product means any methods, 299 | procedures, authorization keys, or other information required to install 300 | and execute modified versions of a covered work in that User Product from 301 | a modified version of its Corresponding Source. The information must 302 | suffice to ensure that the continued functioning of the modified object 303 | code is in no case prevented or interfered with solely because 304 | modification has been made. 305 | 306 | If you convey an object code work under this section in, or with, or 307 | specifically for use in, a User Product, and the conveying occurs as 308 | part of a transaction in which the right of possession and use of the 309 | User Product is transferred to the recipient in perpetuity or for a 310 | fixed term (regardless of how the transaction is characterized), the 311 | Corresponding Source conveyed under this section must be accompanied 312 | by the Installation Information. But this requirement does not apply 313 | if neither you nor any third party retains the ability to install 314 | modified object code on the User Product (for example, the work has 315 | been installed in ROM). 316 | 317 | The requirement to provide Installation Information does not include a 318 | requirement to continue to provide support service, warranty, or updates 319 | for a work that has been modified or installed by the recipient, or for 320 | the User Product in which it has been modified or installed. Access to a 321 | network may be denied when the modification itself materially and 322 | adversely affects the operation of the network or violates the rules and 323 | protocols for communication across the network. 324 | 325 | Corresponding Source conveyed, and Installation Information provided, 326 | in accord with this section must be in a format that is publicly 327 | documented (and with an implementation available to the public in 328 | source code form), and must require no special password or key for 329 | unpacking, reading or copying. 330 | 331 | 7. Additional Terms. 332 | 333 | "Additional permissions" are terms that supplement the terms of this 334 | License by making exceptions from one or more of its conditions. 335 | Additional permissions that are applicable to the entire Program shall 336 | be treated as though they were included in this License, to the extent 337 | that they are valid under applicable law. If additional permissions 338 | apply only to part of the Program, that part may be used separately 339 | under those permissions, but the entire Program remains governed by 340 | this License without regard to the additional permissions. 341 | 342 | When you convey a copy of a covered work, you may at your option 343 | remove any additional permissions from that copy, or from any part of 344 | it. (Additional permissions may be written to require their own 345 | removal in certain cases when you modify the work.) You may place 346 | additional permissions on material, added by you to a covered work, 347 | for which you have or can give appropriate copyright permission. 348 | 349 | Notwithstanding any other provision of this License, for material you 350 | add to a covered work, you may (if authorized by the copyright holders of 351 | that material) supplement the terms of this License with terms: 352 | 353 | a) Disclaiming warranty or limiting liability differently from the 354 | terms of sections 15 and 16 of this License; or 355 | 356 | b) Requiring preservation of specified reasonable legal notices or 357 | author attributions in that material or in the Appropriate Legal 358 | Notices displayed by works containing it; or 359 | 360 | c) Prohibiting misrepresentation of the origin of that material, or 361 | requiring that modified versions of such material be marked in 362 | reasonable ways as different from the original version; or 363 | 364 | d) Limiting the use for publicity purposes of names of licensors or 365 | authors of the material; or 366 | 367 | e) Declining to grant rights under trademark law for use of some 368 | trade names, trademarks, or service marks; or 369 | 370 | f) Requiring indemnification of licensors and authors of that 371 | material by anyone who conveys the material (or modified versions of 372 | it) with contractual assumptions of liability to the recipient, for 373 | any liability that these contractual assumptions directly impose on 374 | those licensors and authors. 375 | 376 | All other non-permissive additional terms are considered "further 377 | restrictions" within the meaning of section 10. If the Program as you 378 | received it, or any part of it, contains a notice stating that it is 379 | governed by this License along with a term that is a further 380 | restriction, you may remove that term. If a license document contains 381 | a further restriction but permits relicensing or conveying under this 382 | License, you may add to a covered work material governed by the terms 383 | of that license document, provided that the further restriction does 384 | not survive such relicensing or conveying. 385 | 386 | If you add terms to a covered work in accord with this section, you 387 | must place, in the relevant source files, a statement of the 388 | additional terms that apply to those files, or a notice indicating 389 | where to find the applicable terms. 390 | 391 | Additional terms, permissive or non-permissive, may be stated in the 392 | form of a separately written license, or stated as exceptions; 393 | the above requirements apply either way. 394 | 395 | 8. Termination. 396 | 397 | You may not propagate or modify a covered work except as expressly 398 | provided under this License. Any attempt otherwise to propagate or 399 | modify it is void, and will automatically terminate your rights under 400 | this License (including any patent licenses granted under the third 401 | paragraph of section 11). 402 | 403 | However, if you cease all violation of this License, then your 404 | license from a particular copyright holder is reinstated (a) 405 | provisionally, unless and until the copyright holder explicitly and 406 | finally terminates your license, and (b) permanently, if the copyright 407 | holder fails to notify you of the violation by some reasonable means 408 | prior to 60 days after the cessation. 409 | 410 | Moreover, your license from a particular copyright holder is 411 | reinstated permanently if the copyright holder notifies you of the 412 | violation by some reasonable means, this is the first time you have 413 | received notice of violation of this License (for any work) from that 414 | copyright holder, and you cure the violation prior to 30 days after 415 | your receipt of the notice. 416 | 417 | Termination of your rights under this section does not terminate the 418 | licenses of parties who have received copies or rights from you under 419 | this License. If your rights have been terminated and not permanently 420 | reinstated, you do not qualify to receive new licenses for the same 421 | material under section 10. 422 | 423 | 9. Acceptance Not Required for Having Copies. 424 | 425 | You are not required to accept this License in order to receive or 426 | run a copy of the Program. Ancillary propagation of a covered work 427 | occurring solely as a consequence of using peer-to-peer transmission 428 | to receive a copy likewise does not require acceptance. However, 429 | nothing other than this License grants you permission to propagate or 430 | modify any covered work. These actions infringe copyright if you do 431 | not accept this License. Therefore, by modifying or propagating a 432 | covered work, you indicate your acceptance of this License to do so. 433 | 434 | 10. Automatic Licensing of Downstream Recipients. 435 | 436 | Each time you convey a covered work, the recipient automatically 437 | receives a license from the original licensors, to run, modify and 438 | propagate that work, subject to this License. You are not responsible 439 | for enforcing compliance by third parties with this License. 440 | 441 | An "entity transaction" is a transaction transferring control of an 442 | organization, or substantially all assets of one, or subdividing an 443 | organization, or merging organizations. If propagation of a covered 444 | work results from an entity transaction, each party to that 445 | transaction who receives a copy of the work also receives whatever 446 | licenses to the work the party's predecessor in interest had or could 447 | give under the previous paragraph, plus a right to possession of the 448 | Corresponding Source of the work from the predecessor in interest, if 449 | the predecessor has it or can get it with reasonable efforts. 450 | 451 | You may not impose any further restrictions on the exercise of the 452 | rights granted or affirmed under this License. For example, you may 453 | not impose a license fee, royalty, or other charge for exercise of 454 | rights granted under this License, and you may not initiate litigation 455 | (including a cross-claim or counterclaim in a lawsuit) alleging that 456 | any patent claim is infringed by making, using, selling, offering for 457 | sale, or importing the Program or any portion of it. 458 | 459 | 11. Patents. 460 | 461 | A "contributor" is a copyright holder who authorizes use under this 462 | License of the Program or a work on which the Program is based. The 463 | work thus licensed is called the contributor's "contributor version". 464 | 465 | A contributor's "essential patent claims" are all patent claims 466 | owned or controlled by the contributor, whether already acquired or 467 | hereafter acquired, that would be infringed by some manner, permitted 468 | by this License, of making, using, or selling its contributor version, 469 | but do not include claims that would be infringed only as a 470 | consequence of further modification of the contributor version. For 471 | purposes of this definition, "control" includes the right to grant 472 | patent sublicenses in a manner consistent with the requirements of 473 | this License. 474 | 475 | Each contributor grants you a non-exclusive, worldwide, royalty-free 476 | patent license under the contributor's essential patent claims, to 477 | make, use, sell, offer for sale, import and otherwise run, modify and 478 | propagate the contents of its contributor version. 479 | 480 | In the following three paragraphs, a "patent license" is any express 481 | agreement or commitment, however denominated, not to enforce a patent 482 | (such as an express permission to practice a patent or covenant not to 483 | sue for patent infringement). To "grant" such a patent license to a 484 | party means to make such an agreement or commitment not to enforce a 485 | patent against the party. 486 | 487 | If you convey a covered work, knowingly relying on a patent license, 488 | and the Corresponding Source of the work is not available for anyone 489 | to copy, free of charge and under the terms of this License, through a 490 | publicly available network server or other readily accessible means, 491 | then you must either (1) cause the Corresponding Source to be so 492 | available, or (2) arrange to deprive yourself of the benefit of the 493 | patent license for this particular work, or (3) arrange, in a manner 494 | consistent with the requirements of this License, to extend the patent 495 | license to downstream recipients. "Knowingly relying" means you have 496 | actual knowledge that, but for the patent license, your conveying the 497 | covered work in a country, or your recipient's use of the covered work 498 | in a country, would infringe one or more identifiable patents in that 499 | country that you have reason to believe are valid. 500 | 501 | If, pursuant to or in connection with a single transaction or 502 | arrangement, you convey, or propagate by procuring conveyance of, a 503 | covered work, and grant a patent license to some of the parties 504 | receiving the covered work authorizing them to use, propagate, modify 505 | or convey a specific copy of the covered work, then the patent license 506 | you grant is automatically extended to all recipients of the covered 507 | work and works based on it. 508 | 509 | A patent license is "discriminatory" if it does not include within 510 | the scope of its coverage, prohibits the exercise of, or is 511 | conditioned on the non-exercise of one or more of the rights that are 512 | specifically granted under this License. You may not convey a covered 513 | work if you are a party to an arrangement with a third party that is 514 | in the business of distributing software, under which you make payment 515 | to the third party based on the extent of your activity of conveying 516 | the work, and under which the third party grants, to any of the 517 | parties who would receive the covered work from you, a discriminatory 518 | patent license (a) in connection with copies of the covered work 519 | conveyed by you (or copies made from those copies), or (b) primarily 520 | for and in connection with specific products or compilations that 521 | contain the covered work, unless you entered into that arrangement, 522 | or that patent license was granted, prior to 28 March 2007. 523 | 524 | Nothing in this License shall be construed as excluding or limiting 525 | any implied license or other defenses to infringement that may 526 | otherwise be available to you under applicable patent law. 527 | 528 | 12. No Surrender of Others' Freedom. 529 | 530 | If conditions are imposed on you (whether by court order, agreement or 531 | otherwise) that contradict the conditions of this License, they do not 532 | excuse you from the conditions of this License. If you cannot convey a 533 | covered work so as to satisfy simultaneously your obligations under this 534 | License and any other pertinent obligations, then as a consequence you may 535 | not convey it at all. For example, if you agree to terms that obligate you 536 | to collect a royalty for further conveying from those to whom you convey 537 | the Program, the only way you could satisfy both those terms and this 538 | License would be to refrain entirely from conveying the Program. 539 | 540 | 13. Remote Network Interaction; Use with the GNU General Public License. 541 | 542 | Notwithstanding any other provision of this License, if you modify the 543 | Program, your modified version must prominently offer all users 544 | interacting with it remotely through a computer network (if your version 545 | supports such interaction) an opportunity to receive the Corresponding 546 | Source of your version by providing access to the Corresponding Source 547 | from a network server at no charge, through some standard or customary 548 | means of facilitating copying of software. This Corresponding Source 549 | shall include the Corresponding Source for any work covered by version 3 550 | of the GNU General Public License that is incorporated pursuant to the 551 | following paragraph. 552 | 553 | Notwithstanding any other provision of this License, you have 554 | permission to link or combine any covered work with a work licensed 555 | under version 3 of the GNU General Public License into a single 556 | combined work, and to convey the resulting work. The terms of this 557 | License will continue to apply to the part which is the covered work, 558 | but the work with which it is combined will remain governed by version 559 | 3 of the GNU General Public License. 560 | 561 | 14. Revised Versions of this License. 562 | 563 | The Free Software Foundation may publish revised and/or new versions of 564 | the GNU Affero General Public License from time to time. Such new versions 565 | will be similar in spirit to the present version, but may differ in detail to 566 | address new problems or concerns. 567 | 568 | Each version is given a distinguishing version number. If the 569 | Program specifies that a certain numbered version of the GNU Affero General 570 | Public License "or any later version" applies to it, you have the 571 | option of following the terms and conditions either of that numbered 572 | version or of any later version published by the Free Software 573 | Foundation. If the Program does not specify a version number of the 574 | GNU Affero General Public License, you may choose any version ever published 575 | by the Free Software Foundation. 576 | 577 | If the Program specifies that a proxy can decide which future 578 | versions of the GNU Affero General Public License can be used, that proxy's 579 | public statement of acceptance of a version permanently authorizes you 580 | to choose that version for the Program. 581 | 582 | Later license versions may give you additional or different 583 | permissions. However, no additional obligations are imposed on any 584 | author or copyright holder as a result of your choosing to follow a 585 | later version. 586 | 587 | 15. Disclaimer of Warranty. 588 | 589 | THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY 590 | APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT 591 | HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY 592 | OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, 593 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 594 | PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM 595 | IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF 596 | ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 597 | 598 | 16. Limitation of Liability. 599 | 600 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING 601 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS 602 | THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY 603 | GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE 604 | USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF 605 | DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD 606 | PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), 607 | EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF 608 | SUCH DAMAGES. 609 | 610 | 17. Interpretation of Sections 15 and 16. 611 | 612 | If the disclaimer of warranty and limitation of liability provided 613 | above cannot be given local legal effect according to their terms, 614 | reviewing courts shall apply local law that most closely approximates 615 | an absolute waiver of all civil liability in connection with the 616 | Program, unless a warranty or assumption of liability accompanies a 617 | copy of the Program in return for a fee. 618 | 619 | END OF TERMS AND CONDITIONS 620 | 621 | How to Apply These Terms to Your New Programs 622 | 623 | If you develop a new program, and you want it to be of the greatest 624 | possible use to the public, the best way to achieve this is to make it 625 | free software which everyone can redistribute and change under these terms. 626 | 627 | To do so, attach the following notices to the program. It is safest 628 | to attach them to the start of each source file to most effectively 629 | state the exclusion of warranty; and each file should have at least 630 | the "copyright" line and a pointer to where the full notice is found. 631 | 632 | 633 | Copyright (C) 634 | 635 | This program is free software: you can redistribute it and/or modify 636 | it under the terms of the GNU Affero General Public License as published 637 | by the Free Software Foundation, either version 3 of the License, or 638 | (at your option) any later version. 639 | 640 | This program is distributed in the hope that it will be useful, 641 | but WITHOUT ANY WARRANTY; without even the implied warranty of 642 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 643 | GNU Affero General Public License for more details. 644 | 645 | You should have received a copy of the GNU Affero General Public License 646 | along with this program. If not, see . 647 | 648 | Also add information on how to contact you by electronic and paper mail. 649 | 650 | If your software can interact with users remotely through a computer 651 | network, you should also make sure that it provides a way for users to 652 | get its source. For example, if your program is a web application, its 653 | interface could display a "Source" link that leads users to an archive 654 | of the code. There are many ways you could offer source, and different 655 | solutions will be better for different programs; see section 13 for the 656 | specific requirements. 657 | 658 | You should also get your employer (if you work as a programmer) or school, 659 | if any, to sign a "copyright disclaimer" for the program, if necessary. 660 | For more information on this, and how to apply and follow the GNU AGPL, see 661 | . 662 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # balena-mdns-publisher 2 | 3 | The MDNS publisher advertises a set of local IP addresses for a local network 4 | (`.local`) instance of the balena-on-balena (BoB) or OpenBalena (OB) services. The 5 | same IP address is used for all services in the BoB or OB instance. 6 | 7 | This allows any machine on the same subnet that is not more than one hop from the 8 | publisher and BoB/OB instance to automatically be able to resolve the hostnames used for 9 | the instance (as long as the machine supports mDNS/DNS-SD, also known as 'ZeroConf' 10 | networking). 11 | 12 | 13 | ## Prerequisites 14 | 15 | The host machine running the publisher service must be running an instance of the 16 | [Avahi](https://www.avahi.org/) daemon, which this service uses for address publishing. 17 | 18 | Additionally, the service requires the ability to use `systemd` (ie. access to host 19 | `cgroups` or relevant `tmpfs` mount), and the host DBUS socket. 20 | 21 | 22 | ## Installation and Running 23 | 24 | This service can be run under a Linux environment, either any standard distribution 25 | running docker, or a resinOS device. The two configurations require separate setup, 26 | however. A `docker-compose` service is used here to show how to configure the service, and 27 | each specific target. 28 | 29 | 30 | ### Docker Setup 31 | 32 | Regardless of target, the service requires particular environment variables and access to 33 | the host network. The following `docker-compose` snippet shows the requirements for 34 | running the service: 35 | 36 | balena-mdns-publisher: 37 | image: 'balena/balena-mdns-publisher:master' 38 | network_mode: host 39 | cap_add: 40 | - SYS_RESOURCE 41 | - SYS_ADMIN 42 | security_opt: 43 | - 'apparmor:unconfined' 44 | tmpfs: 45 | - /run 46 | - /sys/fs/cgroup 47 | environment: 48 | 49 | 50 | 51 | #### Generic Linux Host 52 | 53 | Additionally, for a generic Linux host running Avahi and Docker, the following should be 54 | included in the service definition to expose the DBUS socket to the correct place inside 55 | the service container: 56 | 57 | volumes: 58 | - /run/dbus/system_bus_socket:/host/run/dbus/system_bus_socket 59 | 60 | Alternatively you may change the in-container location of the DBUS socket, but you 61 | *must* set `DBUS_SESSION_BUS_ADDRESS` envvar to the same location value. 62 | 63 | 64 | #### balenaOS Device 65 | 66 | Should the target be a balenaOS device, then the following section should also be included 67 | to ensure that the DBUS socket is mapped and environment variables is set: 68 | 69 | labels: 70 | io.balena.features.dbus: '1' 71 | 72 | 73 | ### Environment Variables 74 | 75 | The mDNS publisher requires some additional environment variables be passed to it on 76 | execution to allow it to function correctly. These are 77 | 78 | * `CONFD_BACKEND` - This should always be set to `ENV` 79 | * `MDNS_TLD` - This is the full Top Level Domain of the host being published 80 | * `MDNS_SUBDOMAINS` - An array of subdomains to publish host addresses for 81 | * `INTERFACE` - The name of the host network interface to publish the subdomain addresses 82 | too. If this *is* set, it will override the returned default interface 83 | * `DBUS_SESSION_BUS_ADDRESS` - This must always be set to `unix:path=/host/run/dbus/system_bus_socket'` 84 | (unless the DBUS target is located elsewhere) 85 | * `MDNS_API_TOKEN` (optional) - Should Public URL exposure be required, then the shared 86 | API token for the Proxy service should be set using this key. The API will be queried 87 | every 20 seconds, and any new device with an exposed public URL will have its UUID 88 | published as a subdomain. Previously published UUIDs that no longer have a public URL 89 | will be deleted 90 | * `BALENA_ROOT_CA` (optional) - Should the certificate chain used for the BoB/OB instance 91 | be via a self-signed CA, this value should be a Base64 encoded version of the CA's PEM 92 | certificate 93 | 94 | This allows the acquisition of the underlying DBUS socket, as well as the ability to run 95 | `systemd`. 96 | 97 | 98 | ## Example `docker-compose` Service 99 | 100 | The following is an example of adding the balena mDNS publisher to a BoB instance running 101 | under balenaOS: 102 | 103 | balena-mdns-publisher: 104 | image: 'balena/balena-mdns-publisher:master' 105 | network_mode: host 106 | cap_add: 107 | - SYS_RESOURCE 108 | - SYS_ADMIN 109 | security_opt: 110 | - 'apparmor:unconfined' 111 | tmpfs: 112 | - /run 113 | - /sys/fs/cgroup 114 | labels: 115 | io.balena.features.dbus: '1' 116 | environment: 117 | CONFD_BACKEND: ENV 118 | MDNS_TLD: my.bob.local 119 | MDNS_SUBDOMAINS: >- 120 | ["admin", "api", ...] 121 | MDNS_API_TOKEN: 1234567890abcdef 122 | DBUS_SESSION_BUS_ADDRESS: 'unix:path=/host/run/dbus/system_bus_socket' 123 | BALENA_ROOT_CA: >- 124 | 1234567890abcdef 125 | -------------------------------------------------------------------------------- /VERSION: -------------------------------------------------------------------------------- 1 | 1.27.192 -------------------------------------------------------------------------------- /bin/balena-mdns-publisher: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | require('../build/app'); 3 | -------------------------------------------------------------------------------- /config/confd/conf.d/env.toml: -------------------------------------------------------------------------------- 1 | [template] 2 | src = "env.tmpl" 3 | dest = "/usr/src/app/config/env" 4 | keys = [ 5 | "API_HOST", 6 | "BALENA_DEVICE_UUID", 7 | "DBUS_SYSTEM_BUS_ADDRESS", 8 | "INTERFACE", 9 | "MDNS_API_TOKEN", 10 | "MDNS_SUBDOMAINS", 11 | "MDNS_TLD", 12 | ] 13 | -------------------------------------------------------------------------------- /config/confd/templates/env.tmpl: -------------------------------------------------------------------------------- 1 | API_HOST={{getenv "API_HOST"}} 2 | BALENA_DEVICE_UUID={{getenv "BALENA_DEVICE_UUID"}} 3 | DBUS_SESSION_BUS_ADDRESS={{getenv "DBUS_SESSION_BUS_ADDRESS"}} 4 | INTERFACE={{getenv "INTERFACE"}} 5 | MDNS_API_TOKEN={{getenv "MDNS_API_TOKEN"}} 6 | MDNS_SUBDOMAINS={{getenv "MDNS_SUBDOMAINS"}} 7 | MDNS_TLD={{getenv "MDNS_TLD"}} 8 | NODE_EXTRA_CA_CERTS={{getenv "NODE_EXTRA_CA_CERTS"}} 9 | -------------------------------------------------------------------------------- /config/services/balena-mdns-publisher.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=balena-mdns-publisher 3 | Requires=confd.service 4 | After=confd.service 5 | 6 | [Service] 7 | StandardOutput=journal+console 8 | StandardError=journal+console 9 | WorkingDirectory=/usr/src/app 10 | EnvironmentFile=/usr/src/app/config/env 11 | ExecStart=/usr/src/app/bin/balena-mdns-publisher 12 | Restart=always 13 | 14 | [Install] 15 | WantedBy=basic.target 16 | -------------------------------------------------------------------------------- /docker-hc: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -a 4 | 5 | [[ -f /etc/docker.env ]] && source /etc/docker.env 6 | 7 | # avahi-resolve doesn't return non-zero error code on failure :/ 8 | for host in $(env \ 9 | | grep -E "^[A-Z0-9_]+_HOST=.*\.${MDNS_TLD}$|^[A-Z0-9_]+_HOSTNAME=.*\.${MDNS_TLD}$" \ 10 | | grep -Ev 'BALENA|files\.' \ 11 | | sed 's|http.*://||g'); do 12 | avahi-resolve -n4 $(echo ${host} | awk -F'=' '{print $2}') 2>&1 | grep -vE 'Failed|Timeout' || exit $? 13 | done 14 | 15 | haproxy="$(ip route get 8.8.8.8 | head -1 | awk '{print $7}'):443" 16 | 17 | if [[ -s ${NODE_EXTRA_CA_CERTS} ]]; then 18 | # ensures self-signed certificates are installed correctly (if any) 19 | true | openssl s_client -connect "${haproxy}" \ 20 | -servername "${API_HOST}" \ 21 | -CAfile "${NODE_EXTRA_CA_CERTS}" 22 | else 23 | # public DNS configuration (e.g. LetsEncrypt) 24 | true | openssl s_client -connect "${haproxy}" -servername "${API_HOST}" 25 | fi 26 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "balena-mdns-publisher", 3 | "version": "1.27.192", 4 | "scripts": { 5 | "build": "tsc", 6 | "prettify": "balena-lint --fix src/ typings/", 7 | "lint": "balena-lint src/ typings/ && tsc --noEmit", 8 | "start": "node build/app.js", 9 | "test": "true", 10 | "prepare": "node -e \"try { (await import('husky')).default() } catch (e) { if (e.code !== 'ERR_MODULE_NOT_FOUND') throw e }\" --input-type module" 11 | }, 12 | "author": "Heds Simons ", 13 | "repository": { 14 | "type": "git", 15 | "url": "git://github.com/balena-io/balena-mdns-publisher.git" 16 | }, 17 | "bugs": { 18 | "url": "https://github.com/balena-io/balena-mdns-publisher/issues" 19 | }, 20 | "nyc": { 21 | "extension": [ 22 | ".ts" 23 | ] 24 | }, 25 | "private": true, 26 | "dependencies": { 27 | "balena-sdk": "^20.0.0", 28 | "bluebird": "^3.7.2", 29 | "dbus-native": "^0.4.0", 30 | "lodash": "^4.17.21", 31 | "request": "^2.88.2", 32 | "request-promise": "^4.2.6" 33 | }, 34 | "devDependencies": { 35 | "@balena/lint": "^9.0.0", 36 | "@types/lodash": "^4.17.4", 37 | "@types/node": "^22.0.0", 38 | "@types/request-promise": "4.1.51", 39 | "husky": "^9.0.0", 40 | "lint-staged": "^15.2.5", 41 | "typescript": "^5.4.5" 42 | }, 43 | "engines": { 44 | "node": "^22.0.0", 45 | "npm": "^10.1.0" 46 | }, 47 | "husky": { 48 | "hooks": { 49 | "pre-commit": "lint-staged", 50 | "pre-push": "npm run lint" 51 | } 52 | }, 53 | "lint-staged": { 54 | "*.ts": [ 55 | "balena-lint --fix" 56 | ] 57 | }, 58 | "versionist": { 59 | "publishedAt": "2025-01-21T18:50:53.037Z" 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /repo.yml: -------------------------------------------------------------------------------- 1 | type: 'docker' 2 | upstream: 3 | - repo: 'balena/open-balena-base' 4 | url: 'https://github.com/balena-io-modules/open-balena-base' 5 | -------------------------------------------------------------------------------- /src/app.ts: -------------------------------------------------------------------------------- 1 | import * as BalenaSdk from 'balena-sdk'; 2 | import * as Bluebird from 'bluebird'; 3 | import { Message, systemBus } from 'dbus-native'; 4 | import * as _ from 'lodash'; 5 | import * as os from 'os'; 6 | 7 | /** 8 | * Hosts published via Avahi. 9 | */ 10 | interface PublishedHosts { 11 | /** The Avahi group used to publish the host */ 12 | group: string; 13 | /** The full hostname of the published host */ 14 | hostname: string; 15 | /** The IP address of the published host */ 16 | address: string; 17 | } 18 | 19 | /** List of published hosts */ 20 | const publishedHosts: PublishedHosts[] = []; 21 | /** List of devices with accessible public URLs */ 22 | let accessibleDevices: Array> = []; 23 | 24 | /** DBus controller */ 25 | const dbus = systemBus(); 26 | /** 27 | * DBus invoker. 28 | * 29 | * @param message DBus message to send 30 | */ 31 | const dbusInvoker = (message: Message): PromiseLike => { 32 | return Bluebird.fromCallback((cb) => { 33 | return dbus.invoke(message, cb); 34 | }); 35 | }; 36 | 37 | const getIPv4InterfaceInfo = (iface?: string): os.NetworkInterfaceInfo[] => { 38 | return Object.entries(os.networkInterfaces()) 39 | .filter(([nic]) => !iface || nic === iface) 40 | .flatMap(([, ips]) => ips || []) 41 | .filter((ip) => !ip.internal && ip.family === 'IPv4'); 42 | }; 43 | 44 | const getIPv6InterfaceInfo = (iface?: string): os.NetworkInterfaceInfo[] => { 45 | return Object.entries(os.networkInterfaces()) 46 | .filter(([nic]) => !iface || nic === iface) 47 | .flatMap(([, ips]) => ips || []) 48 | .filter((ip) => !ip.internal && ip.family === 'IPv6' && ip.scopeid === 0); 49 | }; 50 | 51 | /** 52 | * Retrieve a new Avahi group for address publishing. 53 | */ 54 | const getGroup = async (): Promise => { 55 | return await dbusInvoker({ 56 | destination: 'org.freedesktop.Avahi', 57 | path: '/', 58 | interface: 'org.freedesktop.Avahi.Server', 59 | member: 'EntryGroupNew', 60 | }); 61 | }; 62 | 63 | /** 64 | * Add a host address to the local domain. 65 | * 66 | * @param hostname Full hostname to publish 67 | * @param addresses IP address for the hostname 68 | */ 69 | const addHostAddress = async ( 70 | hostname: string, 71 | addresses: string[], 72 | ): Promise => { 73 | for (const address of addresses) { 74 | // If the hostname is already published with the same address, return 75 | if (_.find(publishedHosts, { hostname, address })) { 76 | return; 77 | } 78 | 79 | console.log(`Adding ${hostname} at address ${address} to local MDNS pool`); 80 | 81 | // We require a new group for each address. 82 | // We don't catch errors, as our restart policy is to not restart. 83 | const group = await getGroup(); 84 | 85 | await dbusInvoker({ 86 | destination: 'org.freedesktop.Avahi', 87 | path: group, 88 | interface: 'org.freedesktop.Avahi.EntryGroup', 89 | member: 'AddAddress', 90 | body: [-1, -1, 0x10, hostname, address], 91 | signature: 'iiuss', 92 | }); 93 | 94 | await dbusInvoker({ 95 | destination: 'org.freedesktop.Avahi', 96 | path: group, 97 | interface: 'org.freedesktop.Avahi.EntryGroup', 98 | member: 'Commit', 99 | }); 100 | 101 | // Add to the published hosts list 102 | publishedHosts.push({ 103 | group, 104 | hostname, 105 | address, 106 | }); 107 | } 108 | }; 109 | 110 | /** 111 | * Remove hostname from published list 112 | * 113 | * @param hostname Hostname to remove from list 114 | */ 115 | const removeHostAddress = async (hostname: string): Promise => { 116 | // If the hostname doesn't exist, we don't use it 117 | const hostDetails = _.find(publishedHosts, { hostname }); 118 | if (!hostDetails) { 119 | return; 120 | } 121 | 122 | console.log(`Removing ${hostname} at address from local MDNS pool`); 123 | 124 | // Free the group, removing the published address 125 | await dbusInvoker({ 126 | destination: 'org.freedesktop.Avahi', 127 | path: hostDetails.group, 128 | interface: 'org.freedesktop.Avahi.EntryGroup', 129 | member: 'Free', 130 | }); 131 | 132 | // Remove from the published hosts list 133 | _.remove(publishedHosts, { hostname }); 134 | }; 135 | 136 | /** 137 | * Scan balena devices with accessible public URLs 138 | * 139 | * @param tld TLD to use for URL publishing 140 | * @param addresses IP addresses to use for publishing 141 | */ 142 | const reapDevices = async (addresses: string[], deviceTld?: string) => { 143 | for (const address of addresses) { 144 | // Query the SDK using the Proxy service key for *all* current devices 145 | try { 146 | // Get list of all accessible devices 147 | const newAccessible = await balena.pine.get({ 148 | resource: 'device', 149 | options: { 150 | $select: 'uuid', 151 | $filter: { 152 | is_web_accessible: true, 153 | }, 154 | }, 155 | }); 156 | 157 | // Publish everything new 158 | const oldAccessibleUuids = new Set(accessibleDevices.map((d) => d.uuid)); 159 | for (const device of newAccessible) { 160 | if (!oldAccessibleUuids.has(device.uuid)) { 161 | await addHostAddress(`${device.uuid}.devices.${deviceTld}`, [ 162 | address, 163 | ]); 164 | } 165 | } 166 | // Unpublish everything no longer accessible 167 | const newAccessibleUuids = new Set(newAccessible.map((d) => d.uuid)); 168 | for (const device of accessibleDevices) { 169 | if (!newAccessibleUuids.has(device.uuid)) { 170 | await removeHostAddress(`${device.uuid}.devices.${deviceTld}`); 171 | } 172 | } 173 | 174 | accessibleDevices = newAccessible; 175 | } catch (err) { 176 | console.log(`Couldn't reap devices list: ${err}`); 177 | } 178 | } 179 | }; 180 | 181 | // if running on balenaOS, insert device UUID 182 | let tld = process.env.MDNS_TLD; 183 | if (tld && process.env.BALENA_DEVICE_UUID) { 184 | tld = `${process.env.BALENA_DEVICE_UUID}.${process.env.MDNS_TLD}`; 185 | } 186 | 187 | const MDNSHosts = process.env.MDNS_SUBDOMAINS 188 | ? process.env.MDNS_SUBDOMAINS.split(',') 189 | : []; 190 | 191 | const balena = BalenaSdk.getSdk({ 192 | apiUrl: `https://${process.env.API_HOST}/`, 193 | }); 194 | 195 | (async () => { 196 | try { 197 | // get the first non-link local IP for each address family 198 | const ipAddrs = _.compact([ 199 | getIPv4InterfaceInfo(process.env.INTERFACE)[0], 200 | getIPv6InterfaceInfo(process.env.INTERFACE)[0], 201 | ]).flatMap((ip) => ip.address); 202 | 203 | // For each address, publish the interface IP address. 204 | if (tld) { 205 | await Bluebird.map(MDNSHosts, (host) => { 206 | const fullHostname = `${host}.${tld}`; 207 | 208 | return addHostAddress(fullHostname, ipAddrs); 209 | }); 210 | } 211 | 212 | // Finally, login to the SDK and set a timerInterval every 20 seconds to update 213 | // public URL addresses 214 | if (process.env.MDNS_API_TOKEN && tld) { 215 | await balena.auth.loginWithToken(process.env.MDNS_API_TOKEN); 216 | setInterval(() => reapDevices(ipAddrs, tld), 20 * 1000); 217 | } 218 | } catch (err) { 219 | console.log(`balena MDNS publisher error:\n${err}`); 220 | // This is not ideal. However, dbus-native does not correctly free connections 221 | // on event loop exit 222 | process.exit(1); 223 | } 224 | })(); 225 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "commonjs", 4 | "declaration": true, 5 | "noImplicitAny": true, 6 | "removeComments": true, 7 | "preserveConstEnums": true, 8 | "strictNullChecks": true, 9 | "sourceMap": true, 10 | "target": "es2022", 11 | "noUnusedLocals": true, 12 | "noUnusedParameters": true, 13 | "outDir": "build" 14 | }, 15 | "include": [ 16 | "typings/**/*.d.ts", 17 | "src/**/*.ts" 18 | ], 19 | "exclude": [ 20 | "node_modules" 21 | ] 22 | } 23 | -------------------------------------------------------------------------------- /typings/dbus-native.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'dbus-native' { 2 | export type BodyEntry = string | number | null; 3 | 4 | export interface Message { 5 | path: string; 6 | destination: string; 7 | member: string; 8 | interface: string; 9 | body?: BodyEntry[]; 10 | signature?: string; 11 | } 12 | 13 | export interface Bus { 14 | invoke: ( 15 | message: Message, 16 | callback: (error: Error, response: any) => void, 17 | ) => void; 18 | } 19 | 20 | export function systemBus(): Bus; 21 | } 22 | --------------------------------------------------------------------------------