自己拥有一台服务器可以做哪些很酷的事情?

自己拥有一台服务器可以做哪些很酷的事情?

方案一

用一台不用的电脑搭的,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

这个主要写论文的时候用,自己搭的比官方提供的免费版本快太多了,而且还没有时长限制。

需要预先安装dockerdocker-compose

安装

1
2
3
git clone https://github.com/overleaf/toolkit.git ./overleaf-toolkit
cd ./overleaf-toolkit
bin/init

初始配置

修改connfig/下的文件

中文支持

config/variables.env中添加:

1
SHARELATEX_SITE_LANGUAGE=zh-CN

xeLatex支持

新建文件config/docker-compose.override.yml,添加:

1
2
3
4
services:
sharelatex:
environment:
- PATH=/usr/local/texlive/2023/bin/x86_64-linux:$PATH

2023请改成对应路径

启动

1
bin/up

如果要后台运行,可以加-d参数

创建管理员账号

打开: http://hostip:port/launchpad

安装完整宏包支持

1
2
3
4
5
6
7
8
bin/shell
cd /usr/local/texlive
wget http://mirror.ctan.org/systems/texlive/tlnet/update-tlmgr-latest.sh
tlmgr option repository https://mirrors.tuna.tsinghua.edu.cn/CTAN/systems/texlive/tlnet
tlmgr update --self --all
tlmgr install scheme-full
exit
docker restart sharelatex

安装字体

1
2
3
bin/shell
apt update
apt install --no-install-recommends ttf-mscorefonts-installe fonts-noto texlive-fonts-recommended tex-gyre fonts-wqy-microhei fonts-wqy-zenhei fonts-noto-cjk fonts-noto-cjk-extra fonts-noto-color-emoji fonts-noto-extra fonts-noto-ui-core fonts-noto-ui-extra fonts-noto-unhinted fonts-texgyre

Minted包支持

安装pygments

1
2
3
bin/shell
apt update
apt install python3-pygments

配置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 的话,关键时候,用手机应急都还是蛮方便的。

接下来,我慢慢聊聊这个服务器的使用体验,以及上面我列举的东西到底有啥价值。

个人网站 / 技术博客

知乎读者喜欢数据,那么我们就先来看一下之前的数据:

img

《2020年岁末总结》时的网站数据

上面的数据来自 2020 岁末总结,2021 很快要过去了,不知道今年的数据如何?

网站现在的运行状态,如果套用 知乎周年庆 的文体风格来描述的话:

截止最近一篇文章《装在笔记本里的私有云环境:监控篇》发布,网站已经运行了五千二百零六天了,比《西游记》里唐僧师徒取经一个来回还要久。在过去十四余年中,网站一共积累了一千一百六十一篇文章内容,包含一百零二万字词(三百一十六万余字符),打印出来差不多相当于一套中文《水浒传》的厚度。其中汉字内容有七十八万,大概有《西游记》狮驼洞中小妖总数的十倍。
在今年新增了四十九万字,包含十万多汉字,文章中代码纯度约占78%。为了直观的了解网站内容状况,我将这些数据进行了一些可视化呈现。

img

十年的关键词绘制的词云,还是蛮震撼的

说起来,这个网站的建立时间比较久,2012年,我刚刚开始在新浪工作的时候,想使用一个新的、短一些的域名来继续记录生活和技术相关的事情,就用注册了 soulteary.com 这个和网络昵称一致的域名,并顺手将高中时积累的一部分内容也迁移了过来。

当时对于网络上大量重复的、没有深度、不够具体、疯狂洗稿的技术文章产生了厌烦情绪。也对之前自己写博客使用过的“转载”这种“转了仿佛就是会了”的动作产生了鄙视。

于是,那个时候,我开始坚持原创,避免发布网络上的重复内容。起初记录的都是一些编程细节、或者一些自己写的小工具,随着工作中接触了越来越多的基础设施、工程效率相关的内容,以及需要自己组建和带团队之后,网站的内容便开始进行了转变,从尽可能浅显的方式去讲述如何去搭建一些技术设施、搭配案例去解决具体问题的一些思路和方案、以及一直以来兴趣相关的:软件、硬件、游戏、感悟。

建立网站的初衷,是用来记录个人点点滴滴的成长历程、学习过程中的收获,并希望在分享的过程中能够帮助到和自己有相同经历或诉求的人,不论我们年龄相差多少,不论我们是否在同一时空。在写文章的这些年里,不论是邮件、私信,亦或者群聊中,也确实结识和帮助到了不少读者,想来还是比较欣慰的。(有趣的是,还因为文章的关系,组建了一个小群体,每天在群里叮叮咣咣的折腾些,乐趣不足为外人道也的事儿)

知识采集 / 阅读器

img

《使用 Docker 和 Traefik v2 搭建 RSS 服务(Miniflux)》配图

我曾经折腾过一阵 RSSHub,并把一部分内容向官方仓库提了 PR。结合一些其他的无状态脚本(用现在流行的话讲,无状态 serverless 服务),可以快速的把你关注的网页、接口转变为可读性比较棒的格式。

虽然我们认知中的“无头浏览器”非常占资源,但是实际上,你随便一台轻量云或者 1c1g1m 的主机也是足够你折腾成一个定制的知识采集仓库来使用的(务必开 swap)。

笔记系统

我曾经也是忠实的 EverNote、Confluence 用户,也维护过 WordPress 定制版,魔改过 Ghost 这类优秀的可以用做笔记用途的开源 CMS / BLOG 程序。

直到,我遇到了 Outline。

img

《从零开始使用开源文档/Wiki软件 Outline(一)》配图

上面的图片是我刚开始使用时的界面,随着几个月的深入使用,我觉得我应该短期或长期不会再进行笔记系统切换了。这套系统在好用、够用的前提下也是足够轻量,上文提到的小主机,甚至足够你跑好几套,分享给你的好基友。(软件本身也支持多用户)

如果你想了解怎么搭建,可以移步:

从零开始使用开源文档/Wiki软件 Outline(一)soulteary.com/2021/09/05/opensource-documentation-wiki-software-outline-part-1.html

方案三

儿子出生几天后,在阿里云买了个服务器,搭了个网站,用来上传并展示儿子每天的照片,访问当然是需要密码的,域名就是儿子的名字。。。。。。嗯。。。期待他长大后无意间搜索自己名字网站的瞬间,看到自己从小到大的样子,能让他感受到老爸我对他的爱。。。

------------- 本 文 结 束     感 谢 您 的 阅 读 -------------