标签: 搭建

想搭建个网站邮箱服务,请问怎么搭建

域名和服务器哪里的好 搭建用什么源码? 搭建完后需要能接收谷歌邮箱的邮件 谢谢

搭建 邮箱 源码 域名21 条回复 • 2021-08-06 13:38:41 +08:00
ferock 1
ferock 26 天前 via iPhone
一般情况下,你能接收谷歌邮件,但是没法给谷歌发
input2output 2
input2output 26 天前
域名的话 namesilo, namecheap, cloudflare, porkbun 都挺不错的
服务器的话 Vultr, Linode, DigitalOcean, AWS, GCP,但要申请开放相关端口
本人用过 Vultr,发个工单就好了,其它不大清楚
搭建的话可以 Postfix+Dovecot

自己以前搭过,实测可以 mail-test 满分,其实谷歌还好,只要 mail-test 通过,发出去的基本不会当垃圾
*恶心的是 qq 邮箱,mail-test 满分,但退信不收
你可以参考一下我以前的记录,但有点老了,建议参考其它更新的资料
https://iochen.com/post/install-email-service-on-centos-7-part-1-postfix/
https://iochen.com/post/install-email-service-on-centos-7-part-2-dovecot/

现在我已经改用其它提供商的了,因为自己维护太烦了
Xusually 3
Xusually 26 天前 ❤️ 3
直接说结论,不要自建邮件系统。
繁琐是一回事儿,关键是繁琐的事儿都办完了,各种黑名单都逃掉了,各种测试都通过了,还是会有很多邮箱有自己的黑名单、灰名单机制,很难突破,根本没办法解决。
v2k9 4
v2k9 26 天前
现在哪还有自己建立邮箱服务系统的,都是租用大企业的服务系统。

自己准备一个域名,解析道相关服务就行了。

关键词:

腾讯企业邮箱

阿里企业邮箱

网易企业邮箱

谷歌企业邮箱
potatowish 5
potatowish 26 天前 via iPhone
用企業微信郵箱吧
TuYanzheng 6
TuYanzheng 26 天前 via Android
*好不要用云服务器……肯定会被封……
zengguibo 7
zengguibo 26 天前
用别人的吧,垃圾邮件和互通性你是搞不好的
iceheart 8
iceheart 26 天前 via Android
Poste 了解一下
JensenQian 9
JensenQian 26 天前 via Android
氪金 gusite
baoshuo 10
baoshuo 26 天前
不推荐自建,可达性非常差。
目前我在用阿里云企业邮箱和 Outlook 的域名邮箱。

11
Maskeney 26 天前
只需要收的话你可以用很多邮件中转服务,比如 improvmx
RHG 12
RHG 26 天前 via iPhone
iredmail
opengps 13
opengps 26 天前
以前不封锁 25 端口的时候,我在办公室开端口转发就能搭建起来,现在基本上只能找一些小众不合规的厂商试试看了
dsn93 14
dsn93 26 天前
同,可以试试 sendgrid 也挺好用的
akira 15
akira 26 天前
自建邮箱很麻烦,搭建跑起来只是基础,后续一堆事情要做
xiaoz 16
xiaoz 26 天前 via Android
pose 比较简单,这是我之前的搭建经历: https://www.xiaoz.me/archives/16114
SJ2050cn 17
SJ2050cn 26 天前
如果你只是收邮件,自建的可以,推荐 mailu(同时支持收发邮件),docker 直接安装,服务器用 hostwinds,虽然网络不好,但 25 端口是开着的,并且可以改 rdns,但发邮件的自己别折腾了,折腾过的人告诉你,就算自建完测试是满分,qq 邮箱还会大概率将你发的邮件丢尽垃圾箱,还是花点小钱用人家成熟的邮件服务吧。
XiLingHost 18
XiLingHost 26 天前
mailcow 挺不错的
https://github.com/mailcow/mailcow-dockerized
jingslunt 19
jingslunt 26 天前
1.保证服务器的发件端口 25 端口能用(写个 http 起个 25 端口看下能不能用)
2.部署过几个企业邮箱,确实可用。
https://github.com/serghey-rodin/vesta
3.回 17 楼的问题,
邮件小于 10kb 很可能会被拒收
为了保证反馈邮件不被反垃圾拦截,建议将 feedbackloop@qq.com 加入白名单
它域举报垃圾邮件地址 alarm@tencent.com
如果已经确认邮件是真实的 QQ 邮箱用户发送,请将垃圾邮件原文以附件形式转发给 abuse@qq.com 。
4.保证 ip 是干净 ip,通过以下链接测试
https://www.corp-email.com/rbl#check_rbl
5.邮箱有效性检测
https://www.mail-tester.com
6. dns 做规范些

参考

Vestacp搭建邮局并利用DKIM防止判定垃圾邮件


q428202849 20
q428202849 25 天前
用海外的服务器吧
herojaxy 21
herojaxy 14 天前
如果只做接收的话比较好弄,涉及到外发,首先得解决 25 端口连通性的问题。
现在的 vps 运营商默认都是封禁 25 端口的,除非你是一家公司,否则很难申请解除封禁。推荐的话就是 linode,他们家默认 25 端口是开通的。

邮箱服务器软件的话,看系统,如果是 windows 推荐使用 smartermail http://smartertools.com ,安装比较简单
还有服务器拿到*件事就是查看一下 IP 有没有被列入各个 rbl 黑名单组织,可以去下面两个工具集网站查询
https://helohub.com/blacklist
https://mxtoolbox.com

第二件事就是找运营商添加反向解析,不是所有的运营商都支持添加 ptr 反向解析的,不过 linode 支持自助添加比较方便,添加完之后 https://helohub.com/ptr 查询是否生效

其实比较同意三楼的观点,自建是个坑,如果可以的话,尽量还是租用邮件服务商现有的 saas 服务,因为对于自建,计算你把你所有能做的全做完,并不意味着你就万事大吉了,维护一个邮箱系统是很麻烦的事情

站点服务器的搭建的选择方式

一、选择方式
1.vps
VPS(Virtual Private Server 虚拟专用服务器),就是通过 虚拟化技术,例如Xen, OpenVZ, Hyper-V,Vmware等,将一台服务器虚拟成很多的虚拟主机。站长去向vps提供商购买资源。

2.服务器租用
站长无需自己购买服务器, 只需根据业务的需要,提出对硬件配置的要求。IDC运营商根据站长的需求,租给站长满足条件的服务器。

3.服务器托管
服务器托管是指站长自己购买服务器,然后交通过IDC(主机商)交由机房进行管理维护,服务器的所有权和使用权都是属于客户自己的,只需要付管理费用。在服务器托管的情况下,如果硬件等出现问题,机房一般是不负责维修的,需要客户自行处理。

4.云服务器
云服务器(Elastic Compute Service, 简称ECS)是一种处理能力可弹性伸缩的计算服务,其管理方式比物理服务器更简单高效。站长只需要向云服务提供商购买一定数额的资源,如计算资源、存储资源、带宽资源等等

二、应用场景
VPS——适合是小型公司,动态网站,页面不是特别多,访问量不是特别大的网站;
服务器租用——适合中小型公司,电子商务网站或者大型论坛,网站每日流量很大;
服务器托管——适合大型公司,自己购买了服务器,需要托管在专业的IDC机房;
云服务器——适合开发型公司,有大并发、动态调整需求频繁的网站。

MQTT简单服务器搭建

搭建自己的MQTT服务器

 

MQTT协议是广泛应用的物联网协议,使用测试MQTT协议需要MQTT的代理。有两种方法使用MQTT服务,一是租用现成的MQTT服务器,如阿里云,百度云,华为云等公用的云平台提供的MQTT服务,使用公用的MQTT服务器的好处是省事,但如果仅仅用于测试学习还需要注册帐号,灵活性差些,有的平台还需要付费。另一方法是自己使用开源的MQTT组件来搭建。

MQTT服务器非常多,如apache的ActiveMQ,emtqqd,HiveMQ,Emitter,Mosquitto,Moquette等等。

