基于纯Linux搭建自己的Nas环境大致构思如下:

一、首先贴下家里的网络拓扑

网络拓扑.png

二、 服务框架

目前的构思是所有的服务尽可能的采用Docker部署,以减少不同Linux系统环境带了的部署差异。

  1. 统一账号管理

    初步构思由LDAP服务来提供统一的账户权限管理系统。介于phpLDAPadmin界面不太友好,初步考虑由go-ldap-admin服务来提供LDAP管理服务。

    具体介绍参见官网:https://ldapdoc.eryajf.net/pages/706e78/

    Github仓库地址:https://github.com/eryajf/go-ldap-admin

    创建Docker容器的docker-compose.yaml文件参见:

    【附件】ldap_group_docker_compose.yaml

  2. 访问门户管理

    门户管理构想中应该承担两个主要能力:

  • 一个是由Nginx提供的二级域名反代和端口转发
    采用nginx-proxy-manager-zh提供可视的Nginx反代配置工具,能够提供https证书自动申请。

    Github仓库地址:https://github.com/xiaoxinpro/nginx-proxy-manager-zh?utm_source=nginx-proxy-manager-zh

    官网地址:https://nginxproxymanager.com/

  • 另一个是提供一个主页导航网站
    这个目前还没有想好,可能用开源的,也可能自己写。
  1. 各服务开发端口规划整理

    服务 端口 协议 用途 映射端口 其他
    Portainer 8000 agent接入端口 8000
    9000 http WebUI管理端口 9000
    Gitea 22 ssh ssh接入 222
    3000 http http页面 3000
    Go-ldap-admin 8888 http http页面 8888
    go-ldap-admin-phpldapadmin 80 http http页面 8091
    go-ldap-admin-openldap 389 tcp 账户授权端口 389
    go-ldap-admin-mysql 3306 tcp 数据库读写 3306

三、具体内容提供

  1. 文档管理

    文件管理可选的较多,目前先用NextCloud来提供。后续使用中看是否符合需求。

    Github地址:https://github.com/nextcloud

  • docker cli
    	sudo docker run \
    	--init \
    	--sig-proxy=false \
    	--name nextcloud-aio-mastercontainer \
    	--restart always \
    	--publish 80:80 \
    	--publish 8080:8080 \
    	--publish 8443:8443 \
    	--volume nextcloud_aio_mastercontainer:/mnt/docker-aio-config \
    	--volume /var/run/docker.sock:/var/run/docker.sock:ro \
    	nextcloud/all-in-one:latest
    
  • NextCloud All-In-One其他相关文档:
    • GitHub官方仓库:https://github.com/nextcloud/all-in-one
    • 官方Docker镜像:https://hub.docker.com/r/nextcloud/all-in-one
    • 官方反代相关文档地址:https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md (支持各种反代)
  1. 照片管理

    照片主要是需要有完善的Android和ios客户端,可以自动备份照片,支持人脸识别。自动归类。目前考虑使用immich或者是NextCloud自带的照片管理。

    • immich主页:https://immich.app/
    • 官方文档:https://immich.app/docs/install/docker-compose
  2. 下载工具

    目前考虑的是使用大家使用频率最高的qBittorrent,文档全面,部署简单。

    • Docker-compose

      version: '3'
      
      services:
        qbittorrent:
          image: helloz/qbittorrent
          container_name: qbittorrent
          ports:
            - "7881:7881"
            - "7881:7881/udp"
            - "18080:18080"
          volumes:
            - /qbittorrent/config:/etc/qBittorrent
            - /qbittorrent/downloads:/downloads
          restart: unless-stopped
      
      
  3. 媒体能力

    媒体能力方面的话,我个人更倾向于使用smb或者webda类似的文件共享能力直接提给各端播放器直接读取播放。暂时不考虑网页在线播放和转码。

  4. 代码托管

    这块儿目前想的是使用gitea搭建,既轻便又提供了一定的扩展能力。关键是支持LDAP。

  • docker-compose.yaml参见:
    【附件】docker-compose.yaml

  • docker-compose
    version: "3"
    networks:
    gitea:
      external: false
    services:
    server:
      image: gitea/gitea
      container_name: gitea
      environment:
        - USER_UID=1000
        - USER_GID=1000
      restart: always
      networks:
        - gitea
      volumes:
        - ./gitea:/data
        - /etc/timezone:/etc/timezone:ro
        - /etc/localtime:/etc/localtime:ro
      ports:
        - "3000:3000"
        - "222:22"
    
  1. Docker管理

    使用portainer中文版做Docker管理平台;

  • Github仓库:https://github.com/outlovecn/portainer-cn

  • docker-compose文件
    version: "2.1"
    services:
      portainer:
        image: outlovecn/portainer-cn:latest
        container_name: portainer
        restart: always
        ports:
          - "9000:9000"
          - "8000:8000"
        volumes:
          - ./dockerconfig/portainer:/data
          - /var/run/docker.sock:/var/run/docker.sock
    
  • docker cli
      docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data outlovecn/portainer-cn:latest
    
文章作者: 嘿手大叔
本文链接:
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 i·Space
其它分类 Linux Docker
喜欢就支持一下吧
打赏
微信 微信
支付宝 支付宝