除了博客,当你有一台云服务器可以自部署哪些免费开源的项目?
我以为我会像大多数人一样,开始拥有一台服务器时就会搭建一个属于自己的博客站点。但当我自己尝试部署了一次 GitHub 上的开源项目时,我发现除了搭建博客之外,用云服务器来搭建一些自用的服务也是一个不错的选择。
可能这些自部署的(self-hosted)开源服务或项目不一定比付费产品好用,拥有的特性也没那么丰富,但这些年得益于像 Docker 这样的容器化技术普及,短短几行代码就能快速完成项目或服务部署、进而开始使用也早已不是什么高成本的事。自部署让我们享有绝对的数据掌控权的同时还能节省不少订阅费用,让闲置的云服务器得以充分利用。
本文所介绍的可自部署项目或服务主要使用 Docker 或 docker-compose 来完成快速部署,所以如果你打算尝试,除了拥有购买一台云服务器外,可能还需要额外学习一下 Docker 的基本用法。
另外现在有的 NAS 设备也支持 Docker,因此如果没有服务器但有 NAS 设备,也可以尝试部署在你的 NAS 上——前提是你有一个独立的公网 IP 或知道如何通过内网穿透来实现远程访问。
消息推送服务
除了系统自带的消息通知渠道之外,我们也可以自己拥有一个消息推送服务。基于自部署的消息推送服务,我们可以配合其他自动化工具来监控通知或是短信,实现消息转发等功能。
可选服务包括: Gotify(Web / Android) Bark(iOS) ntfy(Web / Android / iOS)
上述不同的消息推送服务其后端均使用 Go 语言进行编写,因此在部署上并没有太多难度,按部就班地照着官方文档给出的操作步骤部署在你的服务器之后就可以开始使用;并且它们均提供了相应的 API,在部署之后可自行根据需要使用 API 来将消息推送至相应的设备。
因为我个人使用的是 Gotify,所以这里我就以 Gotify 为例直接运行 Docker 命令即可完成部署: docker run -d -e TZ="Asia/Shanghai" -e GOTIFY_SERVER_PORT=8004 -p 8004:8004 -v /var/gotify/data:/app/data gotify/server
Gotify 本身提供了 Web 界面,部署完成后我们需要到 Web 界面中创建推送消息或通知的 App,获取到 App 所对应的 Token,最后在移动端上进行连接配置即可。
在 Web 界面上我们仅能接收并看到来自于其他端(比如移动端)推送的消息。
如果我们需要向移动端推送消息通知,那么我们就需要通过 API 来完成消息推送,就像官方所给出的示例一样: curl "https://gotify.myserver.com/message?token=" -F "title=来自服务器的一则消息" -F "message=Hello,Mobile!" -F "priority=10"
之后就能在移动端上收到来自于服务器的通知:
因此使用 Gotify 这类消息推送服务最好的方式就是与自动化操作相结合,从而达到消息通知的目的。
在线阅读服务
相信会有不少人跟我一样喜欢在大屏幕设备上进行阅读或浏览内容,既然我们拥有了云服务器,那也说明我们拥有了可对外公开且被访问的公网 IP。因此我们在服务器上也可以搭建起自己专属的在线电子图书馆,在不同设备上只需要借助浏览器就能进行随时随地开始阅读。
Calibre-Web
Calibre-Web 是基于知名的电子书籍管理软件 Calibre 元数据进行实现的 Web 版本,相较于 Calibre 桌面端而言界面变动较大,但基本上支持主流的电子书格式,也提供了对应的阅读器直接在线阅读。
图源 Calibre-Web 项目仓库
需要注意的是,Calibre-Web 官方并未提供对应的 Docker 部署文件,所以我们需要基于 LinuxServer.io 这一组织所提供的 Docker 文件来进行配置和部署: docker run -d --name=calibre-web -e PUID=1000 -e PGID=1000 -e TZ=Asia/Shanghai -p 8083:8083 -v /path/to/data:/config -v /path/to/calibre/library:/books --restart unless-stopped lscr.io/linuxserver/calibre-web:latest
因为 Calibre-Web 是基于 Python 编写,所以在使用的过程中会出现内存资源占用较大的情况(目测下来有 500 MB 左右的内存占用)。如果你服务器资源配置吃紧请谨慎选择,又或者是在使用过程中到管理面板中手动重启(你没听错,就是这么朴实无华)。
Kavita
Kavita 和 Calibre-Web 类似,是一款功能丰富且运行迅速、支持跨平台的阅读服务器。
图源 Kavita 官方
部署 Kavita 同样很简单: docker run -d --name kavita -p 5000:5000 -v /your/manga/directory:/manga -v /kavita/data/directory:/kavita/config --restart unless-stopped kizaing/kavita:latest
Kavita 相比于 Calibre-Web 来说对于漫画系列的电子内容支持度会更好一些,而对于电子书格式的支持目前仅有 EPUB 和 PDF 格式,所以实际上的阅读体验反而是 Calibre-Web 会更好;但服务器资源占用会比 Calibre-Web 更低。
笔记、记录类服务
除了搭建个人博客之外,打算利用服务器来构建个人知识管理系统或存储想法记录等需求的用户可能也不在少数。
自部署可以让数据掌握在自己手中,无须担心平台跑路或是数据安全问题。
Memos
Memos 是一款开源、可自部署的 Flomo 仿制项目,它大致还原了 Flomo 基本功能,并且也提供多用户注册;当然如果你像我一样只是自用,那么完全可以将其用作一个无话不说的「树洞」来使用。
图源 Memos 官方
Memos 默认只支持 Web 端,并提供了中文语言支持、以及亮色和暗色两种主题自动切换等功能,当然也少不了像 Flomo 一样提供了 API 支持,以便接入其他自动化工具实现内容的快速记录。
部署 Memos 的 Docker 命令很简单,这里是官方给出的一个例子: docker run -d --name memos -p 5230:5230 -v ~/.memos/:/var/opt/memos neosmemo/memos:latest
部署成功之后只需要自行注册一个账户就可以开始使用。
如果你想在手机上使用 Memos,那么在搭建好 Memos 之后可以使用 Memos 官方推荐的第三方的 Moe Memos 填写服务器地址和用户认证信息,登录之后即可正常使用。
图源 Moe Memos 官方
思源笔记
正如官方所说的那样,思源笔记是一款「本地优先的个人知识管理系统」,支持完全离线使用和端到端加密同步,同时也提供了数据导出功能。并且思源笔记也拥有新世代笔记软件们所具有的功能,如融合块、大纲和双向链接等。
图源思源笔记官方站点截图
思源笔记完全开源,并且提供了全平台支持,除了云端功能需要付费之外你完全可以免费使用。但既然我们是在服务器上部署,当然就还是选择 Docker 版本。部署的过程十分简单,这里给出操作步骤:
首先,我们需要在服务器上创建一个用于存放数据的文件夹路径,并为其添加对应权限。比如我个人就是放在了 /data/self-hosted/data/siyuan/workspace/中,那么就需要通过 Linux 命令建立对应的文件夹,并且为该文件夹添加对应用户权限: mkdir -p /data/self-hosted/data/siyuan/workspace/ chown -R 1000:1000 /data/self-hosted/data/siyuan/workspace/
之后我们只需要通过容器部署即可,对应的 Docker 命令 和 docker-compose.yml 参考如下:
Docker 命令: docker run -d -it --name siyuan -v /self-hosted/data/siyuan/workspace/:/siyuan/workspace -u 1000:1000 -p 6806:6806 --restart=always b3log/siyuan:latest
docker-compose.yml: version: "3" services: siyuan: image: b3log/siyuan:latest container_name: siyuan environment: - TZ=Asia/Shanghai user: "1000:1000" restart: always ports: - 6806:6806 volumes: - /data/self-hosted/data/siyuan/workspace/:/siyuan/workspace
部署成功之后我们只需要访问 <服务器IP>:6806 就能进入到 Web 端的思源笔记界面:
需要注意的是, 默认情况下我们所在服务器上所部署的思源笔记是不具备数据同步功能的 。思源笔记提供了三种选项,一种是订阅思源笔记官方的云端同步付费,另外两种则是自行配置兼容 Amazon S3 协议的云存储服务和 WebDAV。我们可以点击左上角的工作间区域,然后找到「设置 - 云端」中进行配置。
如果你不打算选择思源官方的付费订阅又或是第三方的云存储服务,而是想继续折腾并自己部署的服务来同步数据,那么也有对应的方案可以选择: 使用 Minio 来作为兼容 Amazon S3 协议的云存储服务; 使用 SFTPGo 来提供 WebDav 服务。
Joplin Server
如果你正在寻求一款能替代印象笔记的应用,或许可以试试 Joplin。
图源 Joplin 官方站点
Joplin 是一款开源的笔记应用,它和思源笔记一样提供了全平台支持,并且具备和印象笔记类似的网页剪藏功能、拥有丰富的插件社区、支持端到端加密(E2EE)等功能。不过,Joplin 和思源笔记一样,默认都是不提供云端数据的同步服务(即需要付费才可使用)。
但是!Joplin 可以允许你自己在服务器上架设、部署自己数据同步服务,即 Joplin Server。
借助 docker-compose,我们可以在短短几秒之内就可以快速搭建起 Joplin 数据同步服务。注意,默认情况下 Joplin 的数据都是存储在数据库中;但是,如果在使用过程中存储类似于附件、图片等体积较大的文件,可能需要设置额外的对象存储服务。所以这里我仅给出能跑起 Joplin Server 最基本的 docker-compose.yml 文件示例: version: "3" services: postgres: image: postgres:latest container_name: postgres volumes: - ./data/postgres:/var/lib/postgresql/data ports: - "5432:5432" restart: unless-stopped environment: - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} - POSTGRES_USER=${POSTGRES_USER} - POSTGRES_DB=joplin joplin: image: joplin/server:latest container_name: joplin depends_on: - postgres ports: - "22300:22300" restart: unless-stopped environment: - APP_PORT=22300 - APP_BASE_URL=${APP_BASE_URL} # your server ip, like: http://xxx.xxx.xxx:22300 - DB_CLIENT=pg - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} - POSTGRES_DATABASE=joplin - POSTGRES_USER=${POSTGRES_USER} - POSTGRES_PORT=5432 - POSTGRES_HOST=postgres
搭建成功之后需要根据 Joplin 官方的说明文档登录对应的管理员账户并修改默认密码;之后我们只需要在 Joplin 应用端的设置界面中找到「同步」选项,选择使用「Joplin Server」,并填写对应部署了 Joplin Server 的服务器地址以及管理员账户密码即可完成同步设置:
Anki-Sync-Server
Anki 是一款辅助学习与记忆的卡片工具,对在校的学习党来说并不陌生。并且 Anki 也免费提供了数据同步服务,我们只需要在官网上自己注册账号之后便能开始使用。
可对于大多数 Anki 使用者来说最为苦恼的就是 Anki 官方所提供的数据同步服务延迟较大,所以在国内使用时,不同设备之间同步卡片或学习进度时总要干等一段时间。
好在 Anki 社区中有第三方开发者开发了适配 Anki API 的同步服务项目 anki-sync-server,该项目虽然使用的是 Python 编写,但也提供了一键容器化部署的脚本。不久后又有人使用 Rust 语言来重写了 anki-sync-server,即 anki-sync-server-rs,相比于前一版而言不仅部署更为便捷、响应性能有所提升,甚至还有效降低了服务器资源的占用。
如果你打算自己部署 Anki 同步服务,那么我建议你优先选择 anki-sync-server-rs。具体的 Docker 命令如下: docker run -d -it --name=ankisyncd -e ANKISYNCD_USERNAME= -e ANKISYNCD_PASSWORD= -v /path/to/ankisyncd:/app ankicommunity/anki-sync-server-rs:latest
上述命令中我参考了官方的 Dockerfile 内容并在文档的 Docker 命令基础上加入了 -v 参数以便将数据内容挂载在服务器上,以方便数据持久化、避免数据丢失,也利于后续备份,在运行时除了用户名和密码之外,可以指定任意你喜欢的路径。
部署完成之后,不论是桌面端还是移动端使用 Anki,均要进行设置后才能进行同步; 但在设置同步之前,请确保对已有的 Anki 数据进行备份 。之后的具体步骤官方也给出了详细的操作说明,我们只需要按部就班即可完成操作,这里就不再多加赘述。
在线音乐服务
图源 Navidrome Demo 示例
Navidrome 是一款由 Go 语言编写且基于 Web 的音乐收藏服务器与流媒体,你可以将自己喜欢的音乐放到 Navidrome 上然后在网页或其他移动端设备中收听音乐,从而避免因平台下架导致无法收听歌曲的情况。
部署 Navidrome 没有太大的难度,因为官方提供了比较详细的部署说明,你可以选择 Docker 命令或 docker-compose 来快速完成部署: docker run -d --name navidrome --restart=unless-stopped --user $(id -u):$(id -g) -v /path/to/your/music:/music -v /path/to/your/data:/data -p 4533:4533 -e ND_LOGLEVEL=info -e ND_DEFAULTLANGUAGE=zh-Hans deluan/navidrome:latest
部署成功后并且手动添加了音乐之后,就可以根据 Navidrome 官方列出的 应用列表 来找到适合你设备系统的客户端,并连接上你的 Navidrome 服务器进行收听。
自动化操作服务
拥有了服务器怎么能少得了自动化操作相关的服务?
只要你足够 Geek,全天候 24 小时不停歇的服务器简直就是自动化利器;而关于自动化方面的开源服务或项目又可以说是多不胜数。这里我仅列举几个让我留有印象的项目。
n8n
n8n 类似于 iOS 的快捷指令,是一个开源、具备可扩展性、可自部署的工作流自动化工具,它不仅整合了国外 220 多种常用的应用服务,同时也拥有丰富的第三方模板社区以便人们分享自己的工作流。
但不同于移动端设备,n8n 是运行在服务器之上,在有效利用服务器资源的同时也可以让其他端设备享受到自动化的便捷。
图源 n8n 官网示例视频
n8n 本身有不同的付费计划,但对于个人使用而言,只需要选择自部署的社区版即可满足日常需求。当然我们在部署时同样是使用 Docker 来完成快速上线: docker run -d --name n8n -p 5678:5678 -v /path/to/n8n:/home/node/.n8n n8nio/n8n
n8n 的部署过程十分简单,默认情况下使用 SQLite 数据库进行存储相关数据;你也可以根据自己的需要选择 MySQL 或是 PostgreSQL,具体可参考 n8n 官方的说明文档。
部署完成之后我们只需要访问到对应接口的服务器地址并注册一个账户之后便可以开始自定义自己的工作流。
qinglong
如果不喜欢像 n8n 那样使用拖拽来完成自动化操作,并且你本身又有一点 JavaScript 或 Python 基础的话,那么可以考虑试试 qinglong(即青龙)。
青龙是一款由国人开发且开源的定时任务管理面板,用户编写完成脚本之后可以在上面设置运行时间,从而实现自动化运行。
图源青龙面板项目仓库
部署青龙面板我们只需要按照官方给出的 Docker 示例运行即可: docker run -dit -v $PWD/ql/data:/ql/data -p 5700:5700 --name qinglong --hostname qinglong --restart unless-stopped whyour/qinglong:latest
部署完成之后即可通过访问 <服务器IP>:5700登录 Web 界面,注册之后即可开始编写或上传脚本代码,并设置运行时间。
Dagu
除了青龙之外,你也可以选择 Dagu——一款基于 DAG(directed acyclic graph,即有向无环图)理念而设计的任务调度与运行的开源工具,它除了可以定时运行任务之外,还可以将多个任务编排在一起,从而构成有依赖的任务工作流。
图源 Dagu 项目仓库
Dagu 本身提供了 Web 界面,并且通过 YAML 文件进行配置,Docker 部署也十分简单: docker run -d -p 8080:8080 -v $HOME/.dagu/dags:/home/dagu/.dagu/dags -v $HOME/.dagu/data:/home/dagu/.dagu/data -v $HOME/.dagu/logs:/home/dagu/.dagu/logs yohamta/dagu:latest
之后我们只需要到服务器上对应的文件夹路径中放入相应的 YAML 配置文件(具体参考 Dagu 官方给出的例子),之后我们就同样访问 <服务器IP>:8080 地址进入到 Dagu 提供的 Web 界面中进行操作即可。
结尾
受益于容器技术的发展,我们可以通过 Docker 这样的工具来在服务器上快速地自部署开源项目或服务,从而让服务器物尽其用不至于「吃灰」。
不过尽管通过容器部署能减少我们部署时的繁琐步骤,但你依旧可能需要学习一些额外的运维技术,包括如何设置 HTTPS、自动备份数据等等;同时,如果你不想总是通过「服务器 IP 地址 + 端口」的方式来访问服务或者 API,那么除了要购买域名之外,还需要考虑备案等问题(购买非内陆地区服务器则可以省略掉备案这一步)。
当然了,自部署的服务或项目远不止本文所介绍的那么点,如果你对于自部署感兴趣,那么可以到 awesome-selfhosted 项目中去寻找符合你需要的服务或项目。
人才招用留实战策略人才是企业发展的压舱石,是企业变革的发动机,企业的发展离不开人才。按人才需求划分,人才可分为六大类高层管理人才,中层管理人才,基层优秀人才,专业技能人才专业营销人才,综合管理人才,
唐山打人事件,却暴露出网友不同的人性!张雨绮是不是道德绑架?唉我真的服了,有些女生真的很不大气,明明都是出来玩的,人家不过就要求加个微信不乐意就不给呗,还骂人,在这之前我都觉得是女生不对,所以才造成了后面男生恼羞成怒,咱就是说,我们女生真的
中国女排3消息朱婷近况更新,蔡斌收好消息,郎平被传出山挂帅众所周知,最近中国女排即将打响第二战菲律宾的比赛,所以在最近这段时间,传出中国女排各种各样的消息。接下来,就和大家分享一下中国女排在近期发生的三个非常备受关注的消息。首先第一个消息
该选择哪种工业铝型材进行加工厚度呢?该选择哪种工业铝型材进行加工厚度呢?工业铝型材的表面一般都是阳极氧化,无论氧化膜的厚度是多少,与表面没有区别。所以对于我们这些外行来说,很难找到门的内侧,从而确定采购到的工业铝材到
国产GPU创业潮这是一个没有奇迹的行业,它不需要爆发和热闹,需要耐心。文马慧程曼祺编辑程曼祺2020年6到8月,一家成立刚刚半年的GPU公司壁仞科技密集披露了3轮大额融资,几乎网罗了市场上最知名的
尾田宣布海贼王将停载一个月酝酿最终章终于还是来了,超人气经典漫画海贼王的最终章,6月7日今天,从不碰SNS的尾田荣一郎惯例发表大字报,宣布海贼王将于6月27日起停载一个月,预定7月25日重新再开,明确海贼王将会突入最
2022高考作文汇总2022高考作文已新鲜出炉,你押中了吗?2022全国新高考卷本手妙手俗手是围棋的三个术语。本手是指合乎棋理的正规下法妙手是指出人意料的精妙下法俗手是指貌似合理,而从全局看通常会受损
养老金下月补发,企退人员会多发1个月的养老金吗?是咋回事呢?(点击上方蓝色按钮可同步收听解放双眼)养老金即将补发到位,企业退休人员会补发1个月的养老金,这是真的吗?是怎么一回事?为什么有的企退职工可以在6月份多补发一笔钱呢?我们一起来看看6
唐山热度只增不减,九名人渣带动连锁反应,背后藏有更大疑团?从唐山打人事件曝出至今,仍在不断发酵。在网友们纷纷喊话要严惩凶手的同时,多名遭遇黑恶势力荼害的受害者也都纷纷搭乘顺风车,来维护自己的权益。受害者们究竟遭受了何等荼毒?这些黑恶势力又
6月发放养老金,注意5个变化,有人领2个月的钱3类人没钱领6月要到了要发放养老金的时候,事关领钱方面,5个变化又要出现了,关系企退人员城乡居民的钱袋子,有人一个月能领2个月的养老金,究竟是怎么回事呢?我们一起来看看第一,企退职工和城乡居民
10条顶级路线1条环中国线!115天的狂野人生,35000KM的伟大行程世界上本没有中国,是中国人创造了中国!中国本没有路,是中国人创造了中国公路!新中国成立时,中国公路里程仅8万公里!1959年,中国公路里程突破50万公里!1994年,中国公路里程突
沧海遗珠之洛阳一拖苏式建筑建筑是具象的历史,刻画着光阴的变迁,一砖一瓦更是承载着建设者们的艰辛岁月。一历史文化价值洛阳涧西苏式建筑是指一五期间,前苏联在洛阳援建重点工程时建造的生活区,主要包括涧西区2号街坊
康熙大帝一针见血日本人甚卑贱,不能给之好颜色在逐日记录康熙帝言行和政令的康熙朝起居注中,就记录了康熙对日本的评论。康熙称日本国为倭子国。他对日本国及其日本人曾有过如下的著名评论,他说倭子国最是反复无常之国。其人甚卑贱。不知世
北齐的教训亡于人祸当历史进入南北朝,整体的趋势一直是北方越来越强南方越来越弱的,即使当北方分裂为北齐与北周,整个中国进入后三国时代,北齐北周仍然要比南陈强,而其中又以北齐更为强盛。然而北齐最终亡于北
清朝的县城一般驻守多少兵马?县下属的行政区划又有哪些呢?古代封建的发展进程中,朝代不同会导致行政区域划分的不同。这样一来,各个行政区域中驻扎的兵马自然也会不一样。那么距离我们最近的清朝年间,一个县城通常会驻守多少兵马呢?县城下属的行政区
八路军和新四军著名战役战斗之句容战斗头条创作挑战赛抗日故事抗日战争军史回眸军史钩沉战斗时间1938年8月12日至13日战斗地点江苏省句容县城战斗手段丘陵城镇攻坚战战斗规模团级我军部队新四军第1支队第2团日军部队日军岩
西太后的首次夫人外交秀历史开讲一份外交活动的臆想插图这是一张1898年12月18日法国小巴黎人报刊发的慈禧太后在京城接见各国公使夫人的插画。小巴黎人报插图法国人的新闻嗅觉确实灵敏,这张插画的登载也并非空
打卡猛龙渡,一场无关爱情的邂逅江风激劲,怪石突兀,斜倚在澜沧江边的乱石中,就着烈酒,身边江水逐渐蔓延,云山客真想把自己醉个半死。然而他没醉,眼睛死死地盯着陡壁上的猛龙渡三个大字出神,有种骂娘的冲动,他妈的我咋就
直通大结局吴磊周雨彤爱情而已将连更17天将于3月27日开播的都市情感剧爱情而已,今(23)日发布追剧日历,宣布将连更17天,直通大结局。对于此消息,观众纷纷表示不断更好啊好棒的追剧日历!这种追剧体验太爽了。很爽,这17天
梁启超与妻子提出离婚,原因竟是因为她1900年的一天,梁启超对自己的妻子李蕙仙说我在美国爱上了别人,并想跟她结婚,希望你成全。事情开始于1899年底,梁启超应康有为之邀,赴美国檀香山办理保皇会事宜。二人一起建立组织,
客商回流今年我国箱包出口呈持续复苏态势我国是全球箱包的第一制造大国,数据显示,我国生产的箱包已占全球近40的市场份额。随着海外客商的回流,今年我国箱包出口呈现持续复苏态势。这几天,位于浙江嘉兴平湖的一家箱包企业生产基地
乡村振兴百县万里行走进江西寻乌解码寻乌四寻中国小康网讯江西省赣州市寻乌县是毛泽东同志1930年5月大规模社会调查的开展地。通过深入调查,他写出了寻乌调查反对本本主义两篇光辉著作,提出了没有调查,没有发言权中国革命斗争的胜利