Operator Tips & Tricks
Размещение ключа в хранилище ключей:
This might be useful if you decided to switch domains or already have the secret phrase. Read more about switching domain in the next section.
Чтобы поместить ключ, используйте следующую команду:
subspace-node domain key insert \
--base-path NODE_DATA_PATH --domain-id DOMAIN_ID --keystore-suri "<Secret phrase>"
The command above will insert the keypair in the subfolder of NODE_DATA_PATH/domains/DOMAIN_ID/keystore
.
suri
- это секретная фраза ключа оператора.
Переключение доменов
Any Operator can switch domain they operate on anytime. In order to switch domain:
- Перейдите на PolkadotJS
- Убедитесь, что выбрали правильную сеть в верхнем левом углу.
- Выберите аккаунт, который хотите использовать в
using the selected account
. - Выберите
domains
в полеsubmit the following extrinsic
, далее выберитеswitchDomain(operatorId, newDomainId)
в выпадающем списке. - Добавьте свои
operatorId
иnewDomainId
в соответствующие поля.
Только аккаунт, который зарегистрировал Оператора, может изменить домен.
You need to move your keypair to a new location, if you switch domains. Follow the insert key to keystore section.
Stake of your Nominators won't be released, but will be moved to the new domain as well.
Полезные команды
Одновременный запуск ноды валидатора (фармера) и оператора
To run both operator and validator at the same time, provide required flags for both roles when starting your node.
- 🖼️ Windows
- 🍎 macOS
- 🐧 Ubuntu
- 🐋 Docker
subspace-node run `
--chain taurus `
--farmer `
--name your_node_name `
--base-path NODE_DATA_PATH `
--blocks-pruning archive-canonical `
--state-pruning archive-canonical `
--sync full `
-- `
--domain-id your_domain_id `
--operator-id your_operator_id `
--blocks-pruning archive-canonical `
--state-pruning 16000
subspace-node run \
--chain taurus \
--farmer \
--name your_node_name \
--base-path NODE_DATA_PATH \
--blocks-pruning archive-canonical \
--state-pruning archive-canonical \
--sync full \
-- \
--domain-id your_domain_id \
--operator-id your_operator_id \
--blocks-pruning archive-canonical \
--state-pruning 16000
subspace-node run \
--chain taurus \
--farmer \
--name your_node_name \
--base-path NODE_DATA_PATH \
--blocks-pruning archive-canonical \
--state-pruning archive-canonical \
--sync full \
-- \
--domain-id your_domain_id \
--operator-id your_operator_id \
--blocks-pruning archive-canonical \
--state-pruning 16000
services:
node:
# Replace snapshot-DATE with the latest release (like snapshot-2025-jan-07)
image: ghcr.io/autonomys/node:snapshot-DATE
volumes:
# Instead of specifying volume (which will store data in /var/lib/docker), you can
# alternatively specify path to the directory where files will be stored, just make
# sure everyone is allowed to write there
- node-data:/var/subspace:rw
# - /path/to/subspace-node:/var/subspace:rw
ports:
# If port 30333 or 30433 is already occupied by another Substrate-based node, replace all
# occurrences of 30333 or 30433 in this file with another value
- "0.0.0.0:30333:30333/tcp"
- "0.0.0.0:30433:30433/tcp"
- "0.0.0.0:40333:40333/tcp"
restart: unless-stopped
command: [
"run",
"--chain", "taurus",
"--base-path", "/var/subspace",
"--rpc-cors", "all",
"--rpc-methods", "unsafe",
"--rpc-listen-on", "0.0.0.0:9944",
"--farmer",
# Replace INSERT_YOUR_ID with your node ID (will be shown in telemetry)
"--name", "INSERT_YOUR_ID",
"--blocks-pruning", "archive-canonical",
"--state-pruning", "archive-canonical",
"--sync", "full",
"--",
# Replace INSERT_YOUR_DOMAIN_ID with domain ID you want to be operator on
"--domain-id", "INSERT_YOUR_DOMAIN_ID",
# Replace INSERT_YOUR_OPERATOR_ID with your operator ID
"--operator-id", "INSERT_YOUR_OPERATOR_ID",
"--blocks-pruning", "archive-canonical",
"--state-pruning", "16000",
"--listen-on", "/ip4/0.0.0.0/tcp/40333"
# Replace INSERT_YOUR_ID with your node ID (will be shown in telemetry)
]
healthcheck:
timeout: 5s
# If node setup takes longer than expected, you want to increase interval and retries number.
interval: 30s
retries: 60
farmer:
depends_on:
node:
condition: service_healthy
# Replace snapshot-DATE with latest release (like snapshot-2025-jan-07)
image: ghcr.io/autonomys/farmer:snapshot-DATE
volumes:
# Instead of specifying volume (which will store data in /var/lib/docker), you can
# alternatively specify path to the directory where files will be stored, just make
# sure everyone is allowed to write there
- farmer-data:/var/subspace:rw
# - /path/to/subspace-farmer:/var/subspace:rw
ports:
# If port 30533 is already occupied by something else, replace all
# occurrences of 30533 in this file with another value
- "0.0.0.0:30533:30533/tcp"
restart: unless-stopped
command: [
"farm",
"--node-rpc-url", "ws://node:9944",
"--listen-on", "/ip4/0.0.0.0/tcp/30533",
# Replace WALLET_ADDRESS with your Polkadot.js wallet address
"--reward-address", "WALLET_ADDRESS",
# Replace PLOT_SIZE with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)
"path=/var/subspace,size=PLOT_SIZE",
]
volumes:
node-data:
farmer-data:
If you're running an operator node for AutoID domain, add the following bootstrap node to the list of domain arguments:
--bootstrap-node /dns/bootstrap-0.autoid.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWFoiz2iTkmnnSqiL2oQRhGzaqgtUjYNz2jyWKQqgPXgx9
Вы должны увидеть, что нода успешно запущена и начала синхронизацию.
Переключение на другой сервер
To ensure the minimum downtime during your switch, we propose the following:
- Sync a new operator node using a throwaway key. You can generate a new key, just not insert it into your keystore.
- Остановите исходную ноду и переименуйте ключевое хранилище (или сделайте то, что Вам удобно, чтобы предотвратить случайный запуск исходной ноды с оригнальным ключом подписи).
- Update the keystore on the new node with the original signing key.
- Restart the new operator node.