这里介绍的是用轻量级的mosquitto开源项目来搭建一个属于自己的MQTT服务器。

*步:需要安装一台linux主机,这不多介绍,可以使用真机安装也可以使用虚拟机安装。如果仅仅是自己测试使用都可以。

第二步:下载mosquitto需要的依赖

sudo apt-get install libssl-dev

sudo apt-get install uuid-dev

sudo apt-get install cmake

 

第三步:下载mosquitto并解压,现在mosquitto官网*新的版本是1.5.4  http://mosquitto.org/download/

tar xzvf mosquitto-1.5.4.tar.gz

第四步:编译

cd mosquitto-1.5.4/

make

make install

第五步:启动mosquitto

mosquitto -v

1535473957: mosquitto version 1.5.1 starting

1535473957: Using default config.

1535473957: Opening ipv4 listen socket on port 1883.

1535473957: Opening ipv6 listen socket on port 1883.

可能遇到的问题:Error: Invalid user ‘mosquitto’.

解决方法: 编译安装后/etc/mosquitto/mosquitto.conf.example模板重命名,修改“user root(可以是其他登录的用户名)”;启动的时候指定新的配置文件:mosquitto -d -c /etc/mosquitto/mosquitto.conf

这时候mosquitto就会以默认的参数启动。如果需要带配置文件可以修改配置文件mosquitto.conf,

启动时候加上参数 -c,

mosquitto -c mosquitto.conf

可以看到,mosquitto监听的端口为1883.

这时候我们的MQTT服务器就搭建好了。可找一个mqtt客户端来测试一下。

先发布一个主题“home/garden/fountain/2”

内容是“hello world”

%title插图%num

这时候在mosquitto会打印出下面的log

535474247: New connection from 192.168.1.105 on port 1883.

1535474247: New client connected from 192.168.1.105 as MQTT_FX_Client (c1, k60).

1535474247: No will message specified.

1535474247: Sending CONNACK to MQTT_FX_Client (0, 0)

1535474307: Received PINGREQ from MQTT_FX_Client

1535474307: Sending PINGRESP to MQTT_FX_Client

1535474339: Received PUBLISH from MQTT_FX_Client (d0, q0, r0, m0, ‘home/garden/fountain/2’, … (12 bytes))

1535474367: Received PINGREQ from MQTT_FX_Client

1535474367: Sending PINGRESP to MQTT_FX_Client

 

订阅主题“home/garden/fountain/2”

%title插图%num

可以看到收到了自己发布的消息。

用wireshark抓包

%title插图%num

可以看到抓到了一个MQTT的publish的报文

动手搭建自己的web服务器

先传两张效果图:

%title插图%num%title插图%num

下面进入正题。

简介:该架构是建立在本人之前写的服务器ifserver上开发而来,主要采用js和html,推荐使用js,也可以用jsp,目前用于公司的后台管理,先开源供大家学习和参考。

构建步骤如下:

1 安装jdk 1.8(注意不要在安装目录中还有空格和特殊字符),安装ant 1.9.3以上,path中配置java和ant的环境变量,ant:你的ant安装目录\bin,你的jdk安装目录\bin,你的jdk安装目录\jre\bin,这三个配置好了在cmd控制台输入java -version 和 ant -version。

2 前往“码云”使用git客户端clone ifserver代码,链接:https://gitee.com/lastcoder/ifserver.git ,不会git赶紧右上角点X。

%title插图%num

3 clone完成以后,打开dos控制台,

cd进入ifserver/build目录,输入 ant  ifserver,这里就开始编译服务器代码,看到“BUILD SUCCESSFUL”表示编译成功,然后会在ifserver目录下生成一个worker和target目录,target目录就是编译完成后的服务器。

cd回到ifserver/build目录,输入 ant plugin -Dplugin fzxyweb,其中plugin是ant中的任务,-Dplugin表示参数名 fzxyweb表示参数,告诉ant中的plugin任务 去编译src/plugin中的fzxyweb插件。

4 进入target/ifserver/bin目录,双击打开ifserver.bat,启动服务器。

5 在浏览器中输入http://127.0.0.1:6000 即可。

 

Appium+Python3+iOS真机环境搭建

Appium 是一个自动化测试开源工具,支持 iOS 平台和 Android 平台上的原生应用,web 应用和混合应用。
1.环境配置
Mac系统自带的Python版本是2.7,当前要用新版,这里我选择的Python版本是3.5。下载安装。
删除掉mac自带的python2.7
sudo rm -R /System/Library/Frameworks/Python.framework/Versions/2.7
加上:
alias python=’/Library/Frameworks/Python.framework/Versions/3.5/bin/python3.5’
保存退出,执行:
source ~/.bash_profile
2,把appium和selenium安装到python3.5的set-packages中
3,appium运行时jdk的安装
访问Oracle官网 http://www.oracle.com
jdk下载的地方https://www.oracle.com/technetwork/java/javase/downloads/jdk11-downloads-5066655.html
下载安装jdk,打开Finder,可以在下图所示的路径中找到安装好的jdk 1.8.0_40.jdk
%title插图%num

Contents下的Home文件夹,是该JDK的根目录

%title插图%num

打开终端配置jdk环境变量:
如果你是*次配置环境变量,可以使用“touch .bash_profile” 创建一个.bash_profile的隐藏配置文件(如果你是为编辑已存在的配置文件,则使用”open -e .bash_profile”命令):
输入如下配置:

%title插图%num

JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home
PATH=$ JAVA_HOME/bin:$ PATH:.
CLASSPATH=$ JAVA_HOME/lib/tools.jar:$ JAVA_HOME/lib/dt.jar:.
export JAVA_HOME
export PATH
export CLASSPATH
然后保存关闭该窗口。
使用”source .bash_profile”使配置生效
输入 echo $ JAVA_HOME 显示刚才配置的路径
测试输入java -version
4,sdk环境变量的配置
在命令行输入 open -e .bash_profile , 打开.bash_profile文件,输入如下配置:
export ANDROID_HOME=/Library/Java/sdk
export PATH=$ {PATH}: $ {ANDROID_HOME}/tools
export PATH=$ {PATH}: $ {ANDROID_HOME}/platform-tools
export PATH=$ {PATH}: $ {ANDROID_HOME}/build-tools

export PATH=${PATH}:/Library/Java/sdk/platform-tools:/Library/Java/sdk/tools
%title插图%num

然后保存并关闭。
在命令行输入source .bash_profile ,使之生效。
5,ios的元素定位工具
a.Appium自带的Inspector工具
b.Macaca的app-inspector工具,具体地址:https://macacajs.github.io/app-inspector/cn/
c.Xcode自带的accessibility-inspector工具
具体地址:http://blog.csdn.net/icetime17/article/details/42211915
d.Appium团队提供的appium-ios-inspector
具体地址:https://github.com/mykola-mokhnach/Appium-iOS-Inspector
e.通过flex插件,具体地址:https://github.com/Flipboard/FLEX

为什么要搭建独立的图片服务器

导读:*近,很少写博客了哈,呃,其实,我是个懒人。说说我写这个图片服务器的前因后果吧,我本来是不想写的,因为自己的水平在那儿了,写也写不明白,何必献丑呢???然后,本宝宝被Jimmy批评了,说我就不能多学点,让我搭个图片服务器,就知道去找运维的。好吧,刚好前两天有人问我为什么现在又要在项目里用Fastdfs,本宝宝似乎除了献丑,就只剩下献丑了!

 

这篇博客,先根据个人的理解和在项目中的使用情况,来回答上回问我为什么现在项目里用fastdfs的问题。

其实,是这样的。在公司的项目中,我们*开始,并没有什么独立的图片服务器,就简单粗暴的在项目中建立了个uploadImages的文件夹,然后统一上传到这个目录下,读取的时候,也是从这儿读。后来呢,我们开始在项目中整出了个独立的文件服务器FTP(看我以前写的博客就知道啦,那时候真用的是Nginx+ FTP),但是,现在呢,咱们用FastDFS了。到这儿的时候,有人就想不明白了,就问我,这是为啥呀???(Ps:本宝宝,很想抽他的,为啥总问我一些我其实也并不知道多少的问题呢?我本意在懒到天下无敌,却总有人督促我勤快勤快再勤快的思考,奈何呀)好了,接下来,就说说具体的应用情况吧!

 

