【N100小主机】体验不同系统

本文详细介绍了如何在Ubuntu22.04系统上使用向日葵远程控制,解决黑屏问题,实现开机自启,以及在无显示器情况下通过Windows远程桌面连接。此外,还涵盖了docker容器的安装、部署微服务、美化桌面环境和常见IT管理操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【作为个人笔记,用于查阅】

向日葵远程控制ubuntu

一、简介

硬件:酷睿N100小主机,8G+512G。
系统:ubuntu22.04.3
目的:十月一放假,闲来无事,利用向日葵实现windows远程控制ubuntu,并搭建一些微服务。
在这里插入图片描述

二、问题及解决方法

2.1 向日葵远程连接Ubuntu22主机黑屏?

原因:向日葵使用的是lightdm来进行界面渲染,但是Ubuntu默认是没有的,而是通过gdm3进行图像处理。

使用命令

sudo apt install lightdm

安装过程选择桌面系统为lightdm,重启完成修改。
后续也是能修改的

sudo dpkg-reconfigure lightdm

2.2 Ubuntu如何向日葵开机自启?

终端

gnome-session-properties

打开启动应用程序首选项,添加向日葵启动文件的目录/usr/local/sunlogin/bin/sunloginclient(开机进桌面后开启动)。

注:设置-用户-自动登录打开,实现开机进桌面启动向日葵。

2.3 无显示器情况下,windows远程桌面连接Ubuntu?

原理
使用xserver-xorg虚拟出一个屏幕,并设置分辨率等配置。
安装虚拟显示器

sudo apt-get install  xserver-xorg-core-hwe-18.04
sudo apt-get install  xserver-xorg-video-dummy

新建配置文件

sudo vi /usr/share/X11/xorg.conf.d/xorg.conf
Section "Device"
    Identifier  "Configured Video Device"
    Driver      "dummy"
EndSection
 
Section "Monitor"
    Identifier  "Configured Monitor"
    HorizSync 31.5-48.5
    VertRefresh 50-70
EndSection
 
Section "Screen"
    Identifier  "Default Screen"
    Monitor     "Configured Monitor"
    Device      "Configured Video Device"
    DefaultDepth 24
    SubSection "Display"
    Depth 24
    Modes "1920x1080"
    EndSubSection
EndSection

重启后就能有一个虚拟屏幕,使用windows远程桌面或者向日葵即可实现远程连接。
貌似把上边儿新建的的xorg.conf配置文件删了再重启就能恢复原来的物理桌面了,这就需要ssh拯救了。

注:设置->电源,将节电选项中的息屏改为从不,防止连接中断。
设置->隐私->屏幕,可能还要关闭一个自动锁屏。
设置-系统-用户-开启自动登录。

三、美化桌面

3.1 安装/解压

  • 插件:tweaks美化插件gnome的User Themes 插件
  • 主题:WhiteSur-gtk-theme-master.zip
  • 图标:Mkos-Big-Sur-master.zip

3.2 设置

  • 打开tweaks / 优化程序-外观/窗口标题栏,设置Mac的主题和图标,发现tweaks也能设置开机启动程序。

  • 打开设置程序-外观。

3.3 右上角显示实时网速

通过添加PPA安装,PPA是指个人软件包存档(Personal Package Archives),它是Ubuntu和其他Linux发行版中的一种软件分发方式。PPA允许个人用户创建和维护自己的软件仓库,并将软件包提供给其他用户进行安装和更新。官方PPA通常是可靠和安全的,而来自知名维护商的PPA也较为可靠。然而,来自第三方开发人员或个人用户的PPA的可靠性可能会有所不同,因此需要谨慎对待。有些人对PPA持有不同的观点,纯粹主义者可能不喜欢PPA,而在Ubuntu和Debian等发行版中,PPA仍然很流行,因为它们提供了更简单的软件安装选项。

sudo add-apt-repository ppa:fossfreedom/indicator-sysmonitor	//添加PPA
sudo apt-get update
sudo apt-get install indicator-sysmonitor						//安装
indicator-sysmonitor &											//后台运行
>>最后在图形界面中设置开机自启,显示格式。

