注册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 上,而非仅仅停留在照搬老掉牙的“容器”代理,低效、复杂。
更多精彩,敬请关注老E的博客!
文章评论
文章质量很高
感谢分享
是不是对大陆IP屏蔽了?我trace能到PL,但是无法访问ssh,然而web又是正常的
@ooxx 部分服务器的IP被墙了,而且是有时被墙有时又没事的那种
@yucho 我也遇到ssh无法登录问题,怎么解决?挂代理也不行。。。
@t 很久前我回复过,清除指纹(.\ssh 下)ssh就panelx webx user@sx.serv00.com 都试一遍就好 如果是面板 那就ssh重置下密码。连接池耗尽了
可以修改PHP版本吗?
@快科技2 可以的 登陆后面板中就有可选的所有版本
请问运行./PanIndex -c=config.json时报错如下:
-bash: ./PanIndex: Permission denied
@laipzh 面板里打开权限了吗?是否执行了chmod +x?
alist流畅,且易用性比panindex好。而且应用也方便
@look 这种比较就算了吧 alist、panindex都不是本文的主角 基于什么出发点都不用在这里比较
注册就提交邮箱已被注册过了
@pu 代理污染换个再试
网站根本注册不了啊。用谷歌邮箱第一次注册说我邮箱已经注册了账号,QQ邮箱一个邮箱都能注册两个,就是一个邮件都没有收到。
@不见不散 换100个邮箱并没有改变你的ip
纠正一下,Serv00官方从未说是“免费十年”,实际上管理面板上的“过期日期”在每次登录后都会自动增加。另外,我发现Serv00上运行的Alist,无法通过WebDAV访问BaCloud网盘,提示“connect: connection refused”,但是别的服务器可以,不知道是不是Serv00屏蔽了。
注册时会出现“Maintenance time. Try again later.”是什么情况呀