显示标签为“Linux”的博文。显示所有博文

2025年8月2日星期六

Debian Linux驱动更新

Debian 安装驱动
Debian 安装驱动的步骤如下:
安装firmware安装包:apt install firmware-linux-nonfree
自动修复驱动:apt install isenkram && isenkram-autoinstall-firmware
重启:一定要重启,否则是装不好的,因为驱动的加载是在进入图形化界面之前。
如果没有设备驱动程序所需的固件,debian-installer 将显示对话框要求加载缺失的固件。假如选取了选项,debian-installer 将扫描现有设备松散的固件文件或包含固件的软件包。如果搜索到,固件会被复制到正确的位置 (/lib/firmware),然后加载驱动程序模块。
自动更新当前正在运行的内核的 initramfs:
sudo update-initramfs -u

验证预期硬件是否与 i915 驱动程序一起工作
hwinfo --display


示例:Linux安装指定软件包
apt install libxml2-utils=2.9.14+dfsg-1.3~deb12u1
apt install libgnutls30=3.7.9-2+deb12u4
apt install libgnutls-dane0=3.7.9-2+deb12u4
apt install gnutls-bin=3.7.9-2+deb12u4
apt install swtpm-tools=0.7.1-1.3
示例:飞牛OS底层系统需要保持的软件版本
sudo apt-mark hold libxml2-utils libgnutls30 libgnutls-dane0 gnutls-bin swtpm-tools


2024年9月22日星期日

Linux通过命令获取有效的IPv6地址

先直接给出命令:

ip -6 addr show eth0 | grep -v deprecated | grep 'inet6 [^f:]' | awk -F' ' '{print $2}' | awk -F'/' '{print $1}' | tail -1

根据经验观察,使用ip -6 addr show ifce获取到的ipv6地址,排在最后面的那个就是最新的那个,也就是valid_lft最长的那一个。

所以这个命令的原理就是:用ip -6 addr获取ipv6地址,然后选择排在最后面那一个。

然后是步骤拆解:

ip -6 addr show eth0,显示网卡(eth0)的全部ipv6地址

grep -v deprecated,去除已经失效(deprecated)的地址

grep 'inet6 [^f:]',显示有ipv6地址的那一行(不包含f开头的内网ipv6地址)

awk -F' ' '{print $2}',根据空格符号分列,打印第二列

awk -F'/' '{print $1}',根据斜杠符号/分列,打印第一列

tail -1,显示最后一行

2024年3月28日星期四

OpenResty/Nginx设置TCP/UDP端口转发

TCP/UDP端口转发配置示例:
~/nginx.conf文件末尾添加配置代码:


