
https://cloud.tencent.com/apply/p/56v341wnov9
开箱即用的轻量应用服务器 Lighthouse,搭配极简运维面板1Panel& Halo 建站系统的高效组合,诚邀所有开发者与技术爱好者分享你的脑洞玩法与深度心得,让经验流动,让创意发光!
2025年10月09日-11月09日
选题创作
文章类:>800字(代码块不计入)需包含高清截图或图表,逻辑严谨,步骤清晰。视频类:>1分钟,提供公开播放链接(平台不限)画面清晰、演示细致、讲解生动。二、发布作品欢迎将您的作品发布在您常驻的平台,如腾讯云开发者之四先西只十江3nE808066 0EV2EX、Linux DO 等。三、提交作品选择链接或扫描海报下方二维码进行投稿https://cloud.tencent.com/apply/p/56v341wnov9注:投稿作品需体现腾讯云轻最应用服务器作为基础环境,如轻量想关活动页/购买地址均可。
摘要:
适合第一次更换 1p面板的用户参考,安装基础功能,本人踩过的坑希望能给大家带来借鉴。
最新编辑 更新 2025年10月30日 修正邮局配置解决遗留问题 增加 vpn挂载盘详细步骤 更新 2025年10月29日 修正邮件配置
更新 2025年10月20日 增加 安装 vpn 详细过程 增加 安装 邮局 。配置暂时未能调整到最优化。后期在更新文章
忍宝塔很久了,但一直没有动力更换,俗话说的好。 能运行就不要动它,这是千古不变的真理。 宝塔用了很多多年,个人用起码一点问题都没有,还是挺好的。
但随着时间的增长,哪怕后来都不动它,也没有过新装卸载过任何组件前提 总会随机出现各种莫名其妙的py 报错,面板本就没几个控制功能。还总报错。 不理它把,也没事。修复问题把,还的折腾。。所以真理就是 能运行就别动了。

借着这次正文,索性就折腾下。这里顺便做下笔记。

一台机器导数据麻烦,就买一个月的轻量存储

宝塔在更换前,一定要做好备份。 做备份的最方便的方法就是 制作镜像
镜像和快照最大的区别就是恢复,快照一部就能恢复 镜像需要在重装系统-使用自定义镜像-在设置root密码 步骤太繁琐,功能都是恢复。 快照更适合折腾用,比如新装好面板,快照。 之后折腾一个模块,快照一下。出问题恢复步骤也少也容易。 镜像更像冷备份,用之前得解冻,故此旧宝塔状态用镜像更合适

桀桀桀,合理的利用规则能有意想不到的效果。 备份步骤太多,备份点不够用。 跨地域复制 来试试。
本人操作步骤是如下,大家可以借鉴下。 1.单步骤调试前做镜像,2个镜像名额足够完成单模块功能调试。 2.单模块功能调试完成,下一个模块调试前。制作镜像 3.本机镜像满5个后用,使用 跨地域复制 随便找个区复制过去。 (复制到其他区,之后删除本机镜像。) 4.重复步骤3.(17个区一个区5个名额 )=85个镜像 85个镜像 还要啥自行车。随便折腾

宝塔面板下内存占用480.0MB Nginx 1.28.0 MySQL 10.6.20-MariaDB Redis 8.0.3 PHP 8.3.24 PHP 7.4.33 宝塔邮局管理器 6.5

开始装1Panel-更换系统为 Debian12,别问,问就是CentOS7不维护了。 否则继续死磕CentOS7,Debian12是唯一代替CentOS7资源占用最小 各家程序支持最广的系统了。
apt update
wget -O tcp.sh "https://github.com/tudiedie/Linux-NetSpeed-TuDieDie/raw/master/tcp.sh" && chmod +x tcp.sh && ./tcp.sh会遇到一个提示 是否中止删除内核?选 NO

等待提示选择Y 需要重启VPS后,才能开启BBRplus,是否现在重启 ? [Y/n] :y
//查看当前运行的算法 root@VM-0-6-debian:~# cat /proc/sys/net/ipv4/tcp_congestion_control bbrplus //查看当前内核 root@VM-0-6-debian:~# uname -r 6.7.9-bbrplus
OpenResty、MariaDB10.11.14 、Redis 8.0.3 、PHP 8.46、 PHP 7.4.33 比宝塔多用100M(宝塔是调优过的) 1Panel后期使劲挤一挤 100M肯定是能空出来的。 两个面板同环境大致使用内存都一样。
以root用户身份运行一键安装脚本,自动完成1Panel的下载和安装。
bash -c "$(curl -sSL https://resource.fit2cloud.com/1panel/package/v2/quick_start.sh)"直接按照这点重点只是介绍,文字最后会有详细案例。 执行安装脚本后,会提示问你数据挂载那个目录,默认是/opt 如果有瞎折腾,经常迁站的朋友。需要谨慎考虑下,顺便多装几次找到一个最合适的办法。 毕竟迁移没有宝塔方便。 解决方案无非就两种 付费,免费 1.付费 挂盘 购买存 对象存储(注意轻量存储有地域限制 oss) 2.备份 定期备份OPT
在有好思路后期在编辑文章完善,毕竟能运行就不折腾这是准则 免费的定期备份思路是 1.用七牛云(免费有10GB空间) 2.家中Nas路由器等Vpn到服务器,服务器挂载Vpn-Nas设备盘
用过计划任务执行脚本实现掉线自动挂载,
#NAS 检测磁盘挂载
df -Th | grep //192.168.43.8
if [ $? -ne 0 ]; then
#掉线后先挂载
mount -t cifs -o rw,dir_mode=0777,file_mode=0777,username=admin,password=passwd,vers=2.0 //192.168.43.8/AiCard_01/Web-DB /www/wwwroot/Web-DB/bac组合使用--size-only和--update时,rsync会:
仅根据文件大小判断文件是否需要同步(不考虑修改时间)
确保不会覆盖目标中比源更新的文件
rsync -av --size-only --update /目录 /目录通过七牛云+自家双备份,确保自己家Nas离线后依然有效。已自家Nas备份为主 缺点:免费用户,毕竟不是爷,七牛云只有10G空间,没事得去删备份



open_basedir=/www/sites/www.wgpro.com/index:/tmp/ 在后面增加B站点的路径 :/proc:/www/sites/bbs-img.wgpro.com/index 最终 /proc 是一个虚拟文件系统,通常用于获取系统信息 open_basedir=/www/sites/www.wgpro.com/index:/tmp/:/proc:/www/sites/bbs-img.wgpro.com/index
<?php
//测试跨站写入代码
// B网站目标文件的绝对路径
$targetPath = '/www/sites/bbs-img.wgpro.com/index/attachment/test1.txt';
// 要写入的数据
$data = "来自A网站的数据:" . date('Y-m-d H:i:s');
// 执行写入
if (file_put_contents($targetPath, $data) !== false) {
echo "数据写入成功";
} else {
echo "写入失败,请检查权限或路径";
}
?>重点:并重启PHP-FPM服务使配置生效


