Marco Nie - ubuntu 2024-06-27T15:12:00+08:00 Typecho https://blog.niekun.net/feed/atom/category/ubuntu/ <![CDATA[服务器装 warp 解锁 chatgpt]]> https://blog.niekun.net/archives/Linux-warp.html 2024-06-27T15:12:00+08:00 2024-06-27T15:12:00+08:00 admin https://niekun.net 最近在使用 chatgpt 中发现 ios 端无法登录 app,网页端正常使用。提示信息为:

Something went wrong. You may be connected to a disallowed ISP If youare using VPN, try disabling it. Otherwise try a different Wi-Fi network or data connection。

经过查询发现是我的 vps 服务商只提供网页端 chatgpt 解锁,不支持 app 端。由于 chatgpt 服务也是通过 cloudflare 的 cdn 服务,所以通过将流量转发到 warp 来访问就可以解决问题。

首先需要在服务端安装官方的 warp 命令行工具:warp-cli。

官方教程:https://developers.cloudflare.com/warp-client/get-started/linux/

官方手动添加包仓库教程:https://pkg.cloudflareclient.com/#ubuntu

安装

在命令行输入以下指令来安装第三方仓库并安装包:

# Add cloudflare gpg key
curl -fsSL https://pkg.cloudflareclient.com/pubkey.gpg | sudo gpg --yes --dearmor --output /usr/share/keyrings/cloudflare-warp-archive-keyring.gpg

# Add this repo to your apt repositories
echo "deb [signed-by=/usr/share/keyrings/cloudflare-warp-archive-keyring.gpg] https://pkg.cloudflareclient.com/ $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/cloudflare-client.list

# Install
sudo apt-get update && sudo apt-get install cloudflare-warp

配置

安装好后需要注册一个新账户:

warp-cli registration new

查看当前账户信息:

warp-cli registration show

更换新的 license:

warp-cli registration license xxxxx-xxxxxx-xxxxxx

然后需要设置代理模式,可选有:warp, doh, warp+doh, dot, warp+dot, proxy, tunnel_only。

我只想要它提供一个 socks5 代理端口即可,所以设置为 proxy 模式,它会在本地 40000 端口监听:

warp-cli mode proxy

启动 warp:

warp-cli connect

此时 warp 会在本地 40000 端口建立一个 sock5 代理,只需要将需要转发的流量转发到此端口即可走 warp。并且 warp 会自动配置为 Always On 模式,开机自动运行代理。

查看 warp 当前配置:

# warp-cli settings
Merged configuration:
(derived)       Always On: true
(default)       Switch Locked: false
(user set)      Mode: WarpProxy on port 40000
(Not set)       WARP tunnel protocol: Wireguard
(default)       Disabled for Wifi: false
(default)       Disabled for Ethernet: false
(Not set)       Resolve via: cloudflare-dns.com @ [162.159.36.1, 2606:4700:4700::1111]
(Not set)       qlog logging: Disabled
(default)       Onboarding: true
(API defaults)  Exclude mode, with hosts/ips:
  10.0.0.0/8
  100.64.0.0/10
  169.254.0.0/16
  172.16.0.0/12
  192.0.0.0/24
  192.168.0.0/16
  224.0.0.0/24
  240.0.0.0/4
  239.255.255.250/32
  255.255.255.255/32
  fe80::/10
  fd00::/8
  ff01::/16
  ff02::/16
  ff03::/16
  ff04::/16
  ff05::/16
  fc00::/7

(default)       Fallback domains:
  intranet
  internal
  private
  localdomain
  domain
  lan
  home
  host
  corp
  local
  localhost
  home.arpa
  invalid
  test
(Not set)       Daemon Teams Auth: false
(default)       Disable Auto Fallback: false
(Not set)       Allow Updates: true

查看代理是否生效:

export ALL_PROXY=socks5://127.0.0.1:40000
curl ifconfig.me

代理工具转发流量

服务端的配置文件需要添加和修改的地方如下:

