侧边栏壁纸
博主头像
琉璃红梅 博主等级

琉璃世界,白雪红梅。

  • 累计撰写 44 篇文章
  • 累计创建 90 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Docker系列-极简朋友圈的搭建与使用

雪穗
2024-05-23 / 0 评论 / 0 点赞 / 147 阅读 / 0 字
温馨提示:
本文最后更新于39天前,若内容或图片失效,请留言反馈。 若部分素材不小心影响到您的利益,请联系我删除。

1.Moments简介

Moments为极简朋友圈,由 kingwrcy 开发,正如名字所言,该项目就是仿照微信的朋友圈,实现网页端的部署。

Moments的GitHub地址:https://github.com/kingwrcy/moments

另外推荐一下多用户的极简朋友圈,由 RandallAnjie 在前者的基础上开发,可以实现多用户登录和自动定位,功能更强大,有兴趣的小伙伴同样可以参考该博文自行部署。

多用户Moments的GitHub地址:https://github.com/RandallAnjie/moments

2.Moments的安装

安装前提:

1.已经安装好docker和docker compose,请参看我的博文 docker系列-docker与docker compose安装

建议:

1.将所有docker项目放在统一目录下 /root/data/docker_data/,方面后期管理与维护

2.添加SWAP虚拟内存,请参看我的博文 添加 SWAP 虚拟内存

2.1 创建安装目录

mkdir -p /root/data/docker_data/moments

2.2 创建docker-compose.yaml文件并上传至服务器

上传 docker-compose.yaml 文件到moments目录下,docker-compose.yaml 文件内容如下:

version: '3'
services:
  moments:
    image: kingwrcy/moments:latest   
    ports:
      - "3201:3000"                          # 端口映射,左边为服务器对外开放端口,右边为docker内部端口
    volumes:
      - ./moments-data:/app/data
      - /etc/localtime:/etc/localtime:ro
      - /etc/timezone:/etc/timezone:ro
    environment:
      - NUXT_JWT_KEY=CJ4,~knRTL'}^([         #jwt密钥,填随机字符串即可
volumes:
  moments-data:

2.3 Moments的部署

查看3210端口有没有被占用

lsof -i:3201

没有占用,进入moments目录下进行部署即可,若被占用可以更换为其它未被占用的端口,之后执行如下命令进行部署:

cd /root/data/docker_data/moments

docker compose  up -d  

部署成功之后访问 http://ip:3201 ,出现如下页面,如果访问失败,请去服务器的运营商后台检查3201端口是否开放

初始化用户名与密码为:admin/a123456,登录后请立即修改用户名与密码

3.Moments的基本配置

3.1 修改全局字体为霞鹜文楷并且去掉底部的Stars

在定义JS加入如下内容:

function changeFont() { 
  const link = document.createElement("link");
  link.rel = "stylesheet";
  link.type = "text/css";
  link.href = "https://cdn.staticfile.org/lxgw-wenkai-screen-webfont/1.6.0/lxgwwenkaiscreen.css";
  document.head.append(link);
};
changeFont();

在自定义CSS加入如下内容:

*{font-family: "LXGW WenKai Screen", sans-serif !important;}
.footer a[rel='noopener noreferrer']{display:none;}

3.2 配置邮件提醒功能

在个性化配置一栏点击去配置

在邮箱通知那里进行如下配置,关于如何获取邮箱的SMTP密码请参考我的博文 开启邮箱的SMTP服务,请注意如果使用qq邮箱请修改邮箱服务地址为 smtp.qq.com,之后进行测试如果你的邮箱能够收到相关邮件通知则表明配置成功,点击最下方的复制按钮,粘贴到个性化配置一栏即可。

3.3 配置S3存储(阿里云,可选)

如果不配置该项,你所上传发布的图片视频等内容会存储在Moments所部署的服务器上面,具体就是在 /root/data/docker_data/moments /moments-data/upload 目录下,当你的服务器空间不够大的或者想要提高访问速度时,可以采用S3存储(注意是按照流量收费的)。

