Skip to content

Instantly share code, notes, and snippets.

@buffalu
Last active January 23, 2024 17:09
Show Gist options
  • Save buffalu/ef41da5d93404c3960fb8d1f13e89c2f to your computer and use it in GitHub Desktop.
Save buffalu/ef41da5d93404c3960fb8d1f13e89c2f to your computer and use it in GitHub Desktop.
CoreOS ignition file for one-click Solana RPC server deployment

About

This contains a CoreOS Ignition file that automatically configures a Solana RPC server on both private and public IPs.

Setup Instructions

  1. Go to Equinix Metal and choose a good machine. (Can also go through Solana Foundation Server Program).
  2. Create your server.
  3. For OS, choose iPXE.
  4. For URL, type in: https://stable.release.flatcar-linux.net/amd64-usr/current/flatcar_production_packet.ipxe
  5. Click add user data. Run cat rpc-{private|public}.yaml | docker run --rm -i quay.io/coreos/ct:latest-dev --platform=custom. Copy and paste that (removing the last % if present).
  6. Let it deploy.
  7. Have fun!
passwd:
users:
- name: core
ssh_authorized_keys:
- {insert_here}
systemd:
units:
- name: docker.socket
enabled: false
- name: docker.service
enabled: true
- name: solana-install.service
enabled: true
contents: |
[Unit]
Description=Install the validator software
Requires=network-online.target
After=network-online.target
ConditionPathExists=/opt/solana-install
[Service]
Type=oneshot
User=core
RemainAfterExit=yes
ExecStart=/opt/solana-install v1.10.35
[Install]
WantedBy=multi-user.target
- name: solana-validator.service
enabled: true
contents: |
[Unit]
Description=Runs the validator
Requires=network-online.target solana-install.service solana-sys-tuner.service solana-ledger.mount solana-accounts.mount solana-change-perms.service coreos-metadata.service
After=network-online.target solana-install.service solana-sys-tuner.service solana-ledger.mount solana-accounts.mount solana-change-perms.service coreos-metadata.service
ConditionPathExists=/home/core/.local/share/solana/install/active_release/bin
ConditionPathExists=/run/metadata/coreos
[Service]
Type=exec
User=core
Restart=on-failure
EnvironmentFile=/run/metadata/coreos
Environment=SOLANA_METRICS_CONFIG="host=https://metrics.solana.com:8086,db=mainnet-beta,u=mainnet-beta_write,p=password"
ExecStartPre=/home/core/.local/share/solana/install/active_release/bin/solana-keygen new --no-bip39-passphrase --force
ExecStart=/home/core/.local/share/solana/install/active_release/bin/solana-validator \
--identity /home/core/.config/solana/id.json \
--account-index-exclude-key kinXdEcpDQeHPEuQnqmUgtYykqKGVFq6CeVX5iAHJq6 \
--account-index-exclude-key TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA \
--no-voting \
--entrypoint entrypoint.mainnet-beta.solana.com:8001 \
--entrypoint entrypoint2.mainnet-beta.solana.com:8001 \
--entrypoint entrypoint3.mainnet-beta.solana.com:8001 \
--entrypoint entrypoint4.mainnet-beta.solana.com:8001 \
--entrypoint entrypoint5.mainnet-beta.solana.com:8001 \
--trusted-validator ChorusmmK7i1AxXeiTtQgQZhQNiXYU84ULeaYF1EH15n \
--trusted-validator Certusm1sa411sMpV9FPqU5dXAYhmmhygvxJ23S6hJ24 \
--trusted-validator CakcnaRDHka2gXyfbEd2d3xsvkJkqsLw2akB3zsN1D2S \
--trusted-validator DE1bawNcRJB9rVm3buyMVfr8mBEoyyu73NBovf2oXJsJ \
--trusted-validator GdnSyH3YtwcxFvQrVVJMm1JhTS4QVX7MFsX56uJLUfiZ \
--trusted-validator FUyx2W6wDt7u363QgQRWQYuytE5uJWZLGJpuVh3RDiCa \
--trusted-validator 6cgsK8ph5tNUCiKG5WXLMZFX1CoL4jzuVouTPBwPC8fk \
--rpc-bind-address ${COREOS_PACKET_IPV4_PRIVATE_0} \
--private-rpc \
--rpc-port 8899 \
--full-rpc-api \
--enable-rpc-transaction-history \
--rpc-pubsub-enable-block-subscription \
--limit-ledger-size \
--enable-cpi-and-log-storage \
--accounts /solana/accounts \
--ledger /solana/ledger \
--expected-genesis-hash 5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpKuc147dw2N9d \
--log -
[Install]
WantedBy=multi-user.target
- name: solana-sys-tuner.service
enabled: true
contents: |
[Unit]
Description=Runs the sys-tuner
Requires=network-online.target solana-install.service
After=network-online.target solana-install.service
ConditionPathExists=/home/core/.local/share/solana/install/active_release/bin
[Service]
Type=exec
ExecStart=/home/core/.local/share/solana/install/active_release/bin/solana-sys-tuner --user root
[Install]
WantedBy=multi-user.target
- name: solana-change-perms.service
enabled: true
contents: |
[Unit]
Description=Changes permissions for ledger and accounts directory
Requires=solana-install.service
After=solana-install.service
ConditionPathExists=/solana/accounts
ConditionPathExists=/solana/ledger
[Service]
Type=exec
ExecStart=/usr/bin/bash -c 'chmod -R 777 /solana/accounts && chmod -R 777 /solana/ledger'
[Install]
WantedBy=multi-user.target
- name: solana-ledger.mount
enable: true
contents: |
[Unit]
Description=Mount solana-ledger to /solana/ledger
Before=local-fs.target
[Mount]
What=/dev/disk/by-label/solana-ledger
Where=/solana/ledger
Type=ext4
[Install]
WantedBy=local-fs.target
- name: solana-accounts.mount
enable: true
contents: |
[Unit]
Description=Mount solana-accounts to /solana/accounts
Before=local-fs.target
[Mount]
What=tmpfs
Where=/solana/accounts
Type=tmpfs
Options=rw,size=128G
DirectoryMode=0755
[Install]
WantedBy=local-fs.target
storage:
files:
- path: /opt/solana-install
filesystem: root
mode: 777
contents:
remote:
url: https://github.com/solana-labs/solana/releases/download/v1.10.35/solana-install-init-x86_64-unknown-linux-gnu
filesystems:
- name: solana-ledger
mount:
device: /dev/nvme0n1
format: ext4
wipe_filesystem: true
label: solana-ledger
passwd:
users:
- name: core
ssh_authorized_keys:
- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCi/9TsEbM4G4IsVENQbC69a/cfrs8yLaueY/KosHQfl/IUjDDG6fkhsNRVJwOzG4p8uPW+hC8b3eHRqRbzvV6MwpYmBeTIgTJH4zmTW8vNh4ZSnFf0LvxDommdwlaePrdycDy9j3UQT9ZikvGKOKPRatMKbQ3bqJOHZYkeWHo+GceIS5MUUpDpHj+jt2A9eqpP7/U7EByQxb3CEedOII8D/tWHW6snLKHp92c0XOD9o8K+gTonlX5Iq/sN5KKVcQqmbZxORrfYFWDzLS1IlKHsLP2DHCU8DHRVO4kp/+fLg3qRBzgvIInF014kGSHTu3is0SGqamdEU2U19o4piSfdPxFM0mMc4M23KCqrcRWprfx06/Z7eOljBmiLtMkbYXzEfkfmGqHrztATIC5qcVoSMsaUXOhqI9GsvlclijvMy7XtRAKfkZtA/d1CbhdnFjwWU0mIxvhVsC6lVRDK6s5OM9UVXsckWBnnZKydDTcFDJHVREUxkAhg+aIqVRxCnkNkJ0kz8VHNqMNnrt/+Mc1iP4FIFSuac54MXVma0rGyDb+rL8m1ZGaRhWQQlSoFfR5pbX7FOQlQuiay+ZZ4ia4GgkyekEQMdUa5F+XD4TOySXJ+1XihkjA6X/uKD6+xNvssheCL+h1hoH/gKlG8Evm2Mvc2Lvs64vQ6H6VaTDSYaw== lucasbruder@Lucass-MacBook-Pro.local
systemd:
units:
- name: docker.socket
enabled: false
- name: docker.service
enabled: true
- name: solana-install.service
enabled: true
contents: |
[Unit]
Description=Install the validator software
Requires=network-online.target
After=network-online.target
ConditionPathExists=/opt/solana-install
[Service]
Type=oneshot
User=core
RemainAfterExit=yes
ExecStart=/opt/solana-install v1.10.35
[Install]
WantedBy=multi-user.target
- name: solana-validator.service
enabled: true
contents: |
[Unit]
Description=Runs the validator
Requires=network-online.target solana-install.service solana-sys-tuner.service solana-ledger.mount solana-accounts.mount solana-change-perms.service
After=network-online.target solana-install.service solana-sys-tuner.service solana-ledger.mount solana-accounts.mount solana-change-perms.service
ConditionPathExists=/home/core/.local/share/solana/install/active_release/bin
[Service]
Type=exec
User=core
Restart=on-failure
Environment=SOLANA_METRICS_CONFIG="host=https://metrics.solana.com:8086,db=mainnet-beta,u=mainnet-beta_write,p=password"
ExecStartPre=/home/core/.local/share/solana/install/active_release/bin/solana-keygen new --no-bip39-passphrase --force
ExecStart=/home/core/.local/share/solana/install/active_release/bin/solana-validator \
--identity /home/core/.config/solana/id.json \
--account-index-exclude-key kinXdEcpDQeHPEuQnqmUgtYykqKGVFq6CeVX5iAHJq6 \
--account-index-exclude-key TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA \
--no-voting \
--entrypoint entrypoint.mainnet-beta.solana.com:8001 \
--entrypoint entrypoint2.mainnet-beta.solana.com:8001 \
--entrypoint entrypoint3.mainnet-beta.solana.com:8001 \
--entrypoint entrypoint4.mainnet-beta.solana.com:8001 \
--entrypoint entrypoint5.mainnet-beta.solana.com:8001 \
--trusted-validator ChorusmmK7i1AxXeiTtQgQZhQNiXYU84ULeaYF1EH15n \
--trusted-validator Certusm1sa411sMpV9FPqU5dXAYhmmhygvxJ23S6hJ24 \
--trusted-validator CakcnaRDHka2gXyfbEd2d3xsvkJkqsLw2akB3zsN1D2S \
--trusted-validator DE1bawNcRJB9rVm3buyMVfr8mBEoyyu73NBovf2oXJsJ \
--trusted-validator GdnSyH3YtwcxFvQrVVJMm1JhTS4QVX7MFsX56uJLUfiZ \
--trusted-validator FUyx2W6wDt7u363QgQRWQYuytE5uJWZLGJpuVh3RDiCa \
--trusted-validator 6cgsK8ph5tNUCiKG5WXLMZFX1CoL4jzuVouTPBwPC8fk \
--bind-address 0.0.0.0 \
--private-rpc \
--rpc-port 8899 \
--full-rpc-api \
--enable-rpc-transaction-history \
--rpc-pubsub-enable-block-subscription \
--limit-ledger-size \
--enable-cpi-and-log-storage \
--accounts /solana/accounts \
--ledger /solana/ledger \
--expected-genesis-hash 5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpKuc147dw2N9d \
--log -
[Install]
WantedBy=multi-user.target
- name: solana-sys-tuner.service
enabled: true
contents: |
[Unit]
Description=Runs the sys-tuner
Requires=network-online.target solana-install.service
After=network-online.target solana-install.service
ConditionPathExists=/home/core/.local/share/solana/install/active_release/bin
[Service]
Type=exec
ExecStart=/home/core/.local/share/solana/install/active_release/bin/solana-sys-tuner --user root
[Install]
WantedBy=multi-user.target
- name: solana-change-perms.service
enabled: true
contents: |
[Unit]
Description=Changes permissions for ledger and accounts directory
Requires=solana-install.service
After=solana-install.service
ConditionPathExists=/solana/accounts
ConditionPathExists=/solana/ledger
[Service]
Type=exec
ExecStart=/usr/bin/bash -c 'chmod -R 777 /solana/accounts && chmod -R 777 /solana/ledger'
[Install]
WantedBy=multi-user.target
- name: solana-ledger.mount
enable: true
contents: |
[Unit]
Description=Mount solana-ledger to /solana/ledger
Before=local-fs.target
[Mount]
What=/dev/disk/by-label/solana-ledger
Where=/solana/ledger
Type=ext4
[Install]
WantedBy=local-fs.target
- name: solana-accounts.mount
enable: true
contents: |
[Unit]
Description=Mount solana-accounts to /solana/accounts
Before=local-fs.target
[Mount]
What=tmpfs
Where=/solana/accounts
Type=tmpfs
Options=rw,size=128G
DirectoryMode=0755
[Install]
WantedBy=local-fs.target
storage:
files:
- path: /opt/solana-install
filesystem: root
mode: 777
contents:
remote:
url: https://github.com/solana-labs/solana/releases/download/v1.10.35/solana-install-init-x86_64-unknown-linux-gnu
filesystems:
- name: solana-ledger
mount:
device: /dev/nvme0n1
format: ext4
wipe_filesystem: true
label: solana-ledger
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment