Chiphell - 分享与交流用户体验

 找回密码
 加入我们
搜索
      
查看: 9030|回复: 48

从小白到入门-自建服务器部署家庭应用之各种教程-长期更新

  [复制链接]
发表于 2020-3-11 23:12 | 显示全部楼层 |阅读模式
本帖最后由 T.JOHN 于 2020-6-13 19:09 编辑


由于多数家庭有淘汰的旧电脑或是土豪会购置各种小体积“软路由”,本着变废为宝,一机多用的绿色生活。此贴用来介绍以debian为基础,部署各种开源程序以实现安全,快捷,强大的服务端。包含0.科学网关1.文件共享 2.离线下载 3.远程监控 4.NAS管理 5.个人网盘 6.聊天服务器... 甚至 网站 图床 编译openwrt 等
本文的目的在于不花一分钱购买硬件设备的前提下理解以下内容:
1.公益。保护个人隐私。具体可以参看2014年发起的非营利网站及其创始人的TED演讲
本贴就是将公益实践的一个过程,即去windows和群晖等商业性方案开始,采用全开源方案。开源方案越来越被推广的原因是符合人类未来需求,微软虽然是商业公司在github上开源贡献也最多
2.简化。硬件区对于此类的需求有很多虚拟化(exsi hyperv),ROS,群晖等方案,甚至很多在windows上部署
这些在我看来显然是因为对linux不熟悉而舍近求远,费力劳神搞的方案。以每个人都知道的ss为例,简述原因
a). linux一般是软件诞生平台。因为所有的开源软件都可以根据源代码自行编译的,而编译这个过程大多是在linux下完成的,也就是说第一版软件会发布在linux上,其他的win exe及IOS app等都是交叉编译或二次开发的。虽说win也能构建编译环境,但是这不是程序员常规的开发平台
b). 对软件直接调用。linux主要以命令行完成操作,图形界面可有可无,但windows是全图形化界面,这是两者重要区别。因此像ss有个配置文件,在linux上用写入后再用命令行运行,是直接调用,整个过程无中间环节。而通过路由器的luci图形界面或者win上软件的图形界面则是间接调用,等于是在内核上套个壳,如果不开源你不知道他会不会有后门
c). 在理解安装和编译linux软件后,你开始理解什么叫返璞归真,和那些能在windows也能运行的方案相比。在性能,鲁棒性,可持续性,易用性及隐私保护等方面有多大的优势
3.认知。对于在CHH,koolshare,群晖,恩山上所讨论的很多需求都是需要大神给出固件或者教程,没了固件你就歇菜,提升认知后我们可以跳过这个步骤,一切不求于人
a). 即学会使用github,全世界的第一手代码都在这个网站,使用linux就相当于学会使用了github,所有需求你都可以自助了
b). 当你学会使用linux和github以后,你不再是用户,你也成为了半个开发者,你可以逐步理解这些软件工作的原理,进行更定制化的优化使用 (比如v2ray解决DNS污染问题)
c). 当你对linux使用时间长了以后,你越理解为什么它适合做服务系统,感受到他的简单快捷,越体验到windows为何在服务器领域远不如桌面来的受欢迎
4.节能。在路由器上差个U盘部署一些24小时运行的软件,其实就是为了节能的一种表现,但很多服务路由器不堪胜任
linux是可以运行在非常简化的设备上的,比如树莓派之类的开发板,N1这类电视盒等等,他们可以24小时开机,满足大部分人的个人或者需求,每年为你省不少电费。
x86有历史包袱,要兼容之前构架,在追逐高性能的道路上无法和arm比节能的。很多人可能不知道大多数云服务器(aws 阿里云)是512M内存,1CPU 15%的可用起步的,但是还是有很多人购买并使用。linux就能做到在这种低配机器上可靠运行,而debian/centos两大免费服务器系统就是跨平台的,arm设备以后会越来越多,所以这也是为什么微软也要做arm的windows,死活不放弃的原因
5. 软件。我们的需求永远是软件,软件优先于硬件,硬件只是软件运行的平台
整个教程的过程中,大家会逐步理解这一点。CHH很多人也许会在乎硬件性能,但随着使用服务器一段时间,大家就会知道树莓派都可能是硬件性能过剩的服务器,因为就你一个人或者家庭成员的少数人访问,基本不存在大量并发需求。


