V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
imdjh
V2EX  ›  分享创造

道友(docker fellow)们,是时候展现真正的 bt 下载速度了

  •  4
     
  •   imdjh · 2015-10-09 10:28:40 +08:00 via Android · 18669 次点击
    这是一个创建于 3352 天前的主题,其中的信息可能已经有所发展或是发生改变。
    ## Keyword: docker, owncloud, bit torrent, remotedownload, owncloud-with-ocdownloader

    __TL;DR: __ 我做了个 docker 镜像( dockerfile 开源),基于 owncloud:stable, 拓展了离线下载 app 。用免费的共有 PaaS 资源,让我们 maximize 出真正的 BT 速度!
    镜像名(hub 中搜索): owncloud-with-ocdownloader
    第 1 条附言  ·  2015-10-09 15:11:22 +08:00

    BT 下载大致就是参与的人越多越容易下载。

    但是天要刮风,人要睡觉, PC 不能 7x24 开着,怎么办?

    在这最好的云时代,是时候放下``胖''的东西, Keep it
    simple and containerized,在睡觉时关掉电源,拥抱无处不在的 PaaS 。

    对于这个项目就是用自己的 docker 容器代替 PC 下载,因为 docker 很轻,相对于笨重的 VPS 来说会有更多的服务商愿意做免费 PaaS (现在有,将来会有更多)。

    这个项目的营造的乌托邦:
    传统的 BT 下载的 peer 是 PC ,现在 BT 下载的 peer 主要是中央式服务器(! PT 党,不好意思),将来的 BT 下载 peer 是容器。让属于分布式的下载方案,回归分布式。

    这个项目提出的下载步骤是这样的:

    某度网盘 ->

         百度网盘 aria2 插件 -> 你的容器 -> 本地

         你的容器 -> 本地

    拥抱 docker ,拒绝吸血鬼(传统下载器):

    ocdownloader 默认在下载完后自动做种 1 周,这让 BT 下载生态更好。
    相比传统集中式吸血鬼服务器,用 docker 就算你真的不做种被判为吸血鬼, docker 更像是个轻量级的拳击手.你可以随时换 IP ,只要换一个 container 或是换一个 PaaS 服务商就是了(= =||)

    那就细细说下怎么整起:

    我是个 hardcore 道友,我在自己 VPS 上用 docker:

    $ docker pull imdjh/owncloud-with-ocdownloader
    $ docker run -p 0.0.0.0:80:80 -d imdjh/owncloud-with-ocdownloader
    $ exit # go localhost
    $ xdg-open http://www.some-where-pretty-rrrrandom-on.net
    

    我是个 docker 热衷者, docker 让工作更轻松:

    让我们用 3 张图解释怎么使用免费 PaaS 整起自己的 BT 离线空间!这里用的是 daocloud 。如果你愿意的话,可以点击下图 1 ,用的是我的推荐链接。

    1. 注册, 登录

      register a account

    2. 在代码仓库中选择 imdjh/owncloud-with-ocdownloader 镜像
      select imdjh/owncloud-with-ocdownloader as image

    3. 随便添个名字,点击部署,狂点下一步

      contine for a long time

    4. 在部署容器的初始化过程中为何不关注下微信号呢?告诉你代码构建和 CI 的结果
      wechat binding

    我听说过 docker 啦,但是到底怎样很难说。。

    那就来看看这个演示站点吧! Powered by daocloud.io

    用户(privileged): goodaii

    密码: 321321a

    FYI: 要我证明 docker 如何的轻便快捷?如果任何人改动了演示站点的密码,重新跑一个容器简单到只剩 3 个单词,docker run !$

    第 2 条附言  ·  2015-10-09 15:15:25 +08:00
    第 3 条附言  ·  2015-10-09 17:15:40 +08:00

    请各位道友使用时留意当地服务商网络协议或是EULA,尊重公平使用原則。=]

    第 4 条附言  ·  2015-10-09 17:44:49 +08:00

    对于 ocdownloader 的附加信息:

    ocdownloader 是在 Creative Commons BY-SA 4.0 授权下发布的,
    1.5.1(最新)使用 aria2 作为后台,用以支持 HTTP(S)/FTP/BT 的下载需求,但是服务器尚不存在 aria2 服务器(aria2c)时,会用 curl 作为 fallback 。
    ocdownloader 项目代码库:https://github.com/DjazzLab/ocdownloader

    本镜像使用 ocdownloader-master 分支构建,配合安装上 PHP5.6 和编译对应依赖,并使用 apache2 作为 www 服务器(从 owncloud:stable 中偷来的),在启动 owncloud 前会由脚本启动 aria2c ,但没做守护进程(2015-10-09)。

    第 5 条附言  ·  2015-10-10 11:55:57 +08:00

    docker 这种软件可以将网站应用部署在由 PaaS 服务商提供的容器内的。

    其中:
        容器这个东西是从一个系统镜像启动”(与虚拟机的启动不同,更类似*nix 下的文件系统挂载)起来的,
        而系统镜像可以由开发运维人员定制

    70 条回复    2016-12-15 11:09:05 +08:00
    imdjh
        1
    imdjh  
    OP
       2015-10-09 10:32:58 +08:00 via Android   ❤️ 1
    OP 手头有 demo ,但是目前没条件找到发出来。所以暂时各位请自行搜索,抱歉!
    TODO: EDIT THIS POST
    wph95
        2
    wph95  
       2015-10-09 14:41:23 +08:00   ❤️ 1
    然而并没有看懂你在说什么
    imdjh
        3
    imdjh  
    OP
       2015-10-09 15:12:39 +08:00   ❤️ 1
    @wph95 Hey, wph95. 之前环境受限没办法铺开写,现在好了,已附加内容。
    chinajik
        4
    chinajik  
       2015-10-09 15:23:16 +08:00   ❤️ 2
    看懂你要干嘛了, star 了, daocloud 我也使用过,神器。。。
    ScotGu
        5
    ScotGu  
       2015-10-09 15:25:00 +08:00   ❤️ 1
    件名 协议 信息 速度 状态
    ee4a154a2ced80d1998a6ce41aa13eb3?fid=146... HTTP
    448.00 KB / 5.86 GB (0.01%)
    7.72 KB/s 正在下载
    这感人的速度。。
    imdjh
        6
    imdjh  
    OP
       2015-10-09 15:28:00 +08:00
    @ScotGu 额额,往好的一方面看的话就是:至少不会像某网盘隔天``自动''取消(强制失败)没速度的下载。
    imdjh
        7
    imdjh  
    OP
       2015-10-09 15:28:43 +08:00
    @chinajik 谢谢,希望好用 =D
    cyr1l
        8
    cyr1l  
       2015-10-09 15:31:22 +08:00
    试了下 http 好慢, 一定是哪里不对。 百度盘资源。
    acrisliu
        9
    acrisliu  
       2015-10-09 15:35:14 +08:00   ❤️ 1
    cn_windows_server_2012_r2_x64_dvd_incl_v... HTTP
    8.59 MB / 4.30 GB (0.19%)
    295.58 KB/s
    支持一个
    acrisliu
        10
    acrisliu  
       2015-10-09 15:36:00 +08:00   ❤️ 1
    速度还在涨 上 1MB/S 了
    cyr1l
        11
    cyr1l  
       2015-10-09 15:36:42 +08:00
    @ScotGu 你看到的是我添加的资源。可能百度盘根据我的 IP 有“优化”?我新加坡 IP 。



    试了下 百度卫士的离线安装包挺快的。
    wph95
        12
    wph95  
       2015-10-09 15:38:12 +08:00   ❤️ 1
    Daocloud 免费账户是有限速的 !!!
    ScotGu
        13
    ScotGu  
       2015-10-09 15:42:32 +08:00
    这么玩 PT 党的福音啊。。 就是容易封号。
    WildCat
        14
    WildCat  
       2015-10-09 15:49:00 +08:00 via iPhone
    这是要把 Daocloud 玩坏的节奏吧
    daocloud
        15
    daocloud  
       2015-10-09 16:09:10 +08:00
    文档写的真漂亮~!
    sakeven
        16
    sakeven  
       2015-10-09 16:18:19 +08:00
    好顶赞
    jade88
        17
    jade88  
       2015-10-09 16:23:49 +08:00
    docker run !$ 命令的!$是啥意思
    jamiefang
        18
    jamiefang  
       2015-10-09 16:34:04 +08:00
    天哪!
    动图好炫酷的感觉。
    guozhi
        19
    guozhi  
       2015-10-09 16:54:34 +08:00
    WOW~ 很好用,但是怎么没有权限重命名下载的文件呢?
    jy02201949
        20
    jy02201949  
       2015-10-09 17:10:31 +08:00
    前两天那个动漫迷做的 modo.moe 差不多一个意思啊,只不过用 kodexplorer 可以直接在线看漫画视频感觉屌屌的
    imdjh
        21
    imdjh  
    OP
       2015-10-09 17:24:17 +08:00
    @jade88 是 bash 环境下的特殊引用,指的是上一条运行过的指令的最后一个参数
    -----
    $ echo "me" "go go"
    me go go
    $ echo !$
    echo "go go"
    go go
    --
    $ echo me go go
    me go go
    $ echo !$
    echo go
    go
    $
    ------
    imdjh
        22
    imdjh  
    OP
       2015-10-09 17:25:30 +08:00
    @jy02201949 哦!我去了解下, 谢谢!
    imdjh
        23
    imdjh  
    OP
       2015-10-09 17:27:08 +08:00
    @jamiefang 这个地方我踩了不少坑。过会儿写个教程,再 at 你。用的是 ffmpeg 外加 ImageMagick 中的 convert
    imdjh
        24
    imdjh  
    OP
       2015-10-09 17:28:30 +08:00   ❤️ 1
    @WildCat
    @daocloud 这个。。不好意思,我附加了信息 3 。请各位道友使用时留意当地服务商网络协议或是 EULA ,尊重公平使用原則。=]
    sobigfish
        25
    sobigfish  
       2015-10-09 17:29:59 +08:00
    版权 2 个字-。-
    moxiaotiao
        26
    moxiaotiao  
       2015-10-09 17:30:04 +08:00
    不错不错,试用了下,还是蛮好用的
    imdjh
        27
    imdjh  
    OP
       2015-10-09 17:48:21 +08:00
    @ScotGu 我自认为了解过点 PT 的皮毛,各大下载站对于会员下载器种类的限制(特别是对于开源实现)和帐号 id 的导入都是比较困难的。 FYI :见附加信息 4
    humiaozuzu
        28
    humiaozuzu  
       2015-10-09 17:54:07 +08:00
    我家下载镜像的速度 =。=
    moxiaotiao
        29
    moxiaotiao  
       2015-10-09 17:57:25 +08:00
    下载的文件如何删除,老是提示没有权限
    wsy2220
        30
    wsy2220  
       2015-10-09 18:08:05 +08:00 via Android
    在 vps 上下载盗版内容会不会被干掉啊
    imdjh
        31
    imdjh  
    OP
       2015-10-09 18:49:23 +08:00
    @moxiaotiao 已确认是一个 bug , aria2 服务器下载的文件权限是 root 的,运行 owncloud 的是 www-data 用户组,着手修复中。
    PS :文档未提及,实操出问题 =P
    VmuTargh
        32
    VmuTargh  
       2015-10-09 18:50:21 +08:00 via Android
    pt 我都是毛子站下音乐,挂的是 openshift ,目前没有被停用……刚才贴吧看见一个 do 挂 bt 下美帝电影然后被发警告信的…… v 友们要注意咯
    imdjh
        33
    imdjh  
    OP
       2015-10-09 18:50:32 +08:00
    @wsy2220
    1 。看你有没有遵守服务商 EULA 之类的。 FYI :附加信息 3
    2 。没有第二。 FYI :在最坏情况下( owncloud 死了,起不来),只要有 CLI 就能
    `docker exec -ti 容器 id /bin/bash` /var/www/html/data 找数据
    imdjh
        34
    imdjh  
    OP
       2015-10-09 19:29:13 +08:00
    问题已被 hotfix , hub 上的镜像和演示网站均已更新,谢谢 @moxiaotiao
    imdjh
        35
    imdjh  
    OP
       2015-10-09 19:42:16 +08:00
    @imdjh @wsy2220
    我之前回复你的是错的!如果容器死了 start 不起来,需要先 commit 当前容器到一个“临时”镜像,然后从这个“临时”镜像启动 bash 。
    FYI : docker exec ,需要此容器正在运行

    拓展阅读: https://forums.docker.com/t/run-command-in-stopped-container/343/7
    crab
        36
    crab  
       2015-10-09 19:42:19 +08:00
    还是没看明白,这和百度网盘,迅雷离线啥区别啊。
    21grams
        37
    21grams  
       2015-10-09 19:56:28 +08:00
    然而并没有看懂你在说什么
    jade88
        38
    jade88  
       2015-10-09 20:51:38 +08:00
    @imdjh
    哦,明白了,谢谢你
    那 docker run !$实际上是执行的 docker run imdjh/owncloud-with-ocdownloader ,是这个意思吧
    imdjh
        39
    imdjh  
    OP
       2015-10-09 22:04:10 +08:00   ❤️ 1
    @crab 本质上都是离线 BT 下载,但是这个项目的“情怀”就是将 BT 下载的发起者,从“ PC ”换成“容器”。还附带个网盘功能。
    imdjh
        40
    imdjh  
    OP
       2015-10-09 22:04:43 +08:00
    @jade88 对的!这样输入快
    libo26
        42
    libo26  
       2015-10-09 23:10:37 +08:00
    不错哟 ,收藏
    d7101120120
        43
    d7101120120  
       2015-10-09 23:53:51 +08:00
    自己的一个闲置的 vps 没用,然后就用 transmission (也用过 qBittorrent )搭建了一个 seedbox ,专门用来给自己喜欢的一个字幕组的新种子做种。
    KenGe
        44
    KenGe  
       2015-10-10 00:00:45 +08:00
    @imdjh 这个 ocDownloader 是 own Cloud 自带的么?还是你自己弄的?
    imdjh
        45
    imdjh  
    OP
       2015-10-10 07:17:42 +08:00
    @KenGe ocdownloader 是 owncloud 的一个非官方 app (也就是我们熟悉的插件 /拓展)
    我这个镜像做的就是把 ocdownloader 的最新版集成到最新的 owncloud 稳定版中去,然后默认启用 ocdownloader 这个 app.
    imdjh
        46
    imdjh  
    OP
       2015-10-10 07:19:44 +08:00
    @d7101120120 BT 圈就需要这样``有种''的人,赞!
    21grams
        47
    21grams  
       2015-10-10 10:10:18 +08:00
    什么是 docker ? 我咋啥都看不懂。
    KenGe
        48
    KenGe  
       2015-10-10 11:28:55 +08:00 via Android
    @imdjh 我去移植看一看~
    imdjh
        49
    imdjh  
    OP
       2015-10-10 11:38:45 +08:00
    @KenGe 嗯!做成后和我的 dockerfile 做下比较( diff ),再发个 issue 的最好了。
    fengjianxinghun
        50
    fengjianxinghun  
       2015-10-10 11:40:19 +08:00
    赞!!!
    imdjh
        51
    imdjh  
    OP
       2015-10-10 11:58:03 +08:00
    @21grams 附加留言 5 简单的介绍了 docker 的概念,这个项目的思想在#39 楼。
    lj0014
        52
    lj0014  
       2015-10-10 14:31:34 +08:00
    docker 好火呀现在
    isCyan
        53
    isCyan  
       2015-10-11 12:30:55 +08:00
    为什么没有装 python 和 youtube-dl 导致无法下载 youtube 视频
    imdjh
        54
    imdjh  
    OP
       2015-10-11 13:19:12 +08:00
    @isCyan 对不起,项目实验的时候在本地,没想到用 u2b 这个功能。谢谢,我现在着手加入这个功能。
    isCyan
        55
    isCyan  
       2015-10-11 14:34:07 +08:00
    @imdjh 带有 youtube-dl 功能的镜像已经制作好。

    Docker Hub: bohan/owncloud-with-ocdownloader-and-yt-dl

    $ docker pull bohan/owncloud-with-ocdownloader-and-yt-dl
    $ docker run -p 80:80 -d bohan/owncloud-with-ocdownloader-and-yt-dl
    isCyan
        56
    isCyan  
       2015-10-11 14:36:43 +08:00
    在我的 DigitalOcean 服务器上下载 y2b 视频速度 50MB/s +!
    感谢你的镜像,还有 Docker (部署真心方便),还有 OCDownloader
    imdjh
        57
    imdjh  
    OP
       2015-10-11 14:59:13 +08:00
    @isCyan 谢谢你的火速贡献!我刚在 youtube-dl 上踩了不少坑,已更新 dockerfile , push 更新过的镜像。
    imdjh
        58
    imdjh  
    OP
       2015-10-11 15:05:22 +08:00
    @isCyan
    我说的坑: debian 软件库里的 youtube-dl 比较老,没有 ocdownloader 默认使用的 force-ipv4 选项。

    注意: youtube-dl 调用路径是 hardcoded 的,原作者对此问题的表态是“需要帮助”。如果有 PHP 开发者愿意帮忙解决的话,上游有你更精彩。
    而且 ocdownloader 现在

    但实际上是我不看 ocdownloader 部署文档的问题,他里面写的挺良心的。
    imdjh
        59
    imdjh  
    OP
       2015-10-11 15:56:23 +08:00
    @imdjh #58 楼的“而且 ocdownloader 现在 ”是错打的内容请忽视。
    imdjh
        60
    imdjh  
    OP
       2015-10-11 20:26:15 +08:00
    @isCyan hey ,我更新了项目代码,修复了 www-data 执行权限漏洞。注意改动。
    isCyan
        61
    isCyan  
       2015-10-17 19:33:21 +08:00
    如何在自己的 VPS 上放心地使用本镜像?

    Step 1 - 新建数据目录

    $ sudo mkdir /var/data
    $ sudo mkdir /var/data/mysql
    $ sudo mkdir /var/data/mysql/owncloud
    $ sudo mkdir /var/data/owncloud

    Step 2 - 拉取镜像

    $ docker pull imdjh/owncloud-with-ocdownloader
    $ docker pull mysql

    Step 3 - 配置并启动 MySQL 容器

    $ docker run --name mysql-owncloud \
    -v /var/data/mysql/owncloud:/var/lib/mysql \
    -e MYSQL_ROOT_PASSWORD=YOUR_MYSQL_ROOT_PASSWORD \
    -e MYSQL_DATABASE=owncloud \
    -e MYSQL_USER=owncloud \
    -e MYSQL_PASSWORD=YOUR_MYSQL_PASSWORD \
    -d mysql

    上面的命令通过 Docker Volume 将 MySQL 容器中的存储目录与刚才在宿主机中新建的 MySQL 数据目录连接。数据库名和数据库用户被设置为了 owncloud 。请把命令中的 YOUR_MYSQL_ROOT_PASSWORD 和 YOUR_MYSQL_PASSWORD 分别修改为你要设置的 root 密码和 owncloud 用户密码。

    Step 4 - 配置并启动 ownCloud 容器

    $ docker run --name=owncloud \
    --link=mysql-owncloud:mysql-owncloud \
    -p 5679:80 \
    -d imdjh/owncloud-with-ocdownloader \
    -v /var/data/owncloud:/var/www/html/data

    上面的命令通过 Docker Volume 将 ownCloud 容器中的存储目录与刚才在宿主机中新建的 ownCloud 数据目录连接。我们还通过 Docker Link 功能将刚才启动的 MySQL 容器(名为 mysql-owncloud )与 ownCloud 容器连接,别名也为 mysql-owncloud 。冒号前面的是 MySQL 容器名,后面的是在 ownCloud 容器中的别名,可以自己修改。我们发布容器的 80 端口为宿主机上的 5679 端口供我们访问。你可以将命令中的 5679 改为你想设置的发布端口,一般设置为 80 端口。

    这样,使用了独立 MySQL 容器和本地存储目录的 ownCloud 容器就部署完成并启动了。这意味着,程序将使用 MySQL 数据库而非 SQLite 数据库而提升性能,你的 MySQL 数据库数据和存储的文件将存在宿主机上,不会因容器重启而丢失。
    isCyan
        62
    isCyan  
       2015-10-17 19:41:00 +08:00
    请在程序安装向导中,选择 MySQL 数据库,数据库主机(默认写着 localhost 的位置)就是 MySQL 容器的别名,在本例中是 mysql-owncloud 。存储目录不需要修改。
    isCyan
        63
    isCyan  
       2015-10-17 20:27:30 +08:00   ❤️ 1
    完整指南 https://bohan.life/deploy-owncloud-with-docker/
    isCyan
        64
    isCyan  
       2015-10-17 20:56:51 +08:00
    @imdjh Downloads 目录:您没有权限上传或创建文件
    napsterwu
        65
    napsterwu  
       2015-10-18 13:01:09 +08:00
    历史数据永远都是加载中
    imdjh
        66
    imdjh  
    OP
       2015-10-21 14:55:41 +08:00
    @isCyan 谢谢你的回复和支持!
    @napsterwu 出现的问题,我明天再找找。可能是因为修复上一个漏洞时造成的。
    hero18688
        67
    hero18688  
       2015-11-29 16:55:29 +08:00
    想找一个免费大空间的 PaaS 挂 pt ,大硬盘的 vps 不便宜,再说 vps 装 aria2 加 webui 就行了,无需装 docker 。
    hero18688
        68
    hero18688  
       2015-11-29 18:38:34 +08:00
    daocloud 免费版有多大的存储空间呢 可否修改 aria2 的 conf
    kxabc
        69
    kxabc  
       2016-08-16 15:19:03 +08:00
    @isCyan 重启怎么不能用了
    c401651191
        70
    c401651191  
       2016-12-15 11:09:05 +08:00
    @jade88 上一条命令的最后一个参数
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4774 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 09:27 · PVG 17:27 · LAX 01:27 · JFK 04:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.