这个脚本可以是执行推送CDN更新证书啥的,比如我站点并没有用httpS,只是在CDN层开启了证书 问:主机为啥不用证书 答:麻烦,还会占用点点资源与响应。毕竟是个人小破站,没必要。 用CDN也只是增加点访问速度100G一年,10几块钱。一年都也就用10G国内主机个人站可以忽略CDN
1panel虽然好,但是带来了更多的问题。 如容器报错,调Docker参数,等等更麻烦 但是装啥插件都得从容器装。。有点多此一举。
比如Frps所以一些自用的东西还是直接跑的好。 所以还是需要宝塔 进程管理器



VPN这东西吧,其实挺好用。正经的用
1.可以让自己组网,比如家里,父母家里。把路由组在一起。 2.关闭22端口,想远程管理的时候先VPN进去,在链接安全。 3.服务器磁盘容量小,vpn进去挂给服务器挂盘 4.反正挺好用,当然了WireGuard,openvpn,也挺好。 缺点就是还得折腾OpenWrt麻烦,不如几百年前的老东西方便。
由于PPTP协议有漏洞 服务拒绝攻击(无需登录)CVE-2023-23404 所有在腾讯云的防火墙里自己设置策略。仅让自己所在运营商的IP段访问。
1.安装

sudo apt update # 更新软件源
# 安装ppp l2tp服务,不想安装ppp删除PPTP
sudo apt install -y ppp pptpd strongswan xl2tpd
#各种服务命令
启动 strongswan(IPSec)和 xl2tpd(L2TP)服务,并配置开机自启:
# 启动服务
sudo systemctl restart strongswan-starter xl2tpd pptpd
# 设置开机自启
sudo systemctl enable strongswan-starter xl2tpd pptpd
# 检查服务状态(确保为 active (running))
sudo systemctl status strongswan-starter xl2tpd
检查是否启动成功:
sudo systemctl status xl2tpd
sudo systemctl status strongswan-starter
sudo systemctl status pptpd
重启
sudo systemctl restart xl2tpd
sudo systemctl restart pptpd
sudo systemctl restart strongswan-starter
如果都装了就重启命令合集
设置开机启动 sudo systemctl enable strongswan-starter xl2tpd pptpd
重启 systemctl restart strongswan-starter xl2tpd pptpd
检测状态 sudo systemctl status xl2tpd pptpd strongswan-starter
2.配置
注意修改一个配置后重启一次,顺便检测下运行状态。省的出问题一起查麻烦
sudo nano /etc/ipsec.conf
注意:修改 leftid= 控制台内网ip
#全局配置 (config setup)
#version 2.0
config setup
ikev1-policy=accept # 接受 IKEv1 连接
#定义虚拟专用网络地址空间。这里包含了私有网络地址范围(10.0.0.0/8, 192.168.0.0/16, 172.16.0.0/12),但排除了两个特定的子网(192.168.42.0/24和192.168.43.0/24)。这意味着这些被排除的子网将不会被当作虚拟专用网络处理。
#virtual-private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12,%v4:!192.168.42.0/24,%v4:!192.168.43.0/24
uniqueids=no # 允许同一用户多个并发连接
#共享连接配置 (conn shared)
conn shared
left=%defaultroute # 本地使用默认路由接口
leftid=控制台内网ip # 本地标识(服务器IP)
right=%any # 接受任何远程客户端
encapsulation=yes # 启用UDP封装(NAT穿透)
authby=secret # 使用预共享密钥认证
pfs=no # 禁用完美前向保密
rekey=no # 禁用自动重协商
keyingtries=5 # IKE协商重试次数
dpddelay=30 # DPD检测间隔(秒)
dpdtimeout=300 # DPD超时时间(秒)
dpdaction=clear # DPD超时时清除连接
ikev2=never # 禁用IKEv2,只使用IKEv1
#加密算法配置
# IKE阶段1算法(按优先级排序)
# ike=aes256-sha2;modp2048,aes128-sha2;modp2048,aes256-sha1;modp2048,aes128-sha1;modp2048,aes128-sha1-modp1024;3des-sha1-modp1024,3des-md5-modp1024
# IKE阶段2算法
# phase2alg=aes_gcm-null,aes128-sha1,aes256-sha1,aes256-sha2_512,aes128-sha2,aes256-sha2,chacha20poly1305-sha2,3des-sha1,aes128-md5,3des-md5
ike=aes128-sha1-modp1024,3des-sha1-modp1024,3des-md5-modp1024
esp=aes128-sha1,3des-sha1,aes128-md5,3des-md5
# SA生存时间
ikelifetime=24h # IKE SA有效期
salifetime=24h # IPsec SA有效期
sha2-truncbug=no # 禁用SHA2截断bug兼容
#L2TP over IPsec 配置
conn l2tp-psk
auto=add # 启动时加载但不自动连接
leftprotoport=17/1701 # 本地协议/端口:UDP 1701(L2TP)
rightprotoport=17/%any # 远程协议/端口:UDP 任意
type=transport # 传输模式(仅加密载荷)
also=shared # 继承shared配置
#XAuth PSK 配置(客户端VPN)
conn xauth-psk
auto=add
leftsubnet=0.0.0.0/0 # 本地子网(所有流量)
rightaddresspool=192.168.43.10-192.168.43.250 # 客户端IP地址池
modecfgdns="8.8.8.8 8.8.4.4" # 推送给客户端的DNS服务器
leftxauthserver=yes # 本地作为XAuth服务器
rightxauthclient=yes # 远程作为XAuth客户端
leftmodecfgserver=yes # 本地作为模式配置服务器
rightmodecfgclient=yes # 远程作为模式配置客户端
modecfgpull=yes # 客户端从服务器拉取配置
cisco-unity=yes # Cisco Unity扩展支持
also=shared # 继承shared配置
/etc/ipsec.secrets
# 格式:服务器公网IP %any : PSK "你的预共享密钥"
你的服务器公网IP %any : PSK "MySuperSecretPSK123!"
例
%any : PSK "wgpro.com"/etc/xl2tpd/xl2tpd.conf
=========================
[global]
ipsec saref = yes
saref refinfo = 30
port = 1701
[lns default]
ip range = 192.168.42.10-192.168.42.250
local ip = 192.168.42.1
require chap = yes
refuse pap = yes
require authentication = yes
name = l2tpd
ppp debug = no
pppoptfile = /etc/ppp/options.xl2tpd
length bit = yessudo nano /etc/ppp/chap-secrets
注意:这里的l2tpd 需要与/etc/xl2tpd/xl2tpd.conf配置的 name = l2tpd 名字一致
# 示例:允许用户 "vpnuser1" 使用密码 "UserPass123" 从任何 IP 连接
#PPP账号 指定IP
vpnuser1 pptpd UserPass123 192.168.43.3
#分配IP
vpnuser1 pptpd UserPass123 *
#L2tp账号
vpnuser1 l2tpd UserPass123 */etc/ppp/options.xl2tpd (没有就创建一个,给个读权限)
+mschap-v2
ipcp-accept-local
ipcp-accept-remote
noccp
auth
mtu 1280
mru 1280
proxyarp
lcp-echo-failure 4
lcp-echo-interval 30
connect-delay 5000
ms-dns 8.8.8.8
ms-dns 8.8.4.4
/etc/sysctl.conf
net.ipv4.ip_forward = 1生效配置:
sudo sysctl -p需要让客户端访问外网 , 即使没有防火墙,也需手动配置 NAT 规则: 没有装iptables 也不用管折开机执行,在1p面板的计划任务中增加一个sh执行定时就好了
iptables -t nat -A POSTROUTING -s 客户端IP段 -o 公网接口 -j MASQUERADE
例
iptables -t nat -A POSTROUTING -s 192.168.42.0/24 -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.43.0/24 -o eth0 -j MASQUERADEsudo systemctl enable strongswan-starter xl2tpd pptpd
sudo systemctl restart strongswan-starter xl2tpd pptpd
sudo systemctl restart ipsec
出问题发报错贴给Ai问,以上配置为本人安装调试后无错配置。



.env 是重新构建时用的基础修改下,后期重构就不用在手动开放端口了。
CONTAINER_NAME='Mailserver'
CPUS=0
HOST_IP='10.0.0.6'
MEMORY_LIMIT='100M'
MS_HOSTNAME='mail.wgpro.com'
PANEL_APP_PORT_ESMTP_465=465
PANEL_APP_PORT_ESMTP_587=587
PANEL_APP_PORT_SMTP=25
PANEL_APP_PORT_pop3s_995=995
--------------复制上面内容 下面是注解----
CONTAINER_NAME='Mailserver' #容器名字 改不改无所谓
CPUS=0 #改不改无所谓CPU
HOST_IP='10.0.0.6' 【需要修改成自己的内网ip ,
https://console.cloud.tencent.com/lighthouse/ 登录自己主机ip右边 】
MEMORY_LIMIT='100M' #现在内存使用改不改无所谓
MS_HOSTNAME='mail.example.com'# 默认如ad@example.com 发送邮件主机是mail.example.com
你的邮局用根域名 admin@example.com 这里的域名一定不能是 example.com,用mail.example.com
email.example.com 什么都可以 单一定不能是example.com 否则收邮件时报错
PANEL_APP_PORT_ESMTP_465=465 发 直接SSL握手 老旧邮件客户端兼容
PANEL_APP_PORT_ESMTP_587=587 发 先发送EHLO命令,再用STARTTLS协商加密
PANEL_APP_PORT_SMTP=25 发 可以不加密
移除了并没有啥用的IMAP
PANEL_APP_PORT_pop3s_995=995 收ssl 如果想开启110就行
PANEL_APP_PORT_pop3_110=110 收 自己决定
主保留主流端口,不配证书当然一样可以用 ,25是必须保留的。 修改容器配置,自己复制已修改好的替换成自己路径就行。


docker-compose.yml 属于总配,可以通过这个文件修改容器中各个配置参数 先复制进去在修改, Docker 的挂载格式是- /宿主机路径:/容器路径:选项 ro 为只读 /opt/1panel/www/sites/wgpro.com/ssl/ 修改这里换成自己证书物理路径
networks:
1panel-network:
external: true
services:
mailserver:
container_name: ${CONTAINER_NAME}
deploy:
resources:
limits:
cpus: ${CPUS}
memory: ${MEMORY_LIMIT}
env_file: ./conf/mailserver.env
environment:
- SSL_TYPE=manual
- ENABLE_OPENDKIM=1
- ENABLE_OPENDMARC=1
- ENABLE_POP3=1
- SSL_CERT_PATH=/ssl/fullchain.pem
- SSL_KEY_PATH=/ssl/privkey.pem
- ENABLE_AMAVIS=0
- SPOOF_PROTECTION=1
- MYDESTINATION=localhost, localhost.localdomain
# 在 自己用的邮件后缀 如 ad@wgpro.com
- VIRTUAL_MAILBOX_DOMAINS=wgpro.com
# 邮局postmaster 可以改成自己用的邮件也可以新建一个postmaster@xxx
- POSTMASTER_ADDRESS=ad@wgpro.com
- ENABLE_UPDATE_CHECK=0
healthcheck:
retries: 0
test: ss --listening --tcp | grep -P 'LISTEN.+:smtp' || exit 1
timeout: 3s
hostname: ${MS_HOSTNAME}
image: ghcr.io/docker-mailserver/docker-mailserver:15.1.0
labels:
createdBy: Apps
networks:
- 1panel-network
ports:
- ${HOST_IP}:${PANEL_APP_PORT_SMTP}:25
#- ${HOST_IP}:${PANEL_APP_PORT_IMAP4_143}:143
- ${HOST_IP}:${PANEL_APP_PORT_ESMTP_465}:465
- ${HOST_IP}:${PANEL_APP_PORT_ESMTP_587}:587
#- ${HOST_IP}:${PANEL_APP_PORT_IMAP4_993}:993
- ${HOST_IP}:${PANEL_APP_PORT_pop3s_995}:995
#- ${HOST_IP}:${PANEL_APP_PORT_pop3_110}:110
restart: unless-stopped
stop_grace_period: 1m
volumes:
- ./data/dms/mail-data/:/var/mail/
- ./data/dms/mail-state/:/var/mail-state/
- ./data/dms/mail-logs/:/var/log/mail/
- ./data/dms/config/:/tmp/docker-mailserver/
- /etc/localtime:/etc/localtime:ro
# 改成自己证书存放的物理机地址
- /opt/1panel/www/sites/wgpro.com/ssl/:/ssl/:ro
这文件就是换成了中文稍改了一个新版参数名,替换不替换都可以。 docker-compose.yml 尽量通过这个配置修改容器参数
# -----------------------------------------------
# --- mailserver.env 邮件服务器环境变量 ------------------------
# -----------------------------------------------
# 参数启用调整用docker-compose.yml控制
# 这些变量的文档位于:
# https://docker-mailserver.github.io/docker-mailserver/latest/config/environment/
# -----------------------------------------------
# --- 通用设置部分 ------------------------------
# -----------------------------------------------
# 空 => 使用 `hostname` 命令获取邮件服务器的规范主机名
# => 指定要为其提供邮件服务的完全限定域名。这用于许多配置功能,因此如果您无法设置主机名(例如,您所在的容器平台不允许),请在此环境变量中指定它。
OVERRIDE_HOSTNAME=
# 在 v11.0.0 版本中已移除!请使用 LOG_LEVEL 代替。
DMS_DEBUG=0
# 设置 DMS 的日志级别。
# 这主要与容器启动脚本和变更检测事件反馈相关。
#
# 有效值(按详细程度递增排序)为:`error`、`warn`、`info`、`debug` 和 `trace`。
# 默认日志级别为 `info`。
LOG_LEVEL=info
# critical => 仅显示关键消息
# error => 仅显示错误输出
# **warn** => 显示警告
# info => 正常的信息输出
# debug => 同时显示调试消息
SUPERVISOR_LOGLEVEL=
# 0 => 默认目录中的邮件状态
# 1 => 将所有状态整合到单个目录 (`/var/mail-state`) 中,以允许使用 Docker 卷持久化
ONE_DIR=1
# 支持部署在默认值与这些不兼容的环境中(例如:某些 NAS 设备):
# /var/mail vmail 用户 ID (默认: 5000)
DMS_VMAIL_UID=
# /var/mail vmail 组 ID (默认: 5000)
DMS_VMAIL_GID=
# **空** => 使用 FILE
# LDAP => 使用 LDAP 认证
# OIDC => 使用 OIDC 认证(尚未实现)
# FILE => 使用本地文件(此为默认值)
ACCOUNT_PROVISIONER=
# 空 => postmaster@domain.com
# => 指定邮政局长地址
POSTMASTER_ADDRESS=
# 在容器启动时检查更新,然后每天检查一次
# 如果有可用更新,将向 POSTMASTER_ADDRESS 发送邮件
# 0 => 禁用更新检查
# 1 => 启用更新检查
ENABLE_UPDATE_CHECK=1
# 自定义更新检查间隔。
# 数字 + 后缀。后缀必须为 's'(秒)、'm'(分钟)、'h'(小时)或 'd'(天)。
UPDATE_CHECK_INTERVAL=1d
# 为 mynetworks 选项设置不同的选项(可在 postfix-main.cf 中覆盖)
# **警告**:将 Docker 网络的网关添加到受信任主机列表,例如使用 `network` 或
# `connected-networks` 选项,可能会创建开放中继
# https://github.com/docker-mailserver/docker-mailserver/issues/1405#issuecomment-590106498
# 对于无根 podman 也可能发生同样的情况。为防止这种情况,请将值设置为 "none" 或配置 slirp4netns
# https://github.com/docker-mailserver/docker-mailserver/issues/2377
#
# none => 显式强制认证
# container => 仅容器 IP 地址
# host => 添加 Docker 容器网络(仅 IPv4)
# network => 添加所有 Docker 容器网络(仅 IPv4)
# connected-networks => 添加所有已连接的 Docker 网络(仅 IPv4)
PERMIT_DOCKER=none
# 设置时区。如果未设置此变量,容器运行时将尝试使用
# `/etc/localtime` 检测时间,您可以将其挂载到容器中。此变量的值
# 必须遵循 `区域/时区` 模式,例如,如果要使用德国的时区,请使用 `Europe/Berlin`。
# 您可以在此处查找所有可用的时区:https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List
TZ=
# 如果您的网络接口不是 'eth0',例如在 Kubernetes 中使用 HostNetworking 时,
# 您可以将 NETWORK_INTERFACE 设置为所需的任何接口。然后将使用此接口。
# - **空** => eth0
NETWORK_INTERFACE=
# 空 => modern
# modern => 仅启用 TLSv1.2 和现代密码套件。(默认)
# intermediate => 启用 TLSv1、TLSv1.1 和 TLSv1.2 以及广泛兼容的密码套件。
TLS_LEVEL=
# 配置处理伪造发件人地址的邮件。
#
# **0** =>(不推荐)允许邮件地址欺骗。任何登录用户都可以创建带有伪造发件人地址的邮件消息(另请参阅 https://en.wikipedia.org/wiki/Email_spoofing)。
# 1 => 拒绝邮件欺骗。每个用户只能使用自己的或其别名地址发送邮件。带有扩展分隔符(http://www.postfix.org/postconf.5.html#recipient_delimiter)的地址无法发送消息。
SPOOF_PROTECTION=
# 启用发件人重写方案。如果您的邮件服务器充当转发器,则需要 SRS。有关进一步说明,请参阅 [postsrsd](https://github.com/roehling/postsrsd/blob/master/README.md#sender-rewriting-scheme-crash-course)。
# - **0** => 禁用
# - 1 => 启用
ENABLE_SRS=0
# 启用 OpenDKIM 服务。
# **1** => 启用
# 0 => 禁用
ENABLE_OPENDKIM=1
# 启用 OpenDMARC 服务。
# **1** => 启用
# 0 => 禁用
ENABLE_OPENDMARC=1
# 在 Postfix 配置中启用 `policyd-spf`。如果您使用 Rspamd (`ENABLE_RSPAMD=1`),您可能希望将其
# 设置为 `0`。
#
# - 0 => 禁用
# - **1** => 启用
ENABLE_POLICYD_SPF=1
# 1 => 启用 POP3 服务
# 空 => 禁用 POP3
ENABLE_POP3=
# 启用 ClamAV,一个防病毒扫描程序。
# 1 => 启用
# **0** => 禁用
ENABLE_CLAMAV=0
# 启用 Rspamd
# **0** => 禁用
# 1 => 启用
ENABLE_RSPAMD=0
# 当 `ENABLE_RSPAMD=1` 时,将隐式启用内部 Redis 实例。
# 此设置提供了一个选择退出的选项,以允许使用外部实例。
# 0 => 禁用
# 1 => 启用
ENABLE_RSPAMD_REDIS=
# 启用时,
#
# 1. 开启 "[autolearning][rspamd-autolearn]" 功能;
# 2. 当将邮件移入或移出垃圾邮件文件夹时,将训练贝叶斯分类器(借助 Sieve 脚本)。
#
# **0** => 禁用
# 1 => 启用
RSPAMD_LEARN=0
# 此设置控制是否应对来自认证用户的电子邮件(即很可能是外发邮件)执行检查。默认值
# 为 `0`,以便更好地与 SpamAssassin 保持一致。但我们建议您阅读
# https://rspamd.com/doc/tutorials/scanning_outbound.html 以自行决定是否需要此功能。
RSPAMD_CHECK_AUTHENTICATED=0
# 控制是否启用 Rspamd 灰名单模块。
# 此模块可以通过对具有特定垃圾邮件分数的电子邮件进行灰名单处理来进一步帮助避免垃圾邮件。
#
# **0** => 禁用
# 1 => 启用
RSPAMD_GREYLISTING=0
# 可用于启用或禁用 Hfilter 组模块。
#
# - 0 => 禁用
# - **1** => 启用
RSPAMD_HFILTER=1
# 可用于控制当 HFILTER_HOSTNAME_UNKNOWN 符号适用时的分数。分数越高惩罚越重。将其设置为 15 相当于在检查失败时拒绝电子邮件。
#
# 默认: 6
RSPAMD_HFILTER_HOSTNAME_UNKNOWN_SCORE=6
# Amavis 内容过滤器(用于 ClamAV 和 SpamAssassin)
# 0 => 禁用
# 1 => 启用
ENABLE_AMAVIS=1
# -1/-2/-3 => 仅显示错误
# **0** => 显示警告
# 1/2 => 显示默认信息输出
# 3/4/5 => 记录调试信息(非常详细)
AMAVIS_LOGLEVEL=0
# 在 Postscreen 中启用 DNS 阻止列表。
# 注意:如果电子邮件未通过阻止列表检查,将被拒绝!
# **0** => DNS 阻止列表已禁用
# 1 => DNS 阻止列表已启用
ENABLE_DNSBL=0
# 如果您启用 Fail2Ban,请不要忘记将以下行添加到您的 `compose.yaml` 中:
# cap_add:
# - NET_ADMIN
# 否则,`nftables` 将无法禁止 IP。
ENABLE_FAIL2BAN=0
# Fail2Ban 阻止类型
# drop => 丢弃数据包(不发送回复)
# reject => 拒绝数据包(发送 ICMP 不可达)
FAIL2BAN_BLOCKTYPE=drop
# 1 => 在端口 4190 上启用 Managesieve
# 空 => 禁用 Managesieve
ENABLE_MANAGESIEVE=
# **enforce** => 允许其他测试完成。拒绝尝试传递邮件,并返回 550 SMTP 回复,记录 helo/发件人/收件人信息。下次客户端连接时重复此测试。
# drop => 立即断开连接并返回 521 SMTP 回复。下次客户端连接时重复此测试。
# ignore => 忽略此测试的失败。允许其他测试完成。下次客户端连接时重复此测试。此选项对于测试和收集统计信息而不阻止邮件很有用。
POSTSCREEN_ACTION=enforce
# 空 => 所有守护进程启动
# 1 => 仅启动 postfix smtp
SMTP_ONLY=
# 请阅读[文档中的 SSL 页面](https://docker-mailserver.github.io/docker-mailserver/latest/config/security/ssl) 以获取更多信息。
#
# 空 => 禁用 SSL
# letsencrypt => 启用 Let's Encrypt 证书
# custom => 启用自定义证书
# manual => 让您为非标准情况手动指定 SSL 证书的位置
# self-signed => 启用自签名证书
SSL_TYPE=
# 这些仅在 `SSL_TYPE=manual` 时受支持。
# 提供您已在容器内挂载访问权限的证书和密钥文件的路径。
SSL_CERT_PATH=
SSL_KEY_PATH=
# 可选:可以支持第二个证书作为后备(双证书支持),例如使用 ECDSA 并辅以 RSA 后备。
# 对于提高与旧版 MTA 和 MUA(例如 2015 年之前的版本)的额外兼容性非常有用。
SSL_ALT_CERT_PATH=
SSL_ALT_KEY_PATH=
# 设置病毒邮件在服务器上保留多少天后被删除
# 空 => 7 天
VIRUSMAILS_DELETE_DELAY=
# 配置 Postfix `virtual_transport` 以将邮件传递给不同的 LMTP 客户端(默认是 dovecot socket)。
# 提供任何有效的 URI。示例:
#
# 空 => `lmtp:unix:/var/run/dovecot/lmtp` (默认,在 Postfix main.cf 中配置)
# `lmtp:unix:private/dovecot-lmtp` (使用 socket)
# `lmtps:inet:<host>:<port>` (使用 starttls 的安全 lmtp)
# `lmtp:<kopano-host>:2003` (使用 kopano 作为邮件存储)
POSTFIX_DAGENT=
# 设置所有用户的邮箱大小限制。如果设置为零,则大小不受限制(默认)。
#
# 空 => 0
POSTFIX_MAILBOX_SIZE_LIMIT=
# 参见 https://docker-mailserver.github.io/docker-mailserver/edge/config/user-management/accounts/#notes
# 0 => Dovecot 配额已禁用
# 1 => Dovecot 配额已启用
ENABLE_QUOTAS=1
# 设置所有用户的消息大小限制。如果设置为零,则大小不受限制(不推荐!)
#
# 空 => 10240000 (~10 MB)
POSTFIX_MESSAGE_SIZE_LIMIT=
# 大于此限制的邮件将不会被扫描。
# 必须启用 ClamAV (ENABLE_CLAMAV=1) 才能使用此功能。
#
# 空 => 25M (25 MB)
CLAMAV_MESSAGE_SIZE_LIMIT=
# 启用定期的 pflogsumm 邮件报告。
# 这是一个新选项。为了向后兼容,仍然支持旧的 REPORT 选项。如果未设置此选项但使用旧选项启用了报告,则将使用 logrotate。
#
# 未设置 => 无报告
# daily_cron => 前一天的每日报告
# logrotate => 基于邮件日志轮换时的完整报告
PFLOGSUMM_TRIGGER=
# pflogsumm 报告的收件人地址。
#
# 未设置 => 使用 REPORT_RECIPIENT 或 POSTMASTER_ADDRESS
# => 指定收件人地址
PFLOGSUMM_RECIPIENT=
# 如果启用了 pflogsumm 报告,则为其设置发件人地址 (`FROM`)。
#
# 未设置 => 使用 REPORT_SENDER
# => 指定发件人地址
PFLOGSUMM_SENDER=
# logwatch 报告的间隔。
#
# none => 不生成报告
# daily => 发送每日报告
# weekly => 每周发送报告
LOGWATCH_INTERVAL=
# 如果启用了 logwatch 报告,则为其设置收件人地址。
#
# 未设置 => 使用 REPORT_RECIPIENT 或 POSTMASTER_ADDRESS
# => 指定收件人地址
LOGWATCH_RECIPIENT=
# 如果启用了 logwatch 报告,则为其设置发件人地址 (`FROM`)。
#
# 未设置 => 使用 REPORT_SENDER
# => 指定发件人地址
LOGWATCH_SENDER=
# 定义如果启用了报告,谁将接收报告。
# **空** => ${POSTMASTER_ADDRESS}
# => 指定收件人地址
REPORT_RECIPIENT=
# 定义如果启用了报告,谁将发送报告。
# **空** => mailserver-report@${DOMAINNAME}
# => 指定发件人地址
REPORT_SENDER=
# 更改日志文件轮换的间隔
# **weekly** => 每周轮换日志文件
# daily => 每天轮换日志文件
# monthly => 每月轮换日志文件
#
# 注意:此变量实际上控制容器内的 logrotate
# 并根据此设置轮换日志文件。主要的日志输出仍然
# 可以通过 `docker logs mail`(或您相应的容器名称)完整获取。
# 如果您想控制 Docker 生成的日志文件的日志轮换,请参阅:
# https://docs.docker.com/config/containers/logging/configure/
#
# 注意:此变量也可以决定 Postfix 日志摘要报告的间隔,请参阅 [`PFLOGSUMM_TRIGGER`](#pflogsumm_trigger)。
LOGROTATE_INTERVAL=weekly
# 如果启用,在 Postfix 配置的发件人限制中使用 `reject_unknown_client_hostname`。
#
# - **0** => 禁用
# - 1 => 启用
POSTFIX_REJECT_UNKNOWN_CLIENT_HOSTNAME=0
# 选择 Postfix 使用的 TCP/IP 协议
# **all** => 所有可能的协议。
# ipv4 => 仅使用 IPv4 流量。在 Docker 后面很可能需要这个。
# ipv6 => 仅使用 IPv6 流量。
#
# 注意:更多详细信息请参见 http://www.postfix.org/postconf.5.html#inet_protocols
POSTFIX_INET_PROTOCOLS=all
# 选择 Dovecot 使用的 TCP/IP 协议
# **all** => 监听所有接口
# ipv4 => 仅监听 IPv4 接口。在 Docker 后面很可能需要这个。
# ipv6 => 仅监听 IPv6 接口。
#
# 注意:更多信息请参见 https://dovecot.org/doc/dovecot-example.conf
DOVECOT_INET_PROTOCOLS=all
# -----------------------------------------------
# --- SpamAssassin 部分 -------------------------
# -----------------------------------------------
ENABLE_SPAMASSASSIN=0
# 将垃圾邮件投递到收件箱(最终使用 SA_SPAM_SUBJECT 进行标记)
SPAMASSASSIN_SPAM_TO_INBOX=1
# KAM 是 McGrail Foundation 提供的第三方 SpamAssassin 规则集。
# 如果启用了 SpamAssassin,除了默认规则集之外,还可以使用 KAM。
# - **0** => KAM 禁用
# - 1 => KAM 启用
#
# 注意:仅在 `ENABLE_SPAMASSASSIN=1` 时有效
ENABLE_SPAMASSASSIN_KAM=0
# 垃圾邮件将被移动到垃圾邮件文件夹(需要 SPAMASSASSIN_SPAM_TO_INBOX=1)
MOVE_SPAM_TO_JUNK=1
# 将垃圾邮件标记为已读
MARK_SPAM_AS_READ=0
# 在达到或超过该级别时添加垃圾邮件信息头:
SA_TAG=2.0
# 在该级别添加“检测到垃圾邮件”头
SA_TAG2=6.31
# 触发垃圾邮件规避操作
SA_KILL=10.0
# 如果检测到垃圾邮件,则在主题中添加标签
SPAM_SUBJECT=***SPAM*****
# -----------------------------------------------
# --- Fetchmail 部分 ----------------------------
# -----------------------------------------------
ENABLE_FETCHMAIL=0
# 以秒为单位的获取邮件间隔
FETCHMAIL_POLL=300
# 启用或禁用 `getmail`。
#
# - **0** => 禁用
# - 1 => 启用
ENABLE_GETMAIL=0
# 间隔的分钟数。最小值:1;最大值:30。
GETMAIL_POLL=5
# -----------------------------------------------
# --- LDAP 部分 ---------------------------------
# -----------------------------------------------
# 需要第二个用于 ldap 服务的容器(例如 https://hub.docker.com/r/bitnami/openldap/)
# 空 => 否
# yes => 为 Postfix 启用 LDAP over TLS
LDAP_START_TLS=
# 空 => mail.example.com
# 指定可通过 URI(如:`ldaps://mail.example.com`)访问 LDAP 服务器的 `<dns-名称>` / `<ip-地址>`。
# 注意:您必须包含所需的 URI 方案(`ldap://`、`ldaps://`、`ldapi://`)。
LDAP_SERVER_HOST=
# 空 => ou=people,dc=domain,dc=com
# => 例如:LDAP_SEARCH_BASE=dc=mydomain,dc=local
LDAP_SEARCH_BASE=
# 空 => cn=admin,dc=domain,dc=com
# => 查看 SASL_LDAP_BIND_DN 的示例
LDAP_BIND_DN=
# 空** => admin
# => 指定用于绑定 ldap 的密码
LDAP_BIND_PW=
# 例如:`"(&(mail=%s)(mailEnabled=TRUE))"`
# => 指定应如何向 ldap 查询用户
LDAP_QUERY_FILTER_USER=
# 例如:`"(&(mailGroupMember=%s)(mailEnabled=TRUE))"`
# => 指定应如何向 ldap 查询组
LDAP_QUERY_FILTER_GROUP=
# 例如:`"(&(mailAlias=%s)(mailEnabled=TRUE))"`
# => 指定应如何向 ldap 查询别名
LDAP_QUERY_FILTER_ALIAS=
# 例如:`"(&(|(mail=*@%s)(mailalias=*@%s)(mailGroupMember=*@%s))(mailEnabled=TRUE))"`
# => 指定应如何向 ldap 查询域
LDAP_QUERY_FILTER_DOMAIN=
# -----------------------------------------------
# --- Dovecot 部分 ------------------------------
# -----------------------------------------------
# 空 => 否
# yes => 为 Dovecot 启用 LDAP over TLS
DOVECOT_TLS=
# 例如:`"(&(objectClass=PostfixBookMailAccount)(uniqueIdentifier=%n))"`
DOVECOT_USER_FILTER=
# 例如:`"(&(objectClass=PostfixBookMailAccount)(uniqueIdentifier=%n))"`
DOVECOT_PASS_FILTER=
# 定义要使用的邮箱格式
# 默认为 maildir,支持的值有:sdbox, mdbox, maildir
DOVECOT_MAILBOX_FORMAT=maildir
# 空 => 否
# yes => 允许对 LDAP 进行绑定认证
# https://wiki.dovecot.org/AuthDatabase/LDAP/AuthBinds
DOVECOT_AUTH_BIND=
# -----------------------------------------------
# --- Postgrey 部分 -----------------------------
# -----------------------------------------------
ENABLE_POSTGREY=0
# 灰名单 N 秒
POSTGREY_DELAY=300
# 删除自上次看到以来超过 N 天的条目
POSTGREY_MAX_AGE=35
# 邮件被灰名单时的响应
POSTGREY_TEXT="Delayed by Postgrey"
# 在 N 次成功投递后将客户端加入白名单(N=0 禁用白名单)
POSTGREY_AUTO_WHITELIST_CLIENTS=5
# -----------------------------------------------
# --- SASL 部分 ---------------------------------
# -----------------------------------------------
ENABLE_SASLAUTHD=0
# 空 => pam
# `ldap` => 针对 ldap 服务器进行认证
# `shadow` => 针对本地用户数据库进行认证
# `mysql` => 针对 mysql 数据库进行认证
# `rimap` => 针对 imap 服务器进行认证
# 注意:可以是机制列表,如 pam ldap shadow
SASLAUTHD_MECHANISMS=
# 空 => 无
# 例如,对于 SASLAUTHD_MECHANISMS rimap,您需要指定 imap 服务器的 ip-地址/服务器名 ==> xxx.xxx.xxx.xxx
SASLAUTHD_MECH_OPTIONS=
# 空 => 使用 LDAP_SERVER_HOST 的值
# 注意:您必须包含所需的 URI 方案(`ldap://`、`ldaps://`、`ldapi://`)。
SASLAUTHD_LDAP_SERVER=
# 空 => 使用 LDAP_BIND_DN 的值
# 指定一个有权搜索目录树的对象
# 例如 active directory:SASLAUTHD_LDAP_BIND_DN=cn=Administrator,cn=Users,dc=mydomain,dc=net
# 例如 openldap:SASLAUTHD_LDAP_BIND_DN=cn=admin,dc=mydomain,dc=net
SASLAUTHD_LDAP_BIND_DN=
# 空 => 使用 LDAP_BIND_PW 的值
SASLAUTHD_LDAP_PASSWORD=
# 空 => 使用 LDAP_SEARCH_BASE 的值
# 指定搜索基准
SASLAUTHD_LDAP_SEARCH_BASE=
# 空 => 默认过滤器 `(&(uniqueIdentifier=%u)(mailEnabled=TRUE))`
# 例如,对于 active directory:`(&(sAMAccountName=%U)(objectClass=person))`
# 例如,对于 openldap:`(&(uid=%U)(objectClass=person))`
SASLAUTHD_LDAP_FILTER=
# 空 => 否
# yes => 为 SASL 启用 LDAP over TLS
# 如果设置为 yes,SASLAUTHD_LDAP_SERVER 中的协议必须是 ldap:// 或缺失。
SASLAUTHD_LDAP_START_TLS=
# 空 => 否
# yes => 要求并验证服务器证书
# 如果为 yes,您必须/可以指定 SASLAUTHD_LDAP_TLS_CACERT_FILE 或 SASLAUTHD_LDAP_TLS_CACERT_DIR。
SASLAUTHD_LDAP_TLS_CHECK_PEER=
# 包含 CA(证书颁发机构)证书的文件。
# 空 => 不向配置添加任何内容
# 任何值 => 填充 `ldap_tls_cacert_file` 选项
SASLAUTHD_LDAP_TLS_CACERT_FILE=
# 包含 CA(证书颁发机构)证书的目录路径。
# 空 => 不向配置添加任何内容
# 任何值 => 填充 `ldap_tls_cacert_dir` 选项
SASLAUTHD_LDAP_TLS_CACERT_DIR=
# 指定用于密码验证的密码属性。
# 空 => 不向配置添加任何内容,但文档说默认为 `userPassword`。
# 任何值 => 填充 `ldap_password_attr` 选项
SASLAUTHD_LDAP_PASSWORD_ATTR=
# 空 => `bind` 将用作默认值
# `fastbind` => 使用 fastbind 方法
# `custom` => custom 方法使用 userPassword 属性来验证密码
SASLAUTHD_LDAP_AUTH_METHOD=
# 指定 SASL 绑定的认证机制
# 空 => 不向配置添加任何内容
# 任何值 => 填充 `ldap_mech` 选项
SASLAUTHD_LDAP_MECH=
# -----------------------------------------------
# --- SRS 部分 ----------------------------------
# -----------------------------------------------
# envelope_sender => 仅重写信封发件人地址(默认)
# header_sender => 仅重写信头发件人(不推荐)
# envelope_sender,header_sender => 重写两个发件人
# 电子邮件有一个“信封”发件人(指示发送服务器)和一个
# “信头”发件人(指示谁发送了它)。更严格的 SPF 策略可能要求
# 您替换两者,而不仅仅是信封发件人。
SRS_SENDER_CLASSES=envelope_sender
# 空 => 将对所有域重写信封发件人
# 提供以逗号分隔的域列表以排除重写
SRS_EXCLUDE_DOMAINS=
# 空 => 在构建镜像时生成
# 提供一个用于 base64 的密钥
# 您可以指定多个密钥,以逗号分隔。第一个用于
# 签名,其余的将用于验证。这是您轮换和使密钥过期的方式
SRS_SECRET=
# -----------------------------------------------
# --- 默认中继主机部分 --------------------------
# -----------------------------------------------
# 设置通过默认中继主机中继所有邮件
#
# 空 => 不配置默认中继主机
# 用于中继所有邮件的默认主机和可选端口
DEFAULT_RELAY_HOST=
# -----------------------------------------------
# --- 多域中继部分 ------------------------------
# -----------------------------------------------
# 基于发件人的域名为多个域设置中继
# 可选择在 postfix-sasl-password.cf 中使用用户名和密码,并在 postfix-relaymap.cf 中使用中继主机映射
#
# 空 => 不配置中继主机
# 用于中继邮件的默认主机
RELAY_HOST=
# 空 => 25
# 中继邮件的默认端口
RELAY_PORT=25
# 空 => 无默认值
# 默认中继用户名(如果 postfix-sasl-password.cf 中没有特定条目)
RELAY_USER=
# 空 => 无默认值
# 默认中继用户的密码
RELAY_PASSWORD=
重要一步! /data/dms/config
进入 /data/dms/config 后新建一个文件 postfix-main.cf 内容直接复制进去
smtpd_tls_security_level = may
smtpd_sasl_auth_enable = yes
smtpd_helo_restrictions = permit_mynetworks, permit_sasl_authenticated
smtpd_recipient_restrictions =
permit_sasl_authenticated,
permit_mynetworks,
reject_unauth_destination,
check_policy_service unix:private/policyd-spf,
reject_unauth_pipelining,
reject_non_fqdn_sender,
reject_unknown_sender_domain,
reject_non_fqdn_recipient,
reject_unknown_recipient_domain创建账号