Part 1 前言
Q: 为什么要学“服务器部署”?什么是“服务器部署”
A: 因为要个性化服务,只有自己动手才能丰衣足食。所谓“服务器部署”就是使用Linux CLI(command in line)安装服务端的软件和调试,对应的是windows GUI下鼠标点exe装客户端的软件和设置

Q: 学“服务器部署”会不会比较没性价比?应用面狭窄,学习曲线过抖等?
A: 看你需求,如果你真的有以上方面个性化需求,学个入门绝对不亏。从win95到win10的20年你肯定会觉得变化很大,毕竟控制面板都大变。然而20年过去了,linux的安装命令还是apt/yum install xxx,远程控制还是通过ssh,修改配置还是通过vim,基本没变。过去如此,未来还会是如此。如果你需要的个人服务越多,你的“linux全方位认知”越有用。我会从最简单的部署开始,从实践逐步了解linux

Q: 你怎么能保证这些软件不会过时或者可以长期使用?
A: 因为专用(闭源)方案长期来看比不上通用(开源)方案有生命力,专用方案像windwos Mac这种获得巨大成功的,需要大量资金,而开源就是指一代一代传承和贡献,不断有人维护。群晖就是典型的专用方案,它除了提供集成度较高的硬件和漂亮的硬盘位,还提供了亲和的软件界面,甚至web服务,然而如果公司倒闭就没人维护了。而开源软件即便像clowwindy把源码删了,后来者在fork后依旧会使软件得到更新。

Q: 你为什么不提供windows的客户端软件?这样更方便大家使用。
A: 因为没有,几乎所有Github上服务器的客户端都部署在linux上,这对于开发者和使用者都是开源免费,而linux作为操作系统本身开源。所以这就是为什么服务器市场windows份额极低的原因。然而各位可能不知道win10大量的新feature比如wsl,powershell,hyper-v二代甚至vs code等,都是为了拥有linux等同的功能,提供更好支持,拉拢开发者。

Q: 为什么是debian?不是centos?或者是其他linux发行版本
A: 很多人linux都是从ubuntu入手,而debian和ubuntu没啥太大区别,命令一样,较易学习。debian相比centos占用内存更小,而且国外社区支持了更多,所以有树莓派的raspbian和各种电视盒的armbian(debian for arm)的诞生。这样硬件方面可以照顾N1和树莓派用户,让你的arm设备也能当服务器,软件方面一大优势是独占openmediavault(后文会提到的NAS系统),另一方面仓库的软件源也更新些,这样对新人更友善。centos我一般部署在云服务器上,毕竟他一个版本的维护周期是十年(现在是centos7第五年和centos8元年),软件旧就旧了,服务器稳定第一,比如centos7上的默认python2已经于2020年1月1日停止维护,默认的数据库sqlite软件源停留在3.7(2013年)已经不被某些软件所支持了。

Q: All in one的方案会不会不稳?一个服务崩了其他全崩?
A: 要看你是如何部署,如何维护。由于现在有docker的出现,它作为linux上的虚拟机,现在是一种很流行的方案去隔离各种软件,一行命令把所有软件全装完。一方面方便快捷,一方面崩溃了不影响系统。他的原理和安卓上的app雷同,运行在java虚拟机上。部当然有的人不喜欢docker,喜欢用自己部署的系统环境。其实最重要的还是备份,linux自带dd命令可以全盘复制(ghost)。

