菜单

Debian折腾


发布于 2024-10-28 / 1 阅读 / 0 评论 /
SSH systemctl指令 systemctl restart ssh # 重启ssh服务 systemctl stop ssh # 关闭ssh服务 systemctl status ssh # 查看ssh服务状态 systemctl enable ssh # 在开机时启动ssh服务 syste

SSH

systemctl指令

systemctl restart ssh # 重启ssh服务
systemctl stop ssh # 关闭ssh服务
systemctl status ssh # 查看ssh服务状态
systemctl enable ssh # 在开机时启动ssh服务
systemctl disable ssh # 在开机时禁用ssh服务
systemctl is-enabled ssh # 查看ssh服务是否开机时启动
systemctl list-unit-files | grep enabled # 查看已启动的服务列表
systemctl --failed # 查看启动失败的服务列表

开启root访问

  1. sudo nano /etc/ssh/sshd_config

  2. 取消注释PermitRootLogin并将后面选项改成yes

  3. ssh root@192.168.6.230

修改服务端口

  1. sudo nano /etc/ssh/sshd_config

  2. 取消注释Port 并修改后面数字22至其它数字.例如2222

  3. sudo systemctl restart ssh

  4. ssh root@192.168.6.230 -p 2222

换源

  1. nano /etc/apt/sources.list

  2. deb https://mirrors.tsinghua.edu.cn/debian/ bookworm main non-free non-free-firmware contrib
    deb-src https://mirrors.tsinghua.edu.cn/debian/ bookworm main non-free non-free-firmware contrib
    deb https://mirrors.tsinghua.edu.cn/debian-security/ bookworm-security main
    deb-src https://mirrors.tsinghua.edu.cn/debian-security/ bookworm-security main
    deb https://mirrors.tsinghua.edu.cn/debian/ bookworm-updates main non-free non-free-firmware contrib
    deb-src https://mirrors.tsinghua.edu.cn/debian/ bookworm-updates main non-free non-free-firmware contrib
    deb https://mirrors.tsinghua.edu.cn/debian/ bookworm-backports main non-free non-free-firmware contrib
    deb-src https://mirrors.tsinghua.edu.cn/debian/ bookworm-backports main non-free non-free-firmware contrib

配置网络

  1. ip a

  2. nano /etc/network/interfaces

  3. 添加
    auto ens5p0
    iface ens5p0 inet dhcp

  4. nano /etc/resolv.conf

  5. 添加
    nameserver 8.8.8.8
    nameserver 192.168.6.1

  6. systemctl restart networking

V2ray

  1. sudo apt install v2ray

  2. sudo nano /etc/v2ray/config.json

  3. 东京节点配置,直接替换原有配置

    {
      "log": {
        "access": "",
        "error": "",
        "loglevel": "warning"
      },
      "inbounds": [
        {
          "tag": "socks",
          "port": 10808,
          "listen": "127.0.0.1",
          "protocol": "socks",
          "sniffing": {
            "enabled": true,
            "destOverride": [
              "http",
              "tls"
            ],
            "routeOnly": false
          },
          "settings": {
            "auth": "noauth",
            "udp": true,
            "allowTransparent": false
          }
        },
        {
          "tag": "http",
          "port": 10809,
          "listen": "127.0.0.1",
          "protocol": "http",
          "sniffing": {
            "enabled": true,
            "destOverride": [
              "http",
              "tls"
            ],
            "routeOnly": false
          },
          "settings": {
            "auth": "noauth",
            "udp": true,
            "allowTransparent": false
          }
        },
        {
          "tag": "socks2",
          "port": 10810,
          "listen": "0.0.0.0",
          "protocol": "socks",
          "sniffing": {
            "enabled": true,
            "destOverride": [
              "http",
              "tls"
            ],
            "routeOnly": false
          },
          "settings": {
            "auth": "noauth",
            "udp": true,
            "allowTransparent": false
          }
        },
        {
          "tag": "http2",
          "port": 10811,
          "listen": "0.0.0.0",
          "protocol": "http",
          "sniffing": {
            "enabled": true,
            "destOverride": [
              "http",
              "tls"
            ],
            "routeOnly": false
          },
          "settings": {
            "auth": "noauth",
            "udp": true,
            "allowTransparent": false
          }
        }
      ],
      "outbounds": [
        {
          "tag": "proxy",
          "protocol": "vless",
          "settings": {
            "vnext": [
              {
                "address": "20.44.167.24",
                "port": 2482,
                "users": [
                  {
                    "id": "70073c11-b86c-4249-825b-90d8873dba3d",
                    "alterId": 0,
                    "email": "t@t.tt",
                    "security": "auto",
                    "encryption": "none"
                  }
                ]
              }
            ]
          },
          "streamSettings": {
            "network": "kcp",
            "kcpSettings": {
              "mtu": 1350,
              "tti": 50,
              "uplinkCapacity": 12,
              "downlinkCapacity": 100,
              "congestion": false,
              "readBufferSize": 2,
              "writeBufferSize": 2,
              "header": {
                "type": "wechat-video"
              },
              "seed": "hREOXtNT"
            }
          },
          "mux": {
            "enabled": true,
            "concurrency": 8
          }
        },
        {
          "tag": "direct",
          "protocol": "freedom",
          "settings": {}
        },
        {
          "tag": "block",
          "protocol": "blackhole",
          "settings": {
            "response": {
              "type": "http"
            }
          }
        }
      ],
      "dns": {
        "servers": [
          "1.1.1.1",
          "8.8.8.8"
        ]
      },
      "routing": {
        "domainStrategy": "AsIs",
        "rules": [
          {
            "type": "field",
            "inboundTag": [
              "api"
            ],
            "outboundTag": "api"
          },
          {
            "type": "field",
            "port": "0-65535",
            "outboundTag": "proxy"
          }
        ]
      }
    }

  4. 重启v2ray服务

    systemctl restart v2ray