在这里插入图片描述

四、安装docker容器及部署微服务

4.1 安装docker容器

参考博文:Ubuntu22.04安装Docker

Docker 是一个高效、灵活、轻量级的容器化平台,可以在单个操作系统上实现多个容器化应用的隔离和运行。

也就是说可以自己在容器里随意搞,把里边儿环境搞坏也不会影响系统环境,类似于anaconda。
  • 更新apt的密钥和仓库源
sudo apt update

sudo apt install apt-transport-https ca-certificates curl gnupg-agent software-properties-common	//更新相关依赖和工具包

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -	//设置docker镜像源每个发布的deb包,都是通过密钥认证的,apt-key用来管理密钥。以下命令就是将docker相关密钥添加到apt-key。
注:出现OK表示设置成功

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"	//添加docker apt仓库源相当于给apt添加了一个关于docker的仓库源。

sudo apt update	//更新apt,以保证后续安装的是最新版docker
  • 安装最新版本docker
sudo apt install docker-ce docker-ce-cli containerd.io

sudo systemctl status docker	//验证docker运行状态

docker container run hello-world	//运行Hello world容器

4.2 docker基本命令

镜像(Image)是一个静态的、不可修改的文件,它包含了运行一个容器所需的所有文件系统、库和软件。镜像可以看作是一个只读的模板,可以用来创建多个容器。
容器(Container)是镜像的运行实例。它是一个独立且轻量级的运行环境,可以在其中运行应用程序。容器包含了一个镜像的副本,以及一个可读写的文件系统层,允许在容器内对文件进行修改。容器可以被创建、启动、停止、删除等操作。
简而言之,镜像是用于创建容器的模板,容器是镜像的一个实例,它可以在其中运行应用程序。

参考博文:docker常用命令汇总Docker常用命令总结

使用sudo运行docker
  • 帮助启动类命令
systemctl start docker	//启动docker
systemctl stop docker	//停止docker
systemctl restart docker	//重启docker
systemctl status docker		//查看docker状态
systemctl enable docker		//设置开机自启
systemctl disable docker	//取消开机自启
docker info					//查看docker概要信息
docker 命令(如run) --help		//查看docker命令帮助文档
docker system df -v			//查看单个image、container大小
  • 镜像相关
docker images					//查看镜像列表
docker search ubuntu			//镜像搜索,搜索 ubuntu 基础镜像
docker pull 镜像名				//下拉镜像
docker pull 镜像名:Tag
docker rmi -f 镜像名/镜像ID		//删除镜像
docker save 镜像名/镜像ID -o 镜像保存在哪个位置与名字	//保存镜像
docker load -i 镜像保存文件位置	//加载镜像
  • 容器相关
sudo docker ps						//查看运行的容器
sudo docker ps -as					//-a:查看所有容器,包含正在运行和已停止的;-s:顺便看内存
docker run -it -d --name 要取的别名 -p 宿主机端口:容器端口 -v 宿主机文件存储位置:容器内文件位置 镜像名:Tag /bin/bash 				//创建容器

docker exec -it container /bin/bash 或 docker attach container	//进入正在运行的容器并以命令行交互
docker exec -it container [shell命令]		//可直接执行容器内部命令
			-d    在后台运行命令
			-i    即使没有附加也保持 STDIN 打开
			-t    设置TTY

docker start 容器ID或者容器名		//启动已停止运行的容器
docker restart 容器ID或者容器名		//重启容器
docker stop 容器名/容器ID			//停止容器
docker rm -f 容器名/容器ID			//删除一个容器

4.3 部署服务-宝塔面板

参考博文:docker下安装linux宝塔,docker中安装宝塔面板

  • 安装宝塔
