自己拥有一台服务器可以做哪些很酷的事情?
自己拥有一台服务器可以做哪些很酷的事情?
方案一
用一台不用的电脑搭的,24GiB内存+6核12线程的CPU
现有的服务大概有这些:
Zerotier
内网穿透用的是 zerotier,因为服务器有ipv6,在大多数情况下都可以直连,基本上可以跑到满速。而且zerotier会对数据进行一次加密,所以也基本不用担心数据安全性问题了。
Nextcloud
目前用的最多的服务就是 Nextcloud,Nextcloud加上一堆的插件基本上可以满足大部分需求。
后端使用的数据库是 Postgresql
现在我在使用的插件有:
Cospend 插件
一个用于记录账单的插件,可以支持多个人共享账单以及计算最终结算方案
Draw.io 插件
一个强大的绘图插件
Maps 插件
地图插件,可以根据图片中的元数据把图片标注在对应的位置,这样就可以看到出去旅行的足迹了
News 插件
一个RSS插件
Talk 插件
一个聊天的插件,还支持视频聊天
Calendar 插件
日历插件,可以用来同步多台设备上的日程安排
Contacts 插件
联系人插件,可以用来同步多台设备上的联系人
Calendar 和 Contacts 这两个插件我主要是用来配合 davx5 来同步多个手机和平板以及电脑之间的日程安排和联系人
Nextcloud 还有 WebDav 可以配合 joplin 这个笔记软件进行多设备间的笔记同步
Overleaf
这个主要写论文的时候用,自己搭的比官方提供的免费版本快太多了,而且还没有时长限制。
需要预先安装docker
和docker-compose
安装
1 | git clone https://github.com/overleaf/toolkit.git ./overleaf-toolkit |
初始配置
修改connfig/
下的文件
中文支持
在config/variables.env
中添加:
1 | SHARELATEX_SITE_LANGUAGE=zh-CN |
xeLatex支持
新建文件config/docker-compose.override.yml
,添加:
1 | services: |
2023
请改成对应路径
启动
1 | bin/up |
如果要后台运行,可以加-d
参数
创建管理员账号
打开: http://hostip:port/launchpad
安装完整宏包支持
1 | bin/shell |
安装字体
1 | bin/shell |
Minted
包支持
安装pygments
1 | bin/shell |
配置Shell Escape
2023
请改成对应路径
修改/usr/local/texlive/2023/texmf.cnf
,在最底下添加一行
1 | shell_escape = t |
ChatGPT-Next-Web
这个是ChatGPT的一个私人网页应用,需要去购买一个ChatGPT的API就可以使用,具体可以参见官方说明文档:https://github.com/Yidadaa/ChatGPT-Next-Web/blob/main/README_CN.md
Netdata
这是一个很好的服务器监控平台,可以监控服务器的各项参数,出现异常情况可以及时发邮件提醒,这样就不用担心RAIDZ1坏掉一块盘没有及时发现导致第二块盘坏掉的情况了。
Samba
虽然Nextcloud有webdav的接口,但仍然有一些地方只支持smb协议,所以文件也用smb协议共享了一份。
NFS
这个主要是给电脑使用的,因为smb和webdav不支持权限,这就会导致服务器上的可执行文件无法执行(因为没有执行权限),并且且zerotier会对数据进行一次加密,而smb和webdav(https)也会再次加密,在传输大量数据的时候效率不够高,所以文件也用nfs共享了一份。
打印和扫描
打印用的是cups,扫描用的是sane,这样就可以远程使用打印机和扫描仪了(虽然还是要个人去放纸)
数据存储
系统盘是一块160GB的机械硬盘,除去快照,实际使用大概3GiB左右(因为上面只是系统和软件包,不包括docker容器和php文件)
数据存储用的是4块500GB的二手机械组的RAIDZ1,1块120GB的SSD做L2Cache,开zstd和去重
数据存储每天做一次快照,保留1星期。系统盘每星期进行一次快照,并且发送到数据存储中
每次寒暑假会把所有数据备份到磁带,然后带到学校去,算是异地备份:)
关于耗电量
为了省电,我硬盘全部使用的是2.5英寸的磁盘,cpu也只安装了一个(双路主板),目前整机的待机的耗电量大概60W左右,还可以接受。
性能调优
Nextcloud 等 Web 应用都启用了 http2 ,启用之后可以明显感觉到加载速度的提升
ZFS 的 zfs_arc_max 设置的是 20GiB,zfs_arc_sys_free 设置的为 2GiB
Nextcloud、Overleaf、ChatGPT-Next-Web 和 Netdata 都有docker镜像,可以很方便的部署。
方案二
UPDATE 2023.08.03 帖子超过 7700 收藏 及超过 2400 点赞!再追加五篇新内容:最新的 SDXL 模型使用及硬核拆解其中关键组件、最新的 MetaAI LLaMA2 大模型(官方版、中文版、量化版、CPU版)的使用,Traefik 3.0 全面使用指南、使用 Docker 和 Golang 执行 Python 代码,以及将 Python 程序通过 Docker 和 Golang 包装成高性能异构计算服务。
上次更新:AI 加持的代码编写实战、让 OpenAI 更 Open,ChatGPT 自由接入数据源、在 Golang 里运行 Python 代码、基于 Docker 的深度学习开发环境、使用更低成本运行来 Meta(Facebook)的语言大模型、使用 Lora 微调 650 亿参数的大模型、使用 1.5G 显存运行 14B 参数的大模型、以及八十行代码搞定一个 MidJourney、Stable Diffusion Prompt 智能的咒语工具。
前次更新:使用 Nginx 和 Docker 折腾运行在浏览器里的 Web 终端、运行来自 Meta(Facebook)的语言大模型、快速获取完整的 GitHub 数据集,用于数据分析、一篇继续聊聊把玩 Stable Diffusion 模型,两篇聊聊低成本、高性能的数据传输方案、一篇聊聊如何搭建一台新的存储服务器、一篇聊聊如何使用老款 Mac Pro 作为廉价家庭工作站。(欢迎继续三连,给予鼓励,督促内容继续更新)
以往更新内容涉及内容:
如何从零到一搭建 Linux 环境
- 简单清晰的 Ubuntu 桌面和服务器环境安装部署
- 3MB 大小的能够加速 Linux 软件包下载的工具
- 如何在一台笔记本中完成完整的 K8s 集群搭建
如何从零到一搭建家用虚拟化环境
- 基础 Linux 环境、存储、网络、监控、集群相关内容
- 常见的 NAS 系统的折腾:群晖、Unraid 等
- 你可以完全自己搞定的 ESXi 虚拟化镜像构建和系统安装
如何从零到一搭建一些实用的程序、工具
- 比如:简单的自制证书生成方法,只有 3MB 的证书生成工具的使用,搭配 DNS 工具可以让你在家里在自己的设备上用上自己喜欢的任何域名
Docker 和 AI 应用
- 如何使用 Docker 和 Nginx 调用 Embed PHP 实现轻量、高性能的应用
- 如何零成本使用 Docker 快速把 HuggingFace 上已有模型封装成简单的 AI 应用
- 做一个NLP内容情感分析应用
- 实现类似“百度谷歌这类基于语义搜索的功能,而不只是呆呆的进行文本匹配”的搜索引擎
- 如何用 Docker 玩中文 Stable Diffusion 模型
- 低成本(经济、时间)上手 AI 模型和应用
以及,如果你想偷懒上手 Linux、Golang 等等,也可以围观文章末尾的追更内容
这套题太简单了,拥有一台服务器能干的事情太多了,如果你手头有闲置的服务,或者有计划入手一台折腾,可以跟我一起来玩。(往下看)
作为一个资深折腾党,先列举一些近几年我自己用的服务器,觉得比较实用的功能,然后再聊聊折腾过程中的血泪史:
- 搭建自己的个人网站:我用最低规格的云主机,搭建了一个自己的小网站,每周写一两篇不标题党、不消费情绪的技术内容,去年统计下来,大概有100来万独立 IP 访问。
- 搭建自己的知识采集、阅读工具:不用再担心404,也不用再担心平台老给你推荐你不喜欢的东西、或者遗漏你关注的大神更新了什么值得跟着学和做的事情。
- 搭建你自己的笔记系统:想写什么写什么,想存什么存什么。没有每个月限制多少条、多少G流量的限制,没有内容限制,没有字数长度限制,想要什么功能,自己简单定制个功能就完事。
- 搭建你自己的回家隧道:高规格的云端服务器有些肉疼,家里有低成本的硬件可以用,那么跑个隧道回家把闲置资源用起来。
- 搭建你自己的代码仓库:有一些写着玩,或者还没想好要公开的内容,就先放在自己的小机器上吧
- 搭建你自己的私密网盘:除了用消费级 NAS 产品省事外,有的时候,需要临时的传一些需要分享的内容,又想避免知名网盘被严重的问题,可以用服务器+对象存储+CDN来化解这个尴尬的状况。
- 搭建自己的定时任务系统:你可以用它来做任何事情,比如定时检查下你追的剧是否更新了,定时检查一下火车票是不是开售了,或者你心心念念的演出是不是要开始了,或者和多数网友的选择一样,定时签到领个金币 :D。
- 搭建自己的持续集成服务:如果你从事开发,GitHub Actions也好、Docker AutoBuild也罢都是有限额的,你可以自己搭一套简单的 CI,既能满足私密性要求,还能化解高频构建过程中带来的额度不足的尴尬。
- 搭建一套网页 IDE、网页 Terminal:偶尔用 iPad 之类的便携设备 Coding 也不是不行,如果你有准备 Web IDE 或者 Web Terminal 的话,关键时候,用手机应急都还是蛮方便的。
接下来,我慢慢聊聊这个服务器的使用体验,以及上面我列举的东西到底有啥价值。
个人网站 / 技术博客
知乎读者喜欢数据,那么我们就先来看一下之前的数据:
《2020年岁末总结》时的网站数据
上面的数据来自 2020 岁末总结,2021 很快要过去了,不知道今年的数据如何?
网站现在的运行状态,如果套用 知乎周年庆 的文体风格来描述的话:
截止最近一篇文章《装在笔记本里的私有云环境:监控篇》发布,网站已经运行了五千二百零六天了,比《西游记》里唐僧师徒取经一个来回还要久。在过去十四余年中,网站一共积累了一千一百六十一篇文章内容,包含一百零二万字词(三百一十六万余字符),打印出来差不多相当于一套中文《水浒传》的厚度。其中汉字内容有七十八万,大概有《西游记》狮驼洞中小妖总数的十倍。
在今年新增了四十九万字,包含十万多汉字,文章中代码纯度约占78%。为了直观的了解网站内容状况,我将这些数据进行了一些可视化呈现。
十年的关键词绘制的词云,还是蛮震撼的
说起来,这个网站的建立时间比较久,2012年,我刚刚开始在新浪工作的时候,想使用一个新的、短一些的域名来继续记录生活和技术相关的事情,就用注册了 soulteary.com
这个和网络昵称一致的域名,并顺手将高中时积累的一部分内容也迁移了过来。
当时对于网络上大量重复的、没有深度、不够具体、疯狂洗稿的技术文章产生了厌烦情绪。也对之前自己写博客使用过的“转载”这种“转了仿佛就是会了”的动作产生了鄙视。
于是,那个时候,我开始坚持原创,避免发布网络上的重复内容。起初记录的都是一些编程细节、或者一些自己写的小工具,随着工作中接触了越来越多的基础设施、工程效率相关的内容,以及需要自己组建和带团队之后,网站的内容便开始进行了转变,从尽可能浅显的方式去讲述如何去搭建一些技术设施、搭配案例去解决具体问题的一些思路和方案、以及一直以来兴趣相关的:软件、硬件、游戏、感悟。
建立网站的初衷,是用来记录个人点点滴滴的成长历程、学习过程中的收获,并希望在分享的过程中能够帮助到和自己有相同经历或诉求的人,不论我们年龄相差多少,不论我们是否在同一时空。在写文章的这些年里,不论是邮件、私信,亦或者群聊中,也确实结识和帮助到了不少读者,想来还是比较欣慰的。(有趣的是,还因为文章的关系,组建了一个小群体,每天在群里叮叮咣咣的折腾些,乐趣不足为外人道也的事儿)
知识采集 / 阅读器
《使用 Docker 和 Traefik v2 搭建 RSS 服务(Miniflux)》配图
我曾经折腾过一阵 RSSHub,并把一部分内容向官方仓库提了 PR。结合一些其他的无状态脚本(用现在流行的话讲,无状态 serverless 服务),可以快速的把你关注的网页、接口转变为可读性比较棒的格式。
虽然我们认知中的“无头浏览器”非常占资源,但是实际上,你随便一台轻量云或者 1c1g1m 的主机也是足够你折腾成一个定制的知识采集仓库来使用的(务必开 swap)。
- 使用 Docker 搭建你自己的 RSS 服务(FreshRSS)
- 使用 Docker 搭建你自己的 RSS 服务(stringer)
- 使用 Docker 搭建你自己的 RSS 服务(Miniflux)
- 使用 Docker 和 Traefik v2 搭建 RSS 服务(Miniflux)
笔记系统
我曾经也是忠实的 EverNote、Confluence 用户,也维护过 WordPress 定制版,魔改过 Ghost 这类优秀的可以用做笔记用途的开源 CMS / BLOG 程序。
直到,我遇到了 Outline。
《从零开始使用开源文档/Wiki软件 Outline(一)》配图
上面的图片是我刚开始使用时的界面,随着几个月的深入使用,我觉得我应该短期或长期不会再进行笔记系统切换了。这套系统在好用、够用的前提下也是足够轻量,上文提到的小主机,甚至足够你跑好几套,分享给你的好基友。(软件本身也支持多用户)
如果你想了解怎么搭建,可以移步:
方案三
儿子出生几天后,在阿里云买了个服务器,搭了个网站,用来上传并展示儿子每天的照片,访问当然是需要密码的,域名就是儿子的名字。。。。。。嗯。。。期待他长大后无意间搜索自己名字网站的瞬间,看到自己从小到大的样子,能让他感受到老爸我对他的爱。。。