pinnace 0.3.2 → 0.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloud-init.d.ts","sourceRoot":"","sources":["../../src/provision/cloud-init.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AACH,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,gCAAgC,CAAC;AAE7D,8DAA8D;AAC9D,MAAM,MAAM,QAAQ,GAAG,SAAS,CAAC;AAEjC,yEAAyE;AACzE,eAAO,MAAM,cAAc,EAAE,SAAS,QAAQ,EAAgB,CAAC;AAE/D;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC9B,mDAAmD;IACnD,IAAI,EAAE,QAAQ,CAAC;IACf,0EAA0E;IAC1E,SAAS,EAAE,MAAM,CAAC;IAClB,gFAAgF;IAChF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,2DAA2D;IAC3D,SAAS,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;;;;;OAMG;IACH,IAAI,EAAE,QAAQ,CAAC;IACf;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,4EAA4E;IAC5E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gEAAgE;IAChE,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,+DAA+D;AAC/D,MAAM,WAAW,WAAW;IAC3B,gFAAgF;IAChF,IAAI,EAAE,MAAM,CAAC;IACb,8BAA8B;IAC9B,QAAQ,EAAE,MAAM,CAAC;CACjB;AAED,wEAAwE;AACxE,MAAM,WAAW,eAAe;IAC/B,mEAAmE;IACnE,IAAI,EAAE,QAAQ,CAAC;IACf,6CAA6C;IAC7C,SAAS,EAAE,WAAW,CAAC;CACvB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,YAAY;IAC5B,6CAA6C;IAC7C,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,0EAA0E;IAC1E,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,eAAe,CAAC;CAClD;
|
|
1
|
+
{"version":3,"file":"cloud-init.d.ts","sourceRoot":"","sources":["../../src/provision/cloud-init.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AACH,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,gCAAgC,CAAC;AAE7D,8DAA8D;AAC9D,MAAM,MAAM,QAAQ,GAAG,SAAS,CAAC;AAEjC,yEAAyE;AACzE,eAAO,MAAM,cAAc,EAAE,SAAS,QAAQ,EAAgB,CAAC;AAE/D;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC9B,mDAAmD;IACnD,IAAI,EAAE,QAAQ,CAAC;IACf,0EAA0E;IAC1E,SAAS,EAAE,MAAM,CAAC;IAClB,gFAAgF;IAChF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,2DAA2D;IAC3D,SAAS,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;;;;;OAMG;IACH,IAAI,EAAE,QAAQ,CAAC;IACf;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,4EAA4E;IAC5E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gEAAgE;IAChE,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,+DAA+D;AAC/D,MAAM,WAAW,WAAW;IAC3B,gFAAgF;IAChF,IAAI,EAAE,MAAM,CAAC;IACb,8BAA8B;IAC9B,QAAQ,EAAE,MAAM,CAAC;CACjB;AAED,wEAAwE;AACxE,MAAM,WAAW,eAAe;IAC/B,mEAAmE;IACnE,IAAI,EAAE,QAAQ,CAAC;IACf,6CAA6C;IAC7C,SAAS,EAAE,WAAW,CAAC;CACvB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,YAAY;IAC5B,6CAA6C;IAC7C,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,0EAA0E;IAC1E,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,eAAe,CAAC;CAClD;AAoeD;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE,YAWjC,CAAC;AAOF;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,eAAe,CAUhE"}
|
|
@@ -10,7 +10,7 @@ const DEFAULT_KUBO_VERSION = 'v0.38.1';
|
|
|
10
10
|
* the same agent. Overridable per-box via {@link ProvisionInput.pinnaceVersion}.
|
|
11
11
|
* `pinnace@0.1.0` is the first published release (npm, public, OIDC provenance).
|
|
12
12
|
*/
|
|
13
|
-
const DEFAULT_PINNACE_VERSION = '0.3.
|
|
13
|
+
const DEFAULT_PINNACE_VERSION = '0.3.3';
|
|
14
14
|
/**
|
|
15
15
|
* The pinned Node.js major the box installs via NodeSource (`setup_<this>.x`).
|
|
16
16
|
* Node 22 is a current active LTS; Node 20 (the old literal) is the OLDEST LTS
|
|
@@ -236,12 +236,19 @@ write_files:
|
|
|
236
236
|
install -d -o ipfs -g ipfs /var/lib/ipfs
|
|
237
237
|
|
|
238
238
|
export IPFS_PATH=/var/lib/ipfs/.ipfs
|
|
239
|
+
# HOME must be passed to every sudo -u ipfs invocation: sudo does not
|
|
240
|
+
# inherit it, and the ipfs binary aborts (Error: HOME is not defined) since
|
|
241
|
+
# it resolves HOME/.config/ipfs for the nopfs denylists. Without this,
|
|
242
|
+
# ipfs init fails under set -e and aborts this whole script before the
|
|
243
|
+
# datadir/config are set up (the box then crash-loops). Point it at the
|
|
244
|
+
# ipfs user home (the datadir root).
|
|
245
|
+
IPFS_HOME=/var/lib/ipfs
|
|
239
246
|
if [ ! -f "$IPFS_PATH/config" ]; then
|
|
240
247
|
# 'server' profile disables local-network announce (good for a datacenter box)
|
|
241
|
-
sudo -u ipfs env IPFS_PATH="$IPFS_PATH" ipfs init --profile server
|
|
248
|
+
sudo -u ipfs env IPFS_PATH="$IPFS_PATH" HOME="$IPFS_HOME" ipfs init --profile server
|
|
242
249
|
fi
|
|
243
250
|
|
|
244
|
-
cfg() { sudo -u ipfs env IPFS_PATH="$IPFS_PATH" ipfs config "$@"; }
|
|
251
|
+
cfg() { sudo -u ipfs env IPFS_PATH="$IPFS_PATH" HOME="$IPFS_HOME" ipfs config "$@"; }
|
|
245
252
|
|
|
246
253
|
# --- Reachability: bind API + gateway to localhost only (NEVER public) ---
|
|
247
254
|
cfg Addresses.API "/ip4/127.0.0.1/tcp/5001"
|
|
@@ -297,12 +304,14 @@ write_files:
|
|
|
297
304
|
# dies at startup with "denylists: permission denied". Setting HOME here
|
|
298
305
|
# keeps that lookup inside the writable datadir.
|
|
299
306
|
Environment=HOME=/var/lib/ipfs
|
|
300
|
-
#
|
|
301
|
-
#
|
|
302
|
-
#
|
|
303
|
-
#
|
|
304
|
-
# the
|
|
305
|
-
|
|
307
|
+
# NOTE: the datadir /var/lib/ipfs is created by a runcmd step BEFORE this
|
|
308
|
+
# unit is enabled (see runcmd) — NOT via ExecStartPre. ReadWritePaths=
|
|
309
|
+
# /var/lib/ipfs makes systemd set up the mount namespace (referencing that
|
|
310
|
+
# path) BEFORE running any Exec* line, including ExecStartPre — even an
|
|
311
|
+
# ExecStartPre=+ one — so if the path is missing, namespace setup fails
|
|
312
|
+
# with 226/NAMESPACE and the ExecStartPre can never create it (a catch-22).
|
|
313
|
+
# The path must therefore exist before the unit starts, guaranteed outside
|
|
314
|
+
# the unit.
|
|
306
315
|
ExecStart=/usr/local/bin/ipfs daemon --migrate=true --enable-gc
|
|
307
316
|
Restart=on-failure
|
|
308
317
|
RestartSec=5
|
|
@@ -404,7 +413,14 @@ runcmd:
|
|
|
404
413
|
- ufw allow 443/tcp
|
|
405
414
|
- ufw --force enable
|
|
406
415
|
|
|
407
|
-
# Install + start Kubo
|
|
416
|
+
# Install + start Kubo.
|
|
417
|
+
# Create the datadir FIRST, unconditionally, before anything that needs it.
|
|
418
|
+
# This MUST happen outside the ipfs.service unit: that unit's
|
|
419
|
+
# ReadWritePaths=/var/lib/ipfs makes systemd fail namespace setup
|
|
420
|
+
# (226/NAMESPACE) if the path is missing, before any ExecStartPre could create
|
|
421
|
+
# it. And it must not depend on ipfs-setup.sh reaching its own mkdir (that
|
|
422
|
+
# script can abort early). So we guarantee it here, first.
|
|
423
|
+
- install -d -o ipfs -g ipfs /var/lib/ipfs
|
|
408
424
|
- /usr/local/sbin/ipfs-setup.sh
|
|
409
425
|
- systemctl daemon-reload
|
|
410
426
|
- systemctl enable --now ipfs.service
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloud-init.js","sourceRoot":"","sources":["../../src/provision/cloud-init.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"cloud-init.js","sourceRoot":"","sources":["../../src/provision/cloud-init.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -164,7 +164,7 @@ const DEFAULT_KUBO_VERSION = 'v0.38.1';
|
|
|
164
164
|
* the same agent. Overridable per-box via {@link ProvisionInput.pinnaceVersion}.
|
|
165
165
|
* `pinnace@0.1.0` is the first published release (npm, public, OIDC provenance).
|
|
166
166
|
*/
|
|
167
|
-
const DEFAULT_PINNACE_VERSION = '0.3.
|
|
167
|
+
const DEFAULT_PINNACE_VERSION = '0.3.3';
|
|
168
168
|
/**
|
|
169
169
|
* The pinned Node.js major the box installs via NodeSource (`setup_<this>.x`).
|
|
170
170
|
* Node 22 is a current active LTS; Node 20 (the old literal) is the OLDEST LTS
|
|
@@ -416,12 +416,19 @@ write_files:
|
|
|
416
416
|
install -d -o ipfs -g ipfs /var/lib/ipfs
|
|
417
417
|
|
|
418
418
|
export IPFS_PATH=/var/lib/ipfs/.ipfs
|
|
419
|
+
# HOME must be passed to every sudo -u ipfs invocation: sudo does not
|
|
420
|
+
# inherit it, and the ipfs binary aborts (Error: HOME is not defined) since
|
|
421
|
+
# it resolves HOME/.config/ipfs for the nopfs denylists. Without this,
|
|
422
|
+
# ipfs init fails under set -e and aborts this whole script before the
|
|
423
|
+
# datadir/config are set up (the box then crash-loops). Point it at the
|
|
424
|
+
# ipfs user home (the datadir root).
|
|
425
|
+
IPFS_HOME=/var/lib/ipfs
|
|
419
426
|
if [ ! -f "$IPFS_PATH/config" ]; then
|
|
420
427
|
# 'server' profile disables local-network announce (good for a datacenter box)
|
|
421
|
-
sudo -u ipfs env IPFS_PATH="$IPFS_PATH" ipfs init --profile server
|
|
428
|
+
sudo -u ipfs env IPFS_PATH="$IPFS_PATH" HOME="$IPFS_HOME" ipfs init --profile server
|
|
422
429
|
fi
|
|
423
430
|
|
|
424
|
-
cfg() { sudo -u ipfs env IPFS_PATH="$IPFS_PATH" ipfs config "$@"; }
|
|
431
|
+
cfg() { sudo -u ipfs env IPFS_PATH="$IPFS_PATH" HOME="$IPFS_HOME" ipfs config "$@"; }
|
|
425
432
|
|
|
426
433
|
# --- Reachability: bind API + gateway to localhost only (NEVER public) ---
|
|
427
434
|
cfg Addresses.API "/ip4/127.0.0.1/tcp/5001"
|
|
@@ -477,12 +484,14 @@ write_files:
|
|
|
477
484
|
# dies at startup with "denylists: permission denied". Setting HOME here
|
|
478
485
|
# keeps that lookup inside the writable datadir.
|
|
479
486
|
Environment=HOME=/var/lib/ipfs
|
|
480
|
-
#
|
|
481
|
-
#
|
|
482
|
-
#
|
|
483
|
-
#
|
|
484
|
-
# the
|
|
485
|
-
|
|
487
|
+
# NOTE: the datadir /var/lib/ipfs is created by a runcmd step BEFORE this
|
|
488
|
+
# unit is enabled (see runcmd) — NOT via ExecStartPre. ReadWritePaths=
|
|
489
|
+
# /var/lib/ipfs makes systemd set up the mount namespace (referencing that
|
|
490
|
+
# path) BEFORE running any Exec* line, including ExecStartPre — even an
|
|
491
|
+
# ExecStartPre=+ one — so if the path is missing, namespace setup fails
|
|
492
|
+
# with 226/NAMESPACE and the ExecStartPre can never create it (a catch-22).
|
|
493
|
+
# The path must therefore exist before the unit starts, guaranteed outside
|
|
494
|
+
# the unit.
|
|
486
495
|
ExecStart=/usr/local/bin/ipfs daemon --migrate=true --enable-gc
|
|
487
496
|
Restart=on-failure
|
|
488
497
|
RestartSec=5
|
|
@@ -584,7 +593,14 @@ runcmd:
|
|
|
584
593
|
- ufw allow 443/tcp
|
|
585
594
|
- ufw --force enable
|
|
586
595
|
|
|
587
|
-
# Install + start Kubo
|
|
596
|
+
# Install + start Kubo.
|
|
597
|
+
# Create the datadir FIRST, unconditionally, before anything that needs it.
|
|
598
|
+
# This MUST happen outside the ipfs.service unit: that unit's
|
|
599
|
+
# ReadWritePaths=/var/lib/ipfs makes systemd fail namespace setup
|
|
600
|
+
# (226/NAMESPACE) if the path is missing, before any ExecStartPre could create
|
|
601
|
+
# it. And it must not depend on ipfs-setup.sh reaching its own mkdir (that
|
|
602
|
+
# script can abort early). So we guarantee it here, first.
|
|
603
|
+
- install -d -o ipfs -g ipfs /var/lib/ipfs
|
|
588
604
|
- /usr/local/sbin/ipfs-setup.sh
|
|
589
605
|
- systemctl daemon-reload
|
|
590
606
|
- systemctl enable --now ipfs.service
|