跳至主要内容

使用Docker安装OneIndex,以及Caddy反向代理并支持HTTPS

前言

之前有对比过国内的网盘,都不让人放心,正在使用的坚果云其他都好,就是容量略小。自己随着学习、生活不断积累的文件也越来越大,遂有使用 Onedrive 的想法。虽然已经有通过网上的方法申请到了 5T 的教育版 Onedrive,但是不太稳定,不适合存放个人比较重要的文件。碰巧在前几天看到1900也有同样的需求,就一起合租了 Office 365 家庭版,中意的是里面的 Onedrive 1 T 空间和 Office 套件。

将坚果云的文件迁移到 Onedrive 之后,我就马上折腾起了 OneIndex。自己瞎折腾了几天,总算弄出个所以然来。写此博文做个记录。

OneIndex 是采用 PHP 语言开发,能够直接列出 OneDrive 目录,文件直链下载 ,不占用服务器空间,不走服务器流量。

安装环境:Ubuntu Server 16.04 LTS

使用 Github 学生包获得的亚马逊云教育版75刀优惠,可免费使用 EC2 主机 t2.micro 微型实例一年。

其他系统的步骤应该也是差不多,代码会有所不同,可以借助谷歌搜索我给的小标题,找到相应的代码,比如 Docker 安装。

本文的方法使用到了 Docker 和 Caddy,如果你不了解,可以前去谷歌搜索一下,了解个大概。主要是使用 Docker 来安装运行 OneIndex,使用 Caddy 来实现 HTTPS 访问。

安装 Docker

apt update # 检查源更新
sudo apt install docker.io # 安装docker
docker # 检查是否安装成功,若成功则输出关于 docker 的命令提示

运行 OneIndex

docker run -d --name oneindex \
    -p 8080:80 --restart=always \
    -v ~/oneindex/config:/var/www/html/config \
    -v ~/oneindex/cache:/var/www/html/cache \
    -e REFRESH_TOKEN='0 * * * *' \
    -e REFRESH_CACHE='*/10 * * * *' \
    setzero/oneindex

运行效果:打开你的 IP:8080 即可看到 OneIndex 的安装页面。

现在对上述命令进行解释:

  1. --name your-image-nameyour-image-name 这里跟着的是 Docker 镜像的名称,可以自己拟定。
  2. -p your-port:80port 是 OneIndex 的运行端口,可以自行拟定。
  3. REFRESH_TOKEN刷新一次token的crontab表达式,默认值0 * * * *,即每小时
  4. REFRESH_CACHE刷新一次cache的crontab表达式,默认值*/10 * * * *,即每10分钟
  5. setzero/oneindex,是作者提供的 Docker 镜像,你也可以自己按下列代码搭建。

注意:以下三行代码是自己搭建 Docker 镜像,为拓展部分,请物混淆。

git clone https://github.com/donwa/oneindex.git # 从作者的 Github 上下载 OneIndex
cd oneindex # 进入 OneIndex 目录
docker build -t oneindex . # 生成 Docker 镜像,注意最后的空格和点

到这一步,已经可以通过 IP 加端口号来访问 OneIndex 了。下面再介绍为 OneIndex 绑定域名,使用 Caddy 让 OneIndex 支持 HTTPS。

绑定域名

请到到你的 DNS 服务商那增添一个 A 记录解析,将其解析到你的 VPS IP 中。

image

安装 Caddy

sudo curl https://getcaddy.com | bash -s personal # 安装Caddy
which caddy # 检查caddy是否安装成功,若成功则输出/usr/local/bin/caddy

创建 Caddy 所需的文件夹

Caddy 的使用需要配置 Caddyfile,且需要一个文件夹放置 ssl 证书。以下代码功能是创建 Caddy 运行所需的文件夹。

注:Caddy 是使用 Go 语言编写的,可单文件运行。所以可以直接在网站目录上直接输入 caddy 命令运行,不用特别地用下列命令去创建文件夹。但是为了需要 Caddy 能够开机自启动,所以才需要如此。

sudo mkdir /etc/caddy                      # 在指定目录创建 caddy 文件夹
sudo touch /etc/caddy/Caddyfile            # 创建 Caddyfile 文件,用于稍后的配置
sudo chown -R root:www-data /etc/caddy     # 文件夹权限设置
sudo mkdir /etc/ssl/caddy                  # 创建文件夹,存放 ssl 证书
sudo chown -R www-data:root /etc/ssl/caddy # 文件夹权限设置
sudo chmod 0770 /etc/ssl/caddy             # 文件夹权限设置

设置 Caddy 令其开启自启动

sudo curl -s https://raw.githubusercontent.com/mholt/caddy/master/dist/init/linux-systemd/caddy.service -o /etc/systemd/system/caddy.service   # 从 Github 下载 systemd 配置文件
sudo systemctl daemon-reload         # 重新加载 systemd 配置
sudo systemctl enable caddy.service  # 设置 Caddy 服务自启动
sudo systemctl status caddy.service  # 查看 Caddy 状态,现在应该是 not run 状态

Caddyfile 配置

echo "your-site.com {
 gzip
 tls your@mail.com
 proxy / http://127.0.0.1:8080
}" > /etc/caddy/Caddyfile       # 请修改代码后全选复制,这个不要一行一行地复制粘贴