一、无独立的图片服务器
我回想了一下,当时有上传下载图片的系统,是一个机关用的人事系统。说实在的,整个系统,就机关部门的大概10来个人用(别看就这10来个人,当时还给整出了并发的问题,加班调bug解决问题,回想起来都是泪,嘿嘿,姑娘我只加班了一个通宵,相对项目组的其他人来说,不算惨的)那时候,哪儿来的什么图片服务器,根本就没想着那么多。除了登陆系统的使用人员要上传头像,别的用户资料都不强制要求上传图片。那些打印的文件,都是拿照片往上面贴的。 所以,那个项目,就直接在WEB-INF下面,建立了一个静态资源访问的uploadImages文件夹,上传到那儿了。(我后来看了一下,整个上传的图片,还没有当时引入的EasyUI自带的图片多呢)

 

二、FTP
那天他是这么问我的,他说啊:你不觉得直接用springMVC那个框架,上传图片特别简单吗,为什么还要弄个图片服务器,还得搭服务器,还得弄一堆,麻烦!   好吧,刚被批评,然后搭完FastDFS服务器,做完图片上传的我,对此,竟无言以对。     真想吼他:当我闲的有病,行不行啊,大哥???

话说回来,当时*次用到这个FTP文件服务器,应该是一个电商的项目。那时候,要用到图片的地方,就是用户头像,还有商品的图片。*开始的时候,也没有弄那个FTP,还是传到项目文件夹了,可是,在做集群,做负载均衡的时候,出问题了。图片传上去了,结果访问不到。具体怎么个情况呢,看本宝宝画个示意图(嘿嘿,每次画图,都得自我吐槽半分钟)
%title插图%num

然后,就搭了个独立的文件系统FTP。

 

三、FastDFS
用到这个的时候,应该是那个云平台。当时用Nginx搭建集群,实现负载均衡来着。然后*开始也是用的FTP,后来才改成的FastDFS,其实,这个东西吧,说是业务成熟的需要,其实,也可以从名字上来说嘛。FastDFS是一个分布式文件服务系统,而FTP是单机独立的。这个,我也是只会用,说不明白了,详情还是看官方文档吧。不过从选取需求上来说,理解理解分布式,也就可以明白为什么要用它了吧(个人直觉,本来想从官网截几个图贴上来的,算啦)

 

四、总结
其实吧,这个东西,真没必要说哪个哪个就好了,根据业务需求,合适就好。等到业务发展了,再改吧。我是那种满足当下,有需求了再改的人。嗯,下篇博客,还是继续献丑写写搭建FastDfs的过程吧,毕竟还是被Jimmy批评指教了的,唉!  好吧,以后我有空都自己搭着,啥事儿都指着运维部门的人干,好像确实耦合度有点高!

利用闲置笔记本搭建自己的开发服务器

1、对Ubuntu服务器进行基础配置
2、配置dnsmasq服务器
3、文章没什么技术含量,主要记录一些配置文件的位置
前言
*近新入手了一台MacBook Air,原来的ThinkPad就闲置下来了,感觉一直放着太浪费了,就重装了一个Ubuntu Server 16.04的系统,用来做自己的开发服务器。折腾了几个小时,就都搞定了,特意写下这篇文章,来记录一下自己折腾的过程。

基础配置
服务器安装的过程就不说了,大都是那么几步。有一个奇怪的问题就是安装的时候,需要设置时区,我竟然没有找到东八区,只好先设置了一个太平洋时区,好尴尬,不知道是不是Ubuntu的文本安装界面没有东八区这个选项,还是我英文太差了,没有找到。

设置时间
由于安装时我们设置了错误的时区,所以首先需要调整一下时区。Ubuntu 16.04已经完全集成了Systemd,所以我们只需要通过sudo timedatectl set-timezone Asia/Shanghai命令,就可以将时区设置为亚洲/上海了,同时我们也可以运行sudo timedatectl set-ntp 1命令,打开自动从 NTP 服务器同步时间,一会之后服务器时间就正常了。timedatectl命令还有一个选项是set-local-rtc,用来将硬件时间设置为本地时间,而不是UTC时间,这个选项我默认是关闭的。

更改软件源为中科大源
接下来,就是更改源了,打开/etc/apt/sources.list文件,将所有的us.archive.ubuntu.com替换成mirrors.ustc.edu.cn就可以了,注意这里由于我安装的时候选择的是美国的源,所以域名为us.archive.ubuntu.com,如果选择了其他地方的源,域名可能不一样。

同时要注意,security.ubuntu.com这个源表示的是 Ubuntu 进行安全更新的源,用来推送紧急安全更新的补丁,这个源我建议保持原样,因为紧急安全更新的补丁还是从 Ubuntu 官方下载比较好,不建议从其他地方来下载。

设置关闭盖子不休眠
由于我的电脑是笔记本,尽管没有装图形界面,但是在合上盖子之后,系统仍然会自动休眠,所以需要将这个自动休眠的功能关掉。我在网上搜索了一下,在 Askubuntu 上找到了一个相关的问题,按照问题中的答案所说,向/etc/systemd/logind.conf文件中添加一行HandleLidSwitch=ignore,然后重启systemd-logind.service服务,就关闭掉这个功能啦。

配置网络环境
将服务器配置好以后,接下来我们就需要配置网络了。

设置DHCP
我的笔记本是通过网线连接到路由器上的,所以,首先我们需要将有线网卡通过 DHCP 自动连接网络的功能打开。这里我在网上搜索了一下,搜到了一篇文章:Ubuntu Networking Configuration Using Command Line 。这篇文章很详细地介绍了Ubuntu如何设置动态IP和静态IP。我的电脑在刚装好系统的时候,没有任何关于有线网卡的配置文件,仅能够通过ip addr命令来看到当前系统的网卡,在了解到有线网卡的名称为enp12s0之后,我新建了一个文件/etc/network/interfaces.d/enp12s0.conf,然后向其中添加了如下的内容,

# 设置网卡enp12s0在开机的时候通过 DHCP 自动连接到网络。
auto enp12s0
iface enp12s0 inet dhcp
1
2
3
上面两句配置就表示设置网卡enp12s0在开机的时候通过 DHCP 自动连接到网络。

设置默认网关
设置好网卡的 DHCP 以后,我的服务器能够 ping 通路由器网关了,但是仍然无法 ping 通外网,显然,这是由于服务器本机的网关没有配置好,后来我又上网去搜索,发现了Askubuntu 上一个类似的问题,其中有个答案提到,dhclient只在当前服务器没有设置默认网关的时候,才会设置由 DHCP 服务器提供的路由器地址为默认网关。我通过ip route看了一下我的服务器的路由表,发现默认网关为网卡lo,所以 DHCP 服务器下发下来的网关地址并不会生效。我又在/etc/network/interfaces中添加了如下的配置:post-up route del default dev lo,删除掉默认走lo设备的路由配置。

然后我再来重启电脑,就发现服务器一开机就能够正常 ping 通外网了。

设置路由器
看到这里,相信大家肯定都有一些疑惑,服务器不应该是默认设置为静态IP吗,为什么你要配置 DHCP 呢。原因就在这一小节,我用的路由器是华硕的RT – N12,它的 DHCP 服务器有一个功能,就是将MAC地址和IP地址进行绑定,所以,我只需要在路由器上配置好MAC地址和IP地址的绑定,这样就相当于起到了静态IP的作用了,而且更改起来也比较方便,不需要服务器和路由器两头改。

配置DNS
由于我访问我的服务器的时候想通过域名来访问(方便以后添加HTTPS证书),所以我需要在我的内网中自己搭建一个DNS服务器,来负责服务器的域名解析。

