mirror of
https://github.com/alexgo-io/stacks-node-mainnet.git
synced 2026-04-30 20:02:47 +08:00
init commit
This commit is contained in:
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
/stacks-node
|
||||||
|
/postgresql
|
||||||
|
/wait
|
||||||
@@ -1,2 +1,8 @@
|
|||||||
# stacks-node-mainnet
|
# stacks-node-mainnet
|
||||||
|
|
||||||
|
References:
|
||||||
|
|
||||||
|
+ https://docs.hiro.so/stacks-blockchain-api/how-to-guides/how-to-run-mainnet-node
|
||||||
|
+ https://docs.hiro.so/references/hiro-archive
|
||||||
|
|
||||||
|
Note: use `stop.sh` to stop daemons!
|
||||||
|
|||||||
27
config/Stacks.toml
Normal file
27
config/Stacks.toml
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
[node]
|
||||||
|
working_dir = "/srv/stacks-node"
|
||||||
|
rpc_bind = "0.0.0.0:20443"
|
||||||
|
p2p_bind = "0.0.0.0:20444"
|
||||||
|
bootstrap_node = "02196f005965cebe6ddc3901b7b1cc1aa7a88f305bb8c5893456b8f9a605923893@seed.mainnet.hiro.so:20444"
|
||||||
|
wait_time_for_microblocks = 10000
|
||||||
|
|
||||||
|
[burnchain]
|
||||||
|
chain = "bitcoin"
|
||||||
|
mode = "mainnet"
|
||||||
|
peer_host = "bitcoin.blockstack.com"
|
||||||
|
username = "blockstack"
|
||||||
|
password = "blockstacksystem"
|
||||||
|
rpc_port = 8332
|
||||||
|
peer_port = 8333
|
||||||
|
|
||||||
|
[[events_observer]]
|
||||||
|
endpoint = "127.0.0.1:3700"
|
||||||
|
retry_count = 255
|
||||||
|
events_keys = ["*"]
|
||||||
|
|
||||||
|
[connection_options]
|
||||||
|
read_only_call_limit_write_length = 15000000
|
||||||
|
read_only_call_limit_read_length = 100000000
|
||||||
|
read_only_call_limit_write_count = 7750
|
||||||
|
read_only_call_limit_read_count = 7750
|
||||||
|
read_only_call_limit_runtime = 5000000000
|
||||||
64
docker-compose.yml
Normal file
64
docker-compose.yml
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
version: '3.8'
|
||||||
|
services:
|
||||||
|
stacks-blockchain-postgres:
|
||||||
|
restart: always
|
||||||
|
image: postgres:15.3-alpine
|
||||||
|
container_name: stacks_postgres
|
||||||
|
command: postgres -c 'max_connections=1000'
|
||||||
|
shm_size: 2gb
|
||||||
|
network_mode: host
|
||||||
|
environment:
|
||||||
|
POSTGRES_USER: postgres
|
||||||
|
POSTGRES_PASSWORD: 6nyi11z9tWbXJDYsVESHQfNVo
|
||||||
|
POSTGRES_DB: alexgo
|
||||||
|
volumes:
|
||||||
|
- ./postgresql:/var/lib/postgresql
|
||||||
|
stacks-blockchain-api:
|
||||||
|
restart: always
|
||||||
|
image: bestmike007/stacks-blockchain-api:7.1.10
|
||||||
|
container_name: stacks_api
|
||||||
|
command: sh -c "/wait && node ./lib/index.js"
|
||||||
|
network_mode: host
|
||||||
|
environment:
|
||||||
|
WAIT_HOSTS: '127.0.0.1:5432'
|
||||||
|
PG_HOST: 127.0.0.1
|
||||||
|
PG_PORT: 5432
|
||||||
|
PG_USER: alexgo
|
||||||
|
PG_PASSWORD: 6nyi11z9tWbXJDYsVESHQfNVo
|
||||||
|
PG_DATABASE: alexgo
|
||||||
|
STACKS_CORE_EVENT_PORT: '3700'
|
||||||
|
STACKS_CORE_EVENT_HOST: http://0.0.0.0
|
||||||
|
STACKS_BLOCKCHAIN_API_PORT: '3999'
|
||||||
|
STACKS_BLOCKCHAIN_API_HOST: 0.0.0.0
|
||||||
|
STACKS_BLOCKCHAIN_API_DB: pg
|
||||||
|
STACKS_CORE_RPC_HOST: 127.0.0.1
|
||||||
|
STACKS_CORE_RPC_PORT: '20443'
|
||||||
|
STACKS_CHAIN_ID: '0x00000001'
|
||||||
|
STACKS_API_ENABLE_FT_METADATA: 1
|
||||||
|
STACKS_API_ENABLE_NFT_METADATA: 1
|
||||||
|
NODE_ENV: production
|
||||||
|
volumes:
|
||||||
|
- $PWD/wait:/wait
|
||||||
|
stacks-blockchain:
|
||||||
|
restart: always
|
||||||
|
image: blockstack/stacks-blockchain:2.3.0.0.2
|
||||||
|
container_name: stacks_node
|
||||||
|
environment:
|
||||||
|
WAIT_BEFORE: 3
|
||||||
|
WAIT_AFTER: 3
|
||||||
|
WAIT_HOSTS: "stacks-blockchain-api-event:3700"
|
||||||
|
NOP_BLOCKSTACK_DEBUG: 0
|
||||||
|
XBLOCKSTACK_DEBUG: 0
|
||||||
|
RUST_BACKTRACE: 0
|
||||||
|
STACKS_CHAIN_ID: "0x00000001"
|
||||||
|
V2_POX_MIN_AMOUNT_USTX: 90000000260
|
||||||
|
STACKS_CORE_RPC_HOST: 127.0.0.1
|
||||||
|
STACKS_CORE_RPC_PORT: 20443
|
||||||
|
STACKS_API_ENABLE_FT_METADATA: 1
|
||||||
|
STACKS_API_ENABLE_NFT_METADATA: 1
|
||||||
|
network_mode: host
|
||||||
|
volumes:
|
||||||
|
- ./Stacks.toml:/srv/Stacks.toml:ro
|
||||||
|
- ./stacks-node:/srv/stacks-node
|
||||||
|
- ./wait:/usr/bin/wait:ro
|
||||||
|
command: sh -c "/wait && stacks-node start --config=/srv/Stacks.toml"
|
||||||
13
restore-archive-node.sh
Executable file
13
restore-archive-node.sh
Executable file
@@ -0,0 +1,13 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"
|
||||||
|
cd $DIR
|
||||||
|
|
||||||
|
if [ -e stacks-node ]; then
|
||||||
|
echo "The stacks node is already running, this is for fresh start"
|
||||||
|
echo "If you need to reset and restore again, please stop daemons and remove ./stacks-node"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
curl https://archive.hiro.so/mainnet/stacks-blockchain/mainnet-stacks-blockchain-latest.tar.gz | tar -zxv
|
||||||
|
mv mainnet stacks-node
|
||||||
16
restore-archive-pg.sh
Executable file
16
restore-archive-pg.sh
Executable file
@@ -0,0 +1,16 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"
|
||||||
|
cd $DIR
|
||||||
|
|
||||||
|
if [ -e postresql ]; then
|
||||||
|
echo "The stacks postgres is already running, this is for fresh start"
|
||||||
|
echo "If you need to reset and restore again, please stop postgres and remove ./postresql"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
mkdir postgresql
|
||||||
|
curl -o postgresql/latest.dump https://archive.hiro.so/mainnet/stacks-blockchain-api-pg/stacks-blockchain-api-pg-15-7.1.10-latest.dump
|
||||||
|
|
||||||
|
docker-compose up -d stacks-blockchain-postgres
|
||||||
|
docker exec -it stacks_postgres pg_restore -j 8 -Upostgres -v -C -d alexgo /var/lib/postgresql/latest.dump
|
||||||
42
setup.sh
Executable file
42
setup.sh
Executable file
@@ -0,0 +1,42 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"
|
||||||
|
cd $DIR
|
||||||
|
|
||||||
|
export DEBIAN_FRONTEND=noninteractive
|
||||||
|
apt-get update && apt-get dist-upgrade -y && apt-get autoremove -y && apt-get autoclean
|
||||||
|
|
||||||
|
apt-get install -y dstat vim iftop direnv zip unzip ca-certificates curl git gnupg lsb-release dirmngr gpg gawk jq tmux screen traceroute dnsutils iftop ufw
|
||||||
|
|
||||||
|
echo "Port 2280" >> /etc/ssh/sshd_config
|
||||||
|
echo "UseDNS no" >> /etc/ssh/sshd_config
|
||||||
|
systemctl restart ssh
|
||||||
|
ufw allow 20443/tcp
|
||||||
|
ufw allow 20444/tcp
|
||||||
|
ufw limit 2280
|
||||||
|
echo y | ufw enable
|
||||||
|
|
||||||
|
# docker
|
||||||
|
if [ ! -e /usr/local/bin/docker-compose ]; then
|
||||||
|
mkdir -m 0755 -p /etc/apt/keyrings
|
||||||
|
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
|
||||||
|
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
|
||||||
|
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
|
||||||
|
apt-get update && apt-get install -y docker-ce
|
||||||
|
echo '{
|
||||||
|
"log-driver": "json-file",
|
||||||
|
"log-opts": {
|
||||||
|
"max-size": "1024m"
|
||||||
|
},
|
||||||
|
"live-restore": true
|
||||||
|
}' > /etc/docker/daemon.json
|
||||||
|
systemctl enable --now docker
|
||||||
|
systemctl restart docker
|
||||||
|
curl -SL https://github.com/docker/compose/releases/download/v2.18.0/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
|
||||||
|
chmod +x /usr/local/bin/docker-compose
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -e "./wait" ]; then
|
||||||
|
wget -qO ./wait https://github.com/ufoscout/docker-compose-wait/releases/download/2.12.0/wait
|
||||||
|
chmod +x ./wait
|
||||||
|
fi
|
||||||
6
start.sh
Executable file
6
start.sh
Executable file
@@ -0,0 +1,6 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"
|
||||||
|
cd $DIR
|
||||||
|
|
||||||
|
docker-compose up -d
|
||||||
Reference in New Issue
Block a user