以上代码的作用是将引号中的内容写入到 Caddyfile 中。现在来讲 Caddyfile 的内容:

  1. your-site.com,是你的域名,在前面的 DNS 解析中设置好的(需提前设置好,解析全球生效需要一定时间)。
  2. your@mail.com,这里填写你的邮箱,Cadyy 会自动向 Let`s Encrypt 申请并自动续订 SSL 证书。
  3. proxy / http://127.0.0.1:8080,这里是反向代理设置,8080 是之前设置的端口号。

配置完 Caddyfile 之后,再执行以下命令。

sudo systemctl restart caddy.service # 重启 Caddy 服务

那么,现在访问你的域名,应该就可以实现 HTTPS 访问了。接下来,就请按 OneIndex 的教程来设置了。
参考:

  1. donwa/oneindex: Onedrive Directory Index
  2. 利用 Caddy 轻松实现反向代理/镜像(支持自签SSL证书) - 网络资源 - 如有乐享
  3. Caddy - 方便够用的 HTTPS server 新手教程 - 作业部落 Cmd Markdown 编辑阅读器

此博客中的热门博文

免费公益的 SSR 机场推荐汇总

写给需要的人。建议收藏网址,方便每日签到获得流量。可以从此网站「放牧的风」获得 SSR 节点临时使用或借此访问机场。机场流量规则评价几鸡每月初始10G流量,每天签到0.8~5GB线路质量不错,线路多,量足,推荐首选纸飞机初始流量3G,签到所获小几十兆流量免费节点两个,流量较少,适合轻度使用卡车云加速初始流量3G,签到可获小几百兆流量提供 3 条免费线路,流量不多,适合轻度使用SSR 使用教程网上已经有写得很好的了,就不做重复工作了。见此:大概是萌新也看得懂的SSR功能详细介绍&使用教程FAQ:为什么上面的网站打不开?
答:此类机场网址容易被墙,打不开请挂梯后再访问。为什么才提供几家机场?太少了。
答:数量太多反而有选择困难症,挑几家用的舒服用着就行了。对应得平台的软件在哪里下?Windows:下载Windows(游戏):下载Android:下载Mac:下载iOS:点此跳转想讲的热爱祖国;低调使用,珍惜资源。学习知识,开拓视野;尽量不去使用国产软件,比如 360、腾讯电脑管家、2345 好压等软件。因为它们会定时上报节点 IP,这就是你的节点会凉得这么快得原因;电脑上请使用 PAC 模式,手机上请设置为绕过局域网和大陆地址;支持如果你有发现好的机场可以在下方的评论推荐给我,万分感谢。推广嫌免费得不稳定,那来试试付费服务吧:好好学习你可以使用我的优惠码:blogiljwme,享 6.5 折优惠。蓝岸 v2ray,更稳定的科学上网工具。

我的科学上网经历

我个人翻墙的目的只是想用用谷歌学些编程,看看 Youtube 上的视频消遣消遣。刚开始时接触翻墙时,用的是蓝灯、赛风之类的 VPN 应用。再后来,在 Google Plus 上看到有人分享的免费的 shadowsocks 的链接,便去一个机场(卖ss账号)的网站注册了一个会员,用了两个月后,机场的管理员在 telegram 群里说要改为收费模式了,我当时犹豫了一下,花了将近 100 RMB 买了一年的时长。有人会说,买机场的服务建议是月付,因为不知道什么时候机场就跑路了,这有些道理。当时,我是因为 ss 的速度不错,且加上 tg 群里很多人都说支持付费,我也就跟着上车了。现在想想,有些被牵着鼻子走的意思。大概快一年吧,这家机场真的倒闭了。之后有一段日子,我陆陆续续在其他的机场注册账号,使用其提供的免费流量额度。这样的日子过了不久,我看到了一篇博客,里面博主推荐自己搭建 ss/ssr,速度快,数据隐私有保障,且和好友合租的话,价格也很实惠。于是我便购入搬瓦工 CN2 VPS,在网上找了一键搭建 ssr 的脚本,很快就搭建成功了。但是,期间因为不熟悉 SSH 和 Linux 系统的操作,研究了蛮久。这样,又安安稳稳的过了几个月。18 年的上半年,墙越来越高,我经历了 IP 被墙,付费换 IP,在非常短的时间内 IP 再被墙(可以 ping 通,但是无法科学上网),免费换了一次 IP(搬瓦工的新策略)。于是,我发现 ssr 应该很容易被检测到,我去网上一查,原来 ssr 已经停止了更新,面对不断升级的墙,ssr 会越显得力不从心。于是我转向了新兴的代理工具 v2ray,同样,我使用了网友制作的一键脚本工具,并且使用了 Websocket + TLS + Caddy 的方案(因为 IP 被封怕了)。使用 v2ray 几周后,我发现此方案容易断流,表现到日常使用上,就是一会儿能用,一会儿不能用,有些东西加载不出来,用户体验极差。根据上网查阅资料和自己实践,我发现传输协议 h2 和 ws 都有断流现象。为了追求使用的稳定,我将 v2ray 协议换成 mkcp,并且在 v2ray 上搭建了 shadowsocks,再配合 kcptun 使用,达到了速度和稳定两者俱佳。为什么使用 shadowsocks 呢?因为 shadowsocks 有人不断维护着,这保证了它的对抗墙的能力。