目录
写这篇文章的目的是我有个囤服务器的坏毛病,服务器越来越多,每次配置服务器总是有一些重复的步骤,这里将它们记录下来,以备下次使用。
(最近心水了Ansible这个工具,不过还没学会,所以这个教程还是用得上的)
Centos新建用户并赋予SUDO权限
|
|
Centos防火墙配置
防火墙配置
|
|
打开端口 上面说明都是通过服务的配置文件打开端口,但是有时候不是所有服务都带有配置文件。在这种情况下,您有两种选择。您可以打开指定的端口,也可以定义新的FirewallD服务。
例如,Plex服务器监听TCP协议32400端口,可使用–add-port=选项在当前会话的public区域中打开32400端口。
协议可以是tcp或udp。要验证是否已成功添加32400端口,请使用–list-ports选项列出已打开的端口。
要在重新启动后使端口32400保持打开状态,请使用–permanent选项运行相同的命令,将规则添加到配置文件中。
删除端口规则的语法与添加端口时的语法相同。只需使用–remove-port选项即可。
|
|
将本地用户添加到docker用户组
Docker daemon 绑定的是 Unix socket,这就导致 docker 需要 root 权限才能使用,但这十分麻烦,因为其他用户必须经常使用 sudo。 为此,docker daemon 创建 Unix socket 时,会允许所有 docker 组内成员访问,所以我们只需要将用户加入 docker 组内就可以避免使用 sudo。
- 创建 docker 组:sudo groupadd docker
- 将用户加入 docker 组内:sudo usermod -aG docker $USER
- 重新登录
一些好用的self-host服务
dockge 和 uptime-kuma 配置
以前自己要起服务总是会去捣鼓容器镜像,但是最近越来越喜欢使用简单的可视化操作,于是dockge
这个应用出现在了我每台服务器上。
可以使用容器化部署该应用,具体的方法这里不会详述,主要介绍该应用在我的qnap
上进行反向代理的时候出现的问题,主要是在npm
上配置反代后一直504,后来看后台,dockge
压根没有收到请求。
要点如下:
- 在配置该应用反代时,切记打开websocket选项
- 第二就是npm需要和dockge做桥接
docker镜像
因为一些原因,我们都知道最近的docker hub国内镜像都挂掉了,目前是采用自建镜像的方案。
下面的仓库给了一些自建的整套软件,可以参考参考。
参考仓库:https://go.opensl.life/bTHmv
在使用国内服务商的服务器时,还需要配置docker-ce镜像,centos可使用如下命令:
|
|
参考文档:https://go.opensl.life/k2M6g
Nginx-Proxy-Manager 添加 media type
常常会有一些新文件类型添加到了本地文件托管服务中,如果不正确配置media type,那么也许你从链接访问时就会直接变成下载。亦或者,在hugo等使用该连接时,hugo也无法处理该文件的MediaType。
从这里,可以看到配置content type的方法 > https://nginxproxymanager.com/advanced-config/#custom-nginx-configurations
也就是说,我们需要在http头中添加你需要支持的文件类型,下面是一个文件示例。
content/zh-cn/notes/devel/server-setup/http_top.confCONF
types {
application/wasm wasm;
image/avif avif;
}
WIN10 和 WIN11 跳过联网激活
前几天在M系列macbook上安装windows虚拟机,系统初始化时候无论如何也无法连接网络,查了一下才知道需要进了系统以后安装vmware-tools才可以联网。反过来讲,最新的Windows系统又要求必须要联网才可以激活进入系统。于是,就有了这么一条。
WIN10 和 WIN11 初始化配置或重装系统时,正常安装进度时会提示登陆微软帐号,不得不说这个步骤非常不友好,那我们如何跳过强制登陆微软帐号安装系统呢,可按以下步骤:
1、开机看到安装画面,同时按 Fn+Shift+F10,调出命令提示符窗口,输入 OOBE\BYPASSNRO 回车(不区分大小写);
2、等待重启即可选择 “我没有 Internet 连接”, “继续执行受限设置” 即可跳过联网激活;
3、按个人喜好自己设置即可看到 Windows 界面。
小盘鸡垃圾清理
linux-trash-clean
转载于: Linux 清理磁盘空间常见操作
使用如下方式可以清理 Linux 的绝大部分垃圾。
清理 journal 日志
一般可以清理 2~3 GB。
- 查看 journal 日志占用的硬盘空间:
|
|
- 一次性清理 journal 日志:
|
|
注意
这两个操作只是一次性清除日志,并不能限制以后的日志文件不会超过这个大小。很多博客里说这两个操作可以限制日志文件的大小,属实是误导人。
如果需要永久限制日志文件的大小,需要修改 /etc/systemd/journald.conf
文件。
- 永久限制 journal 日志的大小:
journald.conf
[Journal] SystemMaxUse=10M # 硬盘中只保留最近 10M 的日志 RuntimeMaxUse=10M # 内存中只保留最近 10M 的日志
- 不保留日志
journald.conf
[Journal] Storage=none # 丢弃所有的日志,不保存到内存或磁盘
危险
不要使用 rm
命令来删除 journal 日志。参考
删除日志释放空间最好不要用 rm
清理 apt-get 缓存
一般可以清理数百 MB。
apt-get clean
清理 pip 缓存
一般可以清理两三百 MB。
rm -r ~/.cache/pip
清理旧版本 snap 包
一般每个旧的 snap 包可以清理 100 MB。
- 列出所有的 snap 包:
snap list --all
可以见到很多标记为disabled
的 snap 包,这些包是可以直接卸载的。Name Version Rev Tracking Publisher Notes certbot 1.26.0 1952 latest/stable certbot-eff✓ classic cmake 3.23.0 1070 latest/stable crascit✓ disabled,classic cmake 3.23.1 1082 latest/stable crascit✓ classic core 16-2.55.2 12941 latest/stable canonical✓ core,disabled core 16-2.54.4 12834 latest/stable canonical✓ core core18 20220309 2344 latest/stable canonical✓ base core20 20220318 1405 latest/stable canonical✓ base
- 删除这些重复的 snap 包:
snap remove XXXX --revision YYYY # XXXX 是软件的 name,YYYY 是软件的 Rev
- 也可以使用这个脚本清除:
来自
How to Clean Up Snap Package Versions in Linux
#!/bin/bash # Removes old revisions of snaps # CLOSE ALL SNAPS BEFORE RUNNING THIS set -eu snap list --all | awk '/disabled/{print $1, $3}' | while read snapname revision; do snap remove "$snapname" --revision="$revision" done
清理登录日志
这个文件是记录错误登录的日志,如果有人每天试你的密码来暴力破解你的 ssh,那你的这个文件就会很大。
echo "" > /var/log/btmp
该文件同理
echo "" > /var/log/auth.log
同理,不应当使用 rm
而是使用 echo
来清空这两个日志。
清理 docker
- 查看空间占用情况
docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE Images 5 1 645.4MB 611.9MB (94%) Containers 1 1 0B 0B Local Volumes 1 1 69.54kB 0B (0%) Build Cache 0 0 0B 0B
- 清理 Build Cache
docker system prune --volumes
这会清除所有:- 停止的 Container
- 未被任何 Container 所使用的 Network
- 未被任何 Container 所使用的 Volume
- 无实例的 Image
- 无实例的 Build Cache
- 清理 Images
上一步中可能不会清理 Images,从而在
docker system df
中仍然能看到 Images 的空间占用。这一步可以清理这些 Images。 查看所有的 Imagedocker images -a
清理指定的 Imagedocker rmi <IMAGE ID>