在这里插入图片描述

前言

有些生活片段值得留下,但并不一定每一次都想发到公共社交平台。早餐随手拍的一张照片、路上听到的一首歌、当天突然冒出来的一句话,也可以只是单纯记录下来,过一段时间再自己翻回去看看。

Moments就是一套很适合这类场景的自托管极简朋友圈。它支持发布Markdown文字、图片和视频,也可以引用音乐、外部视频、链接以及豆瓣书影音,并提供标签、评论、点赞和搜索等功能。你可以把它当成一个自己维护的生活动态页,而不是传统意义上的照片管理软件。

本文会在极空间NAS中通过Docker Compose部署Moments,把数据库和上传文件持久化到NAS目录,再实际测试个人资料设置、发布动态、音乐分享和内容搜索等基础功能。

需要特别说明的是,Moments并不提供照片自动同步、人脸识别或AI人物地点分类,它更接近一套轻量的“朋友圈/个人动态站”。另外,当前项目支持访客浏览和互动能力,因此“部署在自己的NAS”也不代表页面天然只有自己能够看到,公网使用前仍需要根据实际用途检查账号、注册和内容访问设置。

最后还会通过cpolar为8800端口创建公网入口,让这套运行在极空间中的Moments可以从其他网络访问。正式开放公网以前,应先修改默认管理员密码,并根据长期使用需要配置固定的JWT密钥和必要的访问控制。

image-20251030162851033

1.在极空间部署个人博客

1.1ssh远程连接到极空间

  • 开启【SSH 服务】
  • 使用终端(Windows PowerShell / Mac Terminal)登录:
ssh root@IP

没有ssh的小伙伴可以去cpolar官网参考《极空间别再吃灰了!开启SSH,秒变全能服务器!》这篇文章:

957c00e3b3f0ce8aa95df96aa41b8715

1.2验证docker是否开启

使用命令:

docker -v 
systemctl status -v

没有docker的小伙伴可以去cpolar官网参考《极空间开箱实录:从拆箱到远程访问保姆级教程,30分钟上手!》这篇文章

image-20251017103712618

1.3安装Moments

首先创建一下安装的目录并进入到该目录:

sudo mkdir -p /docker/moments
cd /docker/moments

image-20251030152521970

创建并编辑 docker-compose.yml文件:

services:
  moments:
    image: kingwrcy/moments:latest   
    ports:
      - "8800:3000"  # 左边的 8800随意更改成服务器上没有用过的端口
    volumes:
      - ./moments-data:/app/data
      - /etc/localtime:/etc/localtime:ro
      - /etc/timezone:/etc/timezone:ro

image-20251030160522181

启动容器:

docker-compose up -d

image-20251030161509491

部署完成后,在浏览器中输入 http://极空间IP:8800 就能看到Moments的界面:

image-20251030161723487

1.4简单使用Moments

使用默认账户密码登录:

image-20251030162040701

点击如图,修改个人信息,让它看起来符合自己的审美:

image-20251030162312853

image-20251030162212719

现在我们来发个动态吧:

image-20251030162350609

分享歌曲:

image-20251030162530738

动态:

image-20251030162642227

页面是不是简单漂亮!

image-20251030162719470

通过搜索关键字来搜索文章:

image-20251030163050776

但问题来了:

  • 只能在家里的局域网访问?

出门在外想看看宝宝的成长记录、翻翻旅行照片,或者想发当时的心情,却无法打开?

这时候,就需要 cpolar 来帮忙了!

2.安装cpolar实现随时随地发文

cpolar 可以将你本地电脑中的服务(如 SSH、Web、数据库)映射到公网。即使你在家里或外出时,也可以通过公网地址连接回本地运行的开发环境。

❤️以下是安装cpolar步骤:

使用一键脚本安装命令:

sudo curl https://get.cpolar.sh | sh

e464b045413a024674a93ea472511b0f

安装完成后,执行下方命令查看cpolar服务状态:(如图所示即为正常启动)

sudo systemctl status cpolar

aa03713b56d9eef12a4da6b99d2e46ac

Cpolar安装和成功启动服务后,在浏览器上输入虚拟机主机IP加9200端口即:【http://ip:9200】访问Cpolar管理界面,使用Cpolar官网注册的账号登录,登录后即可看到cpolar web 配置界面,接下来在web 界面配置即可:

打开浏览器访问本地9200端口,使用cpolar账户密码登录即可,登录后即可对隧道进行管理。

3af79ad708cc47c5bbea0b63c2c7230d

3.配置公网地址

登录cpolar web UI管理界面后,点击左侧仪表盘的隧道管理——创建隧道:

  • 隧道名称:可自定义,本例使用了:Moments,注意不要与已有的隧道名称重复
  • 协议:http
  • 本地地址:8800
  • 域名类型:随机域名
  • 地区:选择China Top

image-20251030164023524

创建成功后,打开左侧在线隧道列表,可以看到刚刚通过创建隧道生成了公网地址,接下来就可以在其他电脑或者移动端设备(异地)上,使用地址访问。

image-20251030164046601

访问成功:

image-20251030165343743

4.保留固定公网地址

使用cpolar为其配置二级子域名,该地址为固定地址,不会随机变化。

image-20250918151358733

点击左侧的预留,选择保留二级子域名,地区选择china Top,然后设置一个二级子域名名称,我使用的是moments,大家可以自定义。填写备注信息,点击保留。

image-20251030165933416

登录cpolar web UI管理界面,点击左侧仪表盘的隧道管理——隧道列表,找到所要配置的隧道,点击右侧的编辑

image-20251030170527327

修改隧道信息,将保留成功的二级子域名配置到隧道中

  • 域名类型:选择二级子域名
  • Sub Domain:填写保留成功的二级子域名
  • 地区: China Top

点击更新

image-20251030170700559

更新完成后,打开在线隧道列表,此时可以看到随机的公网地址已经发生变化,地址名称也变成了保留和固定的二级子域名名称。

image-20251030172618391

最后,我们使用固定的公网地址在任意设备的浏览器中访问,可以看到成功访问的页面,这样一个永久不会变化的二级子域名公网网址即设置好了。

image-20251030172804186

这样我们就可以,随时随地发文啦!

总结

完成以上配置后,Moments已经通过Docker运行在极空间NAS中,并可以通过浏览器打开自己的生活动态页面。

本文实际测试了个人资料设置、动态发布、音乐分享以及内容搜索等功能。Moments更适合理解成一套自托管的极简朋友圈:文字、图片、视频和部分外部内容可以集中到自己的站点中,再通过时间线慢慢积累生活记录。

当前部署把/app/data持久化到了NAS目录,其中包含SQLite数据库和本地上传文件。长期使用时仍然应该为数据库和上传内容建立独立备份;如果后续启用S3等外部存储,也需要重新判断实际文件存放位置,不能简单把自托管等同于所有内容永远只存在NAS本机。

通过cpolar为8800端口建立公网入口后,还可以从其他网络打开Moments。公网使用前应先替换项目默认管理员密码,并根据实际需要关闭开放注册或调整互动设置。对于不希望任何陌生访客看到的私人内容,也应先确认当前版本提供的访问权限是否满足要求,而不能把随机或固定公网地址本身当作隐私保护。

如果需要长期使用同一个地址,可以根据实际套餐配置固定二级子域名,在账号、套餐以及对应隧道配置保持有效期间维持URL一致。固定地址解决的是链接变化问题,并不能替代账号安全、应用更新和数据备份。

从极空间Docker部署、发布生活动态,到远程访问,本文完成了一套Moments自托管极简朋友圈的基础实践流程。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