服务器规格说明书
📌Tip
折腾死我了,服务器资源利用的差不多了,踩好多坑。
安装基础的软件
记录一下主服务器的常驻服务,比如什么nginx,博客,docker,gitea之类的。
使用的是centos8
Warning
service ssh status
Redirecting to /bin/systemctl status ssh.service
Failed to get properties: Access denied
一直出现这个错误,最后在stackoverflow找到了一个偏门的方法,我都不知道他在干嘛,不知道有什么隐患 kill -TERM 1
直接换系统了,好像是CentOS的问题直接换大便系统
Ubuntu记得装LTS软件源支持五年
加个源
deb http://security.ubuntu.com/ubuntu focal-security main restricted
deb http://security.ubuntu.com/ubuntu focal-security universe
deb http://security.ubuntu.com/ubuntu focal-security multiverse
deb http://archive.canonical.com/ubuntu focal partner
更新
apt-get update
apt-get upgrade
- Ubuntu基本的软件和依赖:
apt-get install -y wget vim tree net-tools gcc sl curl neofetch perl cpio asciidoc xmlto build-essential libpcre3-dev libssl-dev sqlite3
- Centos基本的软件和依赖:
yum install -y yum-utils wget vim tree net-tools crontabs gcc sl neofetch curl openssl htop zlib-devel openssl-devel perl cpio expat-devel gettext-devel asciidoc xmlto util-linux-user
git安装最新版[1]
sudo add-apt-repository ppa:git-core/ppa
sudo apt update
sudo apt install git
git config --global user.email "xxxxxx@gmail.com"
git config --global user.name "remoteServer"
- 调整时间和本地化
sudo timedatectl set-ntp true # 启用 NTP 服务
sudo ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime # 将时区设为“亚洲/上海”
sudo hwclock --systohc # 将硬件时钟调整到与当前系统时间一致
date -R # 以 RFC 5322 格式输出日期和时间。例如 Mon, 18 Jan 2021 11:04:16 +0800
#语言本地化 避免以后字符集问题
sudo apt-get install -y language-pack-zh-hans
sudo ./install-language-pack zh_CN # dpkg 可以忽略
sudo vim /etc/environment # 修改这个文件 LANG="zh_CN.UTF-8"
source /etc/environment # 启用
改一下ssh端口,root下有个snap作者一直不修复[2]
装OhMyZSH
把这个重组搬过来了
安装zsh切换默认
# yum install -y zsh
apt-get install -y zsh
chsh -s /bin/zsh
脚本安装Ohmyzsh
sh -c "$(wget https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"
所有的设置都存放在~/.zshrc
文件里
主题
git clone https://github.com/bhilburn/powerlevel9k.git ~/.oh-my-zsh/custom/themes/powerlevel9k
文件改变ZSH_THEME="powerlevel9k/powerlevel9k"
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
git clone https://github.com/zsh-users/zsh-autosuggestions $ZSH_CUSTOM/plugins/zsh-autosuggestions
安装autojump,支持j直接跳转
git clone https://github.com/joelthelion/autojump.git
cd autojump
./install.py
把提示的东西添加到~/.zshrc
文件尾。
修改插件
plugins=(git extract python pip npm node scala docker ant gradle golang redis-cli colored-man-pages zsh-syntax-highlighting zsh-autosuggestions)
需要添加的:
ZSH_THEME="powerlevel9k/powerlevel9k"
export DEFAULT_USER="whoami"
export TERM="xterm-256color"
POWERLEVEL9K_CONTEXT_TEMPLATE="%n"
最后这个是用来去掉阿里云前面又臭又长的主机名的,留下了用户名
nvm [3]一定要安完zsh之后搞,这样就不用手动加了curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
nvm ls-remote
记得安个最新的LTS
为了安全,如果sshd对属主的目录和文件权限不对,则ssh的免密码登陆不生效。 所属用户的.ssh目录权限应为 755 或者 700,不能是77x、777,需要保障other用户不能有w权限。
**rsa_id.pub及authorized_keys known_hosts的权限一般为644, rsa_id的权限必须为600 **
ssh 隧道,直接ssh B 就可以直接代理过去,不用别的配置,有时候在docker里面的ssh会连接失败但是大部分场景都够用。
Host A
HostName 192.168.1.2
User root
Port 22
Host B
HostName 192.168.1.3
User root
Port 8890
ProxyJump root@192.168.1.2
vscode搜索完之后按下Alt+Enter
快捷键,即可快速选取所有匹配的文本创建多行光标 Rime> build>luna_pinyin.schema.yaml>punctuator>half_shape里面修改"/": ["/", " // ", " /* */", ÷]
起docker各种服务
compose文件都起好了,安装然后就行了
安装docker[4]和docker-compose[5]命令行去文档找
📌Tip
我都写了docker-compose.yml里了
启动服务
端口:容器端口 | 功能 |
---|---|
22:22 | gitea的ssh顶替本机的ssh |
8001:25 | 轻量SMTP |
8002:9443 | 域名blogupdate |
8003:8000 | RSSHub |
8004:80 | zfile页面 |
8005:host | nginxwebui页面 |
22233 | ssh |
群辉的端口(约定优于配置)
端口 | 功能->服务器穿透端口 |
---|---|
5000 | nas面板 |
8096 | jellyfin |
- 博客 主NginxwebUI
- 端口 8005管理
- 域名 admin.nginx
- zfile图床
- 端口 8004
- 域名 static
- 4.1.5
- rsshub
- 端口8003
- 域名rss
- webhook
- 自建邮件docker[8],不安全
- 域名smtp
- 端口8001:25
- 只有一个SMTP功能,没有任何安全校验,注意发出去大概率会被认为是垃圾邮件,反正我自己用,添加白名单就行.
- 群辉以后可能要有的
- Yapi
- 邮件服务器-穿
- jellyfin
- moment照片
- 苹果时间机器
- Surveillance Station监控
- Calibre web
- 导航页
- 博客webhook-穿
- HomeAssistant智能家居
- filerun网盘
- 群辉chat私人聊天
- drive 想办法融合onedrive
- cloudsync统筹一下网盘
- rsshub -可以穿
- Docker装Aria2 With WebUI
- smb
域名配置
nginxWebUI里面直接添加。
几个资源,自动生成配置文件,申请证书。
申请SSL,cloudflare->个人配置->API key -> Global API Key -> view API key 邮箱+key填进去
ssl 接收到一个超出最大准许长度的记录。 错误代码 ssl_error_rx_record_too_long 谷歌搜索443 ssl[9]
加了ssl之后不能自动跳转https,纯域名访问就可以,原理我也没深究[10]
头部添加特殊的header自动跳转https
ufw
用户防火墙,配置完nginx之后,依然可以通过http+域名:端口访问,配置user fire wall禁止端口特定放行。
配合http跳转https,就可以强制只能通过域名访问了。
记得配置nginx的转发要用127.0.0.1。
[11]
Warning
开了个 Docker 容器,绑定了 -p 3306:3306
并开启了 ufw
。发现竟然外网可以直接访问!!
原来 Docker 会默认直接加规则到 iptables,所以 UFW 防火墙对 docker 无效。
基本上可以找到的解决办法就是首先禁用 docker 的 iptables 功能,但这也意味着放弃了 docker 的网络管理功能
github有个答案
无法解决,就这样了,丑陋
因为docker是直接添加iptables管理网络,ufw直接没用,如果手动更改它的iptables那就相当于docker的网络管理没用了,没办法,正式生产环境肯 定会有网关和内部服务器,就可以完美避免了。丑陋。
Bug #1575053 “Please move the “$HOME/snap” directory to a less o...” : Bugs : snapd package : Ubuntu ↩︎
GitHub - nvm-sh/nvm: Node Version Manager - POSIX-compliant bash script to manage multiple active node.js versions ↩︎
升级到umi 3.1.0 打包项目卡死,不知道为什么,哪位大佬给看下 · Issue #4423 · umijs/umi · GitHub ↩︎
当虚拟目录不是在80端口且打开ssl时出错 ssl_error_rx_record_too_long _ikmb的博客-CSDN博客 ↩︎
GitHub - chaifeng/ufw-docker: To fix the Docker and UFW security flaw without disabling iptables ↩︎