Serv00
介绍
Serv00 是一家来自波兰的主机服务商,因提供10年免费的虚拟主机火爆全网。
限制
- 每3个月需登录一次 panel 或 ssh
- 最多可开放端口x3、非MySQL数据库x3、MySQL数据库x3、站点x100
注册
注册需:可收邮件的邮箱x1(注册成功后VPS信息将发送至该邮箱)
Serv00不同子域名服务注册有人数限制,若达到上限可能不再开放注册或新增服务器继续接受注册
➡️ Serv00.com,进入官网点击 [Register an account] 注册
- [First Name] 和 [Last Name] 随意
- [Username] 就是 panel 登录账号
- [Answer] 填写 free 即可
注册成功后,查看邮件包含以下信息(以下类似_sX.serv00.com_中的 X 代表注册时最新服务器的序号)
- Login, Password - panel 登录账号密码
- SSH/SFTP 服务器地址 - sX.serv00.com
- Home directory - 主目录(/usr/home/用户名)
- Devil WEB - 管理面板地址(https:/panelX.serv00.com/)
- SMTP, IMAP, POP3 address - 邮件服务地址(mailX.serv00.com,附带开放服务的端口)
- Webmail - 登录邮箱地址(https://mail.serv00.com/)
- MySQL server - MySQL 服务地址(mysqlX.serv00.com)
- PhpMyAdmin - MySQL 管理地址(https://pma.serv00.com/)
- PostgreSQL server - PgSQL 服务地址(pgsqlX.serv00.com)
- PhpPgAdmin - PgSQL 管理地址(https://pga.serv00.com/)
- MongoDB server - MongoDB 服务地址(mongoX.serv00.com)
- RockMongo - Mongo 管理地址(https://moa.serv00.com/)
- DNS servers - DNS 服务器(dns1.serv00.com, dns2.serv00.com)
PANEL
访问邮件中 Devil WEB 地址,输入 Login & Password 登录
SSH
登录名:邮件中 Login,域名:邮件中 SSH server,密码:邮件中 Password
ssh [email protected]
MAIL
注册域名
注册域名可为 Serv00 子域名或自由域名,此处以 example.com 为例,也可为 自有二级域名
在 [WWW websites] - [Add new websites] - [Domain],输入域名,点 [Add]
添加 DNS 记录
注意此处类似 mailX.serv0.com 中的 X 代表数字,以邮件中 SMTP address 地址为准
[SSL] - [WWW websites] - [IP Address] 任选一个
若使用 Serv00 子域名,只需填写 A 记录
DKIM是DomainKeys Identified Mail的缩写。它是一种电子邮件认证方法,允许发件人防止电子邮件内容在发送过程中被篡改。
第四项 DKIM 配置可选,完成后面邮箱创建步骤后,可在 [Dkim] 中生成一个 DNS 记录和内容,格式如下表
类型 | 记录 | 内容 |
---|---|---|
A | example.com | SSL 中查询的 IP Address |
MX | example.com | mailX.serv00.com |
TXT | example.com | v=spf1 a mx include:mailX.serv00.com -all |
TXT | devil._domainkey | v=DKIM1; k=rsa; p=XXXXXXX |
创建邮箱
在 [E-mail] 中 [Add new e-mail]
- E-mail address - [email protected]
- Password&Confirm password - 随后登录邮箱管理的密码
创建后可在列表中找到邮箱中的 [Detail] - [Set quota] 设置限额,此处我设置为 **100M
登录
访问 mail,输入创建的邮箱地址及密码登录即可
部署服务
Lsky 图床
➡️ Lksy 官方文档
创建数据库
官方支持的数据库中在 Serv00 服务中可用的有: MySQL、PgSQL
以下以 MySQL 为例
[MySQL] - [Add database]
- [Database name] - 数据库名称(注意有带固定前缀)
- [Username] & [Password] - 数据库账号密码(注意账号有带固定前缀)
点击 [Add] 创建
创建站点
[WWW website] - [Add new website],输入域名,点击 [Add]
注意若为自有域名需添加域名记录,在 [SSL] - [WWW websites] - [IP Address] 查询任意 IP
在域名服务商添加记录 A - img.example.com - 查询的IP地址
[WWW website] - [Manage SSL certificates] - [Add certificate] 添加 Lest's Encrypt 证书
安装
SSH 连接服务器,执行命令安装 Lsky
release_info=
rm -rf public_html && ln -s "
提权cd .. && chmod -R 0777 站点域名
之后在 [WWW website] - 站点 - [Detail] - [Open Basedir directories] 末尾添加 /usr/home/用户名/domains/站点域名/
并开启 GZIP compression、Force SSL、Allow PHP eval() function、Allow PHP exec() function
配置
邮件配置
- 主机地址 - mailX.serv00.com
- 连接端口 - 默认 587
- 用户名 - 邮箱地址
- 密码 - 邮箱密码
typora+picgo
不过多赘述,请求token地址https://img.example.com/api/v1/token
自动启动
听说 Serv00 的主机会不定时重启,所以需要添加自启任务。
在 Panel 中找到 Cron jobs 选项卡,使用 Add cron job 功能添加任务,Specify time 选择 After reboot,即为重启后运行。Form type 选择 Advanced,Command 写:
BASH
/home/你的用户名/.npm-global/bin/pm2 resurrect >/dev/null 2>&1 && /home/你的用户名/.npm-global/bin/pm2 restart all >/dev/null 2>&1
记得把你的用户名改为你的用户名
添加完之后,在 SSH 窗口保存 pm2 的当前任务列表快照:pm2 save
这样每次 serv00 不定时重启任务时,都能自动调用 pm2 读取保存的任务列表快照,恢复任务列表。如果在保存了任务列表快照后又改变了任务 pm2 的任务列表,需要重新执行 pm2 save
以更新任务列表。
#!/bin/bash
USERNAME='MercuryZz'
PASSWORD='qbhZAI6GHq*va8#OkLu7'
SSH_ADDRESS='s7.serv00.com'
SERVER_ADDRESS='https://img.zaizai.baby'
SMTP_SERVER_ADDRESS='mail7.serv00.com'
SMTP_SERVER_PORT='897'
SMTP_EMAIL='[email protected]'
SMTP_PASSWORD='.Q2W*Ep&26G9JtY1KlLgE83.Mi54LF'
TARGET_EMAIL='[email protected]'
check_health() {
local CODE=$(curl -o /dev/null -s -w "%{http_code}\n" --connect-timeout 10 --max-time 30 ${SERVER_ADDRESS})
if [ "$CODE" != "200" ]; then
echo 'Server is down!'
return 1
fi
return 0
}
send_mail() {
if [ -n "${SMTP_SERVER_ADDRESS}" ] && [ -n "${SMTP_SERVER_PORT}" ] && [ -n "${SMTP_EMAIL}" ] && [ -n "${SMTP_PASSWORD}" ] && [ -n "${TARGET_EMAIL}" ]; then
curl --ssl-reqd \
--url "smtps://${SMTP_SERVER_ADDRESS}:${SMTP_SERVER_PORT}" \
--user "${SMTP_EMAIL}:${SMTP_PASSWORD}" \
--mail-from "${SMTP_EMAIL}" \
--mail-rcpt "${TARGET_EMAIL}" \
-T - <<EOF
From: ${SMTP_EMAIL}
To: ${TARGET_EMAIL}
Subject: ${EMAIL_TITLE}
${EMAIL_DATA}
EOF
else
echo 'Cancel send email due to missing or empty configuration.'
fi
}
restart_server() {
echo 'Trying to restart server...'
local REMOTE_COMMAND1="/home/${USERNAME}/.npm-global/bin/pm2 resurrect && exit" \
&& sshpass -p "${PASSWORD}" ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -tt ${USERNAME}@${SSH_ADDRESS} "$(eval echo $REMOTE_COMMAND1)" \
&& local REMOTE_COMMAND2="/home/${USERNAME}/.npm-global/bin/pm2 restart all && exit" \
&& sshpass -p "${PASSWORD}" ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -tt ${USERNAME}@${SSH_ADDRESS} "$(eval echo $REMOTE_COMMAND2)"
}
check_health
EXIT_CODE=$?
if [ ${EXIT_CODE} -eq 1 ]; then
EMAIL_TITLE='Server is down!'
EMAIL_DATA="${SERVER_ADDRESS} is down, trying to restart server..."
send_mail
while [ ${EXIT_CODE} -eq 1 ]; do
restart_server
sleep 120
check_health
EXIT_CODE=$?
done
if [ ${EXIT_CODE} -eq 0 ]; then
EMAIL_TITLE='Server is up!'
EMAIL_DATA="${SERVER_ADDRESS} has been restarted successfully."
send_mail
fi
fi