本文将介绍使用 acme.sh 配置自动续签的 SSL 证书。自动签发和手工签发证书的对比功能自动签发手工签发有效期3 个月至 6 个月30 天到 1 年难度不容易容易友好度不友好友好适合懒人是否系统集成方便不方便后台管理大多数没有大多数都有所以我们建议如果您对服务器有完全控制权，那么自动签发的证书比较适合懒人运维，如果是长期运营的网站和项目，手工签发的证书对新手更友好，请自行选择。安装 acme.shacme.sh 是一个集成了 ACME 客户端协议的 Bash 脚本，作者是 @neilpangxa，按照官方文档说明，我们直接在 Linux 下安装。curl https://get.acme.sh | sh -s email=username@example.com如果是国内的机器，可以使用拖回源码直接安装：git clone --depth 1 https://github.com/acmesh-official/acme.sh.git cd acme.sh ./acme.sh --install -m username@example.com请注意替换 username@example.com 为你自己的邮箱，避免无法收到上游证书的邮件通知，比如 Let's Encrypt 偶尔会错发证书，然后就会邮件通知你，这时候就需要重新签发一次证书了。安装完成后重新加载 Bash：source ~/.bashrc然后也可以开启自动更新：acme.sh --upgrade --auto-upgrade选择默认 CA目前 acme.sh 支持 5 个正式环境 CA，分别是 Let's Encrypt、Buypass、ZeroSSL、SSL.com 和 Google Public CA，默认使用 ZeroSSL，如果需要更换可以使用如下命令：切换 Let's Encryptacme.sh --set-default-ca --server letsencrypt切换 Buypassacme.sh --set-default-ca --server buypass切换 ZeroSSLacme.sh --set-default-ca --server zerossl切换 SSL.comacme.sh --set-default-ca --server ssl.com切换 Google Public CAacme.sh --set-default-ca --server google如果已有 ZeroSSL 帐号，可以在后台控制面板拿到 API Key，然后执行如下命令apt install jq curl -s -X POST "https://api.zerossl.com/acme/eab-credentials?access_key=你的API_Key" | jq终端会输出如下内容{ "success": true, "eab_kid": "kid字符串", "eab_hmac_key": "hmac_key字符串", }然后手工添加帐号acme.sh --register-account --server zerossl \ --eab-kid kid字符串 \ --eab-hmac-key hmac_key字符串Google Public CA 需要按照官方博客申请内测，然后获取 Key。几个 CA 的简单对比功能LEBuypassZeroSSLSSL.comGoogle Public CA有效期90 天180 天90 天90 天90 天多域名支持支持，最多 5 个支持收费支持支持泛域名支持不支持支持收费支持支持Rate Limit有有收费无未知有GUI 管理否否有有无ECC 证书链否否有未知无客户支持社区收费收费收费收费简单来说，如果没有特殊需求，可以选择 Let's Encrypt，如果服务器在国内，可以选择 ZeroSSL 或 Buypass，如果愿意付费得到更好的服务和保障，可以选择 ZeroSSL 和 SSL.com，如果面向欧盟用户，可以选择 Buypass 和 ZeroSSL。注意：经过测试 Google Public CA 的 ACME 验证域名在国内是无法访问的，只有国外服务器才可以申请，申请完成后的证书并无影响。使用 HTTP 验证签发证书首先我们要做一下准备工作，假设你域名是 example.com，解析到你的服务器让其生效后，我们建立一个目录：mkdir -p /var/www/letsencrypt我们的目的是绑定 http://example.com/.well-known/acme-challenge 到这个目录。如果您用的 Nginx，那么新建一个配置文件：server { listen 80; listen [::]:80; server_name example.com; location /.well-known/acme-challenge { root /var/www/letsencrypt; } location / { rewrite ^/(.*)$ https://$host/$1 permanent; } }如果您使用的 Apache，那么新建一个配置文件： ServerName example.com DocumentRoot /var/www/letsencrypt RewriteEngine On RewriteCond %{REQUEST_URI} !^/\.well\-known/acme\-challenge/ RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L] 我们以 Let's Encrypt 为例，直接在终端运行acme.sh --issue -d example.com -w /var/www/letsencrypt如果希望签发 ECC 证书，则运行acme.sh --issue -d example.com --keylength ec-256 -w /var/www/letsencrypt如果需要多个域名，则运行acme.sh --issue -d example.com -d example.org -w /var/www/letsencrypt然后就等他执行完，直到出现 Cert success 的提示使用 DNS 验证签发证书有时候因为不想暴露一些二级域名，或者希望在多台机器上部署同一个域名的证书，这时候就需要用到 DNS 插件了，acme.sh 支持几十种 DNS 插件。这里以 Cloudflare 为例，登录 Cloudflare Dash 后在 API Token 菜单里添加一个 API Token：然后选择 Edit Zone DNS 的模板选择你要编辑的域名，也可以加入你服务器的 IP 作为白名单完成后会给你一串字符，把他复制下来，需要填入下方的 CF_Token 参数然后进入域名的管理页面，在右侧 API 列找到 Account ID 和 Zone ID 并复制接着在终端运行export CF_Token="复制下来的 Token" export CF_Account_ID="复制下来的 Account ID" export CF_Zone_ID="复制下来的 Zone ID"然后开启 acme.sh 的 DNS API 模式申请证书acme.sh --issue --dns dns_cf -d example.com -d *.example.com安装证书方法同上，另外吐槽下，很多教程会让你用 Cloudflare 的全局 Global API Key，真的是，风险太大了，最后怎么被黑的都不知道 = =安装证书然后我们可以安装证书Nginxacme.sh --install-cert -d example.com \ --key-file /etc/nginx/ssl/example.com.key \ --fullchain-file /etc/nginx/ssl/example.com.crt \ --reloadcmd "systemctl restart nginx"对应的 Nginx 配置指定证书文件ssl_certificate /etc/nginx/ssl/example.com.crt; ssl_certificate_key /etc/nginx/ssl/example.com.key;Apacheacme.sh --install-cert -d example.com \ --key-file /etc/apache2/ssl/example.com.key \ --fullchain-file /etc/apache2/ssl/example.com.crt \ --ca-file /etc/apache2/ssl/example.com.ca.crt \ --reloadcmd "curl https://ssl-config.mozilla.org/ffdhe2048.txt >> /etc/apache2/ssl/example.com.crt && systemctl restart apache2"对应的 Apache 配置指定证书文件SSLCertificateFile /etc/apache2/ssl/example.com.crt SSLCertificateKeyFile /etc/apache2/ssl/example.com.key如果想要指定 ECC 证书，则安装的时候需要带上 --ecc 参数，比如acme.sh --install-cert --ecc -d example.com \ --key-file /etc/nginx/ssl/example.com.key \ --fullchain-file /etc/nginx/ssl/example.com.crt \ --reloadcmd "systemctl restart nginx"注意如果是多个域名，也仅需要在 -d 参数后面指定第一个域名即可。[font color="#DC143C"]文章转载于：https://u.sb/acme-sh-ssl/[/font]
一、介绍在数字化时代，数据就是财富。无论是珍贵的照片、重要的工作文档，还是运行网站的代码，数据的安全性和可访问性都至关重要。对于 Linux 服务器而言，定期备份数据更是重中之重。今天要给大家介绍一款强大的工具—— rclone，它可以帮助你轻松地将服务器上的文件备份到各种云存储服务，同时还能将云存储挂载到本地，实现便捷的文件访问。rclone 是一款开源的命令行工具，支持包括 Google Drive、OneDrive、Dropbox、Amazon S3 等在内的众多云存储服务。它不仅可以进行简单的文件复制和同步，还提供了加密、压缩、带宽限制等高级功能，满足你对数据安全和效率的各种需求。使用 rclone，你可以：将服务器上的文件自动备份到云端，免除数据丢失的后顾之忧。将云存储挂载到本地，像访问本地硬盘一样访问云端文件。在不同的云存储服务之间迁移数据。加密和解密你的文件，保障数据安全。接下来，我们将逐步讲解 rclone 的安装、配置和使用方法，帮助你快速掌握这款强大的工具，让你的数据管理更加高效便捷！二、安装 rclone 并连接到你的云存储在开始使用 rclone 之前，我们需要先在 Linux 服务器上安装它，并配置连接到你的云存储服务。安装 rclonerclone 官方提供了便捷的安装脚本，适用于各种 Linux 发行版。打开你的服务器终端，执行以下命令即可自动完成安装：Bashcurl https://rclone.org/install.sh | sudo bash该脚本会自动检测你的系统类型，并下载相应的 rclone 版本。安装完成后，你可以运行 rclone version 命令来验证安装是否成功。配置 rclone使用官方引导程序配置rclone 支持连接到众多云存储服务，配置方法也略有不同。这里我们以 Google Drive 为例，演示如何配置 rclone 连接到你的 Google Drive 账户。创建 Google Cloud 项目并启用 Drive API访问 Google Cloud Console (https://console.cloud.google.com/)，创建一个新的项目。在项目中启用 Drive API。Google Cloud Platform console showing how to enable Drive API创建 OAuth 客户端 ID在 API 和服务 > 凭据页面，点击“创建凭据”>“OAuth 客户端 ID”。选择应用类型为“桌面应用”，并为其命名。点击“创建”，系统将生成客户端 ID 和客户端密钥，请妥善保存。配置 rclone在服务器终端运行 rclone config 命令。输入 n 创建新的远程连接，并为其命名（例如 gdrive）。选择存储类型为 drive。依次输入客户端 ID 和客户端密钥。其他选项可以按默认值设置，或根据你的需求进行调整。在 scope 选项中，选择 drive。选择 root_folder_id 为空。选择 service_account_file 为空。选择 y 进行高级配置，并将 access_token 和 refresh_token 留空。rclone 会自动打开浏览器窗口，请登录你的 Google 账户并授权 rclone 访问你的 Drive。授权完成后，复制浏览器地址栏中的 code 参数值，将其粘贴到终端中。配置完成后，rclone 会将配置信息保存到 ~/.config/rclone/rclone.conf 文件中。直接编辑配置文件输入 rclone config 后，会在 .config/rclone 目录中生成一个 rclone.conf 文件，如果我们熟悉 Rclone 配置的话，也可以直接新建编辑该文件，同样是可以生效的创建配置文件夹mkdir -p ~/.config/rclone编辑配置文件vim ~/.config/rclone/rclone.conf以cloudflare r2云存储为例[r2demo] type = s3 provider = Cloudflare access_key_id = abc123 secret_access_key = xyz456 region = auto endpoint = https://<accountid>.r2.cloudflarestorage.com [scode type="red" size=""]如果您使用的是具有对象级权限的令牌，则需要在配置中添加 no_check_bucket = true 以避免出错。[/scode]其他云存储服务的配置方法rclone 官方文档提供了详细的配置指南，涵盖了各种云存储服务。你可以参考文档进行配置：提示：在配置过程中，请仔细阅读每个选项的说明，并根据你的实际需求进行设置。确保你的服务器可以访问互联网，并且没有防火墙规则阻止 rclone 的连接。接下来，我们将学习如何使用 rclone 备份服务器文件和挂载云存储。三、使用 rclone 备份 Linux 服务器文件rclone 提供了多种命令来管理和同步文件，其中最常用的包括 copy、sync 和 move。rclone copy：将源文件复制到目标位置。如果目标位置已存在同名文件，则会覆盖。rclone sync：将源目录同步到目标目录，确保目标目录与源目录完全一致。这意味着目标目录中存在但源目录中不存在的文件将被删除。rclone move：将源文件移动到目标位置，相当于剪切粘贴操作。备份服务器文件假设我们要将服务器上的 /home/user/documents 目录备份到 Google Drive，可以使用以下命令：Bashrclone sync /home/user/documents gdrive:backup其中，gdrive 是我们在配置 rclone 时为 Google Drive 连接指定的名称，backup 是指 Google Drive 上用于存放备份文件的文件夹。其他常用选项-P 或 --progress：显示同步进度。--exclude：排除指定文件或目录。例如，--exclude "*.tmp" 会排除所有以 .tmp 结尾的文件。--exclude-from：从文件中读取排除列表。--max-depth：设置同步的最大深度。例如，--max-depth 1 只同步顶层目录。--dry-run：进行模拟运行，不会实际传输文件，可以用来测试同步效果。定时自动备份为了确保数据安全，建议设置定时任务来自动备份文件。Linux 系统中常用的定时任务工具是 crontab。编辑 crontab 文件：Bashcrontab -e添加定时任务：例如，每天凌晨 2 点执行备份任务：0 2 * * * rclone sync /home/user/documents gdrive:backup保存并退出 crontab 文件。提示：在选择备份命令时，请根据你的实际需求选择 copy、sync 或 move。建议在执行备份任务之前，使用 --dry-run 选项进行模拟运行，确保同步效果符合预期。可以将备份日志保存到文件中，方便日后查看。使用脚本实现备份文件这个脚本实现了运行自动压缩，并上传至远程，超过最大限制之后删除远端文件下面这个脚本需要修改几个地方，SOURCE\_DIR是你要备份的文件夹，RCLONE\_REMOTE是你R2的地址，格式是{配置名}:桶名/目录[collapse status="false" title="备份脚本"]#!/bin/bash # 需要备份的文件夹路径 SOURCE_DIR="/data/compose/2/" # 获取脚本所在目录路径 SCRIPT_DIR=$(dirname "$(readlink -f "$0")") # 备份文件临时存放路径 TEMP_DIR="$SCRIPT_DIR/temp" # rclone配置名称和目标路径 RCLONE_REMOTE="wordpress_backup:wordpress-backup/blog" # 日志文件路径 LOG_FILE="$SCRIPT_DIR/backup.log" # 保留的最大备份数量 MAX_BACKUPS=2 # 当前时间，用于备份文件命名 DATE=$(date +"%Y-%m-%d_%H-%M-%S") # 创建临时目录（如果不存在） mkdir -p "$TEMP_DIR" # 压缩并生成日志 ARCHIVE_NAME="${TEMP_DIR}/$(basename "$SOURCE_DIR")-${DATE}.tar.gz" echo "[$(date +"%Y-%m-%d_%H-%M-%S")] Compression started" >> "$LOG_FILE" tar -czf "$ARCHIVE_NAME" "$SOURCE_DIR" >> /dev/null 2>&1 echo "[$(date +"%Y-%m-%d_%H-%M-%S")] Compression completed" >> "$LOG_FILE" # 删除云端最早的备份（超过最大保留数量） EXISTING_BACKUPS=$(rclone lsf "$RCLONE_REMOTE" | grep "$(basename "$SOURCE_DIR")-.*\.tar\.gz" | sort) NUM_BACKUPS=$(echo "$EXISTING_BACKUPS" | wc -l) if [ "$NUM_BACKUPS" -gt "$MAX_BACKUPS" ]; then NUM_TO_DELETE=$((NUM_BACKUPS - MAX_BACKUPS)) BACKUPS_TO_DELETE=$(echo "$EXISTING_BACKUPS" | head -n "$NUM_TO_DELETE") for BACKUP in $BACKUPS_TO_DELETE; do echo "[$(date +"%Y-%m-%d_%H-%M-%S")] Deleting old backup: $BACKUP" >> "$LOG_FILE" rclone delete "$RCLONE_REMOTE/$BACKUP" >> "$LOG_FILE" 2>&1 done fi # 上传新的备份 echo "[$(date +"%Y-%m-%d_%H-%M-%S")] Starting upload of $ARCHIVE_NAME to $RCLONE_REMOTE" >> "$LOG_FILE" echo "本次运行的命令为：rclone copy \"$ARCHIVE_NAME\" \"$RCLONE_REMOTE/\" --log-file=\"$LOG_FILE\" --log-level INFO –s3-no-check-bucket" >> "$LOG_FILE" rclone copy "$ARCHIVE_NAME" "$RCLONE_REMOTE/" --s3-no-check-bucket --log-file="$LOG_FILE" --log-level INFO UPLOAD_STATUS=$? # 检查上传是否成功 if [ $UPLOAD_STATUS -eq 0 ]; then echo "[$(date +"%Y-%m-%d_%H-%M-%S")] Upload of $ARCHIVE_NAME completed successfully" >> "$LOG_FILE" rm "$ARCHIVE_NAME" # 上传成功后删除本地文件 else echo "[$(date +"%Y-%m-%d_%H-%M-%S")] Failed to upload $ARCHIVE_NAME" >> "$LOG_FILE" fi # 记录备份过程完成状态 if [ $UPLOAD_STATUS -eq 0 ]; then echo "[$(date +"%Y-%m-%d_%H-%M-%S")] Backup process completed successfully" >> "$LOG_FILE" else echo "[$(date +"%Y-%m-%d_%H-%M-%S")] Backup process failed" >> "$LOG_FILE" fi[/collapse]我这里将他放在 /root/bash/backup.sh这个位置定时配置打开定时配置crontab -e写入以下内容0 2 * * * /root/bash/backup.sh接下来，我们将学习如何使用 rclone 挂载云存储。四、将云存储变成本地硬盘！使用 rclone 挂载云存储rclone 不仅可以备份文件，还能将你的云存储挂载到 Linux 系统中，让你像访问本地硬盘一样访问云端文件。挂载云存储使用 rclone mount 命令可以将云存储挂载到指定的目录。例如，将 Google Drive 挂载到 /mnt/gdrive 目录：Bashrclone mount gdrive: /mnt/gdrive --allow-other其中，gdrive: 是指 Google Drive 连接的名称，/mnt/gdrive 是你想要挂载到的本地目录。--allow-other 选项允许其他用户访问挂载的目录。挂载选项rclone mount 命令支持丰富的选项，可以根据你的需求进行调整：--dir-cache-time：设置目录缓存时间，可以提高文件访问速度。--drive-chunk-size：设置文件块大小，可以优化大文件传输性能。--vfs-read-chunk-size：设置读取文件块大小，可以影响文件读取速度。--vfs-read-chunk-size-limit：设置读取文件块大小限制，可以控制内存使用量。--vfs-cache-mode：设置缓存模式，可以根据你的使用场景选择不同的模式。后台运行默认情况下，rclone mount 命令会在前台运行，这意味着你需要保持终端窗口打开。为了让挂载在后台运行，可以使用 --daemon 选项：Bashrclone mount gdrive: /mnt/gdrive --allow-other --daemon开机自动挂载为了方便使用，可以设置开机自动挂载云存储。创建 systemd 服务文件：Bashsudo nano /etc/systemd/system/rclone.service将以下内容粘贴到文件中，并将 gdrive: 和 /mnt/gdrive 替换成你的实际配置：[Unit] Description=Rclone Mount After=network-online.target [Service] Type=simple User=你的用户名 ExecStart=/usr/bin/rclone mount gdrive: /mnt/gdrive --allow-other --daemon Restart=on-failure RestartSec=5 [Install] WantedBy=multi-user.target保存并退出文件。启用并启动服务：Bashsudo systemctl enable rclone.service sudo systemctl start rclone.service注意事项挂载云存储的性能可能不如本地硬盘，尤其是在网络连接不佳的情况下。一些云存储服务对 API 调用次数有限制，频繁访问可能会导致 API 被限制。挂载云存储后，请谨慎操作文件，避免误删或修改重要数据。接下来，我们将介绍 rclone 的一些高级用法。五、rclone 高级用法：解锁更多实用功能除了基本的备份和挂载功能外，rclone 还提供了许多高级功能，可以进一步提升你的数据管理效率和安全性。文件加密和解密rclone 支持对文件进行加密和解密，保障你的数据安全。加密文件使用 rclone cryptcheck 命令可以加密文件。例如，将 /home/user/secrets 目录加密后上传到 Google Drive：Bashrclone cryptcheck gdrive:encrypted secretsrclone 会提示你设置密码，并使用该密码加密文件。加密后的文件将被上传到 Google Drive 上的 encrypted 文件夹中。解密文件使用 rclone cryptdecode 命令可以解密文件。例如，将 Google Drive 上的 encrypted 文件夹中的文件解密到 /home/user/decrypted 目录：Bashrclone cryptdecode gdrive:encrypted /home/user/decryptedrclone 会提示你输入密码，并使用该密码解密文件。带宽限制如果你的网络带宽有限，可以使用 --bwlimit 选项来限制 rclone 的上传和下载速度。例如，将上传速度限制为 1 MB/s：Bashrclone sync /home/user/documents gdrive:backup --bwlimit 1M文件过滤rclone 支持使用过滤器来排除或包含特定文件。例如，排除所有以 .tmp 结尾的文件：Bashrclone sync /home/user/documents gdrive:backup --exclude "*.tmp"你还可以使用 --include 选项来包含特定文件，以及使用 --exclude-from 和 --include-from 选项从文件中读取排除和包含列表。部分同步rclone 支持部分同步，这意味着你只需要同步修改过的文件，从而节省时间和带宽。使用 --update 选项可以跳过已存在且修改时间相同的文件：Bashrclone sync /home/user/documents gdrive:backup --update使用 --checksum 选项可以根据文件校验和来判断文件是否需要同步：Bash ### 其他高级功能 rclone 还提供了许多其他高级功能，例如： * `rclone serve`：将本地目录作为 Web 服务器共享。 * `rclone rc`：通过 HTTP API 控制 rclone。 * `rclone dedupe`：查找并删除重复文件。 **希望这些高级用法能够帮助你更好地利用 rclone，让你的数据管理更加高效便捷！** ## 六、总结：rclone 让数据管理化繁为简 rclone 是一款功能强大的命令行工具，它可以帮助你轻松地备份 Linux 服务器文件、挂载云存储、加密文件、管理云存储等。通过本文的介绍，相信你已经对 rclone 的基本用法和高级功能有所了解。 **rclone 的优势：** * **支持众多云存储服务：** rclone 支持几乎所有主流的云存储服务，包括 Google Drive、OneDrive、Dropbox、Amazon S3 等，让你可以自由选择最适合你的云存储方案。 * **功能丰富：** rclone 不仅可以备份和同步文件，还提供了加密、解密、带宽限制、文件过滤等高级功能，满足你对数据安全和效率的各种需求。 * **开源免费：** rclone 是一款开源软件，可以免费使用，没有任何限制。 * **跨平台支持：** rclone 支持 Linux、Windows、macOS 等多个操作系统，可以在不同的平台上使用。 **rclone 的应用场景：** * **Linux 服务器备份：** 将服务器上的重要文件备份到云端，防止数据丢失。 * **个人数据同步：** 将个人电脑上的文件同步到云端，实现多设备数据共享。 * **云存储迁移：** 在不同的云存储服务之间迁移数据。 * **加密和解密文件：** 保护你的敏感数据安全。 **学习资源：** * **rclone 官方网站：** https://rclone.org * **rclone 官方文档：** https://rclone.org/docs * **rclone GitHub 仓库：** https://github.com/rclone/rclone 希望 rclone 能够帮助你更好地管理数据，让你的数字生活更加便捷高效！
简介 Realm 是一个用 rust 编写的简单、高性能的网络中继工具。其特点为配置简单、资源占用少、性能强。项目仓库地址：https://github.com/zhboner/realm使用方法1. 下载系统对应版本二进制文件，下载地址，以 linux x64 系统为例mkdir -p /opt/realm cd /opt/realm wget https://github.com/zhboner/realm/releases/download/v2.6.2/realm-x86_64-unknown-linux-gnu.tar.gz tar -zxvf realm-x86_64-unknown-linux-gnu.tar.gz chmod +x realm2. 编辑配置文件简便用法，直接命令行参数启动(需在安装目录运行)./realm -l 0.0.0.0:5000 -r 1.1.1.1:443-l 后跟本地 ip 加端口(即本地监听的 ip+port )，-r 后跟远程 ip 加端口(即需要转发的远端服务的 ip+port )，更多参数可以使用 ./realm -h查看。配置文件，配置文件运行配置文件可以使用 toml 或者 json 格式书写，个人推荐使用 toml 格式，更加清晰明了， 官方提供的配置文件实例vim /opt/realm/config.toml运行以上命令，将下列内容粘贴进去后，敲下 esc 键，然后键盘输入 :wq 保存并退出我这里使用 toml 格式书写一个最基本 tcp/udp 转发实例[log] level = "warn" # 输出的日志等级，日志级别: off,debug,info,error,warn # output = "./realm.log" #日志输出路径 [network] use_udp = true # 启用udp [[endpoints]] listen = "0.0.0.0:5000" # 本地监听的ip和端口 remote = "1.1.1.1:443" # 远端ip加端口 # [[endpoints]] # 可以同时配置多个转发只需要添加[[endpoints]]字段即可 # listen = "0.0.0.0:10000" # remote = "www.google.com:443"[collapse status="false" title="官方配置文件examples"][log] level = "warn" output = "realm.log" [dns] mode = "ipv4_only" protocol = "tcp_and_udp" nameservers = ["8.8.8.8:53", "8.8.4.4:53"] min_ttl = 600 max_ttl = 3600 cache_size = 256 [network] no_tcp = false use_udp = true ipv6_only = false tcp_timeout = 5 udp_timeout = 30 send_proxy = true send_proxy_version = 2 accept_proxy = true accept_proxy_timeout = 5 tcp_keepalive = 15 tcp_keepalive_probe = 3 [[endpoints]] listen = "0.0.0.0:5000" remote = "1.1.1.1:443" extra_remotes = ["1.1.1.2:443", "1.1.1.3:443"] balance = "roundrobin: 4, 2, 1" through = "0.0.0.0" interface = "lo" [[endpoints]] listen = "0.0.0.0:10000" remote = "www.google.com:443" extra_remotes = ["www.youtube.com:443"] balance = "roundrobin: 2, 1" through = "0.0.0.0" interface = "wlan0"[/collapse]3. 设置开启自启动linux 使用 systemd 服务来实现开机自启在 /etc/systemd/system/ 目录下创建 realm.service 文件vim /etc/systemd/system/realm.service运行以上命令，将下列内容粘贴进去后，敲下 esc 键，然后键盘输入 :wq 保存并退出以下是使用配置文件启动的配置，如果使用参数启动请自行修改 ExecStart 行的启动命令[Unit] Description=realm After=network-online.target Wants=network-online.target systemd-networkd-wait-online.service [Service] Type=simple Restart=on-failure RestartSec=5s WorkingDirectory=/opt/realm ExecStart=/opt/realm/realm -c /opt/realm/config.toml [Install] WantedBy=multi-user.target4.启动服务相关命令重载 systemd 守护进程的配置文件systemctl daemon-reload启用开机自启动systemctl enable realm启动 realm 服务systemctl start realm查看 realm 服务状态systemctl status realm查看运行日志journalctl -u realm -o cat -f停止 realm 服务systemctl stop realm重启 realm 服务systemctl restart realm关闭开机自启动systemctl disable realm