Skip to content

chore: update the installers for Node.js 24 and current Ubuntu LTS releases - #4876

Open
oXtxNt9U wants to merge 8 commits into
developfrom
chore/node-24-maintenance-installers
Open

oXtxNt9U wants to merge 8 commits into
developfrom
chore/node-24-maintenance-installers

Conversation

@oXtxNt9U

Copy link
Copy Markdown
Collaborator

Summary

Note

Stacked on #4875. Review and merge that one first.

Summary

Updates install.sh and install-rc.sh so new nodes install on Ubuntu 22.04–26.04 with Node.js 24.

Changes

  • Node.js 24 from the NodeSource repository, with python3 for native builds
  • pm2 7, matching the peer dependency in chore: maintenance update for Node.js 24 and current Ubuntu LTS releases #4875
  • PostgreSQL 18, pinned
  • NTP through systemd-timesyncd
  • Locale: fixed the en_US.UTF-8 setup
  • Database setup: an existing database is handed to the Core user, which fixes permission denied for schema public on PostgreSQL ≥ 15
  • Ubuntu only: RPM and SystemV support removed
  • install-rc.sh synced with install.sh. It only differs in installing @rc and publishing the devnet configuration
  • Docker: the devnet build uses the rc channel

Checklist

  • Documentation (if necessary)
  • Tests (if necessary)
  • Ready to be merged

@oXtxNt9U
oXtxNt9U added this pull request to stack #4877 October 29, 2026 02:06
@oXtxNt9U
oXtxNt9U requested a review from adrian69 October 29, 2026 02:07
Base automatically changed from chore/node-24-maintenance to develop October 29, 2026 09:54
oXtxNt9U and others added 8 commits October 29, 2026 10:54
install-rc.sh was an older copy of install.sh: it still added the
NodeSource and Yarn repositories with `apt-key`, which apt 3 (Ubuntu 26.04)
no longer provides, installed PostgreSQL from the distribution
instead of the PGDG repository, lacked the os-release codename fallback,
and ran apt without `DEBIAN_FRONTEND=noninteractive`.

Regenerate it from install.sh so the two only differ in what they are
for: install-rc.sh installs `@ArkEcosystem/core@rc` and publishes the
devnet configuration. No new behaviour is introduced beyond what
install.sh already does.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Applies to install.sh and install-rc.sh alike:

- Install Node.js 24 from the NodeSource `nodistro` repository with its
  current signing key. The `node_16.x` repository returns 404 for `noble`
  (24.04) and `resolute` (26.04), so installation stopped there.
- Install chrony instead of ntp and make sure it is enabled and running.
  `ntp` has no installation candidate on 26.04, and with
  `set -e` the installer aborted. chrony replaces systemd-timesyncd on
  installation, and `timedatectl set-ntp off` is dropped because chrony
  registers itself with timedated: the command would stop and disable
  chrony wherever it is already installed (e.g. 26.04 images or re-runs).
- Install python3 explicitly; bcrypto has no prebuilt binaries and is
  always compiled with node-gyp.
- Install Node.js on the RPM path; the NodeSource setup script only adds
  the repository.
- Hand an existing database to the Core user unless the user chose to
  overwrite it. Previously an empty answer to the "[y/N]" prompt left the
  database owned by `postgres` after recreating the user, which fails with
  "permission denied for schema public" on PostgreSQL >= 15.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@ArkEcosystem/core declares pm2 ^7.0.0 as a peer dependency, but the
installers add the newest pm2. Pin the major version, so a future pm2 8
is not installed outside that range.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The postgresql package from the PostgreSQL apt repository always depends on
the newest major version. Install postgresql-18 instead, so new servers keep
getting the version CI tests against when PostgreSQL 19 becomes the default.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Formatting only, no functional change. Removing the RPM branches left the
apt commands indented under their section headings, the en_US.UTF-8
locale commands indented twice, and one line indented with a tab and a
double space. Applies to install.sh and install-rc.sh alike.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Follow-up to the removal of the RPM and SystemV paths. Applies to
install.sh and install-rc.sh alike.

- Configure the locale after `apt-get update`. Installing `locales`
  before the package lists were fetched failed on fresh images and
  aborted the script; `locales` now joins the system dependencies.
- Enable en_US.UTF-8 in /etc/locale.gen before running locale-gen.
  Some locale-gen versions ignore their argument and only generate the
  locales enabled there, so update-locale failed without it.
- Always export the locale in the current shell and only guard the
  ~/.bashrc lines, so re-runs keep a working locale. Use `grep -q`
  directly instead of `$(grep ...)`.
- Drop the PostgreSQL apt pin. It only matches the `postgresql`
  metapackage, which the installers no longer install.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@sebastijankuzner
sebastijankuzner force-pushed the chore/node-24-maintenance-installers branch from df6d14a to bb6599f Compare October 29, 2026 09:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants