---
sidebar_position: 1
---

# 2.1、安装方法（win和linux）

## 1、windows
:::tip[说明]
1. 使用 `linker.tray.win.exe`托盘程序托管和安装服务
2. 或者使用命令 `sc create`
:::

## 2、linux 一键安装
:::tip[说明]
下载安装脚本 
```
curl -fsSL  https://linker-doc.snltty.com/linker-install.sh -o linker-install.sh
chmod +x linker-install.sh
```
默认安装位置 
```
./linker-install.sh
```
指定安装位置 
```
./linker-install.sh /usr/local/bin
```
:::


## 3、linux 手动 systemd

:::tip[说明]
1. 如果运行为客户端，请确保你的linux有`tuntap`模块、`ip`、`ifconfig`、`traceroute`、`iptables` 命令
2. .NET线程池，在低性能linux上可能会在空闲时也占用一些CPU，据说添加`DOTNET_ThreadPool_UnfairSemaphoreSpinLimit=0`环境变量可以有效减少空闲时的CPU占用
3. 在`~/.bashrc`中末尾添加`export DOTNET_ThreadPool_UnfairSemaphoreSpinLimit=0`，保存，然后`source ~/.bashrc`使其生效，再次运行程序

```
//1、下载linux版本程序，放到 /usr/local/linker 文件夹

//2、写配置文件
vim /etc/systemd/system/linker.service

[Unit]
Description=linker

[Service]
WorkingDirectory=/usr/local/linker
ExecStartPre=/bin/chmod +x /usr/local/linker/linker
ExecStart=/usr/local/linker/linker
ExecStop=/bin/kill $MAINPID
ExecReload=/bin/kill -HUP $MAINPID
Restart=always

[Install]
WantedBy=multi-user.target


//4、重新加载配置文件
systemctl daemon-reload

//5、启动，或者重新启动
systemctl start linker
systemctl restart linker

//6、设置为自启动
systemctl enable linker
```
:::

## 4、linux 手动 docker

:::tip[说明]

1. 服务端端口 `1802` TCP+UDP
2. 客户端端口 `1804`、`1803` TCP
3. 配置文件夹 `./configs`
4. 日志文件夹 `./logs`
5. 镜像清单 `snltty/linker-debian`、`snltty/linker-musl`
6. 特定平台 `snltty/linker-debian-{arch}`、`snltty/linker-musl-{arch}`，`{arch}`可以是`x64`、`arm64`、`arm`
7. `bridge`模式，需要映射一些端口比如`-p 18000-18010:18000-18010`，用于端口转发
8. `host`模式，或者直接使用host`--network host`，**建议使用host，点对网，网对网，端口转发都方便**

#### 客户端-bridge
```
docker run -it -d --name linker \
-p 1804:1804/tcp -p 1803:1803/tcp \
-p 18000-18010:18000-18010/tcp \
-p 18000-18010:18000-18010/udp \
-v /usr/local/linker-docker/configs:/app/configs \
-v /usr/local/linker-docker/logs:/app/logs \
--device /dev/net/tun \
--restart=always \
--privileged=true \
snltty/linker-musl
```
#### 客户端-host
```
docker run -it -d --name linker \
-v /usr/local/linker-docker/configs:/app/configs \
-v /usr/local/linker-docker/logs:/app/logs \
--device /dev/net/tun \
--restart=always \
--privileged=true \
--network host \
snltty/linker-musl
```

#### 服务端-bridge
```
docker run -it -d --name linker \
-p 1802:1802/tcp -p 1802:1802/udp \
-v /usr/local/linker-docker/configs:/app/configs \
-v /usr/local/linker-docker/logs:/app/logs \
--restart=always \
--privileged=true \
snltty/linker-musl
```

#### 服务端-host
```
docker run -it -d --name linker \
-v /usr/local/linker-docker/configs:/app/configs \
-v /usr/local/linker-docker/logs:/app/logs \
--restart=always \
--privileged=true \
--network host \
snltty/linker-musl
```
:::