1Panel

aquaoh
14364

MCSM

Web 23333
Daemon 24444
Usage:
systemctl start mcsm-{daemon,web}.service
systemctl stop mcsm-{daemon,web}.service
systemctl restart mcsm-{daemon,web}.service

执行sh脚本

debian上默认使用dash执行

sh xx.sh

dash换bash

shell脚本中含有source命令运行时提示 source: not found

运行 ls -l /bin/sh 后显示/bin/sh -> dash,说明当前脚本使用dash运行的,而不是bash

解决方法

  1. 修改脚本的 shebang 行:

start.sh 的第一行修改为 #!/bin/bash,而不是 #!/bin/sh

释伴:Linux 上的 Shebang 符号(#!)-CSDN博客

  1. 手动使用 bash 来执行脚本

    使用以下命令来执行脚本:

    bash ./start.sh
  2. 脚本内手动调用bash

    /bin/bash -c "source ./test_env/bin/activate"

添加硬盘

安装parted

apt install parted

查看硬盘

fdisk -l

建立磁盘标签

选择要分区的硬盘:parted /dev/nvme0n1

使用print 对磁盘信息进行查看:

如果磁盘还没有进行分区。

create the GPT disklabel – in other words, create the partitioning tables to support GPT:

输入mklabel gpt创建磁盘标签

创建分区

计算起始位置

root@AQUA7950X:~# cat /sys/block/nvme0n1/queue/optimal_io_size
0
root@AQUA7950X:~# cat /sys/block/nvme0n1/queue/minimum_io_size
512
root@AQUA7950X:~# cat /sys/block/nvme0n1/alignment_offset
0
root@AQUA7950X:~# cat /sys/block/nvme0n1/queue/physical_block_size
512

公式

起点=(optimal_io_size + alignment_offset) / physical_block_size =  (0 + 0) / 512 = 0s

root@AQUA13600KF:~# cat /sys/block/nvme0n1/queue/optimal_io_size 0 root@AQUA13600KF:~# cat /sys/block/nvme0n1/alignment_offset 0 root@AQUA13600KF:~# cat /sys/block/nvme0n1/queue/physical_block_size 512 root@AQUA13600KF:~# cat /sys/block/nvme0n1/queue/minimum_io_size 512

Warning: You requested a partition from 0.00B to 1024GB (sectors 0..2000409263). The closest location we can manage is 17.4kB to 1024GB (sectors 34..2000409230).

在现代硬盘和SSD中,最佳的分区对齐方式是以4KB或者1MB的倍数来对齐扇区。你的命令 (parted) mkpart primary 34s 100% 创建了一个起始于34扇区(sector)的分区,但34不是2048(2^11)的倍数,这会导致未对齐的问题。

解决方法

你可以选择一个更合适的起始扇区号来对齐分区。通常,我们会从2048扇区(1MB)开始,这样可以确保分区的对齐并优化性能。

  1. 重新开始分区创建,指定起始位置为2048扇区:

bash
复制代码
(parted) mkpart primary 2048s 100%

分区命令

parted /dev/nvme0n1
mkpart primary 0s 100%
  • 0%: 分区的起始位置,可以用 0s(表示起始扇区)或者 0%(表示起始位置的百分比)。

  • 100%: 分区的结束位置,这里使用 100% 表示分区占用所有剩余的可用空间。

检查是否正确对齐

(parted) align-check optimal 1                                            
1 aligned

格式化

mkfs.ext4 /dev/nvme0n1

自动挂载

查看硬盘以及分区

root@AQUA7950X:/# fdisk -l
Disk /dev/nvme1n1: 238.47 GiB, 256060514304 bytes, 500118192 sectors
Disk model: FDC SSD V800 256GB
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 7315FF64-5C7E-49C4-AF74-A98DF124C9B6
​
Device             Start       End   Sectors  Size Type
/dev/nvme1n1p1      2048   1050623   1048576  512M EFI System
/dev/nvme1n1p2   1050624 498116607 497065984  237G Linux filesystem
/dev/nvme1n1p3 498116608 500117503   2000896  977M Linux swap
​
​
Disk /dev/nvme0n1: 3.73 TiB, 4096805658624 bytes, 8001573552 sectors
Disk model: HYV4TBX4(PRO)
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

手动挂载

概念补充

作者:灵剑 链接:https://www.zhihu.com/question/266907637/answer/315386532 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

linux下面所有的文件、目录、设备都有一个路径,这个路径永远以/开头,用/分隔,如果一个路径是另一个路径的前缀,则这两个路径有逻辑上的父子关系。

但是并不是所有逻辑上的父子关系都必须要是同一个设备,决定不同路径对应到哪个设备的机制就叫做mount(挂载)。通过mount,可以设置当前的路径与设备的对应关系。

每个设备会设置一个挂载点,挂载点是一个空目录。一般来说必须有一个设备挂载在/这个根路径下面,叫做rootfs。其他挂载点可以是/tmp,/boot,/dev等等,通过在rootfs上面创建一个空目录然后用mount命令就可以将设备挂载到这个目录上。挂载之后,这个目录下的子路径,就会映射到被挂载的设备里面。

当访问一个路径时,会选择一个能最大匹配当前路径前缀的挂载点。比如说,有/var的挂载点,也有/var/run的挂载点的情况下,访问/var/run/test.pid,就会匹配到/var/run挂载点设备下面的/test.pid。

同一个设备可以有多个挂载点,同一个挂载点同时只能加载一个设备。访问非挂载点的路径的时候,按照前面所说,其实是访问最接近的一个挂载点,如果没有其他挂载点那么就是rootfs上的目录或者文件了。

实际上并不只有linux支持挂载点,Windows也是一样支持的。去控制面板/管理工具/计算机管理 里面,挑一个磁盘(比如D盘),然后给它分一个新的挂载点试试,比如C:\data

输入mkdir /home/data创建挂载点

输入mount /dev/nvme0n1 /home/data进行手动挂载

自动挂载

首先获取新分区的 UUID

root@AQUA7950X:/# blkid /dev/nvme0n1
/dev/nvme0n1: UUID="08b067f8-a668-47b9-97a6-532a8adcb273" BLOCK_SIZE="4096" TYPE="ext4"

复制输出中 UUID 的值,然后编辑 fstab 文件:

nano /etc/fstab

其每行的格式如下

要挂载的设备或伪文件系统  挂载点  文件系统类型  挂载选项 转储频率 自检次序
​
UUID=6efb8a23-bae1-427c-ab10-3caca95250b1 /boot xfs defaults 0 0

要挂载的设备或伪文件系统:设备文件、LABEL(LABEL="")、UUID(UUID="")、伪文件系统名称(proc, sysfs)

挂载点:指定的文件夹 1 挂载选项:defaults 1 转储频率:

0:不做备份

1:每天转储

2:每隔一天转储

自检次序:

0: 不检查文件系统。

1: 启动时优先检查的文件系统。通常是根分区 /

2: 对除根分区之外的其他文件系统进行检查。具有 2 的文件系统将在系统启动时按顺序被检查。

在文件末尾添加以下行:

UUID=08b067f8-a668-47b9-97a6-532a8adcb273 /home/data ext4 defaults 0 2

取消挂载

umount /dev/nvme0n1

python-is-python3

root@AQUA13600KF:~# python 
-bash: python: command not found
root@AQUA13600KF:~# apt install python-is-python3
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following NEW packages will be installed:
  python-is-python3
0 upgraded, 1 newly installed, 0 to remove and 35 not upgraded.
Need to get 3216 B of archives.
After this operation, 16.4 kB of additional disk space will be used.
Get:1 https://mirrors.tuna.tsinghua.edu.cn/debian bookworm/main amd64 python-is-python3 all 3.11.2-1+deb12u1 [3216 B]
Fetched 3216 B in 0s (17.1 kB/s)            
Selecting previously unselected package python-is-python3.
(Reading database ... 32703 files and directories currently installed.)
Preparing to unpack .../python-is-python3_3.11.2-1+deb12u1_all.deb ...
Unpacking python-is-python3 (3.11.2-1+deb12u1) ...
Setting up python-is-python3 (3.11.2-1+deb12u1) ...
Processing triggers for man-db (2.11.2-2) ...
root@AQUA13600KF:~# python
Python 3.11.2 (main, May  2 2024, 11:59:08) [GCC 12.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 

pip

镜像加速

-i--index-urlpip 的一个选项,用于指定 Python 包的下载源地址(Python 包索引)。默认情况下,pip 会从 Python 官方包管理仓库 PyPI 下载包。

-i https://pypi.tuna.tsinghua.edu.cn/simple

依赖列表

-r requirements.txt

已安装模块列表

pip list

venv

安装pip

apt install pip

安装venv

apt install python3-venv

创建虚拟环境

cd /home/data/ChatBridge
python3 -m venv test_env

-m 是 Python 命令行选项,用于告诉 Python 解释器运行指定模块的命令。通过使用 -m,你可以运行一个模块并将其视为一个脚本,而不是手动指定文件路径。

这条命令会在当前目录下创建一个名为 test_env 的文件夹,其中包含虚拟环境的可执行文件和所需的Python库。

查看下文件结构

root@AQUA13600KF:~# cd /home/data/ChatBridge
root@AQUA13600KF:/home/data/ChatBridge# ls
ChatBridge.pyz  ChatBridge_server.json  logs  start.sh  test_env
root@AQUA13600KF:/home/data/ChatBridge# cd test_env/
root@AQUA13600KF:/home/data/ChatBridge/test_env# ls
bin  include  lib  lib64  pyvenv.cfg
root@AQUA13600KF:/home/data/ChatBridge/test_env# cd bin
root@AQUA13600KF:/home/data/ChatBridge/test_env/bin# ls
Activate.ps1  activate  activate.csh  activate.fish  pip  pip3  pip3.11  python  python3  python3.11

激活虚拟环境

root@AQUA13600KF:/home/data/ChatBridge# source ./test_env/bin/activate
(test_env) root@AQUA13600KF:/home/data/ChatBridge#

可以看到,命令行的提示符前面会出现括号,里面是虚拟环境名称。

安装包

虚拟环境启用后,就可以使用pip命令来安装需要的包

(test_env) root@AQUA13600KF:/home/data/ChatBridge# pip3 install mcdreforged -i https://pypi.tuna.tsinghua.edu.cn/simple
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
...
(test_env) root@AQUA13600KF:/home/data/ChatBridge#

在Linux系统上,安装的包放在./test_env/lib/pythonx.x/site-packages 目录下

使用包

安装后,可以在命令行执行python 命令,进入Python交互式环境,然后import 安装的包,如果不报错,就说明安装成功了

(test_env) root@AQUA13600KF:/home/data/ChatBridge# pip3 list
Package            Version
------------------ ---------
certifi            2024.8.30
charset-normalizer 3.3.2
colorama           0.4.6
colorlog           6.8.2
idna               3.8
mcdreforged        2.13.1
packaging          24.1
parse              1.20.2
pip                23.0.1
prompt_toolkit     3.0.47
psutil             6.0.0
requests           2.32.3
resolvelib         1.0.1
ruamel.yaml        0.18.6
ruamel.yaml.clib   0.2.8
setuptools         66.1.1
typing_extensions  4.12.2
urllib3            2.2.2
wcwidth            0.2.13
(test_env) root@AQUA13600KF:/home/data/ChatBridge# python
Python 3.11.2 (main, Aug 26 2024, 07:20:54) [GCC 12.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import mcdreforged
>>>

退出虚拟环境

deactivate

容器内使用

及时更新Path

#!/bin/bash
source ./test_env/bin/activate  # 激活虚拟环境
chmod +x ./test_env/bin/pip
chmod +x ./test_env/bin/python
export PATH="/workspace/test_env/bin:$PATH"
python -m mcdreforged  # 在虚拟环境中运行命令

pipvenv

Pipenv:新一代Python项目环境与依赖管理工具 - 知乎 (zhihu.com)

Docker

Docker加速

nano /etc/docker/daemon.json
{
        "registry-mirrors": [
    "https://docker.1panelproxy.com",
    "https://docker.registry.cyou",
    "https://docker-cf.registry.cyou",
    "https://dockercf.jsdelivr.fyi",
    "https://docker.jsdelivr.fyi",
    "https://dockertest.jsdelivr.fyi",
    "https://mirror.aliyuncs.com",
    "https://dockerproxy.com",
    "https://mirror.baidubce.com",
    "https://docker.m.daocloud.io",
    "https://docker.nju.edu.cn",
    "https://docker.mirrors.sjtug.sjtu.edu.cn",
    "https://docker.mirrors.ustc.edu.cn",
    "https://mirror.iscas.ac.cn",
    "https://docker.rainbond.cc"
        ]
}
​

命令

Docker常用命令大全(非常详细)零基础入门到精通,收藏这一篇就够了-CSDN博客

img

run

docker run 命令常用参数详解 - 明月, - 博客园 (cnblogs.com)

exec

0e6516685686为容器ID

docker exec -it 0e6516685686 /bin/bash

DockerFile

【自定义镜像—Dockerfile完全指南】常用的十三种dockerfile指令及构建Tomcat镜像例子_tomcat dockerfile-CSDN博客

docker入门(八)—— dockerfile详细介绍,编写dockerfile-CSDN博客

FROM         # 基础镜像,当前新镜像是基于哪个镜像的
MAINTAINER   # 镜像维护者的姓名混合邮箱地址
RUN          # 容器构建时需要运行的命令
EXPOSE       # 当前容器对外保留出的端口
WORKDIR      # 指定在创建容器后,终端默认登录的进来工作目录,一个落脚点
ENV          # 用来在构建镜像过程中设置环境变量
ADD          # 将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包
COPY         # 类似ADD,拷贝文件和目录到镜像中!
VOLUME       # 容器数据卷,用于数据保存和持久化工作
CMD          # 指定一个容器启动时要运行的命令,dockerFile中可以有多个CMD指令,但只有最后一个生效!
ENTRYPOINT   # 指定一个容器启动时要运行的命令!和CMD一样
ONBUILD      # 当构建一个被继承的DockerFile时运行命令,父镜像在被子镜像继承后,父镜像的ONBUILD被触发

# 基础镜像 基础debian环境
FROM ustclug/debian:12.2
​
# 维护者
MAINTAINER aquaoh<aquaoh@outlook.com>
​
# 配置环境
ENV MIRROR https://pypi.tuna.tsinghua.edu.cn/simple
​
# 更新包索引,安装 Python 和 OracleJDK 21
RUN apt-get update && apt-get install -y \
    ca-certificates \
    python3 \
    python3-pip \
    python3-venv \
    python-is-python3 \
    wget && \
    wget https://download.oracle.com/java/21/latest/jdk-21_linux-x64_bin.deb && \
    dpkg -i jdk-21_linux-x64_bin.deb || apt-get install -f -y && \
    rm jdk-21_linux-x64_bin.deb && \
    apt-get clean && rm -rf /var/lib/apt/lists/
​
# 配置 Python 包镜像源
RUN pip3 config set global.index-url $MIRROR
​
# 创建一个符号链接使得 'python' 命令指向 'python3'
#RUN ln -s /usr/bin/python3 /usr/bin/python
​
# 配置 Java 环境变量
RUN echo "export JAVA_HOME=/usr/java/jdk-21.0.2" >> /etc/profile && \
    echo "export PATH=\$PATH:\$JAVA_HOME/bin" >> /etc/profile
​
# 安装gcc clang valgrind perf procps
RUN apt-get update && apt-get install -y \ 
    gcc \
    clang \
    valgrind \
    procps \
    linux-perf && \
    apt-get clean && rm -rf /var/lib/apt/lists/
​
# 修改perf_event_paranoid默认设置
# 设置ENTRYPOINT来调整kernel参数
ENTRYPOINT ["sh", "-c", "sysctl -w kernel.perf_event_paranoid=-1 && exec \"$@\"", "--"]
CMD ["bash"]
# 运行命令
docker run --privileged -it my_image_name
​

NapCat & LLOneBot

构建Docker

Docker安装Napcat反向ws-鑫仔博客 (xinz.fun)

NapNeko/NapCat-Docker: NapCat-Docker (github.com)

正向WS模板

docker run -d \
-e ACCOUNT=<机器人qq> \
-e WS_ENABLE=true \
-e NAPCAT_GID=$(id -g) \
-e NAPCAT_UID=$(id -u) \
-p 3001:3001 \
-p 6099:6099 \
--name napcat \
--restart=always \
mlikiowa/napcat-docker:latest

反向WS模板

docker run -d \
-e ACCOUNT="机器人qq" \
-e NAPCAT_GID=0 \
-e NAPCAT_UID=0 \
-e MESSAGE_POST_FORMAT="string" \
-e WSR_ENABLE=true \
-e WS_URLS='["ws://自己的ws ip加端口/api/bot/qqws"]' \ 
-p 6099:6099 \
-v /自己的目录只改这前面/QQ:/app/.config/QQ \
-v /自己的目录只改这前面/config:/app/napcat/config \
-v /自己的目录只改这前面/logs:/app/napcat/logs \
--name napcat \
--mac-address=02:42:ac:11:00:99 \
mlikiowa/napcat-docker:latest

正向ws修改后的

docker run -d \
-e ACCOUNT="2329377943" \
-e NAPCAT_GID=0 \
-e NAPCAT_UID=0 \
-e MESSAGE_POST_FORMAT="string" \
-p 3001:3001 \
-p 6099:6099 \
-v /home/data/NapCat/QQ:/app/.config/QQ \
-v /home/data/NapCat/config:/app/napcat/config \
-v /home/data/NapCat/logs:/app/napcat/logs \
--name napcat \
--mac-address=02:42:ac:11:00:99 \
mlikiowa/napcat-docker:latest
-d:以分离模式运行容器(即在后台运行)。
​
-e:设置环境变量,这些变量将传递给容器内的应用程序。
​
ACCOUNT:设置账户信息。填写自己的机器人QQ
​
NAPCAT_GID 和 NAPCAT_UID:设置容器内的用户和组 ID。
​
MESSAGE_POST_FORMAT:设置消息的格式。
​
WSR_ENABLE:启用 WebSocket 连接。
​
WS_URLS:指定 WebSocket 服务器的 URL。填写自己框架的ws地址
​
-p 6099:6099:将主机的 6099 端口映射到容器的 6099 端口。
​
-v:挂载卷,将主机的目录映射到容器内的指定路径。
​
/opt/1panel/apps/napcat/QQ:用于 QQ 配置。/opt/1panel/apps/napcat将/QQ前面改为自动的路径
​
/opt/1panel/apps/napcat/config:用于 Napcat 配置。/opt/1panel/apps/napcat将/config前面改为自动的路径
​
/opt/1panel/apps/napcat/logs:用于存放日志文件。/opt/1panel/apps/napcat将/logs前面改为自动的路径
​
--name napcat:指定容器的名称。
​
--mac-address=02:42:ac:11:00:99:为容器分配一个特定的 MAC 地址。 如果要开多个自己改后面尾数 --mac-address=02:42:ac:11:00:98 97 96 都可以
​
mlikiowa/napcat-docker:latest:要使用的 Docker 镜像。
​
注意事项
端口冲突:确保主机的 6099 端口没有被其他服务占用。如果已经被占用,您可以选择另一个可用的端口。
​
文件夹权限:确保您挂载的目录(如 /opt/1panel/apps/napcat/QQ、/opt/1panel/apps/napcat/config 和 /opt/1panel/apps/napcat/logs)具有适当的权限,以便容器能够读写这些目录。
​
环境变量的正确性:确保所有传递的环境变量(如 ACCOUNT 和 WS_URLS)都是正确的并符合您的需求。
​
MAC 地址:如果您指定了 MAC 地址,确保它是唯一的,并且不会与网络中的其他设备发生冲突。

配置WebUI

nano /home/data/NapCat/config/webui.json
{
    "host": "0.0.0.0",
    "port": 6099,
    "prefix": "",
    "token": "1ysti6j43vi",
    "loginRate": 3
}

浏览器访问http://$host:$port$prefix/webui/login.html,此中为http://192.168.6.120:6099/webui/login.html

输入token1ysti6j43vi

QR登录后配置正向ws保存持久化配置即可



是否对你有帮助?