Q: 你好像没怎么提到虚拟化技术,很流行的esxi装多个系统不好么?
A: 这个需要根据每个人的需求决定,看你要在虚拟机上运行什么。首先,除了迅雷和QQ,我想不太到win作为server的意义。其次,openwrt作为一个虚拟机上的系统在linux下可以用docker安装并运行,而debian安装v2ray配合iptables规则也可以当网关。最后像freenas这种管理zfs的系统在debian上安装OVM后一样可以建立zfs存储池。因此大部分情况下是无需虚拟方案的。这除了降低机器性能和复杂化以外没什么好处。
在IDC领域最流行的虚拟化技术是KVM,主要是开源和免费,其用途是母鸡生小鸡,出售资源用。在个人家庭,你拥有服务器的所有资源,因此没有这种目的。其他IDC还用的虚拟化技术有Xen(AWS),OVZ(早期非独立虚拟化)和hyper-v(Azure),esxi是vmware给某些企业特殊用途的方案,十分小众。

评分

参与人数 5邪恶指数 +35 收起 理由
x3033179 + 5
hamajun + 10 666
qqiao520 + 10
cenxiao01 + 5
windylex + 5

查看全部评分

发表于 2020-3-12 09:31 | 显示全部楼层
最近接触linux越来越多,win现在感觉就是office+oa以及一些娱乐,好用的,还是linux。

真心后悔上学时没选linux做为专业。
发表于 2020-3-12 11:49 来自手机 | 显示全部楼层
我正想把我的M720q出了,看了楼主这帖子………………嗯,这个坑有点儿大啊!是跳还是不跳呢?
 楼主| 发表于 2020-3-12 19:55 | 显示全部楼层
本帖最后由 T.JOHN 于 2020-3-12 19:58 编辑
goldensquall 发表于 2020-3-12 11:49
我正想把我的M720q出了,看了楼主这帖子………………嗯,这个坑有点儿大啊!是跳还是不跳呢? ...

这要取决于你有多爱折腾了,我尽量每天多更新一个Part,让人有事可折腾
发表于 2020-3-13 10:31 | 显示全部楼层
T.JOHN 发表于 2020-3-12 19:55
这要取决于你有多爱折腾了,我尽量每天多更新一个Part,让人有事可折腾 ...

生命在于折腾,这话完全没毛病!
发表于 2020-3-13 14:27 | 显示全部楼层
网络有问题,测试下来不能单机自攻自受当软路由

hyperv可以的
参考我这个教程
https://www.chiphell.com/thread-2142173-1-1.html
 楼主| 发表于 2020-3-13 15:52 | 显示全部楼层
本帖最后由 T.JOHN 于 2020-3-13 20:23 编辑
magiclu 发表于 2020-3-13 14:27
网络有问题,测试下来不能单机自攻自受当软路由

hyperv可以的

可能我表述了不清楚,主贴更新了下

两点需要注意:
1. 你的宿主机win是整个局域网内不能直接科学的设备,局域网内其他设备(其他电脑 手机 电视)均可直接科学,包括虚拟机自己
2. 你想让宿主机win科学办法是用sock5代理的端口,比如win自带的网络设置,或者firefox这种浏览器自带的设置(虚拟机ip:端口)

原因是虚拟机中的debian没法改动网关,nmtui中gateway是无法设置的。而windows那个网卡修改网关后,连带虚拟机的网关也会被改

以上谬误回帖,删除

发表于 2020-3-13 16:31 | 显示全部楼层
debian我不清楚,我试了一下,我把我win10的网关改为openwrt的ip没问题的
不过我需要下载bt,用socks5省事
pfsense虚拟机负责拨号,openwrt负责连接真互联网
如果freebsd的pfsense和linux的openwrt都正常,那就是你水平还不够(你linux水平已经比我高多了,我只会复制粘贴),哪里设置不对

windows那个网卡修改网关后,连带虚拟机的网关也会被改,我搞不懂你这个是什么情况,我的虚拟机都没事啊
发表于 2020-3-13 17:08 | 显示全部楼层
收藏吃灰再说
 楼主| 发表于 2020-3-13 17:28 | 显示全部楼层
本帖最后由 T.JOHN 于 2020-3-13 20:26 编辑
magiclu 发表于 2020-3-13 16:31
debian我不清楚,我试了一下,我把我win10的网关改为openwrt的ip没问题的
不过我需要下载bt,用socks5省事
...