//1、下载一个docker镜像,这里用ubutun
docker pull ubuntu
//2、创建一个docker容器命名为baota并后台运行,然后将宿主机的20,21,80,443,888,8888这五个端口映射到docker容器中去。
//将宿主机的/home/www文件夹映射到docker容器的/www上去,privileged表示在运行容器的时候,给容器加特权,设置容器有写文件的权限。
docker run -i -t -d --name baota -p 20:20 -p 21:21 -p 80:80 -p 443:443 -p 888:888 -p 8888:8888 --privileged=true -v /home/www:/www ubuntu
//3、进入容器
docker exec -it baota /bin/bash
//4、执行宝塔面板ubuntu安装命令
wget -O install.sh https://download.bt.cn/install/install-ubuntu_6.0.sh && bash install.sh ed8484bec
  • 访问宝塔
    安装宝塔后,访问端口随机生成了别的端口,正好联系一下docker修改容器端口。
    参考博文:修改Docker容器端口
docker stop 容器		//停止容器
systemctl stop docker	//停止docker

//修改以下两个文件中的端口映射
/var/lib/docker/containers/容器ID*/hostconfig.json
/var/lib/docker/containers/容器ID*/config.v2.json

systemctl restart docker	//重启docker
docker restart 容器			//重启容器

这时候局域网访问{主机ip:端口/安全入口名称}即可登录面板。
在终端输入bt,选择14选项也能查看具体访问入口

  • 搭建网站
    安装LNMP,建立站点,内网穿透啥啊,注意PHP的版本用到了7.2才适配了我以前的网站数据(php7.2、Nginx1.20.2、MySQL5.7.40、phpmyAdmin5.0、ftp1.0.49),猜测是版本问题导致网站显示有问题。不过后来就都搞好了,还得是性能高的小主机呀,网站运行比之前小盒子的运行的网站流畅多了,看来个人网站还得看服务器的CPU能力。

  • 一键开/关网站

(1)startweb_docker.sh

#!/bin/bash
echo "启动docker服务"
sudo systemctl start docker
echo "启动baota容器"
sudo docker start baota
echo "运行容器中的自启服务,bt、nginx、mysqld、frp等服务"
sudo docker exec -it baota /etc/rc.local
echo "ok.^_^."

其中容器内的rc.local

#!/bin/bash
# autostart program
/etc/init.d/bt start
sleep 1
/etc/init.d/nginx start
sleep 1
/etc/init.d/mysqld start
sleep 1
nohup /frp/frpc -c /frp/frpc.ini >/dev/null 2>&1 &
echo "frp running"
sleep 1

(2)stopweb_docker.sh

#!/bin/bash
echo "关闭baota容器"
sudo docker stop baota
echo "关闭docker服务"
sudo systemctl stop docker.service
sudo systemctl stop docker.socket
echo "ok.^_^."

4.4 部署服务-某聊天机器人

参考链接:晓然
源码资源:ChatGPT-Next-Web

  • 部署环境
    1.OS:Ubuntu 22.04.3 LTS x86_64
    2.Docker版本:Docker version 24.0.6
    3.API的url和key:closeai

  • docker部署

docker pull yidadaa/chatgpt-next-web	//获取镜像
sudo docker run -d --name container_name -p host_port:3000 -e OPENAI_API_KEY="api key" -e CODE="log in password" -e BASE_URL="proxy_web" -e DISABLE_GPT4="1" -e PROTOCOL="https" yidadaa/chatgpt-next-web
	//OPENAI_API_KEY:OpenAi api key sk-开头的一串字母
	//CODE:授权码;网页端需要授权码或者自己的api key才可以使用
	//BASE_URL:OpenAI 的接口代理 URL,如果在墙外,可直接指向正宫api.openai.com。
	//PROTOCOL:openai接口协议,默认是https,可选项,但是要和BASE_URL使用的协议一致。
	//-p是暴露的端口
	//DISABLE_GPT4="1"禁用4.0。
  • 内网穿透方案
    以上容器运行后只能在局域网通过localhost:host_port访问。公网访问该如何呢,当然是内网穿透啦!
    本机有两种方案:
    1、重新在主机搞一个内网穿透,把端口映射出去。
    2、基于4.3节的baota容器,使用宝塔面板新建一个站点作为反向代理服务器,并指向这个聊天容器的url。
    这肯定采用方案2,多省事(不过是在悟空数码增加一条http隧道)。

  • 反向代理服务器搭建

1、在宝塔面板新建站点。
在这里插入图片描述
2、创建代理服务器
在这里插入图片描述
完成以上操作,就能用自定义域名访问这个聊天web了,代理服务器在其中起到中继转发的作用。

4.5 vocechat聊天

sudo docker pull privoce/vocechat-server

sudo docker run -d --restart=always -p host_port:3000 --name vocechat-server -v host_path:/home/vocechat-server/data privoce/vocechat-server

详情点击:官方网站

五、使用习惯

5.1 ubuntu无线WIFI操作

sudo nmcli r wifi on	//开启WiFi
sudo nmcli dev wifi		//扫描附近的 WiFi 热点
sudo nmcli dev wifi connect "热点名称" password "密码" ifname wlan0	//连接到指定的 WiFi 热点
sudo nmcli r wifi off	//关闭 wifi

5.2 系统服务管理器指令systemctl

  • systemctl:管理系统服务的指令。
systemctl start xxx.service 		//启动nfs服务

systemctl enable xxx.service 		//设置开机自启动

systemctl is-enabled xxx.service	//查看是否开机自启动

systemctl disable xxx.service 		//停止开机自启动

systemctl status xxx.service 		//查看服务当前状态

systemctl restart xxx.service 		//重新启动某服务

systemctl list-units --type=service //查看所有已启动的服务
  • lm-sensors安装包查看cpu温度
sensors	//安装好lm-sensors后,直接查看cpu各个核的温度。

5.3 网络操作

netstat -apn	//查看所有进程和端口的使用情况

小主机安装NAS系统-飞牛fnOS

一、简介

在宿舍使用主力机PC通过无线连接Internet,并将无线网卡共享给以太网网卡,实现小主机通过与主力机PC以太网互联上网。这样只将小主机共享给主力机访问,更安全。

  • 主力机PC:以太网网卡右键-属性-共享
  • 小主机:使用以太网DHCP自动获取ip。

安装fnOS,好多东西都会了,也就没必要记录了。
在这里插入图片描述

二、Q&A

2.1 开启无线wifi

如何使用无线网卡?

sudo -i
nmcli device											#查看网络适配器列表
nmcli device wifi list									#查看当前wifi列表
nmcli device wifi connect "Wi-Fi名称" password "密码" ifname wlan_name	#建立连接,若有多个无线网卡,可使用ifname进行区分。
nmcli connection delete wlp2s0							#断开连接,并删除配置
nmcli device disconnect wlp2s0							#只断开连接

#如果无线和有线连接同时配置,有时候dhcp会不知道配置哪个,导致有线被挤掉
#所以我们就将有线连接配置为手动ip
nmcli con show											#检查是否已有对 enp1s0 的连接
nmcli con modify MyEthernet ipv4.method manual ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1 ipv4.dns "8.8.8.8,8.8.4.4"					#假设连接名称为 MyEthernet,你可以使用以下命令来设置静态 IP
nmcli con up MyEthernet									#启动修改后的连接

小主机自带的无线网卡信号不太好,那我们就购买了TP-Link家的无线网卡TL-XDN6000H,windows可以免驱动安装,但linux需要自己去TP官网下载驱动程序。

  • 驱动程序:TL-XDN6000H免驱版 V1.0 Linux系统驱动程序20240416
  • 安装过程及遇到问题:
1、查看是否安装了 build-essential 包
dpkg -s build-essential
#fnOS没有安装
Q1:sudo apt-get update软件源更新失败
A1:小主机同时连接了无线和有线,导致update失败,可以先断其中一个。
Q2:sudo apt-get install build-essential,缺少依赖。
A2:可以先安装sudo apt install -y aptitude,aptitude可以自动检测并安装缺少的依赖。再使用sudo aptitude install build-essential安装。
2、确认要使用哪个安装包
dpkg --print-architecture
3、安装或卸载
sudo dpkg -i aic8800fdrvpackage_amd64.deb	#安装
sudo dpkg -i aic8800fdrvpackage				#卸载

