一直想写这样类型的教学式文章,方便自己碰到问题时能够简单处理。

正好看到知乎的这篇文章,写的很全面,就直接搬过来。

转自知乎云服务器那些好玩有趣的项目

友友们,由于上海疫情我从4月初开始就居家隔离,足不出户,闲来无事又把原来的阿里云服务器掏出来重新玩了一遍。看到知乎上有不少帖子都介绍了如何在云服务器上部署一些好玩的项目,但是都太过于分散,没有一篇综合性的帖子教大家从头开始租一台云服务器,并列举一些好玩的应用,所以今天写的这篇文章就把过往玩云服务器的一些笔记和经验总结一下,有兴趣的友友们可以玩一玩。

注:本篇所使用的云服务器系统为Ubuntu 20.04.4 LTS版本(LTS表示long term support长期支持),云服务器为腾讯云4核8G内存10M出网带宽

云服务器能拿来干嘛?

通常云服务器都是提供给企业部署数据库和工具链,有的也用来搭建宣传网站,云服务器背后的实质是提供商自己的大型计算中心,这块目前国外做的比较好的有微软的Azure和亚马逊的AWS,国内这块阿里腾讯华为很早就开始布局云计算,云存储,云服务器的优势是省去了企业自己买服务器搭建整套系统的运营维护成本,典型的云服务器提供商也都支持弹性硬件资源,这样也免去了在服务器硬件资源不够的情况下扩容的麻烦。总而言之云服务器相当于是企业租用提供商的硬件资源。

先撇开企业的商业用途不说,个人租用一个云服务器和企业级云服务器在硬件资源上本质没有任何区别,主要差别在于24h的人工技术支持这块。下面就给大家介绍一下:

1. 为什么要用云服务器,能学习到哪些知识
2. 如何选一个适合自己的云服务器
3. 如何进行一些云服务器的基本操作
4. Ubuntu云服务器有哪些好玩实用的项目

一、为什么要用云服务器,能学习到哪些知识

通常个人的云服务器主要是用来学习一些网络和计算机知识,云服务器非常适合学习linux和人工智能。当然肯定有人说学Linux可以在自己电脑或者买个开源硬件例如树莓派,没错,我尝试过在自己的电脑上装VMware虚拟机跑Ubuntu,由于虚拟机本身也占用了电脑的部分硬件资源,如果电脑配置不是很高的话,会稍许有点卡。我自己也有一块几年前买的树莓派4B 4GB版本,当时是400出头入手,最近看了一下某宝由于芯片供应短缺和疫情的影响,现在一块树莓派已经涨价到快1000块钱了,如果友友们是学生党的话估计有点难承受。像云服务器,最基本的入门级有2核2G,2核4G,4核8G,下面就从我自己对树莓派4B,4核8G的腾讯云服务器来和个人电脑(11代i5,3.1GHz 8核)对比下优劣势。

对于从没接触过云服务器、Ubuntu Linux的萌新来说,最简单的就是在云服务器上搭建一个windows系统,然后通过远程桌面把这台云服务器当远程电脑来用,几个典型的云服务器提供商例如阿里云,腾讯云,华为云都提供了控制台,直接在控制台里面选择系统为windows,然后会一步步教你如何通过本地的电脑远程桌面连接。本篇文章重点是介绍一些可以部署在云服务器上的好玩的开源项目,以及如何一步步使用。

通过把玩云服务器可以学到很多linux知识:
1. 网络的基础知识 - IP地址,端口,内网,外网,NAT内网穿透,代理服务器
2. SSH命令行 - Linux常用操作命令和运行原理
3. Docker容器技术的基本知识和使用
4. 如何搭建个人网站/博客,Gitlab服务器,甚至是云VSCode,以及使用网页管理软件对数据库,Docker等进行基本管理

二、如何选一个适合自己的云服务器

云服务器对于新用户相比老用户有很大的优惠,国内像腾讯云、阿里云、华为云每天都有特价活动,我差不多是在去年这个时候在阿里云官网特价活动时买了一个2核2G的轻量应用服务器,98一年,快到期了仍然可以继续以这个价格续费,所以直接续到了2024年。