// 创建邮箱账户: setup email add 邮件全称 密码
// 示例:
setup email add mail@domain.com 123456最后一步重新构建 进去 应用商店 - 已安装 -重建

Gmail、Outlook 等主流邮箱服务商将 DKIM 作为重要的垃圾邮件过滤指标。未配置 DKIM 的邮件可能因无法通过验证而被直接拦截或放入垃圾箱
生成 DKIM 终端 - 容器 mailserver 生成的 DKIM 在容器内 /tmp/docker-mailserver/opendkim/keys/ 目录下,即主机 /opt/1panel/apps/mailserver/mailserver/data/dms/config/opendkim/keys/ ,找到其中的 mail.txt
终端中 输入
setup config dkim
需要更多功能自己查看帮助
setup config dkim help合并key

域名解析邮局配置,这里有点逻辑复杂。本人也不是很明白,只能说给大概。剩下的还需要自行研究
mail._domainkey

如使用根域名,由于 dkim生成默认 mail._domainkey 所以这里有一个逻辑问题 例服务器ip 1.2.3.4
admin@domain.com 根域名应该使用 default._domainkey 但是我不知道咋改 所以域名解析时候 需要先建立一个 mail.domain.com 的A解析,到1.2.3.4上 在建立@domain.com MX解析到 mail.domain.com 至此才能正常使用 mail._domainkey
例子 域名解析中需要有的内容
mail | A | 1.2.3.4
@ | MX | mail.wgpro.com 5
mail._domainkey | Txt | v=DKIM1; h=sha256; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFA。。。。。
@ | TxT | v=spf1 ip4:1.2.3.4 -all
_dmarc | TxT | v=DMARC1; p=quarantine; sp=none; adkim=r; aspf=r; rua=mailto:你的邮件; fo=1