我不知道怎么回复你,就hyper-v二代+debian而言,debian作为虚拟机是自己无法控制自己网络设置的,网络是hyper-v管理器赋予debian的(在/etc/network/interface无论写什么都失效)。如果独立设备安装debian,那就是debian自己控制自己的网络,区别就那么简单。——谬误结论,删除
用hyper-v举例只是方便新手熟悉debian,能在windows上好操作,仅仅作为演示,最终学会了以后是在硬件上直接装debian的,有且仅有一个系统。

这文章的目的是摒弃openwrt,虚拟化技术,windows,不涉及桥接,拨号等额外工作,甚至脱离硬件。告诉使用者,你不需要改变家中任何设备,任何设置,只要用一根网线连上一个装linux的设备,就能实现所有服务端的功能。

Part3 软路由网络部分仅仅是v2ray+iptables nat规则而已,也不在这篇文章里,并不是重点,和你的文章目的不同
发表于 2020-3-13 17:59 | 显示全部楼层
我装了ubuntu server虚拟机的 /etc/netplan里的50-cloud-init.yaml 是可以改ip,网关什么的,完全没问题
难道是debian有bug?

感觉小白还是适合在虚拟机里装linux,毕竟可以用快照,和物理机也没有明显的区别,出事了直接还原
Untitled picture.png
 楼主| 发表于 2020-3-13 20:00 | 显示全部楼层
本帖最后由 T.JOHN 于 2020-3-13 22:37 编辑
magiclu 发表于 2020-3-13 17:59
我装了ubuntu server虚拟机的 /etc/netplan里的50-cloud-init.yaml 是可以改ip,网关什么的,完全没问题
难 ...

我刚又试了下,你说了对。虚拟机(debian)可以改IP,宿主机(windows)改网卡IP后可以留学访问,我修改了下Part3的教程。主要应该是我没给windows设DNS,没开MAC欺骗有关,以及debian的默认dns server是空的
发表于 2020-3-14 12:31 | 显示全部楼层
感觉对于小白,装个docker,然后整套web gui,然后安装一堆容器来实现这些功能会比较容易让他们理解,纯命令实现很容易让他们失去耐心
发表于 2020-3-14 19:45 | 显示全部楼层
首先感谢楼主分享。

其次,感觉帖子还是没个爆点。用虚拟机,本来就可以实现你说的全部功能,比如EXSI虚拟软路由+黑群晖或者WIN,那你用linux做服务器的意义到底在哪里呢?

比较专业的程序员不屑于学习这个,学习或者了解这个的基本都是爱折腾的玩家,没有吸引人的地方,没办法继续去学习啊。
 楼主| 发表于 2020-3-14 20:14 | 显示全部楼层
本帖最后由 T.JOHN 于 2020-3-14 20:20 编辑
cenxiao01 发表于 2020-3-14 19:45
首先感谢楼主分享。

其次,感觉帖子还是没个爆点。用虚拟机,本来就可以实现你说的全部功能,比如EXSI虚拟 ...

因为你说的虚拟机,黑群晖或者win都是“复杂”的方案,这个是“简单”的方案。所谓简单就是用最少的软件,性能最低的硬件,最短时间,最低的能耗完成任务,一台linux替代所有。这世上服务器大多数本来就是linux,而不是用我硬要用linux做服务器,这因果关系反了,我只是普及大家不知道的linux如何实现这些功能的过程。
举个简单例子,3年前流行的科学方案是ss+chinadns+dnsmasq,现在是v2ray一个软件完成,但是openwrt里的luci界面对于ss还行,对于v2ray就显得很残废了,因为很多设置并没有。如果要用json导入,最后发现还是得自己学linux。然后v2ray假设更新到xxx版本了,结果某个大神的固件不再更新了,比如lintel的潘多拉,那就永远停在老版本了,新软件得依靠某个大神用sdk去编译。如果想要自己编译,那必须在linux下完成,还是绕不过去。但大多数人不理解v2ray完全可以自己装的,从github直接获得,把v2ray core算一手的,openwrt源码二手,编译成自己ipk算三手。其他软件一个道理,很多经过二次开发的软件没有任何安全性可言,比如某K论坛的merlin。
再举个例子,像nextcloud这样的TOP1网盘程序,matrix synapse这样TOP1的聊天程序,想要安装就得学习nginx,php或者docker,这些程序都是运行在linux上的,和虚拟机,软路由,黑群晖或者win都没关系。当然这是后半部的内容了,而非入门篇。
条条大路通罗马,这只是最短的路,而硬要说唯一吸引人的地方那就是拒绝不可靠的二次开发,完全无后门,全开源,隐私和安全保护到极致。
发表于 2020-3-14 20:32 | 显示全部楼层
T.JOHN 发表于 2020-3-14 20:14
因为你说的虚拟机,黑群晖或者win都是“复杂”的方案,这个是“简单”的方案。所谓简单就是用最少的软件, ...

