**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>)
# 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
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
SEEDS="9aa8a73ea9364aa3cf7806d4dd25b6aed88d8152@celestia-testnet.seed.mzonder.com:11156"
sed -i "s|^seeds *=.*|seeds = \\"$SEEDS\\"|" $HOME/.celestia-app/config/config.toml
# 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
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
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 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