关键字段说明:
v=DMARC1:固定开头,声明是 DMARC 记录;p=quarantine:主域名(wgpro.com)的验证失败策略(隔离);sp=none:子域名(如sub.wgpro.com)的策略(默认继承主策略,可单独设置);adkim=s:DKIM 对齐模式(s= 严格对齐,必须与发件人域名完全一致;r= 宽松对齐,子域名也可);aspf=s:SPF 对齐模式(同上);rua=mailto:...:聚合报告接收邮箱;fo=1:触发失败报告的条件(此处表示 “任一验证失败即报告”)。_dmarc?6.防火墙/WAF 个人建议不要启用与安装,主机防火墙限制啥端口转发啥的 不如用网页控制台-服务器-防火墙 直接物理设置几个开放端口完事 WAF不能花钱就忽略吧
家中的老旧设备通过VPN拨号进入服务器,服务器挂载 家中设备用smb协议。 Rsync同步文件夹 上文说到pptp与l2tp 这里主要是因个人因素配置 像家里多少都有几个百元路由,刷Padavan之后说没用又能发挥下作用 Padavan系统l2tp没有共享密钥功能,实际也不需要l2tp会消耗本就可怜的计算能力。 所以用PPtp链接是最合适的,还有树莓派啥的 这种本就计算能力不足的设备 pptp依然是不可缺少的。 (切记配合防护墙设置ip段白名单 配合使用pptp)


