NixOS
NixOS deployments can use our module to easily manage their validator. It creates a systemd service with a production configuration
Below is an example configuration.nix which can be used in production.
{ inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; union.url = "github:unionlabs/union"; }; outputs = { self, nixpkgs, union, ... }: { nixosConfigurations.testnet-validator = let system = "x86_64-linux"; pkgs = import nixpkgs { inherit system; }; in nixpkgs.lib.nixosSystem { inherit system; modules = [ union.nixosModules.unionvisor { system.stateVersion = "23.11"; # Base configuration for openstack-based VPSs # If using elitak/nixos-infect, use the hardware and network configuration provided by nixos-infect imports = [ "${nixpkgs}/nixos/modules/virtualisation/openstack-config.nix" ];
# Allow other validators to reach you networking.firewall.allowedTCPPorts = [ 80 443 26656 26657 ];
# Unionvisor module configuration services.unionvisor = { enable = true; moniker = "your-testnet-moniker"; network = "union-testnet-10"; seeds = "SEED_NODE_ADDRESS"; node-key-json = .path/to/node_key.json; priv-validator-key-json = .path/to/priv_validator_key.json; root = "/var/lib/unionvisor"; home = "/var/lib/unionvisor"; app-toml = .path/to/app.toml; client-toml = .path/to/client.toml; config-toml = .path/to/config.toml; };
# OPTIONAL: Some useful inspection tools for when you SSH into your validator environment.systemPackages = with pkgs; [ bat bottom helix jq fastfetch tree ]; } ]; }; };}
You can then deploy the configuration by running:
GIT_LFS_SKIP_SMUDGE=1 nixos-rebuild switch --flake .\#testnet-validator --target-host [email protected] -L
After the system has been switched to this configuration, Unionvisor will be ran as a systemd
service.
You can view the logs of Unionvisor with journalctl
:
journalctl -xfeu service.unionvisor
You can call the current uniond
either through Unionvisor binary, or by running the linked binary under $UNIONVISOR_HOME/uniond
. By default, the $UNIONVISOR_HOME
will be under /var/lib/unionvisor
. You can also find the home files of your node containing state and config under $UNIONVISOR_HOME/home
.
To upgrade to newer versions, simply run
nix flake updateGIT_LFS_SKIP_SMUDGE=1 nixos-rebuild switch --flake .\#testnet-validator --target-host [email protected] -L
This will pull in the latest changes to union configurations and prepare your node for future upgrades.