标签 分享 下的文章

简介

一个All-in-one的项目,集成了uptime-kuma+ nezha + umami 的功能的超强应用.

项目地址

https://github.com/msgbyte/tianji

预览

请输入图片描述

部署

使用 docker compose 的方式来部署

mkdir /home/tianji
cd /home/tianji
vi docker-compose.yaml

docker-compose.yaml的内容如下

services:
  tianji:
    image: moonrailgun/tianji
    ports:
      - "12345:12345"
    environment:
      DATABASE_URL: postgresql://tianji:tianji@postgres:5432/tianji
      JWT_SECRET: replace-me-with-a-random-string
      ALLOW_REGISTER: "false"
      ALLOW_OPENAPI: "true"
    depends_on:
      - postgres
    restart: always
  postgres:
    image: postgres:15.4-alpine
    environment:
      POSTGRES_DB: tianji
      POSTGRES_USER: tianji
      POSTGRES_PASSWORD: tianji
    volumes:
      - ./tianji-db-data:/var/lib/postgresql/data
    restart: always
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
      interval: 5s
      timeout: 5s
      retries: 5

运行容器

docker compose up -d

默认密码

Url: http://<your-ip>:12345
Default username: admin
Default password: admin

监控

https://0tz.top/status/imsun
可以使用一个小徽章显示状态
博客

遥测

在页面插入一张图片就可以侦测到访问量,但是只能显示 pv 浏览量

统计

多用户

没错,Tianji是支持多用户使用的,若是有想体验的朋友可以留言,我可以发送邀请.

通知

可以支持多种通知方式

访客统计

从木木老师那里得到灵感,使用API获取网站的统计数据并使用js 调用,替代Umami.

在后台获取token websiteID workspaceID

然后使用Cloudflare Workers来保护token.
新建一个workers,填入以下代码(需要修改的部分已经标注出来)

addEventListener('fetch', event => {
  event.respondWith(handleRequest(event.request))
})

const tianji = 'https://tianji.top'; #自行修改
const token = 'sk_cf38cfb0bcb22d****'; #自行修改
const workspaceID = 'clnzoxcy10001vy2ohi4obbi0'; #自行修改
const websiteID = 'cm3sj40cs00018n2ezrgbdl5w'; #自行修改

async function handleRequest(request) {
  const url = `${tianji}/open/workspace/${workspaceID}/website/${websiteID}/stats`;

  // 获取当前时间的 Unix 时间戳(以毫秒为单位)
  const now = Date.now();

  // 设置查询参数
  const params = new URLSearchParams({
    startAt: '1704067200000', // 2024年1月1日的 Unix 时间戳(毫秒)
    endAt: now.toString()  
  });

  const fullUrl = `${url}?${params.toString()}`;

  const headers = new Headers({
    'Authorization': `Bearer ${token}`,
    'Content-Type': 'application/json'
  });

  const response = await fetch(fullUrl, {
    method: 'GET',
    headers: headers
  });

  const corsHeaders = {
    'Access-Control-Allow-Origin': '*',
    'Access-Control-Allow-Methods': 'GET, OPTIONS',
    'Access-Control-Allow-Headers': 'Content-Type, Authorization'
  };

  if (request.method === 'OPTIONS') {
    return new Response(null, {
      headers: corsHeaders
    });
  }

  if (response.ok) {
    const data = await response.json();
    return new Response(JSON.stringify(data), {
      headers: {
        'Content-Type': 'application/json',
        ...corsHeaders
      }
    });
  } else {
    return new Response(`Failed to fetch data: ${response.status} ${response.statusText}`, {
      status: response.status,
      headers: corsHeaders
    });
  }
}

startAt 的值 是某时间的unix时间戳 可以自行设置查询范围

调用

使用html+js调用

👣<p>本站到访<span id="uniques">0</span>位朋友.</p><p>共浏览页面<span id="pageviews">0</span>次</p>
<script>
// 定义 API URL
const apiUrl = 'https://tj.imsun.org';

fetch(apiUrl)
    .then(response => {
        if (!response.ok) {
            throw new Error('error');
        }
        return response.json();
    })
    .then(data => {
        const pageviewsElement = document.getElementById('pageviews');
        const uniquesElement = document.getElementById('uniques');
        pageviewsElement.textContent = data.pageviews.value;
        uniquesElement.textContent = data.uniques.value;
    })
    .catch(error => {
        console.error('获取数据时出现问题:', error);
    });
</script>

其他

还有其他很多功能,等待摸索


前言

[article id="1461"]

之前的docker 我测试仅仅支持我构建的2.4.2版本

这次支持最新的2.7.0版本,所以写了这次的更新

步骤

克隆仓库

git clone https://git.ima.cm/jkjoy/pleroma-docker-compose.git
cd pleroma-docker-compose

编辑配置

注意:
你需要编辑./environments/pleroma/pleroma.env 其中的 ops.pleroma.social 为你自己的域名

启动容器

执行

docker-compuse up -d

在初始化之后反向代理4000端口即可.

创建管理员

docker exec -it pleroma sh ~/bin/./pleroma_ctl user new admin admin@ow3.cn --admin

前言

最初部署的Activity-Relay服务由于是在宿主机上工作,前段时间由于宿主机机房重启了机器 使Relay服务莫名其妙的不能启动

于是这次使用便携易用的Docker来部署服务,记录一下以备用

具体步骤

拉取仓库

git clone https://github.com/yukimochi/Activity-Relay.git -b v2.0.0

编辑配置

进入Activity-Relay目录

cd Activity-Relay
cp config.yml.example config.yml

编辑config.yml修改相关配置

生成actor RSA 证书

ubuntu使用

openssl genrsa -traditional | tee actor.pem

centos使用

openssl genrsa -out actor.pem 1024 | tee actor.pem

赋予权限600

chmod 600 actor.pem

docker-compose配置

这里需开放端口用以反向代理

services:
  redis:
    restart: always
    image: redis:alpine
    healthcheck:
      test: ["CMD", "redis-cli", "ping"]
    volumes:
      - "./redisdata:/data"

  worker:
    container_name: worker
    build: .
    image: yukimochi/activity-relay
    working_dir: /var/lib/relay
    restart: always
    init: true
    command: relay worker
    volumes:
      - "./actor.pem:/var/lib/relay/actor.pem"
      - "./config.yml:/var/lib/relay/config.yml"
    depends_on:
      - redis

  server:
    container_name: relay
    build: .
    image: yukimochi/activity-relay
    working_dir: /var/lib/relay
    restart: always
    init: true
    ports:
      - "8080:8080"
    command: relay server
    volumes:
      - "./actor.pem:/var/lib/relay/actor.pem"
      - "./config.yml:/var/lib/relay/config.yml"
    depends_on:
      - redis

构建镜像与运行服务

docker-compose build
docker-compose up -d

查看容器运行状态

docker-compose ps

停止服务

docker-compose down

反向代理

    location = /inbox {
        proxy_pass http://127.0.0.1:8080; 
        proxy_pass_request_headers on; 
        proxy_set_header Host $http_host; 
    }
    location = /actor {
        proxy_pass http://127.0.0.1:8080; 
        proxy_pass_request_headers on; 
        proxy_set_header Host $http_host; 
    }

完成

https://relay.jiong.us/inbox
加入mastodon 的中继服务即可


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


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

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