63 lines
2.8 KiB
Bash
63 lines
2.8 KiB
Bash
#!/bin/bash
|
|
|
|
IP_HOST="192.168.1.132"
|
|
WEBUI_CAR="ipfs-webui-v4.12.0.car"
|
|
WEBUI_URL="https://github.com/ipfs/ipfs-webui/releases/download/v4.12.0/ipfs-webui@v4.12.0.car"
|
|
WEBUI_CID="bafybeihxglpcfyarpm7apn7xpezbuoqgk3l5chyk7w4gvrjwk45rqohlmm"
|
|
|
|
if [ ! -f "$WEBUI_CAR" ]; then
|
|
echo "[+] WebUI CAR x_x"
|
|
wget -O "$WEBUI_CAR" "$WEBUI_URL" || { echo "[!] Gagal download WebUI! Cek koneksi internet."; exit 1; }
|
|
fi
|
|
|
|
docker compose down 2>/dev/null
|
|
sudo rm -f ipfs_node1_data/repo.lock ipfs_node2_data/repo.lock
|
|
|
|
mkdir -p ipfs_node1_staging ipfs_node1_data ipfs_node2_staging ipfs_node2_data
|
|
if [ ! -f "swarm.key" ]; then
|
|
echo "[+] Generating swarm.key..."
|
|
echo -e "/key/swarm/psk/1.0.0/\n/base16/\n$(openssl rand -hex 32)" > swarm.key
|
|
fi
|
|
|
|
sudo chown -R 1000:1000 ipfs_node1_data ipfs_node1_staging ipfs_node2_data ipfs_node2_staging swarm.key
|
|
chmod 600 swarm.key
|
|
|
|
REPOS=("ipfs_node1_data" "ipfs_node2_data")
|
|
for REPO in "${REPOS[@]}"; do
|
|
echo "[*] Patching config di $REPO..."
|
|
if [ ! -f "$REPO/config" ]; then
|
|
sudo docker run --rm -v "$(pwd)/$REPO":/data/ipfs ipfs/kubo:latest init --profile=server
|
|
fi
|
|
sudo docker run --rm -v "$(pwd)/$REPO":/data/ipfs ipfs/kubo:latest config --json AutoConf.Enabled false
|
|
sudo docker run --rm -v "$(pwd)/$REPO":/data/ipfs ipfs/kubo:latest config --json Bootstrap '[]'
|
|
sudo docker run --rm -v "$(pwd)/$REPO":/data/ipfs ipfs/kubo:latest config --json Routing.Type '"dhtserver"'
|
|
sudo docker run --rm -v "$(pwd)/$REPO":/data/ipfs ipfs/kubo:latest config --json API.HTTPHeaders.Access-Control-Allow-Origin "[\"http://$IP_HOST:8080\", \"http://$IP_HOST:8081\", \"http://localhost:8080\", \"http://127.0.0.1:8080\"]"
|
|
sudo docker run --rm -v "$(pwd)/$REPO":/data/ipfs ipfs/kubo:latest config --json API.HTTPHeaders.Access-Control-Allow-Methods '["PUT", "POST", "GET"]'
|
|
sudo docker run --rm -v "$(pwd)/$REPO":/data/ipfs ipfs/kubo:latest config Addresses.API /ip4/0.0.0.0/tcp/5001
|
|
done
|
|
|
|
echo "[*] Docker Compose Up..."
|
|
docker compose up -d
|
|
sleep 10
|
|
|
|
echo "[*] Peering nodes..."
|
|
ADDR_NODE1=$(docker exec ipfs_node1 ipfs id | grep -o '/ip4/172[^"]*' | head -n 1)
|
|
if [ ! -z "$ADDR_NODE1" ]; then
|
|
docker exec ipfs_node2 ipfs swarm connect "$ADDR_NODE1"
|
|
docker exec ipfs_node2 ipfs bootstrap add "$ADDR_NODE1"
|
|
echo "[+] Peering success!"
|
|
fi
|
|
|
|
echo "[+] Injecting WebUI ke Node 1..."
|
|
cp "$WEBUI_CAR" ipfs_node1_staging/
|
|
docker exec ipfs_node1 ipfs dag import "/export/$WEBUI_CAR"
|
|
docker exec ipfs_node1 ipfs pin add "$WEBUI_CID"
|
|
|
|
echo "--------------------------------------------------------"
|
|
echo "DONE! Private Net is ready."
|
|
echo "Dashboard: http://$IP_HOST:8080/ipfs/$WEBUI_CID/"
|
|
echo "API Port: 5001 (Node 1) | 5002 (Node 2)"
|
|
echo "Gateway: 8080 (Node 1) | 8081 (Node 2)"
|
|
echo "--------------------------------------------------------"
|
|
|