额。/苦笑。。

我没有别的意思哈,只是单纯站在一个不专业玩家的角度去看一个教程。

假如不是工作需要,一个教程吸引我的关键点就是这个教程对我有没有用,所以我才说楼主这个帖子里没有讲到我用这个linux的话,到底有什么地方值得我去研究学习。

所以我才说楼主你的帖子没有爆点,起码现在是这样的。

或者换个说法,楼主你发的这个教程目的是什么,你所介绍的linux系统,到底能带给我们普通玩家什么?

1.NAS 旁路由不需要多好的硬件设备,一台80元的N1可以满足绝大多数人需求
那就是我用N1就可以了?有什么问题我直接去找N1的教程就好哦。
2.Openwrt只是个精简linux,走进centos/debian你会发现新世界大门
能直接介绍下这个大门之后到底有什么是我们普通玩家用的上的吗?
3.为什么需求总是从软件层面解决问题,硬件只是为了软件服务的配角
略。。。
4.windows在服务器领域几乎没用武之地,这里是linux天下,重新学习方能成长
比如我们普通玩家需要的那些功能在linux上能更好的实现呢?


然后你后面说的,都是其他虚拟机能实现或者WIN就能简单实现的呀。。。

楼主,没别的意思,我一直感觉论坛上有分享才能是好论坛。

只是建议楼主能把分享的教程先说结果和重点,然后再介绍实现步骤,这样我们看的目的明确,你更新的也有动力。。。

再次感谢你的分享!!!
发表于 2020-3-15 16:01 | 显示全部楼层
一般以Windows桌面系统为主的家庭环境,一个Windows server已经能解决绝大多数需求了,比如文件共享(SMB)、下载、远程接入、WSUS、WDS之类服务。而且图形界面友善,管理方便。
考究点弄个hyper-v或者ESX,安装多个win server系统的虚拟机,将不同服务独立开来,提高可用性。同时还能与物理机隔离,方便迁移。
再加上一个Ubuntu来支持一些Linux应用。
密码管理Bitwarden、私有云NextCloud之类服务,本身就不适合跑在家用网络上,单就一个反向DNS就搞不定,还是直接买个VPS更方便。
发表于 2020-3-16 15:55 | 显示全部楼层
有个问题,如何实现使用服务器进行判断非留学域名与IP走直连,其余链接(包括UDP)全走维二?

我看使用某list进行PAC,还是借用什么GEOIP查询实现效果均非常差

这个需求较为迫切,全局是最劣的用法,其次是PAC
 楼主| 发表于 2020-3-16 18:59 | 显示全部楼层
本帖最后由 T.JOHN 于 2020-3-16 19:20 编辑
谎言之神Cyric 发表于 2020-3-16 15:55
有个问题,如何实现使用服务器进行判断非留学域名与IP走直连,其余链接(包括UDP)全走维二?

我看使用某l ...