{
    "outbounds": [
        ...
        {
            "protocol": "socks",
            "settings": {
                "address": "127.0.0.1",
                "port": 40000
            },
            "tag":"socks_out"
        }
    ],
    "router": {
        "domainStrategy": "AsIs",
        "rule": [
            ...
            {
                "tag": "socks_out",
                "geoDomain": [
                    {
                        "code": "openai",
                        "filePath": "geosite.dat"
                    }
                ],
                "domainMatcher": "mph"
            }
        ]
    },
    "inbounds": [
        {
            "protocol": "vmess",
            ...
            "sniffing": {
                "enabled": true,
                "destOverride": [
                    "http",
                    "tls"
                ]
            },
            ...

注意需要安装扩展版的 geosite.dat 才有 openai 的条目:https://github.com/Loyalsoldier/v2ray-rules-dat

通过访问以下网址测试是否已经解锁 ios app 端:https://ios.chat.openai.com/public-api/mobile/server_status/v1

以上就是解决 chatgpt 无法访问的方法。

]]>
<![CDATA[服务器部署 immich 照片备份工具]]> https://blog.niekun.net/archives/immich.html 2024-03-04T09:30:00+08:00 2024-03-04T09:30:00+08:00 admin https://niekun.net 目前有很多的云备份服务可以使用,比如 icloud,google photos 等。immich 是一款实现类似功能的本地部署工具,将数据都存储在自己本地服务器上,拥有完善的手机端 app 可以方便的同步备份手机图片。

GitHub 主页:https://github.com/immich-app/immich
官网教程:https://immich.app/docs/overview/introduction/

安装服务端

使用 docker compose 安装,新建一个 immich 文件夹,下载 docker-compose.yml.env 文件到文件夹:

wget https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
wget -O .env https://github.com/immich-app/immich/releases/latest/download/example.env

打开 .env 文件配置环境变量,主要就是配置备份路径和数据库密码,修改 UPLOAD_LOCATIONDB_PASSWORD

启动容器:

docker compose up -d

后续更新只需要进入 immich 文件夹执行下面命令即可:

docker compose pull && docker compose up -d

docker-compose.yml 文件中默认将 3001 端口映射到了本地 2283 端口,3001就是服务端访问端口号。

下面是所有可用的端口,根据需要可以修改 docker-compose 文件映射到本地:

PORTWeb Port3000web
SERVER_PORTServer Port3001server
MICROSERVICES_PORTMicroservices Port3002microservices
MACHINE_LEARNING_HOSTMachine Learning Host0.0.0.0machine learning
MACHINE_LEARNING_PORTMachine Learning Port3003machine learning

配置账户

网页端访问:http://you.machine.ip:2283 进入配置页面,根据提示建立一个管理员账户,后续可以在管理员账户中建立其他子账户供其他人使用。

登录 app

下载手机端 app,ios 直接在 app store 搜索 immich 下载,安卓在 github 发布页下载 apk:https://github.com/immich-app/immich/releases

在手机端输入以下网址进入:http://you.machine.ip:2283/api

然后就可以配置需要备份的手机端图片文件夹了。

外网访问

服务器在本地,如果要外网域名远程访问图库,需要一些额外的配置,我这里是通过 cloudflare 配置子域名,nginx 配置反向代理到 frps,最后本地服务器 frpc 配置本地 2283 端口绑定到远程域名访问即可。

可以参考我之前的关于 frp 的教程:https://blog.niekun.net/archives/539.html

]]>
<![CDATA[Ubuntu 20.04 添加第三方 ppa]]> https://blog.niekun.net/archives/Ubuntu-20-04-ppa.html 2024-02-22T09:18:33+08:00 2024-02-22T09:18:33+08:00 admin https://niekun.net 我服务器目前安装的是 Ubuntu 20.04 系统,很多新的软件包并没有在官方维护的源中提供,所以为了方便需要可以添加第三方的源。

添加需要用到的命令是:add-apt-repository,但是默认系统并没有安装这个环境,需要先手动安装 package software-properties-common:

sudo apt install software-properties-common

然后就可以安装需要的源了,推荐两个:
https://launchpad.net/%7Esavoury1/+archive/ubuntu/backports?field.series_filter=bionic
https://launchpad.net/%7Esavoury1/+archive/ubuntu/utilities?field.series_filter=bionic

安装方法很简单:

sudo add-apt-repository ppa:savoury1/backports
sudo add-apt-repository ppa:savoury1/utilities
sudo apt-get update

执行 apt update 后会发现很多可更新的软件了。

]]>
<![CDATA[Ubuntu 开启 RDP 远程连接]]> https://blog.niekun.net/archives/2703.html 2022-05-23T10:18:00+08:00 2022-05-23T10:18:00+08:00 admin https://niekun.net 之前介绍过通过安装 TightVNC vnc server 远程连接 Ubuntu 桌面的教程,Windows 下常用的是 RDP 方式远程,使用体验非常流畅,不占用带宽。Linux 下也可以通过安装 Xrdp 的方式实现 rdp 连接。

参考教程:Ubuntu desktop 配置 vnc server

xrdp 是对 Windows rdp 协议的开源实现。

安装

