分类 分享 下的文章

前言

为了更加方便的同步内容,可以作备份之用.

声明

代码和功能实现来自于@大大的蜗牛 原理是使用webhook. 在发布内容时,触发脚本运行.

步骤

同步脚本

脚本中API_HOST为memos的API AUTHORIZATION为memos中Token CONTENT_URL111363033003475492为mastodon的用户的ID 获得用户ID的方法可以参见

[article id="1469"]

#!/bin/sh

# API 和 Token
API_HOST="https://memos.ee/api/v1/memo"
AUTHORIZATION="Bearer eyJhbGciOiJIUzI1NiIsImtpZCI6InYxIiwidHlwIjoiSldUIn0.eyJuYW1lIjoiamtqb3kiLCJpc3MiOiJtZW1vcyIsInN1YiI6IjEiLCJhdWQiOlsidXNlci5hY2Nlc3MtdG9rZW4iXSwiaWF0IjoxNjk3ODc0NTk2fQ.jNGMDE1YVX4Qj6hNhmrxb63WlRM5kGX10k_qRXH6ID4"

# 原始内容
CONTENT_URL="https://09j.cn/api/v1/accounts/111363033003475492/statuses?limit=1"
CONTENT=$(curl --connect-timeout 60 -s $CONTENT_URL | jq -r '.[0]')
# mastodon
MASTODON_URL=$(echo $CONTENT | grep -oP 'https:\/\/09j\.cn\/@[^\/]+\/\d+')
DUDU_CONTENT="[自动转发自我的Mastodon]($MASTODON_URL)"

MENTIONS=$(echo $CONTENT | jq -r '.mentions[]')
if [ ! -z "$MENTIONS" ]; then
  echo "Skipping status mention! $(TZ=UTC-8 date +"%Y-%m-%d"" ""%T")"
  echo ======================================================
  exit 0
fi

MEDIA=$(echo $CONTENT | jq -r '.media_attachments')
# 判断 Media 的内容
if [ "$MEDIA" != "null" ]; then
  MEDIAS=$(echo $CONTENT | jq -r '.media_attachments[] | select(.type=="image") | .url')
  # 拼接图片
  images=""
  for url in $MEDIAS; do
    images="$images![image]($url)\n"
  done
  TEXT=$(echo "$CONTENT" | jq -r '.content' | sed 's/ +/ /g' | lynx -dump -stdin -nonumbers -nolist | tr -d '\n' | sed '/^$/N;s/\n\n/\n/g' | sed 's/^[[:space:]]*//;s/[[:space:]]*$//')
  TEXT="$TEXT\n$DUDU_CONTENT"
  TEXT="$TEXT\n$images"

else
   # 普通内容
  TEXT=$(echo "$CONTENT" | jq -r '.content' | sed 's/ +/ /g' | lynx -dump -stdin -nonumbers -nolist | tr -d '\n' | sed '/^$/N;s/\n\n/\n/g' | sed 's/^[[:space:]]*//;s/[[:space:]]*$//')
  TEXT="${TEXT}\n$DUDU_CONTENT"
fi

curl -X POST \
  -H "Accept: application/json" \
  -H "Authorization: $AUTHORIZATION" \
  -d "{ \"content\": \"$TEXT\" }" \
  $API_HOST

echo Sync Mastodon to Memos Successful! $(TZ=UTC-8 date +"%Y-%m-%d"" ""%T")
echo ======================================================

我稍微做了一点修改.在发布到memos的同时贴上原本mastodon的原文链接. 由于我不会写规则,就随意写了匹配规则 我的实例为09j.cn 不需要则删除以下

MASTODON_URL=$(echo $CONTENT | grep -oP 'https:\/\/09j\.cn\/@[^\/]+\/\d+')
DUDU_CONTENT="[自动转发自我的Mastodon]($MASTODON_URL)" 
TEXT="$TEXT\n$DUDU_CONTENT"

即可

部署webhook

Docker镜像是根据官方dockerfile增加了中文支持,

推荐使用docker-compose部署 编辑docker-compose.yaml内容为

