Serv00 是一家来自波兰的主机服务提供商,因提供 10 年免费的虚拟主机火爆全网。Serv00 提供的主机完全免费、无广告,规格如下图。唯一的要求是每 3 个月需登录一次控制面板或 ssh,否则会回收账号。Serv00 提供的主机服务更接近于 vps 而非 web host(网站空间/网站托管),提供易用的 devilWeb 面板和 ssh,最多可以开放 3 个端口、创建 3 个非 MySQL 数据库、10 个 MySQL 数据库、100 个站点等等,可以开通额外的程序执行权限,非常实用。本文详细记录、说明从注册、开通到基础使用、挂载阿里云、ondrive等网盘、创建站点、反向代理、申请证书与启用 https 的方法,帮助更多人更好地发挥 serv00 的作用和价值。
注册serv00
Serv00 的注册、开通几乎没有任何门槛。前往 serv00 官网(Serv00.com)自行注册一个账号,serv00 会不断刷新注册人数,不同域名对应的服务器会有注册人数限制,如果达到上限可能不再开放注册或新增服务器继续接受注册。点击『Register an account』进行注册。
开始注册之后,首先会显示 servoo 提供的 10年免费 vps 规格,点击该页面的下方『Create account』,接下来填写信息。注意3点:
- 邮箱务必为真实邮箱,需要验证激活
- 用户名(Username)自行确定,用户名就是域名(username.serv00.com)
- 答案(Answer)处不要留空,填写 free
填好后,点击『Create account』,如果用户名没有被占用,后台会进行资源分配、开通,并向填写的邮箱发送邮件。页面上方出现绿色的提示信息,意味着 serv00 账户已经创建完成,检查邮箱查看所有信息。
Serv00 欢迎邮件包括所有重要信息,包括后台管理面和 ssh 登录的用户名、密码,以及 ssh 主机名。其中 ssh 主机名已经由 s1 扩展至了 s4。另有邮件发送接收服务、数据库服务、DNS 等连接信息。
Serv00 后台管理面板为 devilWeb,很好用,ssh 账户(用户名、密码)与管理面板完全相同,在 ssh 或面板中修改密码,对 ssh 和面板同时生效。没有安装第三方 ssh 客户端的,可以直接使用 windows 自带的 openssh 客户端登录。
ssh xxxx@sx.serv00.com
#将 xxxx 换成自己的用户名,sx为s1-s4,依照欢迎邮件中的主机名
部署panindex的前置配置
在部署 panindex 之前,需要完成两项前置工作:开放端口和授予权限/激活程序运行功能。
开放端口
除了 mysql 数据库之外,serv00 的很多资源阈值都是 3。serv00 最多允许开放 的端口数就是 3 个。点开左侧导航面板中的『Port reservation』,点击『+Add port』,这里可以随机指定一个端口,只要没有被占用就可以添加成功并生效。示例指定了 5283,要注意的是,这个端口就是 panindex 运行监听的端口,后续在部署 panindex/alist 等网盘列表程序时需要也配置为 5283。
授予权限
默认设置是不允许运行额外的二进制程序的,需要打开允许运行自有程序功能。点开左侧导航面板『Additional services』,选择上方的第一项『Run your owner applications』,点击『Enable』激活程序运行功能。
部署、运行panindex
Github 上热门或较为热门的开源项目,其他 Unix 系统不好说,但一定能找到使用 Github Action 自动编译 FreeBSD 版本的 repo,比如这个「项目」(中意 alist freeBSD 版本的可以在「这里」找到)。SSH 登录 serv00,下载后赋权。
wget https://github.com/k0baya/panindex-freebsd/releases/download/v3.1.5/PanIndex
chmod +x PanIndex
创建目录,这里为 pan,将 panindex 二进制文件移动至 pan 目录下,在其中创建 config.json 配置文件。配置文件中的端口修改为在前置配置中指定的开放端口,不启用 https 的情况下,证书(cert_file)和私钥(key_file)都可以留空。
mkdir pan && mv PanIndex && cd pan
cat > "config.json" << EOF
{
"host": "0.0.0.0",
"port": 5283,
"log_level": "info",
"data_path": "./data",
"cert_file": "",
"key_file": "",
"config_query": "",
"db_type": "sqlite",
"dsn": "./data.db"
}
EOF
mv pan ./domains/xxxx.serv00.net/
#将xxxx替换为实际的用户名
config.json 中所有的选项,涉及本地文件的,只能指定 “./”(当前目录)或其他具有写入权限的位置,serv00 并不是完整的 VPS,3G 的磁盘存储空间只能在用户目录下使用。完成配置文件创建后,将 pan 目录移入 domains/xxxx.serv00.net 下,也就是 serv00 自动创建的网站目录。之后进入 pan 目录运行 panindex,如果出现类似下图的记录已存在的错误可忽略。
cd ~/domains/xxxx.serv00.net/pan
./PanIndex -c=config.json
此时,打开浏览器,访问本例中的 5283 端口,即可打卡 panindex 后台。务必注意添加端口号,否则会直接打开 serv00 默认网站。
使用 panindex 默认的初始用户名和密码(admin/PanIndex)登录后,可以先修改密码,在进行其他配置。配置修改都会保存在 sqlite 数据库中,不用担心下次登录是否还有效。
回到 serv00 的 ssh 命令行界面,可以看到后台 panindex 程序的输出。Ctrl + C 结束程序运行,可以看到 panindex 自动创建的数据库文件(data.db)和目录(data)。
关闭 ssh,panindex 同样会被终止运行。因此,在测试没问题之后,可以使用如下命令在后台持久运行 panindex,这里建议使用 nohup 的原因是标准输出会被重定向到当前目录的 nohup.out文件中,而不是在终端显示。不建议使用第三方进程管理工具如 pm2 ,仅仅是个简单的持久化运行需求,alist 等网盘列表程序同理。担心 nohup.out 无限增长的话,可以使用以下提示的命令,可以在不中断 panindex 运行的前提下清除 nohup.out 文件内容,还可以将其添加到 cron 中,每天执行一次。
#注意应在 PanIndex 程序目录下运行
nohup ./PanIndex -c=config.json &
#screen ./PanIndex -c=config.json
#清除 nohup.out
#cat /dev/null > nohup.out
关闭 ssh 后,使用 xxxx.serv00.net:5283 仍然可以访问 panindex 服务,再打开 ssh 并登录,“ps aux” 可以列出运行中的进程。要终止 panindex 网盘列表进程,可以使用 “kill 63218”,63218 为当前的 panindex 进程 PID。
为避免 serv00 的不定时重启导致网盘列表程序”宕机”问题,可添加 cron 任务计划。指定时间为『After reboot』,类型为『Advanced』,然后在命令中输入以下内容即可。最后点击『+Add』添加此任务。
cd ~/domains/xxxx.serv00.net/pan && nohup ./PanIndex -c=config.json &
#注意将这里的 xxxx 及目录名 pan 修改为自己的
我们还可以选择简单模式(『Simple』),在特定条件下执行一个后台脚本,结合对站点的 PHP exec、eval函数的取消禁用,可以构造非常强大的 panindex 后台“守护程序”,也可以写一个简单的服务管理页面。
当然,对于 serv00 自动创建的 xxxx.serv00.net 站点,在取消禁用 PHP exec、eval 函数的前提下,也可以写一个调起 panindex 的 index.php 文件放置于 ~/domains/xxxx.serv00.net/public_html 下,还可以实现不用再添加端口号的功能。因为 webhost 虚拟主机上无法进行更为深层的配置,原 index.html 建议删除。
反向代理及SSL
Serv00 中可以快速进行代理和 ssl 配置,非常易用。本例只适用于自定义域名的代理,注意,serv00 提供的配置虽然是代理(proxy),不是反向代理,但基本和通过 nginx 进行反向代理的配置是相同的,serv00 也是使用 nginx 提供的 web 服务。使用 nginx 等进行 location 块定义 URL 分流并反向代理网盘列表程序的话,无需在 serv00 面板进行添加站点、代理等操作。
面板中点击左侧导航栏的『WWW wensites』添加站点,选择『Add new website』添加一个站点。假设添加一个非 serv00.net 的自定义域名,需要记住在自定义域名的托管处添加一条 A 记录或 CNAME 记录,指向 xxxx.serv00.net 或其 IPv4 地址。面板中会自动显示已开放的额端口 5283。最后,点击『+Add』添加站点。这里将有关 https 和 dns 选项的“坑点”特别提示如下,也可参考「视频分享」:
- serv00 面板默认勾选『DNS Support』、不勾选『Use HTTPS』
- 自定义域名应取消勾选『DNS Support』,除非你需要将域名托管至 serv00
- 建议取消勾选『Use HTTPS』,示例的 pan.us.kg 和源站(http://localhost:5283)之间的通讯完全没必要使用 https
- 『Use HTTPS』与是否需要通过 https 访问你定义的域名(新建的网站)无关,force ssl 是新建站点的选项,并非在此配置。如果勾选『Use HTTPS』,但未在 config.json 中指定、加载证书和私钥,会出现 502 错误
- 出现 502/403 等错误,也有可能是 A 记录指向与证书包含的站点 IP 不一致,针对新建的站点在所有配置中保持一致
以上是 serv00 所有反向代理相关的配置。同样是在站点管理界面,选择上方的『Manage SSL Certificates』,可以查看站点绑定的两个 IP 地址,可用作自定义域名的 A 记录值。选择一个 IP,注意应和 A 记录指向一致,点击右侧的『Manage』后进行进一步配置。
在打开的页面点击上方的『Add Certificate』,Type/类型选择『Generate Let’s Encrypt certificate』可为已添加的域名(包括自定义域名)申请单域名证书。本文保持默认,仅演示 xxxx.serv00.net 的ssl 启用。点击『+Add』请求生成证书。申请成功后,上方会提示有绿色的“Operation performed successfully”提示信息。特别强调,两个 IP 地址的第一个是默认站点的绑定 IP,申请 xxxx.serv00.net 域名证书务必选择第一个 IP 地址。
申请证书后,可以在 SSL 证书中查看、下载、删除。
如果采用自定义域名,也分为两种加载方式:
- 子域名(例如 https://pan.example.com):可在 serv00 面板申请但域名证书,或导入已申请的证书(包括该子域名的证书即可)
- URL(例如 https://example.com/pan/):多数网盘列表程序不支持或有限支持,panindex 提供了完整支持,无需在 serv00 面板申请证书,配置 nginx location 块即可
这样我们就可以为自己的站点添加 ssl/https 了,如果不对 panindex 配置文件进行修改(证书和私钥文件选项为空),https 访问方式是无效的,仍然会显示为不安全。本文的 xxxx.serv00.net 仅作示例,需要下载生成的 xxxx.serv00.net 单域名证书,并上传至 pan 目录下,修改 config.json 配置文件。生成的证书为什么不直接引用?serv00 不会给你用户目录之外的任何权限,包括读(read)!
实际操作来看,添加 ssl/https 后,感觉 panindex 后台管理面板操作流畅度有所降低,所以,如果没有高价值数据的传输,常见的软件工具、图片、影视等还是建议通过 nginx 或其他 web server 进行远程反向代理,无需在 serv00 上为网盘列表程序配置 ssl。
最后,本文演示的网盘列表程序 panindex 是使用 go 开发的, go 开源项目很多,包括很多代理应用。理论上只要不需要高级权限(如创建、编辑网络接口等)的代理程序,都可以部署在 serv00 上,而非仅仅停留在照搬老掉牙的“容器”代理,低效、复杂。