我的系统是 Ubuntu desktop 20.04,首先需要保证有一个已经安装的桌面环境,desktop 版默认是 genome,也可以安装其他的如 xfce:

sudo apt install ubuntu-desktop

安装 xrdp:

sudo apt install xrdp

安装完成后,xrdp 会自动启动,可以通过命令查看状态:

$  sudo systemctl status xrdp
 
● xrdp.service - xrdp daemon
     Loaded: loaded (/lib/systemd/system/xrdp.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2022-05-23 09:50:43 CST; 20min ago
       Docs: man:xrdp(8)
             man:xrdp.ini(5)
    Process: 83586 ExecStartPre=/bin/sh /usr/share/xrdp/socksetup (code=exited, status=0/SUCCESS)
    Process: 83594 ExecStart=/usr/sbin/xrdp $XRDP_OPTIONS (code=exited, status=0/SUCCESS)
   Main PID: 83595 (xrdp)
      Tasks: 2 (limit: 9459)
     Memory: 26.4M
     CGroup: /system.slice/xrdp.service
             ├─83595 /usr/sbin/xrdp
             └─83597 /usr/sbin/xrdp

默认 rdp 端口为 3389.

配置

xrdp 安装后,会自动创建一个新系统用户 xrdp,并且将一个 ssl key ssl-cert-snakeoil.key 放入 /etc/ssl/private/ 文件夹,需要将 xrdp 用户添加到 ssl-cert 用户组确保 xrdp 可以读取这个 ssl key:

sudo adduser xrdp ssl-cert

默认配置测试访问会有黑屏问题,显示不出来界面,需要修改 /etc/xrdp/startwm.sh 文件,在文件最后的 test -x /etc/X11/Xsession 前面加入如下内容:

unset DBUS_SESSION_BUS_ADDRESS
unset XDG_RUNTIME_DIR

重启 xrdp 服务:

sudo systemctl restart xrdp

现在就可以正常通过 rdp 连接到 Ubuntu了。

在使用中,我出现了输入用户密码后停留在解锁界面无法登录进去的问题,经过查询 xdrp 目前不可以同时在多个设备上尝试登录。同时登录 xrdp 的用户如果和正常在主机上登录的是同一个用户,需要删除 dbus-user-session 包,用 dbus-x11 代替。第三点,需要保证 gdm3 运行,执行下面的命令:

sudo apt remove dbus-user-session
sudo apt install dbus-x11

sudo systemctl set-default graphical
sudo systemctl isolate graphical

重启 xrdp 服务:

sudo systemctl restart xrdp

此时应该就可以正常通过 rdp 客户端链接 ubuntu 界面了。

但是我测试发现,第一次登录进去没问题,关闭后过一会儿再次尝试链接发现卡在登录界面没反应了,尝试执行如下命令:

echo xfce4-session > $HOME/.xsession
chmod +x .xsession

发现问题似乎解决了,但是调用的事 xfce 桌面环境。

远程登录

在局域网下访问比较流畅,但是在外网下发现没法达到 Windows rdp 流畅的效果。解决方法可以是在外网通过 rdp 链接一个局域网下 Windows 设备,然后在 Windows 设备下通过 rdp 链接局域网内的 ubuntu 设备。

参考链接

How to Install Xrdp on Ubuntu 20.04
Xrdp stuck on login, after password is entered, unblocked if I unlock from the ubuntu rdp server
Using the console and XRDP together in Debian / Ubuntu / Mint
XRDP session immediately closes after loggin in

]]>
<![CDATA[Ubuntu 18.04 升级 Ubuntu 20.04 记录]]> https://blog.niekun.net/archives/2451.html 2022-03-12T15:32:00+08:00 2022-03-12T15:32:00+08:00 admin https://niekun.net 昨天决定把服务器的系统从 Ubuntu 18.04 升级到 Ubuntu 20.04,其中经历了不少问题点,下面记录下处理过程。

首先就是升级当前系统所有包到最新:

apt update && apt upgrade -y
apt autoremove && apt purge

然后安装升级需要的管理包,不过一般系统都是自带的:

apt install update-manager-core

然后就可以更新系统了:

do-release-upgrade

标准流程就是以上几步,但是在最后一步的时候问题就开始出现了。

在执行升级命令后出现报警:

Failed to connect to https://changelogs.ubuntu.com/meta-release-lts. Check your Internet connection or proxy settings

在查询一些资料后,原来是 ssl certificates 验证问题,系统无法鉴定上面的 https 链接证书是否有效就返回错误了。

这个问题也是我这个系统的一个遗留问题,每次执行 wget 或 curl 下载东西的时候就会提示证书报错,需要通过附加指令跳过证书验证,但这就会存在安全问题了。