services:
  webhook:
    image: jkjoy/webhook
    container_name: webhook
    command: -verbose -hooks=hooks.yml -hotreload
    environment:
      - TZ=Asia/Chongqing #中国时区
      - LANG=C.UTF-8  #中文支持
    volumes:
      - ./config:/config:ro
    ports:
      - 9000:9000
    restart: always

在根目录下创建config目录,并在config下创建hooks.yml文件并编辑内容为

- id: memos
  execute-command: "/config/memos.sh"
  command-working-directory: "/"

把脚本内容保存为memos.sh保存在config目录下

然后在docker-compose.yaml所在的根目录下 运行docker compose up -d即可

使用Webhook

hooks.yaml为webhook的配置

其中的execute-command为可执行脚本

webhook的访问地址格式为

服务器 ip:端口/hooks/ID

以127.0.0.1为例 访问http://127.0.0.1:9000/hooks/memos

设置mastodon

在管理员后台中管理-webhooks-新增对端 对端URL填入http://127.0.0.1:9000/hooks/memos 已启用事件选择status.created 点击新增即可在发布新的嘟嘟时同步内容到memos了.

其他

同理也可以使用webhook在发布memos时候同步到其他拥有API的服务中了.


EasyPanel

官方网站 EasyPanel.io EasyPanel是一款基于docker的可视化面板. 拥有付费免费两种模式

本文介绍以免费模式为主(主要是收费不菲)

从首页的介绍可以看到他的特色就是通过直观的界面部署应用,管理数据库以及签发SSL证书.

安装

  • 建议在纯净的linux系统下安装

通过命令行

curl -sSL https://get.easypanel.io | sh

即可完成安装,官方给出的配置要求内存大于2G,根据实测,1G的vps运行起来问题也不大.

由于是容器化的部署方式,各个应用之间独立运行.NICE.

使用

访问

安装之后通过

ip:3000

访问面板,初次访问会要求创建管理员账号和密码.

登录

进入面板会发现很简洁
进入面板

创建

创建项目点击Create Project填写项目名称,确定,进入该项目

模板

点击templates会发现这里有很多常用的应用模板,只要点击就可以部署.

譬如memos uptime wordpress Flarum GoToSocial Umami Vaultwarden 等上百款应用

服务

常见的模板应用大多都是全世界著名的应用.国内的某些应用,或者不是很常见的应用该如何部署

此处以gatus为例

点击APP,填写名称,确认

点击General
gatus的docker镜像为twinproduction/gatus:latest
Docker images中填入twinproduction/gatus:latest
SAVE保存.

点击Domain-ADD Domain-HOST填写域名

全部填写完成之后,点SAVE保存.

点击Advanced-Mounts-ADD VOLUME Mounts

Name为宿主机名称可以自己设置

Mount Path为Docker

挂载目录 /data

点击ADD File Mounts,其中 Mount Path为挂载路径,此处填写为/config/config.yaml

Content为yaml格式的配置文件 与 config.yaml内容对应

以下为示例内容可自行修改

storage:
  type: sqlite
  path: /data/data.db

ui:
  buttons:
    - name: "Home"
      link: "https://www.imsun.org"

endpoints:
  - name: bloghb
    group: core
    url: "https://blog.hb.cn"
    interval: 3m
    conditions:
      - "[STATUS] == 200"

  - name: blogcn
    group: core
    url: "https://blog.asbid.cn"
    interval: 3m
    conditions:
      - "[STATUS] == 200"

  - name: blogsd
    group: core
    url: "https://blog.sd.cn"
    interval: 3m
    conditions:
      - "[STATUS] == 200"

点击SAVE保存

点击Deploy.

完成部署 别忘记在DNS处解析域名

gatus演示

https://status.0tz.top/

总结

优势:不用折腾反代,不用担心证书到期,常用应用傻瓜式部署


Pleroma是什么

Pleroma是一个联合社交网络平台,与GNU社交和其他OStatus实现兼容。它是AGPLv3许可下的免费软件。它实际上由两个组件组成:后端(名称简单为Pleroma)和面向用户的前端(名称为Pleroma-FE).它的主要优点是重量轻、速度快.

准备工作

  • Docker
  • git

步骤

拉取仓库