今年由于阿里云2核2G的性能部署一些大型的java应用已经捉襟见肘,例如在部署xwiki的时候CPU和内存总是会飙到100%,然后卡死,所以我索性又买了一年的腾讯云4核8GB内存10M带宽,官网原价一年2600,三年7800,我在某鱼上找到一个商家买的只需要一年260,真是太实惠了,前提必须是第一次使用的新用户,后悔没直接买三年的。各位友友们如果还发现什么特别的优惠渠道,可以私信我。

某鱼给出的云服务器价格,供参考

从个人的使用体验来看,国外的云服务器由于网速原因就不用考虑了,国内这三家的云服务器相同规格的性能都差不多,有人做过专业的评测,这里就不多说了。腾讯云这块做的最完善使用体验最好,帮助信息也很全面,阿里的使用体验是稍微差一些,华为云没用过不知道。

从经济性来看,腾讯云的优惠是最大的,其次是阿里云,华为云的优惠最少也最贵。这三家每年任何时候都有新用户的特价活动,活动页面就摆在官网左上角最显著的位置,活动页面的链接如下:

阿里云:https://www.aliyun.com/

腾讯云:https://cloud.tencent.com/

华为云:https://activity.huaweicloud.com/

三、如何进行一些云服务器的基本操作 - 控制台

在购买好云服务器之后,进入控制台就可以对云服务器进行一些基本操作,这里以我自己的腾讯云为例:

重装Ubuntu 20.04 LTS

进入控制台后,选择右上角的更多操作-重装系统,这里以Ubuntu 20.04 LTS官方镜像为例,点击确定开始重装,LTS表示长期支持,目前20.04是Ubuntu提供的非常稳定的Linux版本,很多企业级服务器都在用。

控制台界面

大概一分钟不到,云服务器就自动重装好了,回到控制台就可以查看系统的一些基本信息:

概要:可以查看公网IP(这个要记住,登录ssh要用),内网ip,常用按你牛,实例(此云服务器)的基本状态信息。
防火墙:主要是用来开放或限制一些端口,端口范围是0~65535,常见的默认端口号:22(ssh),80(http非安全),443(https安全),3306(MySQL),138和445(samba网盘 tcp),137和138(samba网盘 udp)。出于安全考虑,建议是需要多少端口开多少端口,默认端口号也可以改(一般在linux /etc目录下的配置文件中修改)。对于第一次使用Ubuntu Linux的萌新可以先把端口全部开放,避免某些应用被防火墙拦截无法访问,腾讯云默认开放了22,80,443这几个常用的端口。


快照:备份当前的状态用的,会把当前所有数据都备份,必要的时候可以回滚。注意:重装系统后快照数据都会丢失。
监控:可以查看CPU,内存,网络,硬盘IO等信息,主要用于监控系统的运行健康状况。

Ubuntu 系统如何使用 root 用户登录实例?

Ubuntu 系统的默认用户名是 ubuntu,并在安装过程中默认不设置 root 帐户和密码。用默认用户登录很多权限不够会很麻烦,可在设置中开启允许 root 用户登录。具体操作步骤如下:

1. 在控制台点击登录(有的叫一键登录),此时是以ubuntu普通管理员用户登录的ssh。
2. 执行命令 sudo passwd root ,设置 root 密码,提示密码更新成功。这里sudo是指以root权限执行命令。

通常使用时我们需要使用自己本地的命令行工具以root用户登录ssh,如果不是root用户登录需要在命令前加上sudo,可使用who命令查看当前登录的用户。

依次输入以下命令:

apt update  #更新apt软件源,腾讯云已经使用的国内ubuntu镜像源,所以速度超级快
apt upgrade  #更新所有软件
apt install nano #nano是ssh界面下很好用的文本编辑器
nano /etc/ssh/sshd_config #修改ssh的配置文件,如果友友们习惯用vim也一样,我是不习惯

找到 #Authentication,将 PermitRootLogin 参数修改为 yes。如果 PermitRootLogin 参数被注释,去掉首行的注释符号(#)。
找到 #Authentication,将 PasswordAuthentication 参数修改为 yes。
按CTRL+x 保存并回到到命令行,这样就可以通过自己电脑的ssh终端以root身份登录云服务器了。

使用ssh终端登录云服务器

接下来我们可以通过自己电脑的ssh终端以root身份登录云服务器,我用的是SecureCRT,界面美观实用,命令历史还能直接按↑查看。

协议选择SSH2,主机名/IP地址填写:控制台上的公网ip地址,端口号默认就是22,用户名写root,密码则是刚在sudo passwd root时输入的密码,这个要记住。

进入ssh命令行界面后,可以看到上一次登录时什么时候从哪个ip地址登录的,这里的ip地址是指你自己电脑的公网ip地址,可以在http://ip.tool.chinaz.com/查询到,不是内网ip地址。

下面列举一些常用的linux命令:

把主机名改为ubuntu:hostnamectl set-hostname ubuntu
更新源:apt update
更新软件:apt upgrade
查看已安装的软件:apt list --installed
清理旧版本的软件缓存:apt-get autoclean
清理所有软件缓存:apt-get clean
删除系统不再使用的孤立软件:apt-get autoremove
列出当前目录下的文件和文件夹: ls -la 或 直接 ls
切换到etc或特定目录下:cd /etc 或 cd /目录名 或 cd .. 回到上一级目录
查看当前所有系统进程信息:top (CTRL+C退出)
列出所有进程列表: ps -a
查看某一个进程的进程pid:ps -a |grep 进程名
杀掉某一个进程:kill 进程pid
建立文件夹:mkdir 文件夹名
查看8080端口使用情况:netstat -atp | grep 8080
查看网卡信息:ifconfig (如果没有可以通过apt install net-tools安装)
删除文件或文件夹: rm -rf /路径 (这个命令要慎用,某些大厂程序员就是在离职时用了rm -rf *把所有服务器的数据删除了)
复制文件/文件夹: cp 要拷贝的目录或文件路径 目标目录或文件路径
剪切文件/文件夹: mv 要剪切的目录或文件路径 目标目录或文件路径
进程控制: systemctl enable/disable/start/stop/restart/status 进程名

Linux常用的文件夹目录:

/etc 存放系统和应用的配置信息,通常一些应用的配置信息在/etc下都有单独的文件夹
/home 如果以非root用户登录,/home目录下就有这个用户名的文件夹,通常可以存放一些个人数据
/root 如果以root用户登录,/root就是默认的用户目录
/bin 执行程序目录,通常不用管,通常是/usr/bin目录链接过来的
/usr 用户程序目录,通常不用管
/var/log 系统日志目录,.log就是日志文件,可以用文本编辑器打开

具体linux的使用我就不在这里过多介绍,网上教程很多,下面介绍一些云服务必装的应用。

四、Ubuntu云服务器有哪些好玩实用的项目

本篇文章的重点来了,下面介绍以下我实际体验并强烈推荐的一些实用软件,这里推荐的都是免费开源的项目,我是个实用颜值控,界面必须先美观好看,其次好用实用才是王道。众所周知,Github是程序员的天堂,更是开源软件的集中地,Github上有无数的开源项目可以把玩,当然这里只介绍了其中的冰山一角。

TOP 1:Samba - 在windows中远程访问云服务器文件夹

对于不经常使用ubuntu命令行的友友们,动不动编辑一个配置文件或者找一个文件目录,反复在命令行里ls,cd,nano很痛苦,Samba可以将云服务器的文件夹目录直接映射到本地电脑,也可以直接当网盘使用。

1. 通过如下一个命令就可以安装samba:sudo apt install samba
2. 查看samba的运行状态:systemctl status smbd
3. 创建一个samba的root用户:sudo smbpasswd -a root
4. 接下来是samba的配置,也是大家在实用samba用到最多的一个问题,我这里通过samba将云服务器的根目录直接共享出来,以root访问,配置如下:
修改samba配置文件:nano /etc/samba/smb.conf

[global]
workgroup = WORKGROUP
server string = %h
security = user
map to guest = never
log file = /var/log/samba/log.%m
max log size = 1000
logging = file
panic action = /usr/share/samba/panic-action %d
server role = standalone server
obey pam restrictions = no
hosts deny = ALL
#出于安全考虑,这里填写你的本地公网ip地址或网段,可在 http://ip.tool.chinaz.com/ 查询
hosts allow = 101.29.121.43 101.29.*.*[ubuntu]
comment = share for users

path = /
browseable = yes
available = yes
writable = yes
public = yes

