# Server notes ## 安全策略 - 修改 SSH 端口为 2235 - ufw 配置防火墙 - 参考 https://www.digitalocean.com/community/tutorials/ufw-essentials-common-firewall-rules-and-commands SSH 端口:2235 username: server 连接方式: ```bash ssh server@ip -p 2235 ``` 目前的内网 IP:10.249.72.12 已经配置静态 IP 地址,不确定后续能否稳定分配到静态地址,如果不能的话,可能需要跑一个定期更新的服务去获取当前内网 IP 再汇报出来。 域名解析 A 记录无法指向内网 IP,不然可以跑一个类似 DDNS 的服务。 ## 环境配置 - GCC 编译环境 - `sudo apt install build-essential manpages-dev` - Docker - 参考 https://docs.docker.com/engine/install/ubuntu/ - tmux - 参考 https://www.ruanyifeng.com/blog/2019/10/tmux.html - 基础使用: - ```bash tmux # 新建 tmux tmux attach # 连接上一个 tmux session Ctrl-b + c # 新建 tmux window Ctrl-d # 删除当前 session Ctrl-b + d # detach 当前 session Ctrl-b + [number] # 其中 number 为下面的窗口编号 切换过去 ``` ## 网络部分 我已经在我的云服务器上部署了 frp server,在笔记本上部署 frp client 使用内网穿透进行访问。 将 frpc、frps 都挂载为 Systemd Service,其中 frpc 分了两个,frpc2 负责业务转发,frpc 负责 SSH 转发,防止更改业务配置导致失联(惨痛教训 如果你需要开放某个端口,可以参考下面的步骤,或者找我来进行配置。 ```bash vim ~/frpc2.ini sudo systemctl restart frpc2 ``` 远端服务器 IP 为 106.52.215.39. 在校园网内部优先使用内网 IP 进行访问,速度会更快。 frps、frpc 都使用 Systemd 配置了开机自启,若出现了异常状况,输入 `sudo systemctl status frps/frpc` 查看情况。 已经设置的端口转发: - 2235->2236:SSH 拉 GitHub 可以使用 https://ghp.quickso.cn 进行加速。 还有一种方案:使用 SSH 将本地的代理端口转发过去,然后使用 [gg](https://github.com/mzz2017/gg). ```bash= ssh -R 7890:localhost:7890 server@ip -p 2235 ``` Docker 代理比较阴间,参考 https://note.qidong.name/2020/05/docker-proxy/ 大部分的正常情况,使用 `gg command` 即可走代理。 查看某端口情况:`netstat -tunlp | grep <port>` ## Reverse Proxy 在腾讯云服务器上安装了 Nginx Proxy Manager. 发现并不是很好用。 改用 Caddy,使用 Systemd 挂载成服务,然后手动替换一个重新编译的版本,安装了 dnspod 的 Module,用来做 Let's Encrypt 自动认证。因为国内未备案服务器没法走 80 端口认证,所以只能用 DNS Challenge 凑合凑合。使用重新编译的二进制替换 /usr/bin/caddy 即可。 防止后续更新被覆盖掉,执行:`apt-mark hold caddy` 编辑 `/etc/caddy/Caddyfile` 进行配置。 ## Outline 使用 https://github.com/vicalloy/outline-docker-compose 进行部署。 本机 8888 端口,frp 转发到腾讯云的 8888 端口上,然后再走 Caddy 代理到 outline.codein.icu:8881 上。 防火墙放行 8881 即可。 最终访问地址:https://outline.codein.icu:8881 后台地址:https://outline.codein.icu:8881/uc/admin/auth/user ## Mattermost 使用 Mattermost Team Edition,已经部署完成。 本机 8065 端口,转发到腾讯云 8065 端口, 反代 8066 端口。 https://mattermost.codein.icu:8066 消息推送相关服务可能在国内不太可用。 ## 服务部署流程 推荐使用 Docker-Compose 进行部署。 在对应文件夹运行 `sudo docker compose up -d` 后,假设本机暴露端口为 `8000`,配置相应的 FRP 端口转发,`cd ~/frp` 后 `vim frpc2.ini` 进行相应的配置,可以参考之前的那些。假设转发到远端服务器 `8000` 端口。完成配置后输入 `sudo systemctl restart frpc2` 重启 frp client 加载配置。 在腾讯云服务器,输入 `sudo vim /etc/caddy/Caddyfile` 后添加相应的 reverse_proxy,格式可以参考之前的那些配置。设置完成后 `sudo systemctl restart caddy` 加载配置即可。假设代理后的端口为 `8001`. 随后 `sudo ufw allow 8001` 放行对外访问的端口即可。 特别地,如果需要开启服务器上原始端口的内网访问,可以在服务器上执行 `sudo ufw allow 8000`,在内网中打开防火墙访问权限,即可使用 `内网ip:8000` 进行访问。 最终服务将会有两个访问渠道:Docker 直接暴露的 `内网ip:8000` 及 经过了 frp 端口转发及 Caddy 反向代理的 `外网ip(或域名):8001`.