git clone https://github.com/jkjoy/docker-pleroma.git
cd docker-pleroma

创建文件夹并赋权


mkdir uploads config
chown -R 911:911 uploads

Pleroma需要citext PostgreSQL拓展


docker-compose up -d db
docker exec -i pleroma_db psql -U pleroma -c CREATE EXTENSION IF NOT EXISTS citext;
docker-compose down

修改docker-compose.yml文件中的ENV内容


DOMAIN: example.com   //实例使用的域名
INSTANCE_NAME: Pleroma  //实例的名称
ADMIN_EMAIL: admin@example.com //管理员邮箱
NOTIFY_EMAIL: notify@example.com //通知邮箱
DB_USER: pleroma  //可以保持默认
DB_PASS: ChangeMe! //可以保持默认
DB_NAME: pleroma //可以保持默认

保存好之后执行


docker-compose up -d

查看容器的状态


docker logs -f pleroma_web

反向代理

反向代理127.0.0.1:4000以宝塔为例

创建一个管理员账号

以下示例中 fakeadmin 为用户名 admin@test.net 为邮箱


docker exec -it pleroma_web sh ./bin/pleroma_ctl user new fakeadmin admin@test.net --admin

执行之后会出现一个链接,点击即可重置管理员密码 ### 更改前端

Pleroma-FE不太喜欢,选用 Soapbox作为前端


cd static
curl -O https://dl.soapbox.pub/main/soapbox.zip

unzip soapbox.zip

刷新即可

演示地址

https://tot.yt


通过memos的自定义样式更改字体为霞鹜文楷

由于cdn.staticfile.org出现了跨域的问题导致很多图标和字体无法正常显示.

加上ucloud买了一年100G的CDN流量.

自己反正也很少用,就自建一个霞鹜文楷的CDN

把以下代码复制粘贴进memos的自定义样式中保存即可.

@import '//cdn.09j.cn/lxgw-wenkai-webfont/style.css';
body {
font-family: "LXGW WenKai", sans-serif;
}

 


Gotosocial是什么

GoToSocial 是一个使用 Golang 编写的 ActivityPub 社交网络服务器,它是一个轻量级、安全的联邦社交网络入口,可让用户保持联系、发布和分享图片、文章等内容。GoToSocial 强调用户的隐私和自由,不会跟踪用户的行为,也不会为了向用户展示广告而收集他们的数据。 使用 GoToSocial 可以让用户进入联邦社交网络的世界,联邦网络是一种基于协议的社交网络结构,它允许用户从一个社交网络实例互相跟随、交流和分享内容。这种结构可以让用户自由选择社交网络平台,同时避免某个平台垄断市场。用户可以在不同的实例之间进行跟随和互动,这样就可以更好地保护用户的隐私和自由。

部署方式

使用docker-compose部署

创建安装目录并更改权限

mkdir -p /var/www/gotosocial/data && cd /var/www/gotosocial && chown 1000:1000 ./data

配置 docker-compose.yaml 文件

version: "3.3"

services:
  gotosocial:
    image: superseriousbusiness/gotosocial:latest
    container_name: gotosocial
    networks:
      - gotosocial
    environment:
      GTS_HOST: social.example.com
      GTS_DB_TYPE: sqlite
      GTS_DB_ADDRESS: /gotosocial/storage/sqlite.db
      GTS_LETSENCRYPT_ENABLED: "false"
      GTS_STORAGE_BACKEND: "s3"
      GTS_STORAGE_S3_BUCKET: "BUCKET名称"
      GTS_STORAGE_S3_ENDPOINT: "#S3 API"
      GTS_STORAGE_S3_ACCESS_KEY: "#api-tokens"
      GTS_STORAGE_S3_SECRET_KEY: "#api-tokens"
      GTS_STORAGE_S3_PROXY: "true"
    ports:
      - "127.0.0.1:8080:8080"
    volumes:
      - ./data:/gotosocial/storage
    restart: "always"

networks:
  gotosocial:
    ipam:
      driver: default

支持S3存储

运行

docker compose up -d

创建用户

