init commit

This commit is contained in:
Yuanhai He
2023-05-17 05:25:29 +00:00
parent 73fb234da6
commit 2a57a48ee1
9 changed files with 185 additions and 0 deletions

3
.gitignore vendored Normal file
View File

@@ -0,0 +1,3 @@
/stacks-node
/postgresql
/wait

View File

@@ -1,2 +1,8 @@
# 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
View 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
View 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
View 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
View 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
View 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
View 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

8
stop.sh Executable file
View File

@@ -0,0 +1,8 @@
#!/bin/bash
set -e
DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"
cd $DIR
docker-compose down stacks-blockchain
docker-compose down stacks-blockchain-api
docker-compose down postgres