挂载设备sh脚本,只是一个思路。自己发挥 用定时任务检测 这样不管主机重启,还是设备重启都能保证挂载
#!/bin/bash
:<<BLOCK
挂载硬盘,定时任务里设置15分钟检测一次
路径 账号密码自己修改
这里只是个参考
BLOCK
#NAS 检测磁盘挂载 192.168.43.9 这是vpn分配的账号ip 用固定ip判断链接设备
df -Th | grep //192.168.43.9
if [ $? -ne 0 ]; then
#掉线后先挂载
mount -t cifs -o rw,dir_mode=0777,file_mode=0777,username=admin,password=pwd,vers=2.0 //192.168.43.9/AiCard_01/Web-DB/ /www/wwwroot/Web-DB/
#在重复一次检测
df -Th | grep //192.168.43.9
if [ $? -ne 0 ]; then
echo "LLY·disk-Lost"
#磁盘掉线 创建临时标记文件 并微信通知
if [ ! -f "/tmp/tmpdisk-lly" ];then
touch /tmp/tmpdisk-lly
# curl http://xxxxx | iconv -f gbk -t gbk
fi
#
fi
###########
else
#磁盘挂载正常
#echo "Ok"
#检测临时标记,如果有删除并微信通知恢复
if [ -f "/tmp/tmpdisk-lly" ];then
rm -d /tmp/tmpdisk-lly
# curl curl http://xxxxx | iconv -f gbk -t gbk
fi
fi备份资料 异地多备份,没有那个实力。所以只能用丐版 在多个设备里多备份几份 定时任务里创建 如每日 1点 ,5点 分别执行一个设备的同步脚本。
同步脚本
#!/bin/bash
:<<BLOCK
磁盘定时备份,先用1p或宝塔先执行备份任务保留本地
之后用rsync 同步本地文件 到挂载文件夹
BLOCK
if [ -f "/tmp/tmpdisk-lly" ];
then
echo "失败! Nas掉线"
else
echo "ok"
rsync -av --size-only --update /www/backup/site /www/backup/database /www/backup/path /www/wwwroot/Web-DB/lly/BackUp
fiVPN这东西别看它老,但是用法很多 比如配合端口转发,就能把服务器ip端口转给vpn地址 比如Nginx转发给vpn 调试程序更方便,比Frp、nps好用多了 比如VPN拨入主机,之后在22端口,安全加倍。 你就折腾去吧,尤其是L2tp虽然老了点,但兼容性好呀。