配置完之后CTRL+X 按两次回车键保存退出。
1. 使用检查samba配置文件是否有误:testparm
2. 确认无误后重启samba服务:systemctl restart smbd
3. 在控制台防火墙添加 138和445(samba网盘 tcp),137和138(samba网盘 udp) 用于开放samba使用的这四个端口。
4. 这时就可以通过本地计算机-我的电脑-映射网络驱动器,输入\\云服务器公网ip地址\ubuntu,使用其他凭据链接打勾,点击完成,输入root用户名和密码即可将云服务器根目录映射到本地。

上面提到配置smb.conf文件时,增加了hosts deny和allow,原来我在用samba的时候并没有设置这两项,结果通过/var/log/samba下面的日志发现每天都有全世界各地的计算机都在尝试登录我的云服务器,所以建议大家还是及时把安全设置加上比较好,这样就只有你本地电脑可以访问云服务器的目录了。

Windows不能访问的原因:防火墙需要开放tcp/139,445端口,udp/137,138端口

TOP 2:Docker + 网页管理工具Portainer - 将应用部署在云服务器一个个小容器里,随用随取,不用就删

之前用Ubuntu一直没有装docker,所有应用都直接部署在ubuntu上,结果导致ubuntu遇到各种系统问题重装了好多次,吐槽linux怎么能这么难用,接近崩溃。自从用了docker之后,发现docker是真相定律,docker部署应用和硬件基本无关,做到了真正的软硬解耦,所有应用直接部署在docker中,有问题直接删除容器就可以,下面介绍下docker的安装和使用。

Docker和Dockerhub官网: https://www.docker.com https://hub.docker.com

Docker安装: sudo apt install http://docker.io

查看docker的运行状态: sudo systemctl status docker

Docker的基本概念:存储卷volume,镜像image,容器container。其中存储卷是映射在宿主机上的文件系统,镜像是安装文件,容器是镜像文件创建后的运行环境。

Docker的常用命令:

获取帮助信息:docker --help
拉取镜像:docker pull 镜像名:版本
列出镜像:docker images
删除镜像:docker rmi 镜像id
强制删除所有镜像:docker rmi -f \$(docker images -q)
启动容器:docker run --name=容器名 镜像名:版本
查看容器运行状态:docker ps -a (如果是docker ps只能看到正在运行的容器,-a可以看到所有容器)
停止运行容器:docker stop 容器名
运行容器:docker start 容器名
删除容器:docker rm 容器名
杀掉所有正在运行的容器:docker kill \$(docker ps -a -q)
删除所有正在运行的容器:docker rm \$(docker ps -a -q)
查看容器日志(CTRL+C退出):docker logs -f 容器名
进入容器命令行(CTRL+D退出):docker exec -it 容器名 /bin/bash
容器与宿主间的文件复制:docker cp 容器名:路径 宿主机路径
删除所有未使用的系统,卷,镜像,容器,网络:docker system prune && docker volume prune && docker image prune && docker container prune

Portainer Docker部署

Portainer是Docker的网页管理工具,不过在建议学习Docker时还是先多敲敲命令,对docker的机制有个认识,再使用portainer管理,下面以portainer为例实现在docker中部署过程:

1. 创建portainer的存储卷:docker volume create portainer_data
2. 创建到ubuntu目录的映射文件夹:mkdir -p /data/portainer/data && mkdir -p /data/portainer/public
3. 通过docker run命令一键部署portainer:

docker run -d --name portainer -p 9443:9443 --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v /data/portainer/data:/data -v /data/portainer/public:/public portainer/portainer-ce:latest

下面对上面这个命令做个解释:
docker run表示运行容器,docker会自动完成pull拉取镜像,create创建容器,run运行容器
-d是指后台运行容器,这样日志不会一直打印在命令行中
--name 后面跟随的是容器名,这个自己可以随便取
-p表示把容器端口号开放给宿主某个端口,前面的9443是宿主机端口号(可改),后面的9443是容器的端口号(不可改)
--restart=always表示该容器每次重启后自动运行
-v 表示将容器的目录映射到宿主机目录下,格式是 宿主机目录:容器目录,这样不用每次通过docker exec命令进入容器需修改文件
portainer/portainer-ce:latest 是该镜像在dockerhub中的名字,冒号后是版本,例如1.0 2.0,latest表示最新
4. 查看运行日志:docker logs -f portainer
5. 确认无误后在控制台中将防火墙9443端口打开,在浏览器中输入 http://云服务器公网ip:9443

