Skip to content

Instantly share code, notes, and snippets.

@sadick254
Last active August 13, 2024 06:54
Show Gist options
  • Save sadick254/bdfef34a0695fcf843dc9ad08db10409 to your computer and use it in GitHub Desktop.
Save sadick254/bdfef34a0695fcf843dc9ad08db10409 to your computer and use it in GitHub Desktop.
Setting up the tlip infrastructure

Hornet Node

Get the machine ready by updating the software repository and then upgrading any outdated libraries.

sudo apt update
sudo apt upgrade

To avoid any conflicting packages on the machine run

for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done

Install official docker gpg keys for verifying docker installation

sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

Add repository to apt sources.

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

Install docker

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Confirm that docker is installed correctly

sudo docker run hello-world

Starting docker service if it is not running

 sudo service docker start

Setup to run docker without appending sudo

sudo groupadd docker

Add user to the group.

sudo usermod -aG docker $USER

Activate the group changes.

newgrp docker

Configure docker to start on boot.

sudo systemctl enable docker.service
sudo systemctl enable containerd.service

Clone the one-click hornet setup github repository.

git clone https://github.com/sadick254/one-click-tangle.git

Install the private tangle first

./private-tangle.sh install

Configure hornet dashboard password

docker compose run node tools pwd-hash

Copy the contents and head to the node config file to replace the password.

366b1e9d76eba6779e0faa02b813b4ffa162e650dbf19f028d050439feadd749
2828c4d214040f2ea0929bc2f0336d64d16caf346cc8c199a3ea11f593128895

Restart the node service after changing the password.

docker compose restart node

Run the private-tangle.sh

./private-tangle.sh start

IPFS

docker compose file.

services:
  ipfs:
    image: ipfs/kubo:master-2024-05-06-2841ec0
    ports:
      - 4001:4001
      - 4001:4001/udp
      - 8080:8080
      - 5001:5001
    volumes:
      - ./ipfs/export:/export
      - ./ipfs/data:/data/ipfs
sudo go install github.com/Kubuxu/go-ipfs-swarm-key-gen/ipfs-swarm-key-gen@master

MYSQL

Create a docker-compose file with the following contents.

services:
  myql:
    image: mysql:8.4.0
    env_file:
      - .env
    ports:
      - 3306:3306

Also create a .env file with the following contents. Replace the defaults to your prefered values.

MYSQL_ROOT_PASSWORD=pass
MYSQL_DATABASE=tlip
MYSQL_USER=tlip
MYSQL_PASSWORD=pass
MYSQL_ALLOW_EMPTY_PASSWORD=true

Docker compose

version: "3.5"

services:
  tlip.api:
    image: tlipgtsc/tlip:1.0.7
    env_file:
      - .env
    ports:
      - 4000:4000
    restart: always
    depends_on:
      - mysql
      - ipfs
      - rabbitmq
    environment:
      MYSQL_HOST: mysql
      MQ_HOST: rabbitmq
      IPFS_HOST: ipfs

  tlip.ui:
    image: tlipgtsc/tlip:latest
    env_file:
      - .env
    ports:
      - 3000:3000
    restart: always
    depends_on:
      - tlip.api

  ipfs:
    image: ipfs/kubo:master-2024-05-06-2841ec0
    ports:
      - 4001:4001
      - 4001:4001/udp
      - 8080:8080
      - 5001:5001
    volumes:
      - ./ipfs/export:/export
      - ./ipfs/data:/data/ipfs

  mysql:
    image: mysql:8.4.0
    env_file:
      - .env
    ports:
      - 3306:3306
    environment:
      MYSQL_ROOT_PASSWORD: gtsc
      MYSQL_DATABASE: gtsc
      MYSQL_USER: gtsc
      MYSQL_PASSWORD: gtsc
    volumes:
      - mysql_data:/var/lib/mysql

  rabbitmq:
    container_name: "${RABBITMQ_DOCKER_NAME:-rabbitmq-tlip}"
    image: rabbitmq:3.13-management
    ports:
      - "5672:5672"          # Gateway
      - "15672:15672"        # Management UI
    environment:
      - MQ_USER=readonly
      - MQ_PASS=wso2readonly
      - MQ_PORT=5672
      - MQ_VHOST=/carbon
    volumes:
      - "${RABBITMQ_VOLUME_DIR:-./volume}:/var/lib/rabbitmq"
      - "/var/run/docker.sock:/var/run/docker.sock"

volumes:
  mysql_data:
  ipfs_data:
  rabbitmq_data:
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment