「Share」用完即走,是极客最后的温柔
目录
开局打造全能私有云,折腾一圈却发现我要的只是一个用完即走的快传。
自建网盘
Nextcloud
基于 Docker 部署
该方案因旧版 TrueNAS 不支持 Docker 而最初部署在 PVE 上独立于 TrueNAS 之外的 Debian 虚拟机,但面临容器中难以挂载 Samba 共享的问题(自 24.10 起,TrueNAS 原生支持 Docker)
mysql
docker run -d --name mysql \ -v /mnt/share/yirami/mysql:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORD=y@nxtcloud \ -e MYSQL_DATABASE=nextcloud \ -e MYSQL_USER=yirami \ -e MYSQL_PASSWORD=y@nxtcloud \ -p 3306:3306 \ mysql # 临时方案 docker run -d --name mysql \ -v /root/mysql:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORD=y@nxtcloud \ -e MYSQL_DATABASE=nextcloud \ -e MYSQL_USER=yirami \ -e MYSQL_PASSWORD=y@nxtcloud \ -p 3306:3306 \ mysqlnextcloud
docker run -d --name nextcloud \ -v /mnt/share/yirami/nextcloud:/var/www/html \ --link mysql:mysql \ -p 8080:80 \ nextcloud # 临时方案 docker run -d --name nextcloud \ -v /root/nextcloud:/var/www/html \ --link mysql:mysql \ -p 8080:80 \ nextcloud # web 登录页中 localhost 改为 mysql
基于 LNMP 裸机部署
受限于早期 TrueNAS 不支持容器化部署应用,而体系外的容器化部署在 Samba 目录挂载上遇到了问题,转而尝试在 Debian 虚拟机中裸机部署
LNMP
wget http://soft.vpser.net/lnmp/lnmp1.7.tar.gz -cO lnmp1.7.tar.gz && tar zxf lnmp1.7.tar.gz && cd lnmp1.7 && ./install.sh lnmp # MySQL@8.0.20->y@nxtcloud->InnoDB@Y->PHP@7.4.12->Allocator@N # vhost lnmp vhost add # aio.cloud.yirami.xyz->rewrite@y->pathinfo@y->log@n->MySQL@y->`y@nxtcloud`->databasename@`aio_cloud`->databaseusername@`aio_cloud`->`/root/aio.cloud.yirami.xyz.ssl/aio.cloud.yirami.xyz.pem`->`/root/aio.cloud.yirami.xyz.ssl/aio.cloud.yirami.xyz.key`Nextcloud
wget https://download.nextcloud.com/server/installer/setup-nextcloud.php mv setup-nextcloud.php /home/wwwroot/aio.cloud.yirami.xyz/ # pre-download if network is not good # ... 1. https://download.nextcloud.com/server/releases/nextcloud-21.0.0.zip # ... 2. mv nextcloud-21.0.0.zip /home/wwwroot/aio.cloud.yirami.xyz/nc.zip # open website then setup http://aio.cloud.yirami.xyz/setup-nextcloud.php # install_dir@`.`->user@`yirami`->pw@commonSamba
apt update apt install -y php-dev libsmbclient libsmbclient-dev php-smbclient smbclient pecl install smbclient
Cloudreve
Nextcloud 基于 PHP 架构,消耗资源大,改为采用基于 Go 开发的 Cloudreve 搭建网盘服务
基于 LNMP 裸机部署
LNMP
wget http://soft.vpser.net/lnmp/lnmp1.7.tar.gz -cO lnmp1.7.tar.gz && tar zxf lnmp1.7.tar.gz && cd lnmp1.7 && ./install.sh lnmp ## MySQL@8.0.20->y@nxtcloud->InnoDB@Y->PHP@7.4.12->Allocator@N lnmp vhost add # aio.cloud.yirami.xyz->rewrite@y->pathinfo@y->log@n->MySQL@y->`y@nxtcloud`->databasename@`aio_cloud`->databaseusername@`aio_cloud`->`/root/aio.cloud.yirami.xyz.ssl/aio.cloud.yirami.xyz.pem`->`/root/aio.cloud.yirami.xyz.ssl/aio.cloud.yirami.xyz.key`Cloudreve
# https://docs.cloudreve.org/getting-started/installSamba
apt update apt install -y cifs-utils # mount -t cifs //aio.nas.yirami.xyz/YDisk /mnt/YDisk -o username=yirami # mount -t cifs //aio.nas.yirami.xyz/YDisk/Private/CLOUDREVE/db /usr/local/mysql/var/ -o username=ycloud,password=ycloud,uid=mysql,gid=mysql # mount -t cifs //aio.nas.yirami.xyz/YDisk/Private/CLOUDREVE/files /home/wwwroot/aio.cloud.yirami.xyz/uploads -o username=ycloud,password=ycloud,uid=root,gid=root vim /etc/fstab # 可能有启动顺序问题,导致mysql启动失败 #//aio.nas.yirami.xyz/YDisk/Private/CLOUDREVE/db /usr/local/mysql/var/ cifs defaults,rw,uid=mysql,gid=mysql,username=ycloud,password=ycloud 0 0 //aio.nas.yirami.xyz/YDisk/Private/CLOUDREVE/files /home/wwwroot/aio.cloud.yirami.xyz/uploads cifs defaults,rw,uid=root,gid=root,username=ycloud,password=ycloud 0 0Power onstart service
vim /usr/lib/systemd/system/cloudreve.service # add [Unit] Description=Cloudreve Documentation=https://docs.cloudreve.org After=network.target After=mysqld.service Wants=network.target [Service] WorkingDirectory=/home/wwwroot/aio.cloud.yirami.xyz ExecStart=/home/wwwroot/aio.cloud.yirami.xyz/cloudreve Restart=on-abnormal RestartSec=5s KillMode=mixed StandardOutput=null StandardError=syslog [Install] WantedBy=multi-user.target # then systemctl daemon-reload systemctl start cloudreve systemctl enable cloudreve
基于 Docker 部署
services:
cloudreve:
container_name: cloudreve
image: cloudreve/cloudreve:latest
profiles: ["disable"] # 默认不启动
restart: unless-stopped
networks:
- traefik_proxy # 挂载全局公共网络
# ports:
# - "19086:5212"
volumes:
- /path/to/your/cloudreve/conf.ini:/cloudreve/conf.ini
- /path/to/your/cloudreve/cloudreve.db:/cloudreve/cloudreve.db
- /path/to/your/cloudreve/uploads:/cloudreve/uploads
- /path/to/your/cloudreve/avatar:/cloudreve/avatar
- /path/to/your/aria2/downloads:/data
labels:
- "traefik.enable=true"
- "traefik.docker.network=traefik_proxy"
- "traefik.http.routers.cloudreve.rule=Host(`cloud.aio.yirami.xyz`)"
- "traefik.http.routers.cloudreve.entrypoints=websecure"
- "traefik.http.routers.cloudreve.tls=true"
- "traefik.http.routers.cloudreve.tls.certresolver=le"
- "traefik.http.services.cloudreve.loadbalancer.server.port=5212"
depends_on:
- aria2
deploy:
resources:
limits:
cpus: '0.5'
memory: 2G
healthcheck:
test: ["CMD-SHELL", "wget --no-verbose --spider -q -t 1 http://localhost:5212/api/v3/site/config || exit 1"]
interval: 30s
timeout: 10s
retries: 3
start_period: 30s自建快传
本以为我需要的是自建网盘,实际上:
- 获取资源更适合使用商业网盘,如
Quark等 - 在线文件访问更适合拆分为具体的服务,如
- 影音使用
Jellyfin - 相册使用
Immich - 听歌使用
Navidrome - 书漫使用
Kavita - 有声使用
Audiobookshelf
- 影音使用
抛开没有需求的在线办公不谈,自建网盘对于我的意义只剩下临时的文件共享,它最好
- 不会要求接管存储端的数据
- 分享的内容可以自动销毁
- 占用更少的硬件资源
这不巧了吗,快传刚好就是!
Pingvin-share
得益于新版 TrueNAS 原生支持 Docker 部署应用,故采用 docker compose 部署方案。
基于 Docker 部署
services:
pingvin-share:
container_name: pingvin-share
image: smp46/pingvin-share-x:v1.21
# profiles: ["disable"]
restart: unless-stopped
networks:
- traefik_proxy
# ports: # only for debug
# - 3000:3000
environment:
- TRUST_PROXY=true # Set to true if a reverse proxy is in front of the container
volumes:
- "/path/to/your/pingvin-share/data:/opt/app/backend/data"
- "/path/to/your/pingvin-share/data/images:/opt/app/frontend/public/img"
labels:
- "traefik.enable=true"
- "traefik.docker.network=traefik_proxy"
- "traefik.http.routers.pingvin-share.rule=Host(`share.aio.yirami.xyz`)"
- "traefik.http.routers.pingvin-share.entrypoints=websecure"
- "traefik.http.routers.pingvin-share.tls=true"
- "traefik.http.routers.pingvin-share.tls.certresolver=le"
- "traefik.http.services.pingvin-share.loadbalancer.server.port=3000"
deploy:
resources:
limits:
cpus: '0.5'
memory: 1G
healthcheck:
test: ["CMD-SHELL", "wget --no-verbose --spider -q -t 1 http://localhost:3000 || exit 1"]
interval: 30s
timeout: 10s
retries: 3
start_period: 30s
networks: # 声明外部网络
traefik_proxy:
external: trueGokapi
注意:该应用没有原生支持中文
基于 Docker 部署
services:
gokapi:
container_name: gokapi
image: f0rc3/gokapi:v2.2.4
# profiles: ["disable"]
restart: unless-stopped
networks:
- traefik_proxy # 挂载全局公共网络
# ports:
# - 53842:53842 # only for debug, must access by traefik
environment:
- TZ=Asia/Shanghai
volumes:
- /path/to/your/gokapi/config:/app/config
- /path/to/your/gokapi/data:/app/data
labels:
- "traefik.enable=true"
- "traefik.docker.network=traefik_proxy"
- "traefik.http.routers.gokapi.rule=Host(`share.aio.yirami.xyz`)"
- "traefik.http.routers.gokapi.entrypoints=websecure"
- "traefik.http.routers.gokapi.tls=true"
- "traefik.http.routers.gokapi.tls.certresolver=le"
- "traefik.http.services.gokapi.loadbalancer.server.port=53842"
deploy:
resources:
limits:
cpus: '0.5'
memory: 256M
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:53842/"]
interval: 30s
timeout: 10s
retries: 3
start_period: 10s
networks: # 声明外部网络
traefik_proxy:
external: trueMicroBin
该工具中文支持不佳,且官网无法打开