mac 篇一:macOS server + Docker,我的家庭服务解决方案
前言
这是我第一篇张大妈文章,其实逛张大妈很久了,数字id也是前几天刚刚换掉。日常关注的内容从各位大佬的家庭网络布线、捡垃圾到NAS。
整个张大妈的数码板块,或者说事家庭服务器板块的内容更多是在NAS平台上,而我作为一个10多年的苹果脑残粉,更加喜欢让家里的环境全部处于Apple的系统下。张大妈上面macOS相关的内容很少,所以我打算乘着最近过年这段时间,写一些关于macOS的家庭服务类文章。
目前macOS上运行的这些服务,前前后后增减、学习研究可能花了两年时间。所以不可能在一篇文章中写完,这篇文章仅提供部分内容,如果各位有兴趣,可以根据目录点播,我来写。
因为内容较多,会有较多外链教程。我可以确保我所提供的外链内容绝对是最优质的文档,大大减少各位的搜索工作量
目录
先交代一下背景,我的家庭服务跑在一台ThinkPad X230的黑苹果上面,经过一次外置硬盘损坏数据丢失之后,把外置的orico单盘硬盘盒替换成了铁马威的双盘RAID1。
DDNS(小米路由器)
黑苹果
macOS server上的配置
OpenDirectory(域控)
DNS(自有域名解析)
TimeMachine
WIKI(协作办公,家庭用其实没啥意义,特别是老婆不配合使用)
文件共享(基于VPN的内网文件共享)
VPN(用于外网访问内容)
邮件服务(定期得去提交反垃圾邮件)
日历服务
通讯录服务
CA证书管理
MDM描述文件管理(iOS,macOS设备管控)
Home Assistant
(Home Assistant的情况比较特殊,因为mac下的docker网络模式无法映射所有端口,智能单独布置)Plex
Docker上的配置
(NAS上的Docker相对更易用一些)NVR-Zoneminder(找了很久的监控录像服务)
Speedtest(内网测速)
Tiny Rss(订阅)
Akaunting(财务软件)
Portainer(Docker面板)
Tracks(web版GTD工具,ominifocus太贵了,tracks说实话界面不是很友好)
Transmission
Leanote
Openproject(看了一下,非常好,功能非常全的项目管理工具了)
Searx(说实话,没啥卵用,中文支持不好,纯属玩)
Erpnext(目前从事企业管理咨询,偶尔需要了解erp的运作)
NextCloud(配置了,但是不怎么用)
Youtuble DL(效果不佳)
Mindmaps(效果不佳)
Calibre(图书)
屏幕快照 2020-01-30 上午1.29.12.png
portainerDDNS
域名采购
采购域名,这个其实不用多说什么,因为是home server,受到了运营商的限制,没必要采购太好的一级域名,最简单的是,注册⼀一个花⽣生壳帐号,5块钱终⽣的一个⼆级域名,或者买一个符合你心意的域名也可以。
小米路由器设置
Screen Shot 2020-01-31 at 2.02.53 PM
Screen Shot 2020-01-31 at 2.03.00 PM
当显示连接正常的时候,你可以去花⽣壳后台看看域名解析是否解析到了你的外⽹IP,如果和路由器器后台一致即可。以后的服务通过端口转发来实现。
花生壳官方DDNS设置指南黑苹果安装
我的服务器是是多年未升级的黑苹果了10.12(不是太有升级的必要)。现在的hackintosh最新已经可以到macOS 10.15。黑苹果不推荐pcbeta,远景上的内容下载索引都非常费时费力。 黑苹果的安装按照配置五花八门,所以直接推荐最好的安装指南。即使通过google翻译看这篇文章,安装成功所花的时间也远比爬远景来的划算:macOS 10.15安装
黑苹果配置简单概括:
非常简单,三个步骤:系统镜像准备(不要去下载远景上那些乱七八糟自己修改的系统了,请使用该链接
使用u盘创建系统安装盘系统盘安装教程 最好使用8gb以上的u盘
macOS-Catalina-flash-drive-Installer-1024x576macOS server
macOS server很久以前已经完全可视化了且独立成了一个单独的App,而且价格极其便宜,因为考虑使用MDM所以,我选择直接安装了macOS server,不论是直接购买(99元CNY)或者某些外链下载都可以,注意server系统支持
VNC配置, macOS的远程桌面,直接使用自带的配置即可VNC设置,
系统偏好设置— 共享— 屏幕共享
Screen Shot 2020-01-31 at 2.46.17 PM
以后,连接mac server时,仅需要在打开Finder-cmd+k-输入vnc://你的mac server内网ip即可。
Screen Shot 2020-01-31 at 2.48.23 PMserver主机设置
当你第一次打开Server App的时候,会让你设定server admin及密码,请牢记,可别忘了。然后,设置你的服务器电脑名及主机名,主机名请设定成你所注册的花生⼉域名(DDNS中填写的内容)。直接下一步,服务器会⾃动创建域名自签证书。
Screen Shot 2020-01-31 at 2.52.03 PM
Screen Shot 2020-01-31 at 2.52.03 PMDNS设置
DNS设置一方面是为了避免内外网端口不一致,导致服务访问需要修改端口。所以,通过DNS设置后不论内外网一律使用域名地址。另一方面,为设置邮箱做准备。
选择高级-DNS-添加主机记录-输入你的外网域名地址-创建首选DNS-之后依次创建A记录,MX记录,NS记录,为之后设置邮箱作准备, 反向记录会自动生成。
Screen Shot 2020-01-31 at 2.57.55 PMOpen Directory
Open Directory用于邮箱用户名,服务器文件夹分权限管理,移动设备管理等。结合nextcloud之类的第三方应用,可以实现SSO单点登录。nextcloud我配置了,但不怎么用,因为我在外网进行文件访问,是通过VPN+OD登录+SMB/AFP(手机端通过File Explore实现)
如果你的初始主机名以域名进行设置,直接进入高级—Open Directoy,启用服务,一直下一步即可。设置过程中请记住域控管理员用户名和密码,不建议使用该密码作为普通用户。如果过程中需要更新自签名证书,直接替换原有证书即可。
屏幕快照 2020-01-31 下午3.07.42邮箱设置
应用-邮箱-启用邮箱,设置”域”为你的外网ip地址,鉴定方式选择Open Directory
屏幕快照 2020-01-31 下午3.16.21用户设置
如果希望使用到域控管理,请务必先设置完DNS,OD,邮箱后,再开始添加用户。
用户界面,请注意,选项中有多种用户类型,选择本地网络用户
屏幕快照 2020-01-31 下午3.20.07
创建用户是,用户名将是SSO的用户名。设置全名后,邮箱地址也会自动创建
屏幕快照 2020-01-31 下午3.22.30文件共享设置
这个没什么好说的,只要有了以上的基础用户设置,之后就根据家庭用户进行文件夹权限分配了,不希望小姐姐被家里的老人/老婆/孩子看到?请好好设置文件夹权限。
如何访问?
macOS - Finder - cmd+k - smb/afp://服务器内网ip地址
Screen Shot 2020-01-31 at 3.34.15 PMwidnows - win键 - smb://ip地址
iOS - FileExplore - 添加网络盘 - OSX (外网访问请开启VPN,如果你大胆转发445端口地址,也可以)
IMG_0687
VPN
当域名设置正确的时候, VPN开启即自动选择外网域名了。L2TP不管怎么样,也是隧道加密,普通安全性已经够了。
屏幕快照 2020-01-31 下午3.40.43
不同的用户都可以进行VPN登陆。
当然,你还需要进行端口转发, mac server VPN需要用到4个端口,路由器设置转发。
Screen Shot 2020-01-31 at 3.45.10 PM
macOS server的内容基本上就到这里。
Home Assistant
HA相对来说是一个比较大的课题,关于在macOS中的设置,我只能提供以下建议:
HA在mac上无法进行docker部署,因为网络模式无法使用-host,你会发现homekit无法使用,以及有非常多的端口需要进行暴露设置。
HA的玩耍顺序
HA部署
基本的时间,地区或网络服务(天气、地图、语音等)的设置
小米之类的设备接入,token获取
mqtt接入
自购esp8266,感应器,通过adrinuo自刷接入,常用的推荐espeasy,渡鸦等。。。
暴力拆线通过esp制作的智能家具
强电拆出来 - 通过苹果变压器五福一安 - esp板子 - 光耦开关 - 灯
IMG_3750
用《霍乱时期的爱情》装饰一下
IMG_0014PLEX
PLEX其实实在没什么好说的,相关内容一搜一大把,推荐阅读封面刮削相关,小白瞎折腾 篇十五:玩转群辉NAS,影音篇(三):Plex进阶设置——代理与海报墙,及影片文件命名推荐
macOS Docker
自从接触了Docker之后,沉迷于小鲸鱼不可自拔。不同于群晖等NAS的docker,mac在安装Docker后需要通过terminal配置服务。并且相对于linux,macOS下网络host模式无法使用。比如为什么我只能把HA本机部署。
先做一些Docker使用的基础科普:docker pull 获取镜像
docker run -d 启用镜像,不需要pull也可以直接启动
使用-p参数,转发镜像端口
使用-v参数,打通镜像与宿主机的共享文件夹
使用-e参数,配置镜像
使用—link,关联镜像
部分服务需要单独启用数据库,之后关联服务与数据库
列子
docker run -d —shm-size=4096m -v /Volumes/HomeDate/docker/nvr:/var/cache/zoneminder/events -e TZ=Asia/Shanghai -e ZM_DB_HOST=zmdb —net net —name zm -p 8012:80 quantumobject/docker-zoneminderdocker run -d 启动服务
—shm-size=4096m 一个shm参数
-v /Volumes/HomeDate/docker/nvr:/var/cache/zoneminder/events, 冒号前为宿主机中的共享文件夹, 冒号后为docker容器内的文件夹
-e TZ=Asia/Shanghai -e ZM_DB_HOST=zmdb 镜像内的时区、host设置
—net net —name zm 网络模式设置
-p 8012:80 端口转发, web界面转发至宿主机8012端口
quantumobject/docker-zoneminder 拉取的镜像
以下内容直接为服务搭建的所有代码,稍作修改就可用(不太熟悉compose,所以全代码部署)。
zoneminder
找了很久NVR服务,因为家用摄像头要么sd卡存储,要么付费购买云存储空间。 sd卡如果家里着的遭贼了,也就没有了摄像头的意义。 所以一直在找一个NVR服务。最终选择为zoneminder。还能接入homeassistant。
网络设置:
docker network create net
数据库配置:
docker run -d -e TZ=Asia/Shanghai -e MYSQL_USER=zmuser -e MYSQL_PASSWORD=zmpass -e MYSQL_DATABASE=zm -e MYSQL_ROOT_PASSWORD=mysqlpsswd -e MYSQL_ROOT_HOST=% —net net —name db mysql/mysql-server:5.7
运行服务:
docker run -d —shm-size=4096m -v /更换成你的本机存储路径:/var/cache/zoneminder/events -e TZ=Asia/Shanghai -e ZM_DB_HOST=zmdb —net net —name zm -p 8012:80 quantumobject/docker-zoneminder
Screen Shot 2020-01-31 at 4.53.29 PM
Open Project
对比了几个项目管理工具,最终选择了Open Project功能非常全的项目管理工具,功能非常全面
docker run -d -p 8029:80 —name openproject -e SECRET_KEY_BASE=secret
-v /更换成你的本机存储路径:/var/openproject/pgdata
-v /更换成你的本机存储路径:/var/openproject/assets
openproject/community:latest
Screen Shot 2020-01-31 at 4.56.09 PM
Transmission
docker run -d —name transmission -e PUID=224 -e TRANSMISSION_WEB_HOME=/transmission-web-control/ -e PGID=224 -e TZ=Asia/Shanghai -p 9091:9091 -p 51413:51413 -p 51413:51413/udp -v /更换成你的本机路径/config:/config/ -v /更换成你的本机路径/downloads:/downloads/ -v /Volumes/HomeDate/docker/tran/watch:/watch/ linuxserver/transmission:latest
Screen Shot 2020-01-31 at 4.57.58 PM
Leanote
docker run -d -p 9000:9000 axboy/leanote
即是笔记工具,也是blog
Screen Shot 2020-01-31 at 5.01.41 PM
Tiny Tiny RSS
数据库设置:
docker run -d —name ttrssdb nornagon/postgres
镜像运行:
docker run -d —link ttrssdb:db -p 8085:80 clue/ttrss
订阅了张大妈,然后。。。。动不动就几万条rss
Screen Shot 2020-01-31 at 4.59.07 PM
Speedtest
内网测速,需要了解自己内网的速度
docker run -d -p 9000:9000 adolfintel/speedtest:latest
Superset
需要一个可视化数据分析平台,所以找到了Airbnb的开源数据分析平台,部署简单,使用需要一些学习:
docker run -d —name superset -p 8021:8088 -v /替换成你的路径:/home/superset tylerfowler/superset
基本部署后需要修改默认用户名和密码
docker exec superset
docker exec -it 镜像id fabmanager create-admin —app superset
docker exec -it 镜像id superset db upgrade
docker exec -it 镜像id superset init
docker exec -it 镜像id superset runserver
分析了以下实习生拒绝offer的原因
dashboard
GTD web工具: tracks界面复古了一点,指望能替代omnifoucs,功能上是不错了,可是只支持电脑,不是自适应
docker run -d —name=tracks -p 8030:80 staannoe/tracks
Portainer
这个必须要有,docker服务太多了,如何可视化管理?
docker volume create portainer_data
docker run -d -p 8014:9000 -p 8015:8000 —name portainer —restart always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer
portainer
SearX
发现中文支持不是很好,而且这玩意只是个搜索引擎聚合,还真有人能用起来?
docker run -d —name searx -p 8017:8888 wonderfall/searx:latest
s*s不开全局,搜索结果就很惨了。
searx
MINDMAPS
思维导图工具
docker run -d -p 8010:80 veggiemonk/mandamus
mindmap
weberp
这个是纯属无聊了,erp工具,可以部署了玩玩
docker run -d —name erpnext -p 8025:80 erpnext
Carliba Web
其实carliba本身就可以作为服务器启动,但是界面实在是。。。太丑了,Carliba web只是一个壳,通过carlibra软件生成书库和db,替换进carlibra web的目录当中,仅提供给一个界面。
docker run -d -e PUID=1000 -e PGID=1000 -e TZ=Asia/Shanghai -p 8013:8083 -v /替换成你的地址(并且把carliba软件生成的书和db放进来):/config -v /Volumes/HomeDate/docker/carliba/books:/books linuxserver/calibre-web
Carliba
基本上差不多就这样吧!
值友4094515516
校验提示文案
砍价绿人魔
校验提示文案
wb8254
校验提示文案
值友7884414744
校验提示文案
怎么又是剁手
校验提示文案
很自我的活着142
校验提示文案
想不出个昵称
校验提示文案
箬雨332
校验提示文案
小春熙
校验提示文案
值友2766811224
校验提示文案
值友9715941640
校验提示文案
HT315
校验提示文案
值友2161002111
校验提示文案
wakjjf
校验提示文案
来瓶雪碧吧
校验提示文案
大咖啤
校验提示文案
tel易
校验提示文案
xihrni
校验提示文案
BrianSTMC
校验提示文案
也许你面容憔悴
校验提示文案
至尊王
校验提示文案
值友5506913149
校验提示文案
暴躁芭比哥
校验提示文案
值友9715941640
校验提示文案
值友2766811224
校验提示文案
也许你面容憔悴
校验提示文案
小春熙
校验提示文案
箬雨332
校验提示文案
想不出个昵称
校验提示文案
很自我的活着142
校验提示文案
值友2161002111
校验提示文案
怎么又是剁手
校验提示文案
值友7884414744
校验提示文案
HT315
校验提示文案
砍价绿人魔
校验提示文案
BrianSTMC
校验提示文案
值友4094515516
校验提示文案
xihrni
校验提示文案
wb8254
校验提示文案
tel易
校验提示文案