向日葵远程控制ubuntu
一、简介二、问题及解决方法2.1 向日葵远程连接Ubuntu22主机黑屏?2.2 Ubuntu如何向日葵开机自启?2.3 无显示器情况下,windows远程桌面连接Ubuntu? 三、美化桌面3.1 安装/解压3.2 设置3.3 右上角显示实时网速 四、安装docker容器及部署微服务4.1 安装docker容器4.2 docker基本命令4.3 部署服务-宝塔面板4.4 部署服务-某聊天机器人4.5 vocechat聊天 五、使用习惯5.1 ubuntu无线WIFI操作5.2 系统服务管理器指令systemctl5.3 网络操作
一、简介
硬件:酷睿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.04sudo 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-70EndSection Section "Screen" Identifier "Default Screen" Monitor "Configured Monitor" Device "Configured Video Device" DefaultDepth 24 SubSection "Display" Depth 24 Modes "1920x1080" EndSubSectionEndSection
重启后就能有一个虚拟屏幕,使用windows远程桌面
或者向日葵
即可实现远程连接。
貌似把上边儿新建的的xorg.conf配置文件
删了再重启就能恢复原来的物理桌面了,这就需要ssh
拯救了。
注:设置->电源,将节电选项中的息屏改为从不,防止连接中断。设置->隐私->屏幕,可能还要关闭一个自动锁屏。
三、美化桌面
参考博客Ubuntu 22.04 桌面美化之Mac Big Sur风格
ubunmac美化为macos风格
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//添加PPAsudo apt-get updatesudo apt-get install indicator-sysmonitor//安装indicator-sysmonitor &//后台运行>>最后在图形界面中设置开机自启,显示格式。
四、安装docker容器及部署微服务
4.1 安装docker容器
参考博文:Ubuntu22.04安装Docker
Docker 是一个高效、灵活、轻量级
的容器化平台,可以在单个操作系统上实现多个容器化应用的隔离和运行。
也就是说可以自己在容器里随意搞,把里边儿环境搞坏也不会影响系统环境,类似于anaconda。
更新apt的密钥和仓库源 sudo apt updatesudo 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.iosudo systemctl status docker//验证docker运行状态docker container run hello-world//运行Hello world容器
4.2 docker基本命令
镜像(Image)
是一个静态的、不可修改的文件,它包含了运行一个容器所需的所有文件系统、库和软件。镜像可以看作是一个只读的模板,可以用来创建多个容器。
容器(Container)
是镜像的运行实例。它是一个独立且轻量级的运行环境,可以在其中运行应用程序。容器包含了一个镜像的副本,以及一个可读写的文件系统层,允许在容器内对文件进行修改。容器可以被创建、启动、停止、删除等操作。
简而言之,镜像是用于创建容器的模板,容器是镜像的一个实例,它可以在其中运行应用程序。
参考博文:docker常用命令汇总 、 Docker常用命令总结
使用sudo运行docker
帮助启动类命令 systemctl start docker//启动dockersystemctl stop docker//停止dockersystemctl restart docker//重启dockersystemctl 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 镜像名:Tagdocker 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 设置TTYdocker start 容器ID或者容器名//启动已停止运行的容器docker restart 容器ID或者容器名//重启容器docker stop 容器名/容器ID//停止容器docker rm -f 容器名/容器ID//删除一个容器
4.3 部署服务-宝塔面板
参考博文:docker下安装linux宝塔,docker中安装宝塔面板
安装宝塔//1、下载一个docker镜像,这里用ubutundocker 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.jsonsystemctl restart docker//重启dockerdocker 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/bashecho "启动docker服务"sudo systemctl start dockerecho "启动baota容器"sudo docker start baotaecho "运行容器中的自启服务,bt、nginx、mysqld、frp等服务"sudo docker exec -it baota /etc/rc.localecho "ok.^_^."
其中容器内的rc.local
#!/bin/bash# autostart program/etc/init.d/bt startsleep 1/etc/init.d/nginx startsleep 1/etc/init.d/mysqld startsleep 1nohup /frp/frpc -c /frp/frpc.ini >/dev/null 2>&1 &echo "frp running"sleep 1
(2)stopweb_docker.sh
#!/bin/bashecho "关闭baota容器"sudo docker stop baotaecho "关闭docker服务"sudo systemctl stop docker.servicesudo systemctl stop docker.socketecho "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-serversudo 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//开启WiFisudo 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//查看所有进程和端口的使用情况