docker exec -it gotosocial ./gotosocial admin account create --username admin --email YOUR@EMAIL.COM --password  SOME_VERY_GOOD_PASSWD ;

自行更改用户名`密码`邮箱地址

admin改成自己需要的用户名

增加管理员权限

docker exec -it gotosocial ./gotosocial admin account promote --username admin

反向代理

反代127.0.0.1:8080即可 此处就不赘述了.

客户端

https://login.ima.cm

  • 大家都可以使用

演示

https://ima.cm


官方给出的一键安装由于墙的原因可能无法安装成功。
所以找到了一个国内镜像的一键安装脚本

/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"


支持 离线下载 BT和磁力链接和边下边播 的老司机坐骑 —— Cloud Torrent
声明:本文章仅提供 BT/磁力链接 下载工具的安装方法和说明,任何使用此工具 下载版权侵权文件或导致任何经济损失,皆和本人无任何关系!如果你不同意或有异议,请关闭这个网页!
10-1.png

  • 系统需求

CentOS / Debian / Ubuntu 都可以,因为是 Go语言写的

  • 脚本版本:
    Ver: 1.0.3
  • Cloud Torrent特点
    支持 BT下载
    支持 磁力链接下载
    支持 搜索磁力链接
    支持 离线下载
    支持 边下边播( 格式限制:mp4/wbem/ogg,同时需要手动输入链接)
    可视化界面 Web UI
  • 安装步骤
wget -N --no-check-certificate https://www.xuanlove.download/sh/cloudt.sh && chmod +x cloudt.sh && bash cloudt.sh

下载运行完毕脚本,就会直接开始安装 Cloud Torrent ,安装过程中如果出现让你选择Y和N的,都选Y。
安装完成之后,就会提醒你,输入要开放的端口(推荐:默认 8000)
启动后,访问 http://VPS_IP:8000 即可看到Web UI界面了。

  • 脚本使用说明
 bash cloudt.sh
    #可以直接输入这个命令,会自动判断是否需要 安装/启动/停止 Cloud Torrent
     
    bash cloudt.sh install
    #安装 Cloud Torrent
     
    bash cloudt.sh start
    #启动 Cloud Torrent
     
    bash cloudt.sh stop
    #停止 Cloud Torrent
     
    bash cloudt.sh tail
    #查看 Cloud Torrent 日志
     
    bash cloudt.sh uninstall
    #卸载 Cloud Torrent

  • Cloud Torrent使用说明

    Cloud Torrent可以直接在输入中输入 磁力链接 或者 在线的BT种子(不支持本地上传),点击下面的 蓝色的按钮,就会开始解析资源。

按钮说明

成功解析后,就会显示如下的界面,开始下载。
Files 是查看正在下载的文件列表, Start 是启动下载(默认解析后直接启动下载), Stop 是停止下载。
还有,如果你下载完毕或者点了 Stop 停止下载,那么 Stop 就会变成 Remove 删除任务的按钮了。

搜索磁力链接

Cloud Torrent支持搜索磁力链接,在输入栏中直接输入你要搜索的文件名称,同时点击 绿色的按钮 选择一个搜索源,然后点击 蓝色的Search 按钮就可以搜索了。
注意:Cloud Torrent是国外人写的,所以这些搜索源均是国外的磁力链接网站,搜索到的资源基本没有中文的,所以非特殊需求的这个功能就没什么卵用了。

注意事项

BT和磁力链接的速度是和, 磁力链接/BT 的用户上传共享量 和 中心服务器的宽带质量,以及你下载 磁力链接/BT 的VPS的宽带有关系。
这种软件在某些程度上比不上 国内的迅雷,毕竟迅雷 用户了很大共享了很多的上传速度,而且还有缓存的中心服务器,所以才会那么快。
如果你是国外的VPS,特别是美国的,一定要注意下载 BT/磁力链接 容易遇到蜜罐,然后被投诉封VPS。建议使用欧洲的罗马尼亚,那里的VPS无视版权,当然拉回本地,速度肯定也不会多快

无法访问你的 http://IP:端口

可能是防火墙规则的问题,使用下面这个命令来开放端口

iptables -I INPUT -p tcp --dport 端口 -j ACCEPT