上周三凌晨一点半,我瘫在椅子上盯着屏幕——Jellyfin的启动日志终于滚完了最后一行,转码进度条从0%爬到100%用了不到8秒,那一刻我差点从椅子上跳起来。为了这个瞬间,我折腾了整整三个晚上,重装了两次系统,删过一次引导卷,还差点把甲骨文账号搞丢。一句话先给结论:甲骨文的永久免费ARM服务器(2核12G/200G存储,按量付费年成本≈$650,这就是我说的”价值$200+”的由来)+ Docker全家桶,配Cloudflare Tunnel做入口、Tailscale兜底跑视频流,能凑出一台不花钱、不备案、随时远程访问的私人网盘+影音库。 适合经常存资料、追剧、又不想被百度网盘限速折磨的人;不适合想跑商业服务或存敏感隐私的,原因后面细说。
一、白嫖服务器:甲骨文的”抽奖”和突然腰斩的配额
先说服务器从哪来。市面上能白嫖的云服务器主要三家:AWS/Azure/GCP的学生包(每年$100额度,一年一续,过期就没了)和甲骨文的Always Free(永久免费,只要账号不违规就一直给你用)。我个人更推甲骨文,理由就一个字:稳。 学生包再香也是限时体验,甲骨文这台机器我跑了两年没花一分钱。
注册环节是第一道坎,被戏称为”抽奖”不是没道理。我朋友用虚拟卡试了三次全被拒,我拿一张招行Visa一次过。后来复盘出几个硬规矩:必须用干净的住宅IP(公司网络或公共代理基本必挂)、必须真实信用卡(虚拟卡、礼品卡100%触发风控)、信息要与账单一致(拼音姓名+英文地址,最好对得上)。注册时只会预扣1美元左右验证,秒退回,之后只要不主动升级到付费账户,永远不会扣款。区域选择也有讲究:新加坡、首尔、东京这些热门区的ARM资源紧张,开机器成功率低,推荐选美西、美东、德国法兰克福这类区域。
真正的雷在后面。 2026年6月甲骨文悄悄把ARM免费配额从4核24G砍到2核12G,没发博客、没发邮件,只默默改了文档,存量用户是发现机器被停了才知道。更狠的是8月18日这个大限——超配额的机器会被直接终止,数据可能找不回来。我那台老机器本来是4核24G的配置,收到邮件那天连夜去控制台降配,才保住了两年攒下的资料。所以你如果现在新开账号,ARM只能拿到2核12G,加上一台AMD的1核1G微实例(VM.Standard.E2.1.Micro),总免费存储池200G,最多开4台机器。
还有一条隐形规则要划重点:闲置回收。甲骨文官方写明,7天内如果CPU、网络、内存(仅A1机型)利用率都低于20%(一说10%),机器”可能”被回收。我的对策是cron里挂了个lookbusy,每3小时跑一次把CPU拉到20-30%,再配个定时wget下载大文件,两年了机器还在。
二、踩坑实录:三个让我差点放弃的瞬间
坑1:200G存储不是你想分就能分。 我一开始天真地以为200G是系统盘直接给满,结果装完系统发现根分区只有46.6G——剩下的153G得手动新建块存储卷、挂ISCSI命令、fdisk分区、mkfs格式化、写fstab才能用。第一次我偷懒没写fstab,重启后数据盘直接消失,吓得我以为数据全丢了(其实只是没挂载)。后来学乖了,引导卷扩到100G装系统,剩100G挂/data专门放电影和下载,一个/usr/libexec/oci-growfs命令能把根分区在线扩容,不用重装。
坑2:Cloudflare Tunnel跑视频流等于玩火。 这是最隐蔽也最致命的坑。CF Tunnel免费、免备案、自带HTTPS,看起来是完美入口,但Cloudflare的服务条款明确禁止通过免费CDN代理视频流,社区里一堆人因为挂Jellyfin走Tunnel导致整个域名被封。我第一版方案就是Tunnel直接怼Jellyfin,用了三天突然收到警告邮件,吓得连夜撤下来。后来的折中方案:CF Tunnel只跑Alist、AriaNG、qBittorrent这些轻量Web界面,Jellyfin的视频流量走Tailscale——一个基于WireGuard的免费组网工具,个人版支持100台设备、3个用户,国内直连延迟10-30ms,完全够用。
坑3:1G内存的AMD微实例跑不动硬转码。 我一开始图省事在AMD小机器上装Jellyfin,结果1080P转码CPU直接飙满,播放卡成PPT。查了才知道AMD微实例没有/dev/dri设备,根本没法做GPU硬件转码,纯软解那1G内存根本不够。后来把Jellyfin挪到ARM机上(2核12G),配合nyanmisaka的中国特供版镜像(自带ffmpeg补丁和中文字体),1080P硬解转码稳稳的。
三、部署步骤:从空机器到全家桶跑通
1. 基础环境
SSH连上机器(记得在安全列表里放行22、80、443、8096、5244、8080、6881端口),先装Docker:
curl -fsSL https://get.docker.com | sh
sudo systemctl enable docker
mkdir -p /data/{downloads,movies,config}
2. 核心服务Docker Compose
我在/data/docker-compose.yml里把网盘、下载、影音三大块写在一起,docker compose up -d一把梭:
version: "3.9"
services:
# 网盘前端
alist:
image: xhofe/alist:latest
container_name: alist
restart: unless-stopped
ports:
- "5244:5244"
volumes:
- /data/config/alist:/opt/alist/data
environment:
- TZ=Asia/Shanghai
# 离线下载
aria2:
image: p3terx/aria2-pro:latest
container_name: aria2
restart: unless-stopped
ports:
- "6800:6800"
volumes:
- /data/config/aria2:/config
- /data/downloads:/downloads
environment:
- RPC_SECRET=改成你自己的密钥
- TZ=Asia/Shanghai
ariang:
image: p3terx/ariang:latest
container_name: ariang
restart: unless-stopped
ports:
- "6888:6888"
# BT下载器
qbittorrent:
image: lscr.io/linuxserver/qbittorrent:latest
container_name: qbittorrent
restart: unless-stopped
ports:
- "8080:8080"
- "6881:6881"
- "6881:6881/udp"
volumes:
- /data/config/qbittorrent:/config
- /data/downloads:/downloads
environment:
- PUID=1000
- PGID=1000
- WEBUI_PORT=8080
- TORRENTING_PORT=6881
- TZ=Asia/Shanghai
# 影音库(ARM机专用,AMD机删掉devices那行)
jellyfin:
image: jellyfin/jellyfin:latest
container_name: jellyfin
restart: unless-stopped
ports:
- "8096:8096"
volumes:
- /data/config/jellyfin:/config
- /data/config/jellyfin/cache:/cache
- /data/movies:/media
devices:
- /dev/dri:/dev/dri
environment:
- TZ=Asia/Shanghai
这套配置里几个细节值得说:qBittorrent的默认密码不再是adminadmin,新版临时密码要用docker logs qbittorrent | grep -i password翻日志找,第一次登录后立刻改掉;Alist登录后进管理后台,把Aria2的RPC地址填http://aria2:6800/jsonrpc、密钥填你上面自定义的那串,两边就能联动了;Jellyfin的/dev/dri那行是硬件转码的命门,没有GPU的机器注释掉,否则容器起不来。
3. 内网穿透:Cloudflare Tunnel + Tailscale 双保险
CF Tunnel的部署比想象中简单。前提是你得有个域名(一年几十块的.xyz、.top就行),把DNS托管到Cloudflare(免费套餐够用)。然后去Cloudflare Zero Trust后台 → Networks → Connectors → Create a Tunnel,选Docker方式,会给你生成一条带token的命令:
docker run -d --name cloudflared --restart unless-stopped \
cloudflare/cloudflared:latest tunnel --no-autoupdate run \
--token 你复制的那串token
跑起来后回CF后台给隧道加路由:pan.你的域名.com指向http://alist:5244、bt.你的域名.com指向http://qbittorrent:8080、dl.你的域名.com指向http://ariang:6888。全程不用开端口、不用管HTTPS证书,Cloudflare自动搞定。
Tailscale更简单,服务器和你的手机、电脑各装一个客户端,用同一个Google/GitHub账号登录,就自动组成了一个虚拟局域网。访问Jellyfin时直接用http://100.x.x.x:8096(Tailscale分配的IP),流量点对点加密,不经过任何第三方。
4. Tautulli:给Jellyfin加统计
想看自己到底看了多少部片、哪个朋友是重度用户,加个Tautulli:
tautulli:
image: lscr.io/linuxserver/tautulli:latest
container_name: tautulli
restart: unless-stopped
ports:
- "8181:8181"
volumes:
- /data/config/tautulli:/config
- /data/config/jellyfin:/jellyfin
第一次进Web界面时选”添加其他媒体服务器”,Jellyfin的API Key在控制台 → 高级 → API密钥里生成。
四、为什么选这套组合:一张表说清楚
折腾期间我也对比过其他方案,最后留下这几个工具各有各的道理:
| 工具 | 为什么是它而不是别的 |
|---|---|
| Alist | 能把OneDrive、Google Drive、阿里云盘、百度网盘30多种存储聚合到一个界面,还能挂WebDAV当本地磁盘用,比纯Filebrowser强在”网盘聚合” |
| Filebrowser | 极致轻量,一个二进制跑起来,适合纯本地文件管理,不需要网盘挂载就用它 |
| Aria2 + AriaNG | 离线下载界的瑞士军刀,HTTP/FTP/BT/磁力全支持,配合Alist能把网盘里的文件直接拉到本地 |
| qBittorrent | BT下载比Transmission功能多、比Aria2界面友好,RSS订阅追剧神器 |
| Jellyfin | 完全开源免费,不像Plex要订阅才能硬解,刮削器、转码、多用户一个不少 |
| Cloudflare Tunnel | 免费免备案自带HTTPS,稳定性吊打ngrok(47天不断连 vs 日均断4次) |
| Tailscale | 零配置组网,免费100台设备,国内延迟10-30ms,跑视频流不违反CF条款 |
五、使用心得:真实体验和数据
跑了一个月,说点真实感受。下载速度:Aria2走HTTP直连,白天基本能跑满甲骨文的50Mbps带宽(约6MB/s),晚上高峰会掉到3-4MB/s;qBittorrent做种一晚上能拉回几个G的蓝光源。播放体验:Tailscale直连Jellyfin,1080P秒开,拖进度条响应在1秒内;4K原盘需要带宽够,家里的千兆宽带能扛住,4G信号下偶尔缓冲。Alist的妙处:把阿里云盘挂上去之后,手机上不用装阿里云盘App也能看里面的电影,WebDAV协议直接在Infuse、nPlayer里当库添加,体验比官方App干净。Tautulli的乐趣:看到自己这个月看了27部片子、总时长58小时,有种莫名的满足感。
也有不爽的地方。CF Tunnel的国内延迟确实存在,高峰期能跳到300ms+,相册缩略图加载会有可感知的延迟。甲骨文的机器偶尔抽风,有一次网络抖动了半小时,期间所有外网访问全断,只能等它自己恢复。2核12G的天花板:同时跑Jellyfin转码+Aria2下载+qBittorrent做种会卡,我得学会错峰使用。
六、这玩意儿到底值不值
算笔账:一台2核12G的VPS在国内云厂商(阿里云、腾讯云)轻量应用服务器年费大约1000-1500元;200G对象存储加流量费另算;Tunnel和Tailscale如果换成商业方案(花生壳企业版、ZeroTier付费)又是一笔。这一套加起来,一年省下的钱够买台Switch了。
但比钱更重要的是那种”我的数据我做主”的踏实感。百度网盘的会员费年年涨、限速越来越狠,OneDrive的同步抽风不是一天两天,iCloud的存储贵得离谱——与其把几百G的电影、照片、文档押在这些说变脸就变脸的平台上,不如花三个晚上给自己搭一个不会跑路的家。
当然,免费的东西永远有代价:你得忍受甲骨文随时可能改规则的焦虑、自己运维的琐碎、以及”万一哪天账号被封”的小概率风险。我的建议是重要数据永远留一份冷备份在本地硬盘,云端这台机器就当是个”加速访问层”而不是”唯一存储”。
折腾完这套东西的那个凌晨,我躺在床上有种奇怪的踏实感——不是因为省了多少钱,而是突然意识到,原来一个人也能拥有属于自己的”云”。 那种感觉,和第一次用Linux编译内核成功时一模一样。








暂无评论内容