# L1节点运行教程

欢迎使用我们的安装指南，这里将指导您一步步完成K3s的安装以及Titan L1节点的配置和启动。请按照下面的步骤操作，确保您的系统配置符合所有要求。

## 前置步骤：安装 K3s

### 1. 安装 K3s：

在您的终端中运行以下命令以安装K3s。此步骤将自动下载并安装K3s，同时禁用不必要的组件：

```bash
curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="--disable=traefik" sh -s -
```

### 2.配置 kubeconfig：

配置kubectl命令行工具的访问权限：

```
mkdir ~/.kube
sudo cat /etc/rancher/k3s/k3s.yaml | tee ~/.kube/config >/dev/null
```

### 3.验证K3s安装成功：

安装完成后，使用以下命令确认K3s已正确安装并运行：

```bash
kubectl get nodes
```

### 4.安装 Helm 工具：

Helm是管理Kubernetes应用的工具。通过以下命令安装Helm：

```bash
wget https://get.helm.sh/helm-v3.11.0-linux-amd64.tar.gz
tar -zxvf helm-v3.11.0-linux-amd64.tar.gz
install linux-amd64/helm /usr/local/bin/helm
```

### 5.安装 Ingress Nginx：

通过Helm安装Ingress Nginx，为应用添加HTTP路由规则：

```bash
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm upgrade --install ingress-nginx ingress-nginx \
  --repo https://kubernetes.github.io/ingress-nginx \
  --namespace ingress-nginx --create-namespace
```

### 6.使用挂载盘 `/mnt/storage`：

* 移除默认的 `local-path StorageClass` 标记：

{% code overflow="wrap" %}

```bash
kubectl patch storageclass local-path -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"false"}}}'
```

{% endcode %}

* 创建并设置新的存储类为默认：

创建 `storageclass.yaml`文件，并填入以下内容：

```bash
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: local-storage
  annotations:
    storageclass.kubernetes.io/is-default-class: "true"
provisioner: rancher.io/local-path
volumeBindingMode: WaitForFirstConsumer
reclaimPolicy: Delete
parameters:
  path: "/mnt/storage"
```

应用StorageClass到K3s集群：

```bash
kubectl apply -f storageclass.yaml
```

* 更新 ConfigMap 路径为 `/mnt/storage`：

{% code overflow="wrap" %}

```bash
kubectl patch configmap local-path-config -n kube-system --type=json -p='[{"op": "replace", "path": "/data/config.json", "value":"{\n  \"nodePathMap\":[\n  {\n    \"node\":\"DEFAULT_PATH_FOR_NON_LISTED_NODES\",\n    \"paths\":[\"/mnt/storage\"]\n  }\n  ]\n}"}]'
```

{% endcode %}

## Titan L1 节点安装和启动

### <mark style="color:red;">**网络要求：**</mark>

在开始之前，请确保以下端口在您的网络防火墙或路由器上已开放，以确保节点正常通信：

* **9000  TCP**: 用于节点之间的通信。
* **2345  TCP/UDP**: 用于节点的广播和数据同步。
* **80 TCP:** 用于HTTP通信。
* **443 TCP:** 用于HTTPS通信。

*<mark style="color:red;">\*如果节点的网络设置不符合我们的要求，节点将无法正常工作，您也将无法获得任何奖励。\*</mark>*

### 安装步骤：

### **1.下载 `titan-L1` 程序:**

首先，打开您的Linux终端，并使用以下命令下载最新版本的 `titan-L1` 程序：

{% code overflow="wrap" %}

```bash
wget https://github.com/Titannet-dao/titan-node/releases/download/v0.1.21/titan-l1-guardian
```

{% endcode %}

### **2.设置执行权限:**

下载完成后，需要给这个程序文件设置适当的执行权限，以确保可以顺利运行。请输入以下命令：

```bash
chmod 0755 titan-l1-guardian
```

### **3.配置存储环境变量:**

Titan程序需要知道存储数据的位置。请根据您的系统环境，选择合适的存储路径，然后设置环境变量。例如，如果您希望使用 `/mnt/storage` 作为存储路径，可以使用以下命令：

```bash
export TITAN_METADATAPATH=/mnt/storage
export TITAN_ASSETSPATHS=/mnt/storage
```

请确保替换 `<存储路径>` 为您实际的路径。

### 4.将程序设置为系统服务：

创建一个服务文件 `/etc/systemd/system/titan.service`：

```bash
sudo nano /etc/systemd/system/titan.service
```

添加以下内容到文件中：

{% code overflow="wrap" %}

```bash
[Unit]
Description=Titan L1 Guardian Service
After=network.target

[Service]
User=root
ExecStart=/path/to/titan-l1-guardian daemon start --init --url https://cassini-locator.titannet.io:5000/rpc/v0 --code <code_id>
Restart=on-failure

[Install]
WantedBy=multi-user.target
```

{% endcode %}

注意： 替换 `/path/to/titan-l1-guardian` 和 `<code_id>` 为实际路径和代码ID。

*这里需要您提供一个有效的 `code_id`，如果您已经通过了L1节点的审批， <mark style="color:red;">`code_id`</mark> <mark style="color:red;"></mark><mark style="color:red;">可以在您的</mark><mark style="color:red;">**TG/邮箱**</mark><mark style="color:red;">中查看。</mark>*

### **5.**&#x542F;用和启动服务：

在启用服务之前，确保系统识别了新的服务文件：

```bash
sudo systemctl daemon-reload
sudo systemctl enable titan.service
sudo systemctl start titan.service
```

### **6. 👉**[**申请身份码**](https://titannet.gitbook.io/titan-network-cn/hui-geng-si-ce-shi-wang/huygens-testnet/an-zhuang-cheng-xu-zhuan-qu/bang-ding-shen-fen-ma)**👈**

### 7.绑定身份码:

*将申请到的 <mark style="color:red;">**身份码**</mark> 替换 <mark style="color:red;">**your-hash-here**</mark>*

{% code overflow="wrap" %}

```
./titan-l1-guardian bind --hash=your-hash-here https://api-test1.container1.titannet.io/api/v2/device/binding
```

{% endcode %}

#### 注意事项：

* 确保您使用的存储路径存在且具备写入权限。
* 运行过程中的所有输出将被重定向到 `/var/log/guardian.log`，您可以随时查看该日志文件以监控程序状态。
* 如果您在任何步骤中遇到问题，请重新检查您输入的命令是否正确，或联系技术支持获取帮助。

以上就是安装和配置Titan L1节点以及K3s的全部步骤。这样设置后，您的Titan节点将作为系统服务运行，确保在遇到意外时能自动重启。如果有任何疑问或需要帮助，请联系我们的技术支持团队。
