自建网盘
介绍常见的开源网盘解决方案,以及如何自建网盘。
开源网盘软件
目前市场上存在众多的开源网盘解决方案,先列举其中比较有名的进行对比,分别如下:
名称 | 是否支持数据库 | Demo | 备注 |
---|---|---|---|
minio | 否 | 无 | 开源对象存储解决方案 |
ocis | 否 | 无 | 开源文件同步解决方案 |
owncloud | 是 | https://ocis.owncloud.com | 开源文件同步解决方案 |
seafile | 是 | https://cloud.seafile.com/ | 开源文件同步解决方案 |
Nextcloud | 是 | 无 | 开源文件同步解决方案 |
cloudreve | 是 | https://demo.cloudreve.org/signup | 开源文件同步解决方案 |
自建网盘-ocis
ocis 个性化定制、源码编译、部署 。
- ocis 定制
这部分主要涉及到登录界面以及 web 界面这两个部分,其中登录界面由 services/idp 服务提供,web 界面由 services/web 提供。
- 下载已编写好的 ocis_build.tar.gz 脚本,该脚本主要功能为: 依赖软件检测与安装、clone 代码、登录界面以及 web 定制。
- 解压该脚本:
tar -zxvf ocis_build.tar.gz && cd ocis_build && make build
- 构建二进制文件
二进制文件生成在
~/ocis/build/ocis/ocis/bin
中cd ~/ocis/build/ocis && make generate cd ~/ocis/build/ocis/ocis && rm -rf ~/ocis/build/ocis/ocis/bin/* && make build
- 参考
- 演示
不可用于生产环境,操作过程如下:
cd ~/ocis/build/ocis/ocis/bin/ rm -rf ~/.ocis && ./ocis init (选择 yes 并记住密码) IDM_CREATE_DEMO_USERS=true \ PROXY_HTTP_ADDR=0.0.0.0:9200 \ OCIS_URL=https://localhost:9200 \ ./ocis server
- 生产环境
需要安装 Nginx 以及申请 SSL 证书, 下面是操作步骤:
- 安装及创建必备环境:
sudo cp ~/ocis/build/ocis/ocis/bin/ocis /usr/local/bin/ocis && sudo chmod +x /usr/local/bin/ocis sudo useradd --system --no-create-home --shell=/sbin/nologin ocis sudo mkdir -p /var/lib/ocis sudo chown ocis:ocis /var/lib/ocis sudo mkdir -p /etc/ocis sudo touch /etc/ocis/ocis.env sudo chown -R ocis:ocis /etc/ocis
- 配置环境变量:
sudo vim /etc/ocis/ocis.env
,添加如下:# proxy 配置 OCIS_URL=https://ocis.example.com PROXY_HTTP_ADDR=0.0.0.0:9200 PROXY_TLS=false OCIS_INSECURE=false # ocis 配置 OCIS_CONFIG_DIR=/etc/ocis5.0.5 OCIS_BASE_DATA_PATH=/var/lib/ocis5.0.5 # log 配置 OCIS_LOG_LEVEL=warn OCIS_LOG_FILE=/etc/ocis5.0.5/ocis.log OCIS_LOG_PRETTY=true OCIS_LOG_COLOR=true # 默认语言设置 OCIS_DEFAULT_LANGUAGE=zh # -------------- 使用从 owncloud 下载的 ocis 二进制文件并且需要使用自定义主题时请添加如下内容: -------------- # 登录界面主题路径,指定为编译后的 idp 服务的静态资源路径 # IDP_ASSET_PATH=/var/lib/ocis5.0.5/idp/assets # web 主题配置,指定为编译后的 web 服务的静态资源路径 # WEB_ASSET_CORE_PATH 适用于 ocis6.0 以后的版本,WEB_ASSET_PATH 适用于 ocis5.0.5 及其之前的版本 # WEB_ASSET_CORE_PATH=/var/lib/ocis5.0.5/web/assets/core # WEB_ASSET_PATH=/var/lib/ocis5.0.5/web/assets/core # web 主题路径如果指定了 WEB_ASSET_PATH 可不设置此项 # WEB_UI_THEME_PATH=/themes/owncloud/theme.json
- 初始化:
sudo -u ocis ocis init --config-path /etc/ocis
- 配置服务:
sudo vim /etc/systemd/system/ocis.service
,添加如下:[Unit] Description=OCIS server [Service] Type=simple User=ocis Group=ocis EnvironmentFile=/etc/ocis/ocis.env ExecStart=/usr/local/bin/ocis server Restart=always [Install] WantedBy=multi-user.target
- 加载并启动服务:
sudo systemctl daemon-reload && sudo systemctl enable --now ocis && sudo systemctl restart ocis
- 配置 Nginx:
sudo vim /etc/nginx/conf.d/ocis.conf
,添加如下:server { listen 80 ; listen [::]:80 ; server_name ocis.example.com; # location to redirect to https location / { # add port if deviates via OCIS_URL return 301 https://$server_name$request_uri; } } server { # default 443 but can deviate if set in OCIS_URL listen 443 ssl; listen [::]:443 ssl; server_name ocis.example.com; # certificates managed by Certbot ssl_certificate /etc/nginx/ssl/ocis.example.com.pem; ssl_certificate_key /etc/nginx/ssl/ocis.example.com.key; # options and dhparams managed by Certbot #include /etc/letsencrypt/options-ssl-nginx.conf; #ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; location / { # OIDC Tokens in headers are quite large and can exceed default limits of reverse proxies proxy_buffers 4 256k; proxy_buffer_size 128k; proxy_busy_buffers_size 256k; # Disable checking of client request body size client_max_body_size 0; proxy_pass http://localhost:9200; proxy_set_header Host $host; } }
- 参考链接: Bare Metal Deployment with systemd
- 启动:
systemctl start ocis
- 停止:
systemctl stop ocis
- 重启:
systemctl restart ocis
- 查看日志:
sudo tail -f /var/log/ocis/ocis.log
- ocis 配置文件中不能使用
~
来引用家目录,而要用$HOME
- 查看版本号:
ocis version --skip-services
如何查看 ocis 日志?
- 方式一:
sudo journalctl -f -u ocis
- 方式二: 在
/etc/ocis/ocis.env
中配置 log level 以及日志存储路径,然后sudo tail -f /var/log/ocis/ocis.log
在 web 界面修改 logo 后,该图片存储在哪?
- 上传的 logo 存储在 :
/var/lib/ocis/web/assets/branding
,该目录在上传后将自行创建,不上传文件则不创建。
怎样重新编译单个服务?
make -C services/idp generate
如何修改 ocis 登录界面?
登录界面由 idp 服务提供,只修改 web 服务里的文件无法修改登录界面
- 具体修改哪些文件请查看
ocis_build.tar.gz/ocis_build/services/idp/Makefile
- 然后执行
make -C services/idp generate
- 使用修改后的 idp 服务:
一定要将 identifier 文件夹及其子目录全部复制到
/var/lib/ocis/idp/assets/
cp -r ~/ocis/build/ocis/services/idp/assets/identifier /var/lib/ocis/idp/assets/
- 在
/etc/ocis/ocis.env
中添加:IDP_ASSET_PATH=/var/lib/ocis/idp/assets
,这里的值不能设置为其子目录 identifier - 重启 ocis 服务:
sudo systemctl restart ocis
如何修改 web 主题?
web 服务由 services/web 提供
- 具体修改哪些文件请查看
ocis_build.tar.gz/ocis_build/services/web/Makefile
- 然后执行
make -C services/web generate
- 使用修改后的 web 服务:
cp -r ~/ocis/build/ocis/services/web/dist/* /var/lib/ocis/web/assets/core/
- 在
/etc/ocis/ocis.env
中添加:WEB_ASSET_PATH=/var/lib/ocis5.0.5/web/assets/core
- 注意:WEB_ASSET_CORE_PATH 适用于 ocis6.0 以后的版本,WEB_ASSET_PATH 适用于 ocis5.0.5 及其之前的版本
- 重启 ocis 服务:
sudo systemctl restart ocis
如何重新初始化 ocis?
sudo systemctl stop ocis sudo rm -rf /var/lib/ocis sudo rm -rf /etc/ocis/ocis.yaml sudo mkdir -p /var/lib/ocis sudo chown ocis:ocis /var/lib/ocis sudo -u ocis ocis init --config-path /etc/ocis
不想重新编译该如何使用自定义的 web 以及 login 界面?
假设使用的二进制文件是从 owncloud 下载的 ocis5.0.5 可执行文件
- 按照上面的修改 login 及 web 界面的方法,然后在
/etc/ocis/ocis.env
中添加IDP_ASSET_PATH
以及WEB_ASSET_PATH | WEB_ASSET_CORE_PATH
的路径为重新编译后的 idp 以及 web 路径,再重启 ocis 服务 - 注意: 如果只是在环境变量中添加了
WEB_UI_THEME_PATH=/themes/owncloud/theme.json
主题配置文件路径,则不会修改 login 界面以及 callback 跳转时的标题名称,这种指定主题配置文件的方法达不到真正的自定义 logo、title、slogan 等目的。
theme.json 能做什么?
- 通过修改
/var/lib/ocis5.0.5/web/assets/themes/owncloud/theme.json
可实现: 修改 web 界面的 logo、title、slogan 等,但无法修改 login 界面以及 callback 跳转时的标题名称 - 注意: theme.json 默认没有生成,可通过如下方法自动生成:
- 安装并启动后上传一张 logo ,这样会自动在
/var/lib/ocis/web/assets/themes/owncloud
创建 theme.json 然后用 vscode 打开并格式化,修改里面的值。 - 创建
/var/lib/ocis5.0.5/web/assets/themes/owncloud/assets
目录并复制需要的图片到此目录。
- 安装并启动后上传一张 logo ,这样会自动在
ocis 文档在哪看?
下载 ocis 源码,在 ocis-master/docs
可查看相关文档,比官方文档更新频率快。
自建网盘-minio
wget https://dl.min.io/server/minio/release/linux-arm64/minio
chmod +x minio
MINIO_ROOT_USER=admin MINIO_ROOT_PASSWORD=password ./minio server /mnt/data --console-address ":9001"
wget https://dl.min.io/client/mc/release/linux-arm64/mc
chmod +x mc
mc alias set myminio/ http://MINIO-SERVER MYUSER MYPASSWORD
- 环境变量 MINIO_BROWSER=off 即可minio 关闭默认browser
- 参考
- https://blog.csdn.net/rouge1125/article/details/139093825
- https://blog.csdn.net/muriyue6/article/details/119643542
- https://blog.csdn.net/muxuen/article/details/135029519