至此,友友们就可以在网页中自由去管理容器了,Dockerhub里面有非常多的镜像资源,大多数开源软件都有提供docker镜像版本。

当然,Docker的使用远远这么简单,进阶一点的可以自己写Dockerfile用docker build构建镜像,或者用docker-compose.yml直接写部署脚本。

TOP 3:MySQL数据库软件 + PHPMyAdmin数据库网页管理

MySQL是个很受欢迎的开源数据库管理系统,通常在服务器上部署一些wiki,博客,网站类应用时,实际数据都是存储在数据库中的,所以在服务器上搭建一个数据库管理系统必不可少。数据库由于它自身的特殊性,为了避免在容器删除时无意中将数据库删除,所以数据库一半不建议安装在docker容器中,可以在服务器上直接安装。

MySQL分为服务端Server和客户端Client,服务端通常是用于存储数据库的,客户端通常用户访问服务端的数据,所以我们最好将服务端和客户端都安装好。

第一步,安装MySQL并进行安全设置

apt install mysql-server mysql-client mysql-common #安装MySQL的服务端和客户端
sudo mysql_secure_installation #运行MySQL的初始化安全设置,会要求填写如下一些信息(很抱歉,学linux必须看懂基本的英文,因为绝大多数好东西都是英文的):

[root@ubuntu ~]#sudo mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MySQL to secure it, we'll need the current
password for the root user. If you've just installed MySQL, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none): **<–初次运行直接回车**
OK, successfully used password, moving on…
Setting the root password ensures that nobody can log into the MySQL
root user without the proper authorisation.
Set root password? [Y/n] <– 是否设置root用户密码,输入y并回车或直接回车
New password: <– 设置root用户的密码
Re-enter new password: <– 再输入一次你设置的密码
Password updated successfully!
Reloading privilege tables..
… Success!
By default, a MySQL installation has an anonymous user, allowing anyone
to log into MySQL without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] <– 是否删除匿名用户,建议删除,输入Y并回车
… Success!
Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] <–是否禁止root远程登录,由于我们需要在本地远程访问云服务器的数据库,所以这里输入n并回车
… Success!
By default, MySQL comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] <– 是否删除test数据库,输入y并回车
- Dropping test database…
… Success!
- Removing privileges on test database…
… Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] <– 是否重新加载权限表,直接回车
… Success!
Cleaning up…
All done! If you've completed all of the above steps, your MySQL
installation should now be secure.
Thanks for using MySQL!

这样一来MySQL就安装好了,由于MySQL的默认端口是3306,需要在防火墙开启3306端口。

第二步,配置MySQL用户权限和数据库信息

mysql -u root -p #登录MySQL并输入密码
use mysql; #使用mysql数据库
select host,user from user;  #发现root用户的访问权限是localhost,需要修改host为%
update user set host='%' where user='root';  #设置%为任意远程主机可访问
set global validate_password.policy = 0; #设置密码策略为低以便增加用户,有些root密码设置的过于简单,在运行下一步时会提示密码策略不够
CREATE USER 'admin'@'localhost' IDENTIFIED BY 'admin用户密码'; #增加admin用户
grant system_user on *.* to 'root'; #为root提供system_user权限
update user set host='%' where user='admin'; #设置%为任意远程主机可访问
grant all privileges on *.* to 'admin'@'%' with grant option; #授权
flush privileges; #更新配置
exit; #退出MySQL

第三步,在本地电脑测试MySQL连接

MySQL提供了PC端的数据库客户端软件MySQL Workbench,可以在官网下载。https://www.mysql.com/products/workbench/

PC端安装好MySQL Workbench之后,增加一个连接(connection),输入云服务器的公网IP地址,用户名root,密码是root密码,这个密码要记住。

如果连接成功,将会进入云服务器的MySQL管理界面,选择Administration中的Users and Privileges,可以看到用户,其中From Host是指可以访问的主机。

localhost表示只允许云服务器自身客户端访问
%表示任意远程主机均可访问

出于安全考虑,建议将root用户的Limit to Hosts Matching改为本地电脑的公网IP地址(例如101.29.121.43)或者IP地址段(例如101.29.%.%),再增加一个root用户IP地址填写localhost,这样root用户就只允许从自己本地电脑或云服务器的ssh访问了。