总结: 至此,面板折腾结束,通过安装1P大致感受了与宝塔的差异。 真心话说,小白用宝塔挺合适。顶多面板出现Py错误提示 但功能依然用,不上面板就得了。
1Panel出问题真心崩溃,容器配置错误千奇百怪 根本无解 想调试好容器,得先去读说明,小白得崩,比如我调试邮局配置 重构建都被点冒烟了,干到怀疑自己 所幸直接装Postfix配转发用完事用不到10分钟,调试Mailserver 光看官方说明就看了3天。。。。 容器虽好,小白还是尽量别碰的好。
宝塔优势 1.简单不折腾 2.方便提桶跑路(别小看这点,毕竟大家常买1年主机。跑的快才是王道) 3.通过付费功能看 侧重点 疑似小白用户 https://www.bt.cn/new/pricing.html 1Panel优势 1.在于专业版,有业务的场景容器能分压。个人站用不上 2.开发者,开发者瞎折腾是天性,多版本容器共存是刚需。 3.通过付费功能看 侧重点 集群多机管理 https://www.lxware.cn/1panel?code=bunus
我个折腾了1panel后觉得还是的用回宝塔 因为是年抛用户,有特价就会买抽IP当开盲盒了。 所以如何更方便跑路是我的需求。 其次就是主机本就是虚拟的,在虚拟下的虚拟下的跑虚拟 虽然这点性能看着没啥,但是我这小破主机。能节约点是点 ----------------------------------------------------------------------
有集成不熟,安装很容易。
Halo是快速建站程序,和熟悉的WordPress类似。 Halo是一款轻量、现代、可扩展的博客系统,特别适合想要快速搭建个人内容平台的人 轻量高效,后台响应快,适合小型VPS

特色还是用来没事生成文字,内置AI创作可以生成标准的Markdown格式。 后来用来同步各个网站非常容易。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。