解决方法就是更新本地证书库后添加 SSL_CERT_DIR 环境变量指向系统证书目录:

update-ca-certificates --verbose --fresh
export SSL_CERT_DIR=/etc/ssl/certs

为了方便以后使用,将环境变量添加到 ~/.bashrc 文件中。这样就解决了 https 链接证书验证问题。

然后先删除之前执行升级命令后错误内容:

rm /var/lib/ubuntu-release-upgrader/release-upgrade-available
/usr/lib/ubuntu-release-upgrader/release-upgrade-motd

之后再次执行升级命令 do-release-upgrade

这时候报错信息变化了,这时候提示的是 python3 有问题,原因是我当前系统使用的是自己编译的 python 3.8,路径在 /opt 目录下。当时将系统软链接 /usr/bin/python/usr/bin/python3 都指向了自己安装的 python,需要将他们恢复到指向系统内置的 python 程序。

下面需要介绍下系统内 python 主程序和软链接的分布:

python2 主应用程序为 /usr/bin/python2.7
python3 主应用程序为 /usr/bin/python3.6
pip 主程序为 /usr/bin/pip
pip3 主程序为 /usr/bin/pip3

下面是默认的软链接及指向的应用程序:

/usr/bin/python  ->  /usr/bin/python2.7
/usr/bin/python2  ->  /usr/bin/python2.7
/usr/bin/python3  ->  /usr/bin/python3.6
/usr/local/bin/pip  ->  /usr/bin/pip
/usr/local/bin/pip3  ->  /usr/bin/pip3

如果你修改过这些软链接到自己的 python 版本,就需要修改回来:

ln -sf /usr/bin/python2.7 /usr/bin/python
ln -sf /usr/bin/python2.7 /usr/bin/python2
ln -sf /usr/bin/python3.6 /usr/bin/python3
ln -sf /usr/bin/pip /usr/local/bin/pip
ln -sf /usr/bin/pip3 /usr/local/bin/pip3
ldconfig

以上问题都处理完后,再次执行升级命令,一切都正常了。

]]>
<![CDATA[Windows 下 VMware 安装 Ubuntu 虚拟机]]> https://blog.niekun.net/archives/1316.html 2020-03-13T14:00:00+08:00 2020-03-13T14:00:00+08:00 admin https://niekun.net 2020-03-13T03:42:47.png
虽然 Windows 10 自带有 WSL,可以安装 Linux 系统,但是在实际使用中发现还是有很多限制的。所以想要完整的 Linux 系统,还是安装了虚拟机。

WSL 开启参考:https://blog.niekun.net/archives/1148.html

我使用的是 VMware workstation 安装了 Ubuntu 18.04 LTS。安装过程中与遇到了一些问题,需要特别的进行处理,在此做一下记录。

VMware workstation & Ubuntu

官网下载 VMware workstation,需要购买序列号:https://my.vmware.com/en/web/vmware/info/slug/desktop_end_user_computing/vmware_workstation_pro/15_0

下载完成后进行安装,然后根据提示重启及输入序列号。

Ubuntu 18.04 LTS 镜像下载:http://releases.ubuntu.com/18.04.4/ubuntu-18.04.4-desktop-amd64.iso

镜像下载完成后就可以开始准备安装虚拟机了,点击 文件 - 新建虚拟机
2020-03-13T03:44:08.png

选择 典型 安装,然后下一步,点击浏览找到 Ubuntu 镜像文件:
2020-03-13T03:45:23.png

下面就根据提示设置虚拟机账户密码等信息,完成安装后会自动启动虚拟机,使用刚才设置的用户名密码登录虚拟机。

分辨率设置

光标退出虚拟机的快捷键是:ctrl alt

我的主机显示比例是 16:9 的1920 × 1080,开机后显示比例是 16:10 的,所以需要设置下全屏。
首先点击保持纵横比拉伸来让显示尽量铺满全屏:
2020-03-13T03:50:01.png

进入 Ubuntu,点击右下角扩展键:
2020-03-13T03:51:06.png

搜索 displays,然后进入显示设置:
2020-03-13T03:51:42.png

选择一个和主机一样比例的分辨率:
2020-03-13T03:52:31.png

这样虚拟机就可以全屏了。

VMware tools

VMware tools 可以让主机和虚拟机实现数据交互,很多功能依赖于 VMware tools,如:共享文件夹,网络桥接,共享剪贴板等。

但是我在安装虚拟机后,VMware tools 安装项是灰色的:
2020-03-13T03:56:15.png

