LINKS

**Website**
[<https://celestia.org/>](<https://celestia.org/>)

**Docs**
[<https://docs.celestia.org/>](<https://docs.celestia.org/>)

**Explorers**
[<https://celestia.explorers.guru/>](<https://celestia.explorers.guru/>)

**Github**
[<https://github.com/celestiaorg>](<https://github.com/celestiaorg>)

Install dependencies

# Update if needed
sudo apt update && sudo apt upgrade -y

# Insall packages
sudo apt install curl tar wget clang pkg-config libssl-dev jq build-essential bsdmainutils git make ncdu -y

# Install GO
cd $HOME
ver="1.23.6"
wget "<https://golang.org/dl/go$ver.linux-amd64.tar.gz>"
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf "go$ver.linux-amd64.tar.gz"
rm "go$ver.linux-amd64.tar.gz"
echo "export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin" >> $HOME/.bash_profile
source $HOME/.bash_profile

****go version

usual build

OR pebbledb build

cd $HOME
git clone <https://github.com/celestiaorg/celestia-app.git>
cd celestia-app

make enable-bbr
sysctl net.ipv4.tcp_congestion_control | awk '{print $3}'

git checkout v6.2.0-mocha
make install
# make install-standalone

# do init
celestia-appd init node --chain-id mocha-4

cd $HOME
rm -rf celestia-app
git clone <https://github.com/celestiaorg/celestia-app.git>
cd celestia-app

make enable-bbr
sysctl net.ipv4.tcp_congestion_control | awk '{print $3}'

CELESTIA_V6_VERSION="v6.2.0-mocha"

# build prev versions
cd $HOME/celestia-app
git reset --hard
git checkout ${CELESTIA_V6_VERSION}

CELESTIA_V3_VERSION=$(grep ^CELESTIA_V3_VERSION Makefile | awk '{print $3}') && echo $CELESTIA_V3_VERSION
CELESTIA_V4_VERSION=$(grep ^CELESTIA_V4_VERSION Makefile | awk '{print $3}') && echo $CELESTIA_V4_VERSION
CELESTIA_V5_VERSION=$(grep ^CELESTIA_V5_VERSION Makefile | awk '{print $3}') && echo $CELESTIA_V5_VERSION

# build v3
git checkout ${CELESTIA_V3_VERSION}
go mod edit -replace github.com/tendermint/tm-db=github.com/notional-labs/[email protected]
go mod tidy

mkdir -p build
go build -o ./build -ldflags "-w -s -X github.com/cosmos/cosmos-sdk/types.DBBackend=pebbledb \\
  -X github.com/cosmos/cosmos-sdk/version.Name=celestia-app \\
  -X github.com/cosmos/cosmos-sdk/version.AppName=celestia-appd \\
  -X github.com/cosmos/cosmos-sdk/version.Version=${CELESTIA_V3_VERSION}-mocha-pebble \\
  -X github.com/cosmos/cosmos-sdk/version.Commit=$(git log -1 --format='%H')" -tags pebbledb ./...
  
cd build
tar czvf $HOME/celestia-app_linux_v3_amd64.tar.gz celestia-appd

# build v4
cd $HOME/celestia-app
git reset --hard
git checkout ${CELESTIA_V4_VERSION}

mkdir -p build
go build -o ./build -ldflags "-w -s -X github.com/cosmos/cosmos-sdk/types.DBBackend=pebbledb \\
  -X github.com/cosmos/cosmos-sdk/version.Name=celestia-app \\
  -X github.com/cosmos/cosmos-sdk/version.AppName=celestia-appd \\
  -X github.com/cosmos/cosmos-sdk/version.Version=${CELESTIA_V4_VERSION}-mocha-pebble \\
  -X github.com/cosmos/cosmos-sdk/version.Commit=$(git log -1 --format='%H')" -tags pebbledb ./...

cd build
tar czvf $HOME/celestia-app_linux_v4_amd64.tar.gz celestia-appd

# build v5
cd $HOME/celestia-app
git reset --hard
git checkout ${CELESTIA_V5_VERSION}

mkdir -p build
go build -o ./build -ldflags "-w -s -X github.com/cosmos/cosmos-sdk/types.DBBackend=pebbledb \\
  -X github.com/cosmos/cosmos-sdk/version.Name=celestia-app \\
  -X github.com/cosmos/cosmos-sdk/version.AppName=celestia-appd \\
  -X github.com/cosmos/cosmos-sdk/version.Version=${CELESTIA_V5_VERSION}-mocha-pebble \\
  -X github.com/cosmos/cosmos-sdk/version.Commit=$(git log -1 --format='%H')" -tags pebbledb ./...

cd build
tar czvf $HOME/celestia-app_linux_**v5**_amd64.tar.gz celestia-appd

# build current version
cd $HOME/celestia-app
git reset --hard
git checkout ${CELESTIA_V6_VERSION}

# prepare for embedding
cp $HOME/celestia-app_linux_**v3**_amd64.tar.gz internal/embedding/celestia-app_linux_**v3**_amd64.tar.gz
cp $HOME/celestia-app_linux_**v4**_amd64.tar.gz internal/embedding/celestia-app_linux_**v4**_amd64.tar.gz
cp $HOME/celestia-app_linux_**v5**_amd64.tar.gz internal/embedding/celestia-app_linux_**v5**_amd64.tar.gz

echo "${CELESTIA_V3_VERSION}" > internal/embedding/.embed_version_celestia-app_linux_**v3**_amd64.tar.gz
echo "${CELESTIA_V4_VERSION}" > internal/embedding/.embed_version_celestia-app_linux_**v4**_amd64.tar.gz
echo "${CELESTIA_V5_VERSION}" > internal/embedding/.embed_version_celestia-app_linux_**v5**_amd64.tar.gz
       
       
# patch makefile 1
# add pebbledb to tags 
# result: 
# BUILD_TAGS_STANDALONE := ledger,**pebbledb**
# BUILD_TAGS_MULTIPLEXER := ledger,multiplexer,**pebbledb**

sed -i "s/^BUILD_TAGS_STANDALONE :*=.*/BUILD_TAGS_STANDALONE := ledger,**pebbledb**/" Makefile
sed -i "s/^BUILD_TAGS_MULTIPLEXER :*=.*/BUILD_TAGS_MULTIPLEXER := ledger,multiplexer,**pebbledb**/" Makefile

# patch makefile 2
# add 
# -w -s -X github.com/cosmos/cosmos-sdk/types.DBBackend=pebbledb to LDFLAGS_COMMON :=
# result  - LDFLAGS_COMMON := -w -s -X github.com/cosmos/cosmos-sdk/types.DBBackend=pebbledb ....

sed -i 's|^LDFLAGS_COMMON :=|LDFLAGS_COMMON := -w -s -X github.com/cosmos/cosmos-sdk/types.DBBackend=pebbledb |' Makefile

# patch makefile 3
# add -pebble to version
sed -i "/^LDFLAGS_COMMON :=/s|\\$(VERSION)|\\$(VERSION)-pebble|" Makefile

make install

# copy versions to bin
mkdir -p $HOME/.celestia-app/bin/ && cd $HOME/.celestia-app/bin/
mkdir -p ${CELESTIA_V3_VERSION} ${CELESTIA_V4_VERSION} ${CELESTIA_V5_VERSION}

tar xvf $HOME/celestia-app_linux_**v3**_amd64.tar.gz -C ${CELESTIA_V3_VERSION}
tar xvf $HOME/celestia-app_linux_**v4**_amd64.tar.gz -C ${CELESTIA_V4_VERSION}
tar xvf $HOME/celestia-app_linux_**v5**_amd64.tar.gz -C ${CELESTIA_V5_VERSION}

# do init
celestia-appd init node --chain-id mocha-4

# set pebbledb
db_backend="pebbledb"
sed -i "s/^db_backend *=.*/db_backend = \\"$db_backend\\"/" $HOME/.celestia-app/config/config.toml
sed -i "s/^app-db-backend *=.*/app-db-backend = \\"$db_backend\\"/" $HOME/.celestia-app/config/app.toml
cd $HOME
git clone <https://github.com/celestiaorg/networks>

# copy genesis
cp $HOME/networks/mocha-4/genesis.json $HOME/.celestia-app/config/

# reset
celestia-appd tendermint unsafe-reset-all --home $HOME/.celestia-app

Config peers and seeds

SEEDS="9aa8a73ea9364aa3cf7806d4dd25b6aed88d8152@celestia-testnet.seed.mzonder.com:11156"
sed -i "s|^seeds *=.*|seeds = \\"$SEEDS\\"|" $HOME/.celestia-app/config/config.toml

Config pruning and snapshots

# pruning and snapshots
pruning_keep_recent="10000"
pruning_interval=$(shuf -n1 -e 11 13 17 19 23)
snapshot_interval="2000"

sed -i "s/^pruning *=.*/pruning = \\"custom\\"/;\\
s/^pruning-keep-recent *=.*/pruning-keep-recent = \\"$pruning_keep_recent\\"/;\\
s/^pruning-interval *=.*/pruning-interval = \\"$pruning_interval\\"/;\\
s/^snapshot-interval *=.*/snapshot-interval = $snapshot_interval/" $HOME/.celestia-app/config/app.toml

config

sed -i 's/^minimum-gas-prices *=.*/minimum-gas-prices = "0.002utia"/' $HOME/.celestia-app/config/app.toml

# for rpc
sed -i 's/^discard_abci_responses *=.*/discard_abci_responses = false/' $HOME/.celestia-app/config/config.toml
sed -i 's/^indexer *=.*/indexer = "kv"/' $HOME/.celestia-app/config/config.toml

Config client

celestia-appd config set client chain-id mocha-4 --home $HOME/.celestia-app
#celestia-appd config set client keyring-backend test --home $HOME/.celestia-app

Change ports here if needed

Create and run service

# create service
tee $HOME/celestia-appd.service > /dev/null <<EOF
[Unit]
Description=celestia-appd
After=network-online.target
[Service]
User=$USER
ExecStart=$(which celestia-appd) start --home $HOME/.celestia-app 
Restart=on-failure
RestartSec=10
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
EOF

sudo mv $HOME/celestia-appd.service /etc/systemd/system/

sudo systemctl daemon-reload

#custom ports
#ExecStart=/home/celestia/go/bin/celestia-appd start --home /home/celestia/.celestia-app --address 127.0.0.7:50058 --proxy_app 127.0.0.7:50058

STATE-SYNC