安装并设置dnsmasq
由于我的需求很简单,只需要进行一个域名解析就可以了,所以我选择了dnsmasq,而不是比较复杂的bind9。

dnsmasq在Ubuntu的源中直接有deb安装包,所以我们直接通过sudo apt install dnsmasq命令安装即可。

dnsmasq的配置我参考了文章使用Dnsmasq搭建内网DNS服务器。使用了如下的配置:

# 设置服务器的监听地址为192.168.X.X和127.0.0.1
listen-address=192.168.X.X,127.0.0.1
# 所有没有.号的域名(plain names)都不会向上游DNS Server转发,只查询hosts文件
domain-needed
# 所有保留IP地址段内的反向查询都不会向上游DNS Server转发,只查询hosts文件
bogus-priv
# 不要读取/etc/resolver中的DNS Server的配置
no-resolv
# 不要poll /etc/resolver文件的更新
no-poll
# 配置上游服务器为DNSPod的公共DNS
server=119.29.29.29
server=182.254.116.116
1
2
3
4
5
6
7
8
9
10
11
12
13
配置好了以后,我们可以通过dnsmasq –test命令来检查dnsmasq的配置文件语法是否正确。

然后我们在服务器的/etc/hosts中添加我们想要设置的解析记录,比如这台服务器我设置了如下的记录:

192.168.X.X dev.bwangel.me
1
然后通过sudo systemctl enable dnsmasq && sudo systemctl restart dnsmasq命令启动dnsmasq服务即可。

*后我们可以通过dig命令测试一下,运行如下命令: dig dev.bwangel.me @localhost,看返回的IP地址是否和我们设置的解析记录相同。

设置路由器
配置好了DNS服务器以后,我们再来修改路由器的 DHCP 策略,设置下发的DNS服务器IP地址为我们的DNS服务器地址,这样内网中所有的DNS查询都会先经过这台DNS服务器。而我们的dev.bwangel.me域名也就能够成功解析了。至此,我们的开发服务器就已经搭建好了,我们可以通过SSH连接上来,搭建我们想要的服务了。

遇到的一些小坑
dnsmasq没有绑定本地地址
配置好了 DNS 服务器以后,我在服务器上 ping 百度的时候会一直卡着,但是 ping 公网 IP 却是可以 ping 通的,当时我*反应就是DNS解析出错了,只是不知道是DNS服务器配置的有问题,还是DNS服务器的IP地址路由器没有正确地下发下来。

接着我就利用dig来测试,发现使用dig www.baidu.com @192.168.X.X命令可以得到正常结果,而dig www.baidu.com @127.0.0.1就会卡着。然后我就觉得应该是dnsmasq没有监听127.0.0.1导致的问题。*后发现服务器DNS的配置文件/etc/resolv.conf中设置的默认DNS为127.0.0.1,而它去查询127.0.0.1的时候会卡着,也不报错,导致服务器不会使用备选的DNS服务器来查询域名,*终导致出现了 ping 百度卡着这种情况。我将dnsmasq的监听地址加上127.0.0.1之后就OK了。

这里还有一点没有搞清楚,路由器的 DHCP 中配置的DNS服务器并没有正确地应用,服务器还是默认遵循/etc/resolv.conf文件中的配置,这个还需要进一步了解一下。

ssh出现locale报错
这个问题经常遇到了,在Mac上通过SSH连接到Ubuntu上之后,在安装更新的过程中,出现了如下的报错:

perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LC_MESSAGES = “zh_CN.UTF-8”,
LANG = “zh_CN.UTF-8”
are supported and installed on your system.
perl: warning: Falling back to the standard locale (“C”).
1
2
3
4
5
6
7
8
这是由于终端SSH的时候,会将本地的locale配置传到服务端上去,我的本地设置的语系是zh_CN.UTF-8,但是服务器上只安装了en_US.UTF-8,所以就会报错提示说找不到语系zh_CN.UTF-8相关的文件。这里我们只需要修改一下服务器的/etc/locale.gen配置文件,将zh_CN.UTF-8相关的配置取消注释,然后再来运行locale-gen命令,就会安装上zh_CN.UTF-8语系相关的文件了,再来运行perl程序就不会报错了。
————————————————
版权声明:本文为CSDN博主「「已注销」」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u012291393/article/details/78650525

想搭建一台 homelab server 跑 ESXi,有一些疑问

*近内心长草 all in one ,想把路由, nas ,各种 server 全部虚拟化。因为本人硬件小白,又没玩过 ESXi ,有两个问题,不知道各位大神能否解答, 先谢谢各位了:

一, 我看中了 ASRock Rack E3C236D4M-4L 这款板子,板载 4*Lan 和 8*sata3, 这样我可否省掉网卡和 raid 卡,然后用板载接口实现安装 Zfs 和 OpenWrt ?(8sata 目前足够我使用, 4 个 lan 正好让我接入双 Isp+交换机和 AP)

二, 因为家中 Android 盒子 xbox 等设备众多,所以不准备做 HTPC ,就不想上独立显卡了。但是还是希望能跑跑 windows server 什么的,这样我可以正常进入图形化界面么?还是需要上带核显的 cpu(比如 E3 1235l V5)?

Showfom 1
Showfom 2017-01-24 15:37:16 +08:00 via iPhone
*个不知道 第二个显然没问题
mhycy 2
mhycy 2017-01-24 15:37:25 +08:00
ESXI 不支持核显(如果有成功案例求教程)
E3C236D4M-4L 板子略显奇葩,但没问题
ZFS 请备好足量的内存
需要图形界面请自备 A 卡,并做好折腾的准备

*后提示: All in one 对于喜欢折腾的人来说不是一个好选择
Showfom 3
Showfom 2017-01-24 15:38:02 +08:00 via iPhone
自己家用软 raid 就行了
mhycy 4
mhycy 2017-01-24 15:43:27 +08:00
@Showfom
*近上了硬卡,发现有件事比软阵列好太多:方便(不用敲命令了)
所以看上去家用上硬卡也没啥问题
Showfom 5
Showfom 2017-01-24 15:45:29 +08:00 via iPhone
@mhycy 是没啥问题 就是家用没必要花那个钱 不过我推荐 ups 得有 服务器*怕断电了
mhycy 6
mhycy 2017-01-24 15:50:07 +08:00
@Showfom
*近上了个不知道啥货源的 LSI 9286CV-8eCC ,算上线材 1300 。
价格感觉相比 ZFS 所需的多出来的的内存、处理器需求,还算可以接受。
除了没 ZFS 的块级校验特性,其他还好,能动态扩容这点很不错。

另: UPS 求推荐,寻找许久,在线式 UPS 似乎没有相对廉价的选择。
Showfom 7
Showfom 2017-01-24 15:54:19 +08:00 via iPhone
@mhycy 不带 bbu 吧 到了价格就会贵点 不过家用的话也是可以了

zfs 主要太激进 我们也内部用用 不然遇到什么 bug 都不知道

ups 我也没啥推荐的 可以问问 lty
mhycy 8
mhycy 2017-01-24 16:18:50 +08:00
@Showfom
带 BBU (当然也有电池), CV 后缀是那个超级电容做后备的技术缩写
掉电以后以来电容的电量把缓存的数据写入闪存持久存储
价格是挺划算的,就是不知道是啥货源,看成色不像是拆机品

ZFS 貌似 SUN 当年是有单柜 PB 级的存储设备在卖了,不知道和现在开源的那个 ZFS 是不是一回事。

UPS 如果买在线式其实还有个问题是效率。。毕竟两头 90%效率*终只剩下 81%了。。。。
后背式在老化以后切换时间会变长,电源扛不住就停机了,就怕这事。
CupTools 9
CupTools 2017-01-24 17:03:01 +08:00 via Android
@Showfom ? ZFS 不知道多稳定 我那阵列跑了两年了 一年 uptime 完全没问题 100 多台 VM 每天轰炸
CupTools 10
CupTools 2017-01-24 17:04:16 +08:00 via Android
U-NAS NSC 800 + Xeon-D 版 是我的标配

Showfom 11
Showfom 2017-01-24 18:15:12 +08:00 via iPhone
@CupTools 家里放的话 散热和隔音怎么解决
xspoco 12
xspoco 2017-01-24 18:23:41 +08:00
我觉得 LZ 可以考虑下 小马 V5
xspoco 13
xspoco 2017-01-24 18:24:50 +08:00
https://item.taobao.com/item.htm?id=543308020602

这个是链接
yongw520 14
yongw520 2017-01-24 18:59:34 +08:00
@Showfom 感谢回复,那就是说不需要带核显的 u 了?
yongw520 15
yongw520 2017-01-24 19:03:42 +08:00
@mhycy 非常感谢! E3C236D4M-4L 是奇葩了点, amazon 没有人评论, 也 google 不到什么信息,但是性价比和需求恰好满足,所以比较担心。。另外为什么说 all in one 对于喜欢折腾的人来说不是一个好选择呢?我理解不正好适合折腾么哈哈
yongw520 16
yongw520 2017-01-24 19:06:08 +08:00
@CupTools 我需求完全家用,所以尽量省电点儿和空间:)
yongw520 17
yongw520 2017-01-24 19:07:18 +08:00
@xspoco 感谢推荐,不过这台性能对我来说貌似有点儿捉急,倒也是个免折腾的路子
yongw520 18
yongw520 2017-01-24 19:13:12 +08:00
@mhycy 另外就是说核显的问题基本就不用纠结,果断选择无核显的 u 就可以了对吗?如果有需求就有去折腾独显了。。
xenme 19
xenme 2017-01-24 19:39:23 +08:00 via iPhone
1. 基本显示无所谓都是模拟的,如果需要显卡穿透,投资有点大,还不如直接台式机
2. 阵列卡一般没啥必要,换块 ssd 跑系统,剩下当数据盘就好,数据安全性要求高,备份或者上个垃圾兼容的阵列卡就行。
yongw520 20
yongw520 2017-01-24 20:10:07 +08:00
@xenme 非常感谢回复
担心就是很多 os 都至少有 gpu 才能启动,不知道玩 ESXi 没有任何显卡会不会有什么问题?
我也是不想上阵列卡,预算有限哈哈
aru 21
aru 2017-01-24 20:25:30 +08:00
这块主板板载独立显卡的,虽然这个显卡比核显性能还差太多。不过用来装系统,查看日志什么还是足够了
1 和 2 都没问题
xenme 22
xenme 2017-01-24 20:32:30 +08:00 via iPhone
@yongw520 目前自用垃圾 c6100 , 200 块的垃圾 CPU ,无核显,无独显。跑 windows , centos , solaris , ubuntu 图形界面都没问题,直接 console 放放一般视频都没啥问题,模拟显卡足以

openwrt 专门去广告用。 nas 有单独的没虚拟,不过无非就是磁盘和网络 IO 而已, CPU 家用几乎没啥压力。
内存够大就行。

你这配置比我好上天了。
mhycy 23
mhycy 2017-01-25 00:47:44 +08:00 ❤️ 1
@yongw520
CPU 不带核显即可
服务器主板自带的显卡也就仅仅够让你用来看个日志,那玩意大多是 ATI 的 32M 闪存走 PCI 总线的亮机卡
另外 楼上有人提到了小马的 V5 ,其实还有一个选择是带外壳的 3215U ,性能不咋地,但是做软路由很合适。
(小马的 CPU 是 ES ,务必注意)

我说 ESXI 不适合折腾也和软路由有关,因为折腾的过程中必然会频繁的重装系统 /修改配置。
如果是 ESXI+显卡直通的结构,配置会增加不少复杂度,略显麻烦与复杂
倒不如设备分区那么在折腾的时候不会导致全屋网络中断

我现在比较倾向于一个高可用的结构 EdgeRouter X + 3215U (需要地址我去淘宝找 699 标价)组合成双路由
(路由架构: ERX 提供 NAT , 3215u 配置 ESXI ,上层虚拟机使用 VyOS 做软路由,两个路由使用 VRRP 保持可用)
( ERX 提供多线 NAT ,毕竟支持硬件 offload , VyOS 提供基于 IP 的策略路由与负载均衡)
这时候,如果需要额外的虚拟化可以在 PC 平台上完成(毕竟新平台都有 VT-D ,而且内存便宜不少)
NAS 需求看情况直接使用阵列卡 /独立组建存储柜,避开性能瓶颈并提高可靠性(耗电应该差不多)

另:如果能接受老平台,淘宝有个 1150 平台的万兆神板可供考虑
CupTools 24
CupTools 2017-01-25 04:16:14 +08:00
1 x http://www.u-nas.com/xcart/product.php?productid=17617

1 x http://www.superbiiz.com/detail.php?name=MB-X10D6C

2 x https://www.superbiiz.com/detail.php?name=D42116G4S

1 x https://www.newegg.com/Product/Product.aspx?Item=9SIA67S46V3429

1 x https://www.newegg.com/Product/Product.aspx?Item=N82E16817338059

Then 8 x HDD of your choice.

This configuration should last for a least 4 years. If you want to future-proof it even further, get a Xeon-D 154x board and 64 GB of RAM.
CupTools 25
CupTools 2017-01-25 04:16:40 +08:00
s/a least/at least/g
gamexg 26
gamexg 2017-01-25 09:04:08 +08:00 via Android
1 、没问题,我这里是 u 盘安装 esxi , esxi 上面运行 freenas ,磁盘控制器直通 freenas 。然后双网卡做的汇聚,配合 vlan 交换机通过 vlan 划分的网络。

2 、如果 windows 是远程访问无所谓,我这里虚拟显卡播放视频没问题。如果需要 esxi 接显示器,那么建议上个独立显卡做直通,集成显卡可能不能直通。
prondtoo 27
prondtoo 2017-01-25 09:38:45 +08:00
要想阵列必须上阵列卡。现在所有板载的半软阵列卡完全不能认。显卡直通只能用 A 卡, N 卡除非你硬改电路成专业卡,否则不认。
除非买 UNraid ,不装 esxi 可解决以上问题,不贵。
mandymak 28
mandymak 2017-01-25 10:16:57 +08:00
@yongw520 esxi 不支持 ZFS 。
mhycy 29
mhycy 2017-01-25 10:35:08 +08:00
@mandymak
估计他想折腾的是 ESXI+磁盘直通跑 ZFS
gamexg 30
gamexg 2017-01-25 12:49:57 +08:00 via Android
@gamexg 另外 esxi6.5 不支持 u 盘放虚拟机了,需要用 6.0 。
除了 freenas 其他的全部通过 nfs 放到 freenas 虚拟机。
Showfom 31
Showfom 2017-01-25 15:10:11 +08:00 via iPhone
@yongw520 不需要 rdp 直接远程管理
yongw520 32
yongw520 2017-01-26 14:51:26 +08:00 via iPhone
@aru ?那就妥妥省下显卡钱了
yongw520 33
yongw520 2017-01-26 14:52:25 +08:00 via iPhone
@xenme 那就放心把这部分预算省下了 谢谢回复~
yongw520 34
yongw520 2017-01-26 14:53:38 +08:00 via iPhone
@xenme 我也在考虑是否配置过剩了,考虑下减减配
yongw520 35
yongw520 2017-01-26 14:54:39 +08:00 via iPhone
@mhycy 非常感谢仔细的回复!这么多选择我需要消化一下。。
yongw520 36
yongw520 2017-01-26 14:57:42 +08:00 via iPhone
@gamexg 那网络问题就放心了,那如果我不用 u 盘,上 ssd 放系统没问题吧应该?
yongw520 37
yongw520 2017-01-26 15:02:46 +08:00 via iPhone
@prondtoo @mhycy @mandymak
感谢各位回复。是的,我是想 ESXi 直通跑 ZFS 。板载 sata 无法实现直通吗?那就必须上阵列卡了。。预算啊
yongw520 38
yongw520 2017-01-26 15:03:33 +08:00 via iPhone
@CupTools 感谢回复,慢慢筛选这几个板子
gamexg 39
gamexg 2017-01-26 15:12:01 +08:00
@yongw520 我就没上阵列卡,但是缺陷是只能用 esxi6.0 的版本, freenas 安装在 u 盘,把板载 sata 控制器直通给了 freenas 。
ssd 需要 sata 控制器,如果 sata 控制器直通给了 freenas , esxi 就无法访问 ssd 了,直接挂。解决办法就是上阵列卡再提供一个 sata 控制器,两个控制器一个给 esxi 一个给 freenas 。
kennylam777 40
kennylam777 2017-01-26 23:50:04 +08:00
家中有 ESXi 的握個爪。