2.2 获取所处公网

curl 6.ipw.cn
curl 4.ipw.cn	#获取ipv4地址

三、获得一台VPS服务器

3.1 安全防护设置

  • 常用操作
sudo su		#进入root
passwd		#修改密码
sudo adduser name	#增加用户,并在/etc/sudoers中添加sudoer权限

sudo vi /etc/ssh/sshd_config #修改ssh配置文件的Port 22,进而修改访问端口
  • 防火墙操作
sudo apt install ufw
sudo ufw status			#检查防火墙状态
sudo ufw enable			#开启防火墙
sudo ufw disable		#关闭防火墙

#查询
sudo iptables -L -n -v | grep <端口号>		#查询特定端口号
sudo ss -tuln								#查看正在监听的端口
	-t:TCP 连接
	-u:UDP 连接
	-l:仅显示监听的端口
	-n:以数字形式显示地址和端口号

#allow或deny
sudo ufw allow 22/tcp   # 允许 SSH
sudo ufw allow 80/tcp   # 允许 HTTP
sudo ufw allow 443/tcp  # 允许 HTTPS

#一般不用
sudo ufw default deny incoming   # 拒绝所有传入流量
sudo ufw default allow outgoing   # 允许所有传出流量

3.2 内网穿透

使用frp实现内网穿透教程
用FRP配置toml文件搭建内网穿透
小主机—云服务器VPS(公网ip)之间的内网穿透,frp软件在0.52.0版本开始支持 toml格式的配置文件,在后继版本取消 ini配置格式。

服务端,配置frps.toml

bindPort = 7000			# frp服务的特定端口,防火墙也需放开该端口 
# 服务面板可查看frp服务状态信息
webServer.addr = "0.0.0.0"		# 后台管理地址,默认是127.0.0.1,如果是公网访问则改成0.0.0.0
webServer.port = 7001		# 后台管理端口
webServer.user = "user"		# (可选)后台登录用户名
webServer.password = "password"	# (可选)后台登录密码
# 加密
transport.tls.force = true  		# 服务端将只接受 TLS链接
auth.method = 'token'       	# 客户端访问验证方式
auth.token = "123456*" 		# 客户端访问验证密码,frpc要与frps一致
# 自定义的监听的端口,所有对服务器该端口访问将被转发到本地内网,做了反向代理可不处理防火墙放行
vhostHTTPPort = 80
vhostHTTPSPort = 443

执行

./frps -c ./frps.toml &

#创建frps.service服务启动
sudo vim /etc/systemd/system/frps.service
#相关命令
sudo systemctl start frps# 启动frp
sudo systemctl stop frps# 停止frp
sudo systemctl restart frps# 重启frp
sudo systemctl status frps# 查看frp状态
sudo systemctl enable frps# 设置为开机自启
[Unit]
# 服务名称,可自定义
Description = frp server
After = network.target syslog.target
Wants = network.target

[Service]
Type = simple
# 启动frps的命令,需修改为您的frps的安装路径
ExecStart = /usr/local/frp/frps -c /usr/local/frp/frps.toml

[Install]
WantedBy = multi-user.target

客户端,配置frpc.toml

# 初始配置
transport.tls.enable = true		# 从 v0.50.0版本开始,transport.tls.enable的默认值为 true
serverAddr = "202.xxx.xxx.xxx" 	# 服务端ip
serverPort = 7000 				# 服务端端口
auth.method = 'token' 			# 客户端访问验证方式
auth.token = '123456*' 		# 客户端访问验证密码
# 代理配置
[[proxies]]
name = "ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 10022
#customDomains = ["xxx.xxx.xxx.xxx"]
[[proxies]]
name = "web-80"
type = "http"
localPort = 10080
customDomains = ["xxx.xxx.xxx.xxx"]
[[proxies]]
name = "web-443"
type = "https"
localPort = 10443
customDomains = ["xxx.xxx.xxx.xxx"]
[[proxies]]
name = "dy_mysql" # 客户端服务名
type = "tcp" # 通讯方式
localIP = "127.0.0.1" # 客户端的ip(固定)
localPort = 3306 # 客户端服务端口
remotePort = 13306 # 映射到服务端端口(服务器需放行)