由于其他wiki博客等应用是部署在容器内的,所以可以将admin用户的主机权限改为云服务器的公网IP地址或内网IP地址。

如果需要增加数据库,则在命令行通过mysql -u root -p输入密码后,输入create database wikidb; 然后输入exit; 这样一个名为wikidb的数据库就建立好了。

记住几个参数,后面部署容器会用到:
主机IP:你的公网IP或内网IP地址
端口号:3306(默认)
用户名:admin
密码:你输入的admin密码

注:你建立的个人网站或云盘就算其他人注册了账号,密码也是存储在MySQL数据库中,即使是管理员也是看不到的,因为这些密码都是加密后的,保证充分的安全。

接下来安装MySQL的网页版管理软件PHPMyAdmin,这个可以直接部署在docker中,一条命令搞定。

docker run --name myadmin \
-e PMA_ARBITRARY=1 \
-e PMA_HOST=127.0.0.1 \
-e PMA_PORT=3306 \
-e PMA_USER="admin" \
-e PMA_PASSWORD="你的admin密码" \
-p 8443:80 \
--restart=always \
-d phpmyadmin:latest

防火墙开启8443端口,这样就可以通过 http://你的公网IP地址:8443 访问并管理你的MySQL数据库了。

TOP 4:Nginx网页服务软件 + NginxWebUI管理软件

Nginx是一款是非常出名的轻量级Web服务器,非常适合搭建网站。Nginx是俄罗斯的程序员Igor Sysoev开发并开源出来的,欧美要是有本事把Nginx给制裁了,全世界三分之一以上的网站都得完蛋。

NginxWebUI是国人开发的强大Nginx可视化配置工具,Nginx的核心是/etc/nginx/nginx.conf配置文件,Docker部署NginxWebUI后自己内嵌了Nginx,所以我这里只简单介绍下如何部署NginxWebUI

mkdir /data/nginxWebUI  #创建文件夹,用于将nginxwebui中的配置文件映射到宿主机中

docker run -itd --name nginxwebui \
-v /data/nginxWebUI:/home/nginxWebUI \
-e BOOT_OPTIONS="--server.port=8080" \
--privileged=true \
--restart=always \
-p 8080:8080 \
-p 80:80 \
-p 443:443 \
cym1102/nginxwebui:latest

防火墙开启8080端口,这样就可以通过 http://你的公网IP地址:8080 访问NginxWebUI界面了,第一次需要初始化管理员账号密码。

TOP 5:Wiki.js团队知识库网站

Wiki.js是我用过众多wiki团队知识库管理软件中界面最美观友好的,同时还完美支持中文以及各种丰富的插件,内嵌了WYSIWYG可见即可得编辑器。
Wiki.js在docker中的部署也非常简单,一个命令即可完成,前提是先部署好数据库服务器。

docker run --name=wiki \
-e DB_TYPE=mysql \
-e DB_HOST=你的公网或内网IP地址 \
-e DB_PORT=3306 \
-e DB_USER=admin \
-e DB_PASS=admin密码可自行设置 \
-e DB_NAME=wikidb \
-e UPGRADE_COMPANION=1 \
--restart=unless-stopped \
-p 3000:3000 \
-p 3443:3443 \
-d requarks/wiki:latest

docker run --name=wiki-update \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
--restart=unless-stopped \
-h wiki-update-companion \
-d requarks/wiki-update-companion:latest

防火墙开启3000端口,这样就可以通过http://你的公网IP地址:3000 访问Wiki.js了,第一次需要创建管理员账号。

TOP 6:CodeServer云端VS Code编辑器

做过开发的友友们应该知道VS Code,微软出品的免费开源的强大编辑器,支持上千个不同的插件,不同的编程语言和编译环境配置,CodeServer则是一个网页版的VS Code,界面和功能与桌面版VS Code一模一样,非常好用。

Github链接: https://github.com/coder/code-server
CodeServer的部署非常简单,mkdir和docker
run两个命令即可:

mkdir -p /opt/codeserver/config

sudo docker run -d --name codeserver \
-h codeserver \
-u root \
-p 5000:8080 \
-v "/opt/codeserver/config:/root" \
--privileged=true \
--restart=always \
codercom/code-server:latest