ESXi 內打算作 NAS 的話, 我是比較建議 HBA 卡的, 因為可以用 VT-d 丟進 VM Guest 內, 讓 VM Guest 可以直接看到每個 HDD 的狀態, 也不用每次換 HDD 就非得要改 RAW Disk Mapping, 我想你的 ZFS 不是跑在 VMFS 的 Virtual Disk image 吧?

我是用 OpenMediaVault + mdadm (軟 RAID) + HBA 卡的配罝。

VM 軟路由我直接用 pfSense 的, VMXNet3 在 FreeBSD 還好, 就是沒有 VirtIO 在 Linux 快, 但 4Gbps 吞吐量夠用了。而且 ESXi 帶 VLAN Trunk support, VM 做的 VLAN 直接穿出實體網絡。

另外還有一堆 Linux VM 及一個 Windows Server, 但沒有把顯示卡穿透進去, 我的板子也只有 BMC VGA 。
kennylam777 41
kennylam777 2017-01-27 00:05:13 +08:00
秀一下配置…. CPU 及 RAM 都是超便宜, RAID/HBA 卡都是二手款色……
CPU: Xeon E5 2650 *2
MB: Intel S2600CP4
RAM: 8GB RDIMM x4
機箱: 4U 650
硬 RAID: LSI 8704EM2, 帶 128GB SSD RAID1, 主要開機 ESXi+VMFS 區
HBA 卡: Dell PERC 300 (LSI 9240-8i HBA)., 帶 3TB HDD 陣, 直通 NAS
板載 SATA: 接 SSD 及 HDD, 次要 VMFS 區
yongw520 42
yongw520 2017-01-29 19:38:51 +08:00 via iPhone
@gamexg 明白了,找到一块多了 m.2 走 pci 的板子,这样问题是不是就解决了?
yongw520 43
yongw520 2017-01-29 19:42:57 +08:00 via iPhone
@kennylam777 pfSense 没玩过,双 ISP 加$$能否满足需求?另你的配置不知功耗和噪音如何?
frostfall 44
frostfall 2017-01-30 12:55:07 +08:00
这款主板的网卡比较新,安装 ESXI 可能需要额外的网卡驱动,或者*新的 ESXI6.5 应该原生带驱动,虚拟机的桌面环境不需要显卡,我的机器也是板载 ASPEED 显卡,放心用没有问题,不过如果玩游戏的话推荐 A 卡直通
组 raid 可以软 raid 或者上 raid 卡,看你需求
zfs 吃内存,所以内存要大些
综上,两个问题都没有问题只不过网络配置这块要多考虑一下
yongw520 45
yongw520 2017-01-30 16:12:24 +08:00
@frostfall 感谢回复!明白,网络这部分确实脑中概念比较模糊,再探索探索。
又找到一款 超微的 X11SSH-LN4F 好像更适合我, matx 版型,价格还便宜一点,没意外就上它了~
thank243 46
thank243 2017-01-31 09:14:00 +08:00 via iPhone
选个低功耗的 cpu ,可以省很多电费。 N3700 应该就够了
frostfall 47
frostfall 2017-01-31 22:14:02 +08:00
@frostfall 另外提醒一下*好买个阵列卡或者 HBA 卡用来直通,网上说的 ESXI 硬盘直通其实是 RDS 映射,虚拟机不能查看 s.m.a.r.t 信息,要坏了也不知道
netfee 48
netfee 2017-02-01 19:12:51 +08:00 via Android
楼主祝你成功,不过更多的可能是,到后来,你会发现 all in one 并不是想象中的那么美好。比如,显卡直通需要 nvidia 专业级支持虚拟化的显卡才能成功。 A 卡相对好一些,可能低端显卡都可以成功,但是很多专业软件是禁止在虚拟机中运行或者需要专门购买授权。出现故障排除时也是一个头疼的事。
kennylam777 49
kennylam777 2017-02-01 21:52:10 +08:00
@yongw520 都是擱在獨立的一角, 但其實還好, 4U 機箱能用 12cm 慢速(1500rpm 下)的靜音扇, 已經有不錯的效果
q15993050176 50
q15993050176 2017-02-17 12:15:13 +08:00 via iPhone
谁自己搭建的服务器,我想有偿合用,原来用的阿里云,阿里云活动也快到期了,所家里没有公网 IP ,架设不了。可以联系我, qq935001679
siyiye 51
siyiye 2017-03-30 15:41:19 +08:00
《 ESXI 也能很好玩—分配过剩机能,实现家庭虚拟化》
http://bbs.vmsky.com/forum.php?mod=viewthread&tid=42019

使用 strongSwan 搭建以证书认证的 IKEv2 服务器时出现的一点问题

用 Windows 10 连接的日志如上

从日志可以看到有一句 no trusted certificate found for '* Client' to verify TLS peer

可是证书应该是没问题的,因为相同的证书在 Android 上的 strongSwan 就能成功连上,并且用的也是 EAP-TLS

monsterxx03 2017-03-07 23:17:22 +08:00
证书给 windows 用的话,记得生成的时候要设置 subjectAltName 的, 看看这篇: https://wiki.strongswan.org/projects/strongswan/wiki/Win7CertReq
yhjserv 2
yhjserv 2017-03-07 23:52:37 +08:00
@monsterxx03 服务器的证书应该是没问题的,因为是服务器拒*了 Windows 连这个服务器,而且从 log 上也能看出来
monsterxx03 3
monsterxx03 2017-03-08 00:40:48 +08:00
我是说给 client 端的证书,那句 log 就是 server 不认 client 的证书。

当时 windows 的证书是怎么生成的? 用 ipsec pki 生成的话,有加 –san my_server_domain.example.org 吗
yhjserv 4
yhjserv 2017-03-08 01:16:24 +08:00
使用下面的命令生成了客户端证书
“`
ipsec pki –pub \
–in test.key | \
ipsec pki –issue \
–cacert ../rootca/*ca/*ca.crt \
–cakey ../rootca/*ca/*ca.key \
–dn “C=CN, O=IKEv2 * TEST, CN=Test * Client” \
–san my_server_domain.example.org \
–outform pem > test.crt
“`

证书信息
“`
$ openssl x509 -in test.crt -noout -text
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 5911216928624408369 (0x5208dc7a44eef731)
Signature Algorithm: sha512WithRSAEncryption
Issuer: CN = Root CA, C = CN, O = IKEv2 * TEST
Validity
Not Before: Mar 7 17:04:57 2017 GMT
Not After : Mar 6 17:04:57 2020 GMT
Subject: C = CN, O = IKEv2 * TEST, CN = Test * Client
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (8192 bit)
Modulus:
00:……:17
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Authority Key Identifier:
keyid:32:6A:60:CC:11:2E:7C:5F:B7:58:C2:8F:5F:6B:64:CB:69:AB:CD:8E

X509v3 Subject Alternative Name:
DNS:my_server_domain.example.org
Signature Algorithm: sha512WithRSAEncryption
64:……:53
“`

服务端依然不接受这张证书
monsterxx03 5
monsterxx03 2017-03-08 09:16:50 +08:00 via iPhone
看上去没啥问题啊,话说你的域名只是个示例吧,实际连服务器使用的域名要和 server 证书的 cn 对得上才行。 strongswan 坑好大的,能用其他的还是别折腾了
Terenc3 6
Terenc3 2017-03-08 09:46:48 +08:00 via iPhone
将 CN 字段更换为你的域名!