这个是原始的白话文教程,你可以参考下,主要是客户端的config.json,他写了已经很到位了,建议一定要自己写config.json,别用图形界面,否则设置啥你自己都不知道。
关于规则:不管是list,geoip和geosite,他们是一个可甄别的预存列表,能够实现快速分流,设置在config.json的rules选项卡中。但如果域名不在表里,就要进行dns查询,v2内置程序做了很好,这一点part3我解释过了,更详细的解释在 黑科技漫谈一文。
Geoip和Geosite你可以从github上这个仓库下载
我不知道你是哪个平台用v2。有些路由器我测试了ws+tls是连不上的,只能最简单的TCP(68U的merlin和R6200的openwrt),而且openwrt还是我用SDK自己编译,而且v2的程序25M,加上两个dat 35M,一般路由器都没那么大空间装,所以不适合在路由上运行,路由还是跑SS合适。win你能开个sock5代理用,udp是可以走sock5的。但win没有iptables规则,有些程序不一定经过sock5代理,所以你有个linux走旁路最好,方式就是白话文教程。
发表于 2020-3-16 22:38 | 显示全部楼层
家庭宽带最大问题就是没有80/443端口,而且不能备案,搭建远程管理页面什么的无所谓,如果搭建了网站,在某些问题问题就很大了
发表于 2020-3-17 01:03 | 显示全部楼层
goldensquall 发表于 2020-3-12 11:49
我正想把我的M720q出了,看了楼主这帖子………………嗯,这个坑有点儿大啊!是跳还是不跳呢? ...

如果没有基础,建议不要跳……
发表于 2020-3-17 10:43 | 显示全部楼层
xf22cn 发表于 2020-3-17 01:03
如果没有基础,建议不要跳……

听明白了
所以我卖了………………
好像还是有点儿可惜
发表于 2020-3-17 10:45 | 显示全部楼层
goldensquall 发表于 2020-3-17 10:43
听明白了
所以我卖了………………
好像还是有点儿可惜

这个东西,是需要一定基础的。
看教程都看得明白,真到自己做的时候没有基础就是一团乱。
有的时候卡住了可能拼命搜索都找不到解决问题的办法,但是稍微有一点基础就能自己解决……
发表于 2020-3-17 13:32 | 显示全部楼层
作为一个小白维保人员和中度玩家,winserver做服务器系统,出了问题我还能折腾折腾
这linux系统,我觉得入门都很难
公司电脑都是winserver系统,从2003-2016都有,和普通windows通用性还是很强的,很多问题都能找到共性的解答
发表于 2020-4-13 20:46 | 显示全部楼层
年前搞了一套i7 7700T+32g,装了debian 10+pve---lede+akuai+群晖+win,感觉没啥意思,看了您这个感觉还可以再抢救一下;
我的目标是:类似买的vps,抛开80端口和443端口,是否可行?
麻烦老师指导一下
发表于 2020-4-13 22:30 | 显示全部楼层
咋不更新了啊?
 楼主| 发表于 2020-4-15 23:42 | 显示全部楼层
hamajun 发表于 2020-4-13 20:46
年前搞了一套i7 7700T+32g,装了debian 10+pve---lede+akuai+群晖+win,感觉没啥意思,看了您这个感觉还可 ...

这个帖子内容其实就是基于vps的搭建,去图形化带公网ip的linux,算是完全符合你的需求。主要两个区别就是你的机器性能远强于vps,是dedicate server,但网络肯定没机房强,毕竟别人是固定ip且级别较高的QOS。
 楼主| 发表于 2020-4-15 23:44 | 显示全部楼层

最近比较忙,疫情后复工的高峰期,没时间和精力写,最晚大概在五一前补完现有的目录
发表于 2020-4-20 00:01 | 显示全部楼层
mark啦!
发表于 2020-4-24 11:41 | 显示全部楼层
咋找不到教程?
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

小黑屋|手机版|Archiver|Chiphell ( 沪ICP备12027953号-5 )沪公网备310112100042806 上海市互联网违法与不良信息举报中心

GMT+8, 2020-11-24 09:04 , Processed in 0.014770 second(s), 21 queries , Gzip On, Redis On.

Powered by Discuz! X3.2

© 2007-2020 Chiphell.com All rights reserved.

快速回复 返回顶部 返回列表