自建网盘

介绍常见的开源网盘解决方案,以及如何自建网盘。

vuepressbg

开源网盘软件

目前市场上存在众多的开源网盘解决方案,先列举其中比较有名的进行对比,分别如下:

名称是否支持数据库Demo备注
minio开源对象存储解决方案
ocis开源文件同步解决方案
owncloudhttps://ocis.owncloud.com开源文件同步解决方案
seafilehttps://cloud.seafile.com/开源文件同步解决方案
Nextcloud开源文件同步解决方案
cloudrevehttps://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 目录并复制需要的图片到此目录。
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