https://enginx.cn/2016/06/19/配置基于 strongswan-的 ikev2.html
yhjserv 7
yhjserv 2017-03-08 15:02:21 +08:00
@monsterxx03 是的,我是用正确的信息将证书生成后把敏感信息替换掉了而已

@Terenc3 这是客户端证书的问题,另,你提供的链接 404 了
Terenc3 8
Terenc3 2017-03-08 23:02:26 +08:00
https://enginx.cn/2016/06/19/%E9%85%8D%E7%BD%AE%E5%9F%BA%E4%BA%8Estrongswan-%E7%9A%84ikev2.html

链接包含中文,没有转换过来。以上是正确有效的链接。
Terenc3 9
Terenc3 2017-03-08 23:05:24 +08:00
@yhjserv 客户端证书只需要 CA 和服务器证书一致就行了。可是服务器证书的 CN 字段需要填写你的域名。
yhjserv 10
yhjserv 2017-03-09 23:42:58 +08:00
@Terenc3 你提供的文章对我来说可能没有什么用,因为这篇文章使用的是密码登录而不是证书登录。
我相信我的配置文件里面写得很清楚,里面没有配置任何的密码登录

Terenc3 11
Terenc3 2017-03-10 11:43:26 +08:00 via iPhone
@yhjserv 估计你要再搜索点资料了。我的 iKEv2 使用数字证书和用户名验证,但是我的这篇文章没有写 radius 的部分,祝你顺利。

基于 Windows Server 2019 混合 Docker for windows 搭建 Nextcloud 简易攻略

环境:
物理主机系统:Windows server 2019 Datecenter (v1809, 17763.805)
Docker:Docker for windows 2.1.0.4 (Engine: 19.03.4, Compose: 1.24.1)
MySQL:MySQL for win64 8.0.18 Community Server
Nginx:Nginx for windows 1.16.1
Nextcloud:17.0.0 (hub.docker.com/_/nextcloud, nextcloud:latest, nextcloud:apache, OS:Linux/amd64)
可选附加:
Onlyoffice-document-server: https://hub.docker.com/r/onlyoffice/documentserver, tag:latest
redis: https://hub.docker.com/_/redis, tag:latest
总之除了 Nextcloud,附加的 onlyoffice-document-server 和 redis 之外,其余均为基于 windows 的软件

Nextcloud 镜像的选择:在官方 Docker 页面中主要版本有默认的 Apache 版和采用容器化 Nginx 的 FPM 版,在我个人实际搭建过程中 FPM 版的 Nginx 和宿主机 windows 之间隔着一层 NAT,配置调试起来显得十分麻烦,故选择运行起来更简单的 Apache 版

Docker for windows 安装是全自动创建 Docker Host 的 Hyper-V 虚拟机,网络使用 NAT 转发,Host IP 为 10.75.0.1,Container IP 为 10.0.75.0

MySQL Community 创建好供 Nextcloud 使用的 utf8mb4 编码的数据库(database),并设置好相关的用户名和密码,也可以直接使用默认的 root 账户,记得要修改密码

NextCloud 和 Nginx 的搭建后续重点讲述

重点讲述:
Nextcloud 容器:
这个其实百度和谷歌上有一大批的教程,只是个人在实际环境运行中出现了各种各样的小细节问题,还有更多的是这些教程大多数都过时了,当然接下来的所有讲述都是仅供参考,毕竟每个人的运行环境都不同

Compose 文本内包含了 redis 缓存容器和 onlyoffice-document-server 文档服务器容器配置,觉得有用请自取

我个人将一些比较重要的文件和 log 通过 volume 挂载到物理系统 windows server 的 D 盘中,Nextcloud 则是直接将整个 PHP 程序和数据文件夹 /var/www/html 转移到 D:/Docker/nextcloud 中,方便以后直接使用 windows 管理文档