stream {
include /etc/nginx/conf.d/*.stream;
}


stream {
include /usr/local/openresty/nginx/conf/conf.d/*.stream;
}

conf.d目录下,添加*.stream后缀的配置文件,并编辑配置:

tcp.stream 文件:
#同时监听ipv4及ipv6的88端口并转发到本地localhost的80端口
server {
listen 88;
listen [::]:88;
proxy_connect_timeout 5s;
proxy_timeout 20s;
proxy_pass localhost:80;
}
#将udp 53端口转发到192.168.1.23 53端口
server {
listen 88 udp reuseport;
listen [::]:88 udp reuseport;
proxy_timeout 20s;
proxy_pass localhost:80;
}


2024年3月13日星期三

使用ddns-go配置DDNS

ddns-go

自动获得你的公网 IPv4 或 IPv6 地址,并解析到对应的域名服务。

系统中使用

  • 从 Releases 下载并解压 ddns-go

  • 安装服务

    • Mac/Linux: sudo ./ddns-go -s install
    • Win(以管理员打开cmd): .\ddns-go.exe -s install
    • (默认配置保存在C:\Users\当前用户)
    • 指定配置文件路径示例命令:

      .\ddns-go.exe -s install -c "%HOMEPATH%\AppData\Local\ddns-go\.ddns_go_config.yaml"

      .\ddns-go.exe -s install -c "%PROGRAMFILES%\ddns-go\ddns_go_config.yaml"
  • [可选] 服务卸载

    • Mac/Linux: sudo ./ddns-go -s uninstall
    • Win(以管理员打开cmd): .\ddns-go.exe -s uninstall
  • [可选] 支持安装带参数

    • -l 监听地址
    • -f 同步间隔时间(秒)
    • -cacheTimes 间隔N次与服务商比对
    • -c 自定义配置文件路径
    • -noweb 不启动web服务
    • -skipVerify 跳过证书验证
    • -dns 自定义 DNS 服务器
  • [可选] 参考示例

    • 10分钟同步一次, 并指定了配置文件地址
      ./ddns-go -s install -f 600 -c /Users/name/.ddns_go_config.yaml
    • 每 10 秒检查一次本地 IP 变化, 每 30 分钟对比一下 IP 变化, 实现 IP 变化即时触发更新且不会被服务商限流, 如果使用接口获取IP, 需要注意接口限流
      ./ddns-go -s install -f 10 -cacheTimes 180

Docker中使用

  • 挂载主机目录, 使用docker host模式。可把 /opt/ddns-go 替换为你主机任意目录, 配置文件为隐藏文件

    docker run -d --name ddns-go --restart=always --net=host -v /opt/ddns-go:/root jeessy/ddns-go
  • 在浏览器中打开http://主机IP:9876,并修改你的配置

  • [可选] 使用 ghcr.io 镜像

    docker run -d --name ddns-go --restart=always --net=host -v /opt/ddns-go:/root ghcr.io/jeessy2/ddns-go
  • [可选] 支持启动带参数 -l监听地址 -f间隔时间(秒)

    docker run -d --name ddns-go --restart=always --net=host -v /opt/ddns-go:/root jeessy/ddns-go -l :9877 -f 600
  • [可选] 不使用docker host模式

    docker run -d --name ddns-go --restart=always -p 9876:9876 -v /opt/ddns-go:/root jeessy/ddns-go

使用IPv6

  • 前提:你的电脑或终端能正常获取IPv6,并能正常访问IPv6
  • Windows/Mac:推荐 系统中使用,Windows/Mac桌面版的docker不支持--net=host
  • docker使用与 Docker Host 相同的网络,高级设置中勾选启动自动重新启动
  • Linux的x86或arm架构,推荐使用Docker的--net=host模式。参考 Docker中使用

2024年1月22日星期一

使用 Docker 部署 Memos 的综合指南

在继续安装 Memos 之前,请确保满足以下先决条件:

  • 安装了 Docker 的服务器:Memos 被设计为使用 Docker 进行自托管。

Docker 运行

要使用 设置备忘录,请执行以下命令以启动备忘录:docker run

docker run -d \
--init \
--name memos \
--publish 5230:5230 \
--volume ~/.memos/:/var/opt/memos \
neosmemo/memos:stable

此命令将在后台启动 Memos,将其暴露在端口上。数据将存储在目录中。您可以根据需要自定义端口和数据目录路径。5230``~/.memos/

参数选项

  • 模式(-m、–mode):

    • 值:“prod”或“dev”

    • 默认值:“prod”

    • 用途:设置服务器的模式,影响其运行时行为。选项包括生产(“prod”)、开发(“dev”)。

  • 地址 (-a, –addr):

    • 值:表示服务器地址的字符串。

    • 默认值:空字符串。

    • 用途:指定服务器侦听传入连接的地址。

  • 端口(-p、–port):

    • 值:表示服务器端口的整数。

    • 默认值:8081。

    • 用途:设置可访问服务器的端口。

  • 数据 (-d, –data):

    • 值:表示数据目录的字符串。

    • 默认值:空字符串。

    • 用途:指定备忘录将存储其数据的目录。

  • 驱动程序 (–driver):

    • 值:表示数据库驱动程序的字符串。我们目前支持“sqlite”和“mysql”。

    • 默认值:“sqlite”

    • 用途:设置备忘录要使用的数据库驱动程序。

  • DSN (–DSN):

    • 值:表示数据库源名称的字符串。仅在使用 MySQL 驱动程序时适用。

    • 默认值:空字符串。

    • 用途:指定用于连接到数据库的数据库源名称 (DSN)。

  • 指标 (–metric):

    • 值:布尔值 (true/false)。

    • 默认值:true。

    • 用途:启用或禁用指标收集。启用后,“备忘录”会收集指标进行分析。

Docker Compose的

要使用 部署备忘录,请使用以下配置创建文件:docker compose``docker-compose.yml

version: "3.0"
services:
memos:
image: neosmemo/memos:stable
container_name: memos
volumes:
- ~/.memos/:/var/opt/memos
ports:
- 5230:5230

现在,执行以启动备忘录。虽然可以编辑端口和数据目录,但只需修改第一个端口(例如,)以指定备用端口。第二个端口指定 Memos 在容器内侦听的端口。同样的原则也适用于目录路径,其中第一个路径表示主机系统上的位置,第二个路径表示容器内的目录。docker-compose up -d``8081:5230

升级备忘录

若要将备忘录升级到最新版本,请执行以下步骤:

  1. 首先,停止并移除旧容器:

    docker stop memos && docker rm memos
  2. 尽管是可选的,但建议备份数据库:

    cp -r ~/.memos/memos_prod.db ~/.memos/memos_prod.db.bak
  3. 接下来,拉取最新的备忘录图像:
    官网链接docker-Memos

    docker pull neosmemo/memos:stable
  4. 最后,按照 Docker 运行 部分中概述的步骤启动备忘录。升级后的备忘录实例现在将启动并运行最新的增强功能和功能。

面板运行:

  1. -本机目录 :/opt/apps/memos/ -权限:读写 -容器目录 : /var/opt/memos

  2. Entrypoint命令: ‘./memos’

  3. 镜像版本:neosmemo/memos:stable

2024年1月9日星期二

Tailscale容器使用方法

在容器中设置 Tailscale

镜像链接:

docker pull tailscale/tailscale:stable

快速创建并运行容器:

docker run -d --name=tailscaled -v /usr/local/app/tailscale:/var/lib/tailscale -v /dev/net/tun:/dev/net/tun --network=host --cap-add=NET_ADMIN --cap-add=NET_RAW tailscale/tailscale

( 若要支持长期服务,其中容器在重启时保留其设置和标识,需要执行以下几项操作: 必须为容器提供持久性存储,例如-v /var/lib/tailscale:/var/lib/tailscale 将 TS_STATE_DIR 设置为持久性存储的挂载位置,例如-e TS_STATE_DIR=/var/lib/tailscale )

设置Tailscale节点作为流量出口使用
声明advertise-exit-node,意思是节点可以作为流量出口使用。

tailscale up --advertise-exit-node --accept-dns=false

设置Tailscale作为子网路由器
设定安装了 TailScale 服务的设备充当子路由(Subnet Route),其他所有的外网的 TailScale 装置都可以透过此安装了 TailScale 服务作为网关访问家里内网所有的设备。
执行以下命令(注意替换自己的内网网段)

tailscale up --advertise-routes=192.168.0.0/24
tailscale up --advertise-routes=192.168.0.0/24 --accept-dns=false --advertise-exit-node

参考资料:
ailscale:基于 WireGuard 异地组建虚拟局域网

在 Linux 上设置 Tailscale

Tailscale 适用于各种 Linux 发行版。通常,您可以在 Linux 机器上安装 Tailscale 使用一个命令:

curl -fsSL https://tailscale.com/install.sh | sh

执行后等待Tailscale安装完成:
将计算机连接到 Tailscale 网络并在浏览器中进行身份验证:

sudo tailscale up

复制登录链接到浏览器完成登录验证:
你已连接!您可以通过运行以下命令找到 Tailscale IPv4 地址:

tailscale ip -4

如果添加的设备是服务器或远程访问的设备,则可能需要考虑禁用密钥过期,以防止需要定期重新进行身份验证。
设置Tailscale自动更新:

tailscale set --auto-update

设置Tailscale作为流量中继节点

前序准备,启用IP转发:

echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.conf
echo 'net.ipv6.conf.all.forwarding = 1' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p /etc/sysctl.conf

设置Tailscale作为出口节点:

tailscale up --advertise-exit-node --accept-dns=false

设置Tailscale作为子网路由器

播发子网路由:

tailscale up --advertise-routes=192.168.111.0/24 --accept-dns=false --accept-routes=true --advertise-exit-node

Tailscale子网路由器设置恢复:

tailscale up --reset