执行

./frpc -c ./frpc.toml &

#创建frpc.service服务启动
sudo vim /etc/systemd/system/frpc.service
#相关命令
sudo systemctl start frpc# 启动frp
sudo systemctl stop frpc# 停止frp
sudo systemctl restart frpc# 重启frp
sudo systemctl status frpc# 查看frp状态
sudo systemctl enable frpc# 设置为开机自启
[Unit]
[Unit]
# 服务名称,可自定义
Description = frp client
After = network.target syslog.target
Wants = network.target

[Service]
Type = simple
# 启动frpc的命令,需修改为您的frpc的安装路径
ExecStart = /usr/local/frp/frpc -c /usr/local/frp/frpc.toml

[Install]
WantedBy = multi-user.target

总结

1、frp利用7000端口实现服务端和客户端之间的互联,将云服务器的端口与小主机的端口进行映射,如云服务器10022-小主机22,云服务器10080-小主机80,记得云服务器的防火墙开放对应端口。
2、可使用自己域名映射到有公网ip的服务器,其中web服务(nginx)云服务器10080-小主机80之间的端口映射提供通道,使用test1.heihei.com访问,到小主机端的网站列表匹配对应test1网站内容。

四、docker使用

五、飞牛os虚拟机开启硬件直通

参考文章

  • 确保开启硬件直通选项
  • ssh登录系统,切换为root用户,完成如下修改,重启即可
nano /etc/default/grub
#找到GRUB_CMDLINE_LINUX_DEFAULT=”quiet i915.force_probe=7d55”,
#然后将其修改为GRUB_CMDLINE_LINUX_DEFAULT=”quiet i915.force_probe=7d55 intel_iommu=on iommu=pt”
#Ctrl+X保存退出
update-grub
update-initramfs -u -k all

小主机安装ubuntu服务器版本

一、简介

准备部署个人知识库
本地服务器(frp客户端)-云服务器(frp服务端),通过frp通道进行内网穿透,将本地服务器的ssh、1panel、maxkb等服务的端口映射到服务器的某个端口。

作为本地服务器,ssh建立的两条通道,保障能完成本地服务器的远程控制:

  • frp提供的ssh主用通道
  • 花生壳提供的ssh备用通道

二、常见设置

切换为静态ip

ip addr show	#查看当前网卡名称
cd /etc/netplan
sudo cp 01-netcfg.yaml 01-netcfg.yaml.bak  # 根据实际文件名调整
sudo vi /etc/netplan/01-netcfg.yaml  # 文件名可能为00-installer-config.yaml等[1,3,11](@ref)

network:
  version: 2
  renderer: networkd  # 服务器用networkd,桌面版可换为NetworkManager
  ethernets:
    ens33:             # 替换为你的网卡名称
      dhcp4: no        # 关闭DHCP
      addresses: [192.168.1.100/24]  # IP地址及子网掩码(CIDR格式)
      gateway4: 192.168.1.1          # 网关
      nameservers:
        addresses: [8.8.8.8, 8.8.4.4]  # DNS服务器
    
sudo netplan apply

扩展现有LVM逻辑卷(适用于已有未分配的物理卷空间)

vgdisplay ubuntu-vg  # 检查卷组剩余空间[1](@ref)
sudo lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv  # 将所有剩余空间分配给逻辑卷[1,5](@ref)
sudo resize2fs /dev/ubuntu-vg/ubuntu-lv  # 适用于ext4文件系统[1,6](@ref)
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值