查询后了解到 Linux 的 tools 需要手动安装,官网对 Linux 虚拟机安装 VMware tools 有一篇教程:https://www.vmware.com/support/ws5/doc/ws_newguest_tools_linux.html

VMware 安装的时候在安装目录下会有一个 linux.iso 文件,这就是 VMware tools 安装镜像,我的路径是:C:\Program Files (x86)\VMware\VMware Workstation\linux.iso

首先在虚拟机设置里添加一个新的 cd/dvd,挂载 VMware 安装目录下的 linux.iso 镜像:
2020-03-13T03:59:19.png

进入 Ubuntu,桌面会有 VMware tools,终端路径是:/media/USERNAME/VMware Tools
2020-03-13T05:26:44.png

进入 VMware Tools 目录,里面有一个压缩包:VMwareTools-10.3.10-13959562.tar.gz,执行如下命令:

cd /tmp
tar xvf '/media/USERNAME/VMware Tools/VMwareTools-10.3.10-13959562.tar.gz'
cd vmware-tools-distrib
sudo ./vmware-install.pl

执行解压目录下的 vmware-install.pl,一路 enter 即可。执行结束后就完成了 VMware Tools 的安装,重启系统。

网络设置

在虚拟机设置里将网络连接设置为桥接模式,这样虚拟机和主机就在一个 IP 网段内,如果不设置为桥接模式,虚拟机内可能无法执行一些网络命令,如:mtr:
2020-03-13T05:35:55.png

设置完成后重启虚拟机,主机使用命令 ipconfig 查看当前 IP:
2020-03-13T05:43:28.png

虚拟机使用命令 ifconfig 查看当前 IP:
2020-03-13T05:44:14.png

两个 IP 在一个网段内则设置成功。

共享文件夹

根据需要可以设置共享主机文件夹,在虚拟机内可以访问,共享文件夹路径是:/mnt/hgfs
2020-03-13T05:37:34.png

在虚拟机终端测试访问:
2020-03-13T05:40:46.png

共享主机代理

如果主机设置了代理,虚拟机可以直接共享此代理设置。

首先设置主机代理端口开放给局域网,如果是显示只监听本地地址则 listen 地址设置为 127.0.0.1,如果开放监听局域网地址,则 listen 地址设置为 0.0.0.0 即可。

在主机使用命令 ipconfig 查看主机 IP 地址。如果要在虚拟机设置系统代理,在虚拟机 Ubuntu 设置里搜索 proxy,点击 network proxy 手动设置代理地址:
2020-03-13T05:52:13.png

如果不想设置系统代理,也可以根据上面的主机地址和端口,在单独的应用程序里设置代理,如浏览器。

终端代理设置参考我之前的文章,也是使用上面得到的主机 IP 和代理端口:https://blog.niekun.net/archives/97.html

以上就是我用 VMware workstation 安装 Ubuntu 的过程。

]]>
<![CDATA[Ubuntu 修改 apt 国内源]]> https://blog.niekun.net/archives/1161.html 2020-02-26T13:25:00+08:00 2020-02-26T13:25:00+08:00 admin https://niekun.net 2020-02-26T04:59:18.png

国内使用 apt 安装软件如果感觉比较慢,可能是 deb 源是国外的,通过修改为国内源,可以很好的进行加速下载。

系统代号

每一个版本的 Ubuntu 都会有一个代号: codename,用来识别不同的版本,比如:

  • 14.04 LTS 代号是 trusty
  • 16.04 LTS 代号是 xenial
  • 18.04 LTS 代号是 bionic

在更换源的时候需要使用到代号codename,可以使用如下命令查看当前系统版本代号:

lsb_release -a

备份系统源文件

为防止修改错误或其他问题,将系统自带源文件进行备份很有必要,执行如下指令:

sudo cp /etc/apt/sources.list /etc/apt/sources.list_bak

修改 sources.list 源文件

打开 sources.list 文件,将内容修改为想要的国内源:

vim /etc/apt/sources.list

输入命令 ggdG 清空内容,修改为清华源加入如下内容:

# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse

# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse

可以看到每行内容里都有对应系统代号信息,如果要修改其他版本系统的 apt 源,只需要将里面系统代号替换即可。

常用国内源:

]]>
<![CDATA[ffmpeg build from source]]> https://blog.niekun.net/archives/891.html 2020-02-09T20:27:00+08:00 2020-02-09T20:27:00+08:00 admin https://niekun.net https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu

Ubuntu 14.04
add ppa:https://launchpad.net/~mc3man/+archive/ubuntu/trusty-media

]]>