nextcloud 容器用的 “wyxls/nextcloud:full” 镜像是我自建的,Nextcloud 的官方镜像默认不带 smbclient 和 crontab,会影响到外部存储挂载 APP 使用 (因为我主要 windows 的 smb 共享),于是我根据官方提供的 Dockerfile 自建了镜像并上传到 docker hub,不需要的话可以改成 nextcloud 官方的 image ( https://hub.docker.com/_/nextcloud)

Dockerfile example:( https://github.com/nextcloud/docker/blob/master/.examples/dockerfiles/full/apache/Dockerfile)

version: ‘3’
#初始化网络模块,为了让 Nextcloud 和 onlyoffice+redis 协作
networks:
nextcloud:
#services 以下都是容器
services:
#redis 容器,暴露 6379 端口供其他容器使用
redis:
image: redis
container_name: redis
hostname: redis
restart: always
networks:
– nextcloud
expose:
– 6379
#nextcloud 容器,宿主机 10000 端口转发 80 端口访问
nextcloud:
image: wyxls/nextcloud:full
container_name: nextcloud
restart: always
depends_on:
– redis
environment:
– UID=1000
– GID=1000
– UPLOAD_MAX_SIZE=5G
– APC_SHM_SIZE=128M
– OPCACHE_MEM_SIZE=128
– CRON_PERIOD=15m
– TZ=Aisa/Shanghai
– NEXTCLOUD_TABLE_PREFIX=oc_
volumes:
– D:/Docker/nextcloud:/var/www/html
ports:
– 10000:80
networks:
– nextcloud
#onlyoffice 容器,宿主机 10005 端口转发 443 端口访问,在 nextcloud 的 onlyoffice 设置里必须以 https+宿主端口访问
onlyoffice:
container_name: onlyoffice
image: onlyoffice/documentserver:latest
stdin_open: true
tty: true
restart: always
depends_on:
– nextcloud
volumes:
– D:/Docker/onlyoffice/document_data:/var/www/onlyoffice/Data
– D:/Docker/onlyoffice/document_log:/var/log/onlyoffice
– D:/Docker/onlyoffice/document_fonts:/usr/share/fonts/truetype/custom
– D:/Docker/onlyoffice/document_forgotten:/var/lib/onlyoffice/documentserver/App_Data/cache/files/forgotten
ports:
– 10005:443
networks:
– nextcloud
在 Docker 容器中运行的 Nextcloud 默认以 root 权限运行所有程序,所以访问时会提示设置权限 chmod 0770,但在我个人实践中无论是 chown 还是 chmod 都无法解决这个问题,后来还是强行忽略文件权限检查

在 /var/www/html/config/config.php 中加入以下一行:

‘check_data_directory_permissions’ => false, #检查数据目录权限
此外别忘了还要添加 Trusted_Domains,不然 Nextcloud 的 Web 端无法访问:

‘trusted_domains’ =>
array (
0 => ‘example.com’,
1 -> ‘localhost’,
),
Nginx:
由于 Docker for windows 是基于 Hyper-V 虚拟机模拟出的 Linux/amd64 系统,相当于物理 windows——Hyper-V 虚拟机( Docker Host 宿主机)——Docker Container (容器)两层 NAT 网络,所以需要使用 Nginx 当中间人进行反向代理,下面是我个人配置的 conf,仅供参考

因为我个人的 Windows Server 内网可以直接通过 SMB 访问管理文件,而 Nextcloud 只进行外网访问,所以我只做了 HTTPS 监听+反向代理,有内网 HTTP 访问需求的可以将 SSL 相关部分注释掉

原本在反向代理 proxy_pass 段有 connect, read, send 等 timeout 限制,但后来发现添加后网页访问和 windows 客户端同步变得异常缓慢,而且频繁报错,故删除

server {
listen 10002 ssl; #Nginx 监听端口
server_name example.com localhost 192.168.x.x; #域名, IP, 本地地址都可以填写
root D:/nextcloud; #nextcloud 目录
index index.php;

ssl_certificate D:/SSL-Certificates/fullchain.cer;
ssl_certificate_key D:/SSL-Certificates/private.key;
ssl_protocols SSLv2 SSLv3 TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers on;

#以下部分为隐藏 header, 为了解决 nextcloud 自检问题
proxy_hide_header Strict-Transport-Security;
proxy_hide_header X-Content-Type-Options;
proxy_hide_header X-Robots-Tag;
proxy_hide_header X-Frame-Options;
proxy_hide_header X-Download-Options;
proxy_hide_header X-Permitted-Cross-Domain-Policies;
proxy_hide_header Referrer-Policy;
proxy_hide_header X-XSS-Protection;

add_header Strict-Transport-Security “max-age=31536000; includeSubDomains; preload” always;
add_header X-Content-Type-Options nosniff;
add_header X-Robots-Tag “none”;
add_header X-Frame-Options “SAMEORIGIN”;
add_header X-Download-Options “noopen”;
add_header X-Permitted-Cross-Domain-Policies “none”;
add_header Referrer-Policy “no-referrer”;
add_header X-XSS-Protection “1; mode=block”;

client_max_body_size 10G;
fastcgi_buffers 64 4K;
fastcgi_hide_header X-Powered-By;

location / {
proxy_pass http://localhost:10000/; #反向代理地址
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

location = /.well-known/carddav { #解决自检 carddav 未正常配置解析提示问题
return 301 $scheme://$http_host/remote.php/dav;
}

location = /.well-known/caldav { #解决自检 carddav 未正常配置解析提示问题
return 301 $scheme://$http_host/remote.php/dav;
}

location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}

location ~ ^\/(?:build|tests|config|lib|3rdparty|templates|data)\/ {
deny all;
}

location ~ ^\/(?:\.|autotest|occ|issue|indie|db_|console) {
deny all;
}

}
在初步搭好 Nextcloud 后实际使用中经常出现访问超时,原因是 Nextcloud 在反向代理中可能会无法侦测正确的协议,需要强行覆写( Nextcloud 默认 latest 镜像用 Apache 作为 Web server 监听 HTTP 80 端口)

‘overwriteprotocol’ => ‘https’,
额外部分:
Onlyoffice-document-server:
Nextcloud 官方提供连接 onlyoffice 服务的 APP,与 onlyoffice 对接后能实现 Nextcloud 内通过 Web 访问直接打开并编辑 office 相关文档 (pptx, xlsx, docs 等),通过 Docker 可以一键配置

version: ‘3’
services:
onlyoffice:
container_name: onlyoffice
image: onlyoffice/documentserver:latest
stdin_open: true
tty: true
restart: always
depends_on:
– nextcloud
volumes:
– D:/Docker/onlyoffice/document_data:/var/www/onlyoffice/Data
– D:/Docker/onlyoffice/document_log:/var/log/onlyoffice
– D:/Docker/onlyoffice/document_fonts:/usr/share/fonts/truetype/custom
– D:/Docker/onlyoffice/document_forgotten:/var/lib/onlyoffice/documentserver/App_Data/cache/files/forgotten
ports:
– 10005:443
networks:
– nextcloud
证书安装:在 /var/www/onlyoffice/Data 中建立”certs”文件夹并将 SSL 证书及私钥以”onlyoffice.crt”和”onlyoffice.key”保存,或者直接在 yml 中 environment 环境参数添加,在 Docker-Settings-Shared Drives 设置共享后可以直接使用 windows 物理路径指定,比如:D:\SSL-certificates\onlyoffice.crt

environment:
– SSL_CERTIFICATE_PATH=证书路径
– SSL_KEY_PATH=私钥路径
通过访问 https://example.com:10005 可以查看 Document Server 运行状况,显示 Document Server is running 表示成功

*后在 Nextcloud 内设置 Document Editing Service address 为 https://example.com:10005,如果页面下方出现 settings 一类选项则表示已成功连接

Redis:
Nextcloud 官方推荐使用 Redis 缓存 Nextcloud,我自己也不太懂原理,但官方既然推荐了就一起部署上啦

version: ‘3’
services:
redis:
image: redis
container_name: redis
hostname: redis
restart: always
networks:
– nextcloud
expose:
– 6379
记得要在 Nextcloud 对应的 config/config.php 中添加相关内容

‘memcache.local’ => ‘\OC\Memcache\APCu’, #redis
‘memcache.distributed’ => ‘\OC\Memcache\Redis’, #redis
‘memcache.locking’ => ‘\OC\Memcache\Redis’, #redis
‘redis’ => array( #redis
‘host’ => ‘redis’, #如果 redis 部署在物理机上填 localhost,这里由于 redis 和 nextcloud 在同一网络 nextcloud 内,所以可用 redis 代替
‘port’ => 6379,
),
结语:
onlyoffice 目前我个人测试只能在 Docker 内部 Nextcloud 使用,详细原因猜测是 onlyoffice 内置的 Nginx 没正确配置监听或允许外部网络域名访问(反正我软路由的另一个 Nextcloud 对接时显示 Connetion refused )

我凭借着记忆将大致的搭建过程写了出来,难免会有所纰漏,烦请各位朋友查漏指正,有什么问题可以回复交流

此外如果对过程中任何一部分有修正改进的建议,请务必告诉我,我对 Nginx、PHP、MySQL 参数调优真的是一窍不通

牢骚话:

有人可能会问为什么不干脆用 Linux 物理系统来搭,没辙啊,老爸只会用 windows,老妈想着吃饭时间连上去看 iqiyi 的电视剧,家里其他人又想摆一台公用的共享 NAS,我自己对 centOS 又不是特别熟悉,*后翻了一大堆的论坛帖子、网站文章自己摸索,目前也就只能这样先用着了

其实*关键是没钱买群晖,而且家里人的要求比较杂,群晖不能很好地满足,于是这份攻略就诞生了

曾经想过 ESXi 6.7 组建 FreeNAS + centOS + Docker (Nextcloud)+ Windows 7 的大虚拟机,把路由 LEDE 也虚拟化,从此就可以把那台软路由也扔掉,但后来发现搞不定 N 卡直通后给 Windows,重启虚拟机就带着 ESXi 一起死机的问题。据谷歌搜索说是因为 ESXi 6.7 在显卡*次直通给虚拟机后关机时没能正常 reset 显卡状态,导致第二次虚拟机启动时显卡处于正在使用状态而带着宿主机一起 Boom,折腾了两天还是解决不了,随后我就放弃并滚回去用 windows 了

友情链接: SITEMAP | 旋风加速器官网 | 旋风软件中心 | textarea | 黑洞加速器 | jiaohess | 老王加速器 | 烧饼哥加速器 | 小蓝鸟 | tiktok加速器 | 旋风加速度器 | 旋风加速 | quickq加速器 | 飞驰加速器 | 飞鸟加速器 | 狗急加速器 | hammer加速器 | trafficace | 原子加速器 | 葫芦加速器 | 麦旋风 | 油管加速器 | anycastly | INS加速器 | INS加速器免费版 | 免费vqn加速外网 | 旋风加速器 | 快橙加速器 | 啊哈加速器 | 迷雾通 | 优途加速器 | 海外播 | 坚果加速器 | 海外vqn加速 | 蘑菇加速器 | 毛豆加速器 | 接码平台 | 接码S | 西柚加速器 | 快柠檬加速器 | 黑洞加速 | falemon | 快橙加速器 | anycast加速器 | ibaidu | moneytreeblog | 坚果加速器 | 派币加速器 | 飞鸟加速器 | 毛豆APP | PIKPAK | 安卓vqn免费 | 一元机场加速器 | 一元机场 | 老王加速器 | 黑洞加速器 | 白石山 | 小牛加速器 | 黑洞加速 | 迷雾通官网 | 迷雾通 | 迷雾通加速器 | 十大免费加速神器 | 猎豹加速器 | 蚂蚁加速器 | 坚果加速器 | 黑洞加速 | 银河加速器 | 猎豹加速器 | 海鸥加速器 | 芒果加速器 | 小牛加速器 | 极光加速器 | 黑洞加速 | movabletype中文网 | 猎豹加速器官网 | 烧饼哥加速器官网 | 旋风加速器度器 | 哔咔漫画 | PicACG | 雷霆加速