参考:极简朋友圈配置阿里云OSS

这里我以阿里云OSS存储为例进行演示,关于如何注册阿里云账号等内容不再叙述

3.3.1 创建子用户

点击 这里 进行创建,登录名称随便,选择 OpenAPI调用访问

复制生成的 AccessKey ID 和 AccessKey Secret(注意Secret只显示一次,注意保存,否则需要重新生成)

3.3.2 创建存储桶(Bucket)

点击 这里 前往,然后点击 创建 Bucket,选择快捷创建,因为我的服务器在国外且未备案且想绑定自己的域名所以选择海外存储(建议选择国内,否则S3存储失去了“访问快”的意义),注意选择公共读,其余按照推荐一路确定即可

如果服务器未备案又想绑定自己的域名访问存储的内容则只能选择海外存储

3.3.3 创建接入点

接入点是NAS文件系统中针对于不同应用程序或用户访问文件系统的接入方式,便于轻松管理不同应用不同用户对数据集的访问

点击 这里 前往,然后点击创建接入点列表

接入点权限委派

3.3.4 配置存储桶策略

点击 这里,点击进入刚刚创建的存储桶配置策略

授权策略1

授权策略2

3.3.5 配置跨域规则

3.3.6 防盗链配置

这样可以一定程度防止流量盗刷

3.3.7 自定义域名配置
3.3.8 生成AccessKey

如果在创建子用户时忘记保存AccessKey Secret,可以按照如下操作重新生成

3.3.9 配置Moments的S3(阿里云)

域名:https://Bucket域名 (或自定义的域名)
S3接口地址:https://Endpoint

自行上传图片进行测试

3.4 配置S3存储(缤纷云,推荐)

Why 缤纷云?

1.有免费额度

2.可以免费进行图片压缩处理(后续应该会收费)

3.价格更低

3.4.1 创建存储桶

3.4.2 配置跨域

进入存储桶的配置页面

跨域规则1,任意请求查看图片时不会因为跨域问题而拦截

跨域规则2,该域名下的增删改查请求不会因为跨域问题而被拦截

3.4.3 配置防盗链

只让自己的域名访问,可以有效防止流量盗刷

3.4.4 创建子用户并获取密钥

点击确定之后会自动创建Key,Secret Key只显示一次务必保存,如果未保存,可以重新添加Key并指定子用户

然后给子用户设定权限

3.3.5 配置Moments的S3(缤纷云)

配置如下:

域名:https://桶名.s3.bitiful.net (或自定义的域名)
S3接口地址:https://s3.bitiful.net
后缀:fmt=avif&w=1000&p=75  #添加后缀可以对图片进行压缩,节省流量,fmt为需要转换的图片格式,w为图片的宽度(按比例缩放),p为图片质量(百分比)

查看桶信息可以获取EndpointRegion,都是固定的

我的S3配置如下:

4.Moments的基本使用

4.1 引入b站视频和网易云音乐

参考:极简朋友圈如何引入b站视频和网易云音乐

5.Moments的升级与更新

# 方式一
cd /root/data/docker_data/moments

docker compose down --rmi all  # 停止容器运行并删除相关镜像

docker compose up -d           # 请不要使用 docker-compose stop 来停止容器,因为这么做需要额外的时间等待容器停止;docker-compose up -d 直接升级容器时会自动停止并立刻重建新的容器,完全没有必要浪费那些时间。

# 方式二
cd /root/data/docker_data/moments

docker compose down   # 停止容器运行

docker compose pull   # 重新拉取镜像

docker compose up -d   

6.Moments的卸载

cd /root/data/docker_data/moments

docker compose down --rmi all           # 停止容器运行并删除相关镜像

cd ..

rm -rf /root/data/docker_data/moments  # 完全删除

0

评论区