防火墙开启5000端口,这样就可以通过http://你的公网IP地址:5000 体验云端的VS Code了,可以在扩展中搜索chinese安装中文插件。

注:CodeServer登陆时需要输入密码,密码在宿主机/opt/codeserver/config/.config/code-server/config.yaml文件中。

TOP 7:speedtest - 网速测试

你是否想测试一下你的云服务器网速有多快呢?试试speedtest,只要以下简单两个命令就可以。

sudo apt install speedtest-cli  #安装网速测试工具
speedtest-cli

TOP 8:多功能 Linux 系统监控工具 - Glances

Glances 是一个系统监控工具,它把这些都联系在一起,并提供了更多的功能。我最喜欢的是,你可以在远程 Linux 服务器上运行 Glances 来监控本地系统的系统资源,也可以通过 Web 浏览器监控。

下面是它的外观。下面截图中的终端已经用 Pywal 工具美化过,可以根据壁纸自动改变颜色。

docker run -d --name glances \
-h glances \
--restart="unless-stopped" \
--privileged=true \
-p 61208:61208 \
-e TZ="Asia/Shanghai" \
-e GLANCES_OPT="-w" \
-v "/var/run/docker.sock:/var/run/docker.sock:ro" \
-v "/opt/glances:/glances/conf" \
--pid host \
joweisberg/glances:latest

然后使用http://IP地址:61208 就可以打开Glances了。

TOP9 - 免费的高效率工作笔记1 - 为知笔记

为知笔记定位于高效率工作笔记,主打工作笔记的移动应用,是国内一款“工作笔记”的云笔记类产品,最棒的是为知笔记支持WYSIWYG所见即所得编辑器。除了常用的笔记功能保存的网页、灵感笔记、重要文档、照片、便签等,为知笔记重点关注“工作笔记”和“团队协作”这两个方面,解决团队记录和团队协作沟通的需求

有兴趣的友友可以直接在官网试用体验,官网的适用版本和Docker部署版本有少许不同。

为知笔记 | 云笔记,个人知识管理,团队协作,资料库,知识管理,记事本,加密笔记,替代印象笔记,会议记录,日志,认知卸载 (wiz.cn)

通过下面这个命令可以直接部署为知笔记

docker run --name wiznote \
-h wiznote \
-p 80:80 \
--restart=unless-stopped -it -d \
-v /opt/wizdata:/wiz/storage \
-v /etc/localtime:/etc/localtime \
wiznote/wizserver

然后使用http://IP地址 就可以打开为知笔记了。

TOP9 - 免费的简洁易用工作笔记 - 思源笔记

思源笔记是一款本地优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

思源笔记的Docker部署需要绑定https域名,否则不成功,稍微麻烦一点,这里可以使用Nginx做反向代理。

sudo docker run -d --name siyuan \
-p 6806:6806 \
-u root \
-h siyuan \
-v "/opt/SiYuan:/root/siyuan" \
--privileged=true \
--restart=unless-stopped \
b3log/siyuan:latest \
-resident \
-workspace /root/siyuan \
-accessAuthCode 此处填写登录授权码 \
-servePath 此处填写你的https域名 \
-ssl

下面是思源笔记的界面,此外还有桌面客户端,非常简洁方便。

TOP10 - 强大美观的个人云盘 - Cloudreve

「Cloudreve」是一款出色的国产开源免费 PHP 网盘程序 (最新版已改为 Go 语言全新开发,无需配置 PHP 环境,性能更好,也更轻量强大)。它能帮您快速简单并以最低的成本搭建一个公私兼备的网盘系统。而且安装过程非常简单,只要你有自己的服务器,几分钟就能搭建起来。

sudo docker run -d \
  --name cloudreve \
  -p 5212:5212 \
  -h cloudreve \
  -e TZ="Asia/Shanghai" \
  --restart=unless-stopped \
  -v /opt/cloudreve/uploads:/cloudreve/uploads \
  -v /opt/cloudreve/config:/cloudreve/config \
  -v /opt/cloudreve/db:/cloudreve/db \
  -v /opt/cloudreve/avatar:/cloudreve/avatar \
  xavierniu/cloudreve:latest

然后使用http://IP地址:5212 就可以打开为知笔记了。


Q.E.D.