diff --git a/appstore/ani-rss/1.1.318/.env b/appstore/ani-rss/1.1.319/.env similarity index 100% rename from appstore/ani-rss/1.1.318/.env rename to appstore/ani-rss/1.1.319/.env diff --git a/appstore/ani-rss/1.1.318/data.yml b/appstore/ani-rss/1.1.319/data.yml similarity index 100% rename from appstore/ani-rss/1.1.318/data.yml rename to appstore/ani-rss/1.1.319/data.yml diff --git a/appstore/ani-rss/1.1.318/docker-compose.yml b/appstore/ani-rss/1.1.319/docker-compose.yml similarity index 95% rename from appstore/ani-rss/1.1.318/docker-compose.yml rename to appstore/ani-rss/1.1.319/docker-compose.yml index 36ff1c764..f6a3ad1c0 100644 --- a/appstore/ani-rss/1.1.318/docker-compose.yml +++ b/appstore/ani-rss/1.1.319/docker-compose.yml @@ -11,7 +11,7 @@ services: - PORT=7789 - CONFIG=/config - TZ=Asia/Shanghai - image: wushuo894/ani-rss:v1.1.318 + image: wushuo894/ani-rss:v1.1.319 labels: createdBy: Apps networks: diff --git a/appstore/ani-rss/1.1.318/envs/default.env b/appstore/ani-rss/1.1.319/envs/default.env similarity index 100% rename from appstore/ani-rss/1.1.318/envs/default.env rename to appstore/ani-rss/1.1.319/envs/default.env diff --git a/appstore/ani-rss/1.1.318/envs/global.env b/appstore/ani-rss/1.1.319/envs/global.env similarity index 100% rename from appstore/ani-rss/1.1.318/envs/global.env rename to appstore/ani-rss/1.1.319/envs/global.env diff --git a/appstore/ani-rss/1.1.318/scripts/init.sh b/appstore/ani-rss/1.1.319/scripts/init.sh similarity index 100% rename from appstore/ani-rss/1.1.318/scripts/init.sh rename to appstore/ani-rss/1.1.319/scripts/init.sh diff --git a/appstore/ani-rss/1.1.318/scripts/uninstall.sh b/appstore/ani-rss/1.1.319/scripts/uninstall.sh similarity index 100% rename from appstore/ani-rss/1.1.318/scripts/uninstall.sh rename to appstore/ani-rss/1.1.319/scripts/uninstall.sh diff --git a/appstore/ani-rss/1.1.318/scripts/upgrade.sh b/appstore/ani-rss/1.1.319/scripts/upgrade.sh similarity index 100% rename from appstore/ani-rss/1.1.318/scripts/upgrade.sh rename to appstore/ani-rss/1.1.319/scripts/upgrade.sh diff --git a/appstore/byte-muse/1.7.4/.env b/appstore/byte-muse/1.7.5/.env similarity index 100% rename from appstore/byte-muse/1.7.4/.env rename to appstore/byte-muse/1.7.5/.env diff --git a/appstore/byte-muse/1.7.4/data.yml b/appstore/byte-muse/1.7.5/data.yml similarity index 100% rename from appstore/byte-muse/1.7.4/data.yml rename to appstore/byte-muse/1.7.5/data.yml diff --git a/appstore/byte-muse/1.7.4/docker-compose.yml b/appstore/byte-muse/1.7.5/docker-compose.yml similarity index 94% rename from appstore/byte-muse/1.7.4/docker-compose.yml rename to appstore/byte-muse/1.7.5/docker-compose.yml index 81f1193c1..b76a523b4 100644 --- a/appstore/byte-muse/1.7.4/docker-compose.yml +++ b/appstore/byte-muse/1.7.5/docker-compose.yml @@ -7,7 +7,7 @@ services: env_file: - ./envs/global.env - .env - image: envyafish/byte-muse:1.7.4 + image: envyafish/byte-muse:1.7.5 labels: createdBy: Apps networks: diff --git a/appstore/byte-muse/1.7.4/envs/default.env b/appstore/byte-muse/1.7.5/envs/default.env similarity index 100% rename from appstore/byte-muse/1.7.4/envs/default.env rename to appstore/byte-muse/1.7.5/envs/default.env diff --git a/appstore/byte-muse/1.7.4/envs/global.env b/appstore/byte-muse/1.7.5/envs/global.env similarity index 100% rename from appstore/byte-muse/1.7.4/envs/global.env rename to appstore/byte-muse/1.7.5/envs/global.env diff --git a/appstore/byte-muse/1.7.4/scripts/init.sh b/appstore/byte-muse/1.7.5/scripts/init.sh similarity index 100% rename from appstore/byte-muse/1.7.4/scripts/init.sh rename to appstore/byte-muse/1.7.5/scripts/init.sh diff --git a/appstore/byte-muse/1.7.4/scripts/uninstall.sh b/appstore/byte-muse/1.7.5/scripts/uninstall.sh similarity index 100% rename from appstore/byte-muse/1.7.4/scripts/uninstall.sh rename to appstore/byte-muse/1.7.5/scripts/uninstall.sh diff --git a/appstore/byte-muse/1.7.4/scripts/upgrade.sh b/appstore/byte-muse/1.7.5/scripts/upgrade.sh similarity index 100% rename from appstore/byte-muse/1.7.4/scripts/upgrade.sh rename to appstore/byte-muse/1.7.5/scripts/upgrade.sh diff --git a/appstore/certimate/0.3.3/.env b/appstore/certimate/0.3.4/.env similarity index 100% rename from appstore/certimate/0.3.3/.env rename to appstore/certimate/0.3.4/.env diff --git a/appstore/certimate/0.3.3/data.yml b/appstore/certimate/0.3.4/data.yml similarity index 100% rename from appstore/certimate/0.3.3/data.yml rename to appstore/certimate/0.3.4/data.yml diff --git a/appstore/certimate/0.3.3/docker-compose.yml b/appstore/certimate/0.3.4/docker-compose.yml similarity index 90% rename from appstore/certimate/0.3.3/docker-compose.yml rename to appstore/certimate/0.3.4/docker-compose.yml index 74f105894..d79662675 100644 --- a/appstore/certimate/0.3.3/docker-compose.yml +++ b/appstore/certimate/0.3.4/docker-compose.yml @@ -7,7 +7,7 @@ services: env_file: - ./envs/global.env - .env - image: usual2970/certimate:0.3.3 + image: usual2970/certimate:v0.3.4 labels: createdBy: Apps networks: diff --git a/appstore/certimate/0.3.3/envs/default.env b/appstore/certimate/0.3.4/envs/default.env similarity index 100% rename from appstore/certimate/0.3.3/envs/default.env rename to appstore/certimate/0.3.4/envs/default.env diff --git a/appstore/certimate/0.3.3/envs/global.env b/appstore/certimate/0.3.4/envs/global.env similarity index 100% rename from appstore/certimate/0.3.3/envs/global.env rename to appstore/certimate/0.3.4/envs/global.env diff --git a/appstore/certimate/0.3.3/scripts/init.sh b/appstore/certimate/0.3.4/scripts/init.sh similarity index 100% rename from appstore/certimate/0.3.3/scripts/init.sh rename to appstore/certimate/0.3.4/scripts/init.sh diff --git a/appstore/certimate/0.3.3/scripts/uninstall.sh b/appstore/certimate/0.3.4/scripts/uninstall.sh similarity index 100% rename from appstore/certimate/0.3.3/scripts/uninstall.sh rename to appstore/certimate/0.3.4/scripts/uninstall.sh diff --git a/appstore/certimate/0.3.3/scripts/upgrade.sh b/appstore/certimate/0.3.4/scripts/upgrade.sh similarity index 100% rename from appstore/certimate/0.3.3/scripts/upgrade.sh rename to appstore/certimate/0.3.4/scripts/upgrade.sh diff --git a/appstore/mastodon/4.3.6/.env b/appstore/mastodon/4.3.6/.env new file mode 100644 index 000000000..0b1ed7269 --- /dev/null +++ b/appstore/mastodon/4.3.6/.env @@ -0,0 +1,72 @@ +# Postgres 服务 (前置检查) [必填] +PANEL_POSTGRES_TYPE=postgresql + +# Redis 服务 (前置检查) [必填] +PANEL_REDIS_TYPE=redis + +# 数据持久化路径 [必填] +MASTODON_ROOT_PATH=/home/mastodon + +# WebUI 端口 [必填] +PANEL_APP_PORT_HTTP=3000 + +# Stream 端口 [必填] +PANEL_APP_PORT_STREAM=4000 + +# 数据库加密密钥 [必填] +ACTIVE_RECORD_ENCRYPTION_DETERMINISTIC_KEY= + +# 数据库加密盐 [必填] +ACTIVE_RECORD_ENCRYPTION_KEY_DERIVATION_SALT= + +# 数据库加密主键 [必填] +ACTIVE_RECORD_ENCRYPTION_PRIMARY_KEY= + +# 密钥 [必填] +SECRET_KEY_BASE= + +# OTP 密钥 [必填] +OTP_SECRET= + +# 数据库 主机地址 [必填] +DB_HOST=127.0.0.1 + +# 数据库 端口 [必填] +DB_PORT=5432 + +# 数据库 名称 [必填] +DB_NAME=mastodon + +# 数据库 用户名 [必填] +DB_USER=mastodon + +# 数据库 密码 [必填] +DB_PASS= + +# Redis 主机 [必填] +REDIS_HOST=127.0.0.1 + +# Redis 端口 [必填] +REDIS_PORT=6379 + +# Redis 索引 (0-20) [必填] +REDIS_DB=0 + +# Redis 用户名 +REDIS_USERNAME= + +# Redis 密码 +REDIS_PASSWORD= + +# ES数据库 主机地址 +ES_HOST=127.0.0.1 + +# ES数据库 端口 +ES_PORT=9200 + +# ES数据库 用户名 +ES_USER=elastic + +# ES数据库 密码 +ES_PASS= + diff --git a/appstore/mastodon/4.3.6/data.yml b/appstore/mastodon/4.3.6/data.yml new file mode 100644 index 000000000..dd28335bb --- /dev/null +++ b/appstore/mastodon/4.3.6/data.yml @@ -0,0 +1,194 @@ +additionalProperties: + formFields: + - child: + default: "" + envKey: PANEL_POSTGRES_SERVICE + required: true + type: service + default: postgresql + envKey: PANEL_POSTGRES_TYPE + labelZh: Postgres 服务 (前置检查) + labelEn: Postgres Service (Pre-check) + required: true + type: apps + values: + - label: PostgreSQL + value: postgresql + - child: + default: "" + envKey: PANEL_REDIS_SERVICE + required: true + type: service + default: redis + envKey: PANEL_REDIS_TYPE + labelZh: Redis 服务 (前置检查) + labelEn: Redis Service (Pre-check) + required: true + type: apps + values: + - label: Redis + value: redis + - default: "/home/mastodon" + edit: true + envKey: MASTODON_ROOT_PATH + labelZh: 数据持久化路径 + labelEn: Data persistence path + required: true + type: text + - default: 3000 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelZh: WebUI 端口 + labelEn: WebUI port + required: true + rule: paramPort + type: number + - default: 4000 + edit: true + envKey: PANEL_APP_PORT_STREAM + labelZh: Stream 端口 + labelEn: Stream port + required: true + rule: paramPort + type: number + - default: "" + edit: true + envKey: ACTIVE_RECORD_ENCRYPTION_DETERMINISTIC_KEY + labelZh: 数据库加密密钥 + labelEn: Database encryption key + required: true + type: text + - default: "" + edit: true + envKey: ACTIVE_RECORD_ENCRYPTION_KEY_DERIVATION_SALT + labelZh: 数据库加密盐 + labelEn: Database encryption salt + required: true + type: text + - default: "" + edit: true + envKey: ACTIVE_RECORD_ENCRYPTION_PRIMARY_KEY + labelZh: 数据库加密主键 + labelEn: Database encryption primary key + required: true + type: text + - default: "" + edit: true + envKey: SECRET_KEY_BASE + labelZh: 密钥 + labelEn: Secret key + required: true + type: text + - default: "" + edit: true + envKey: OTP_SECRET + labelZh: OTP 密钥 + labelEn: OTP secret + required: true + type: text + - default: "127.0.0.1" + edit: true + envKey: DB_HOST + labelZh: 数据库 主机地址 + labelEn: Database Host + required: true + type: text + - default: 5432 + edit: true + envKey: DB_PORT + labelZh: 数据库 端口 + labelEn: Database Port + required: true + rule: paramPort + type: number + - default: "mastodon" + edit: true + envKey: DB_NAME + labelZh: 数据库 名称 + labelEn: Database Name + required: true + rule: paramCommon + type: text + - default: "mastodon" + edit: true + envKey: DB_USER + labelZh: 数据库 用户名 + labelEn: Database Username + required: true + type: text + - default: "" + edit: true + envKey: DB_PASS + labelZh: 数据库 密码 + labelEn: Database Password + random: true + required: true + rule: paramComplexity + type: password + - default: "127.0.0.1" + edit: true + envKey: REDIS_HOST + labelZh: Redis 主机 + labelEn: Redis Host + required: true + type: text + - default: 6379 + edit: true + envKey: REDIS_PORT + labelZh: Redis 端口 + labelEn: Redis Port + required: true + rule: paramPort + type: number + - default: 0 + edit: true + envKey: REDIS_DB + labelZh: Redis 索引 (0-20) + labelEn: Redis Index (0-20) + required: true + type: number + - default: "" + edit: true + envKey: REDIS_USERNAME + labelZh: Redis 用户名 + labelEn: Redis UserName + required: false + type: text + - default: "" + edit: true + envKey: REDIS_PASSWORD + labelZh: Redis 密码 + labelEn: Redis Password + required: false + type: password + - default: "127.0.0.1" + edit: true + envKey: ES_HOST + labelZh: ES数据库 主机地址 + labelEn: Database Host + required: false + type: text + - default: 9200 + edit: true + envKey: ES_PORT + labelZh: ES数据库 端口 + labelEn: Database Port + required: false + rule: paramPort + type: number + - default: "elastic" + edit: true + envKey: ES_USER + labelZh: ES数据库 用户名 + labelEn: Database Username + required: false + type: text + - default: "" + edit: true + envKey: ES_PASS + labelZh: ES数据库 密码 + labelEn: Database Password + random: true + required: false + rule: paramComplexity + type: password diff --git a/appstore/mastodon/4.3.6/docker-compose.yml b/appstore/mastodon/4.3.6/docker-compose.yml new file mode 100644 index 000000000..622c7676a --- /dev/null +++ b/appstore/mastodon/4.3.6/docker-compose.yml @@ -0,0 +1,53 @@ +networks: + 1panel-network: + external: true +services: + mastodon: + command: bundle exec puma -C config/puma.rb + container_name: mastodon + env_file: + - ./envs/global.env + - ./envs/mastodon.env + - .env + environment: + - TZ=Asia/Shanghai + image: ghcr.io/mastodon/mastodon:v4.3.6 + labels: + createdBy: Apps + networks: + - 1panel-network + ports: + - ${PANEL_APP_PORT_HTTP}:3000 + restart: always + volumes: + - ${MASTODON_ROOT_PATH}/system:/mastodon/public/system + sidekiq-mastodon: + command: bundle exec sidekiq + container_name: sidekiq-mastodon + env_file: + - ./envs/global.env + - ./envs/mastodon.env + - .env + environment: + - TZ=Asia/Shanghai + image: ghcr.io/mastodon/mastodon:v4.3.6 + networks: + - 1panel-network + restart: always + volumes: + - ${MASTODON_ROOT_PATH}/system:/mastodon/public/system + streaming-mastodon: + command: node ./streaming/index.js + container_name: streaming-mastodon + env_file: + - ./envs/global.env + - ./envs/mastodon.env + - .env + environment: + - TZ=Asia/Shanghai + image: ghcr.io/mastodon/mastodon-streaming:v4.3.6 + networks: + - 1panel-network + ports: + - ${PANEL_APP_PORT_STREAM}:4000 + restart: always diff --git a/appstore/mastodon/4.3.6/envs/default.env b/appstore/mastodon/4.3.6/envs/default.env new file mode 100644 index 000000000..cd05f46e6 --- /dev/null +++ b/appstore/mastodon/4.3.6/envs/default.env @@ -0,0 +1,2 @@ +# copyright© 2024 XinJiang Ms Studio +ENV_FILE=.env diff --git a/appstore/mastodon/4.3.6/envs/global.env b/appstore/mastodon/4.3.6/envs/global.env new file mode 100644 index 000000000..e10989fe4 --- /dev/null +++ b/appstore/mastodon/4.3.6/envs/global.env @@ -0,0 +1,2 @@ +# copyright© 2024 XinJiang Ms Studio +TZ=Asia/Shanghai diff --git a/appstore/mastodon/4.3.6/envs/mastodon.env b/appstore/mastodon/4.3.6/envs/mastodon.env new file mode 100644 index 000000000..12ab2b6dc --- /dev/null +++ b/appstore/mastodon/4.3.6/envs/mastodon.env @@ -0,0 +1,109 @@ +# This is a sample configuration file. You can generate your configuration +# with the `bundle exec rails mastodon:setup` interactive setup wizard, but to customize +# your setup even further, you'll need to edit it manually. This sample does +# not demonstrate all available configuration options. Please look at +# https://docs.joinmastodon.org/admin/config/ for the full documentation. + +# Note that this file accepts slightly different syntax depending on whether +# you are using `docker-compose` or not. In particular, if you use +# `docker-compose`, the value of each declared variable will be taken verbatim, +# including surrounding quotes. +# See: https://github.com/mastodon/mastodon/issues/16895 + +# Federation +# ---------- +# This identifies your server and cannot be changed safely later +# ---------- +LOCAL_DOMAIN=example.com + +# Redis +# ----- +REDIS_HOST=localhost +REDIS_PORT=6379 + +# PostgreSQL +# ---------- +DB_HOST=/var/run/postgresql +DB_USER=mastodon +DB_NAME=mastodon_production +DB_PASS= +DB_PORT=5432 + +# Elasticsearch (optional) +# ------------------------ +ES_ENABLED=true +ES_HOST=localhost +ES_PORT=9200 +# Authentication for ES (optional) +ES_USER=elastic +ES_PASS=password + +# Secrets +# ------- +# Make sure to use `bundle exec rails secret` to generate secrets +# ------- +SECRET_KEY_BASE= +OTP_SECRET= + +# Encryption secrets +# ------------------ +# Must be available (and set to same values) for all server processes +# These are private/secret values, do not share outside hosting environment +# Use `bin/rails db:encryption:init` to generate fresh secrets +# Do NOT change these secrets once in use, as this would cause data loss and other issues +# ------------------ +# ACTIVE_RECORD_ENCRYPTION_DETERMINISTIC_KEY= +# ACTIVE_RECORD_ENCRYPTION_KEY_DERIVATION_SALT= +# ACTIVE_RECORD_ENCRYPTION_PRIMARY_KEY= + +# Web Push +# -------- +# Generate with `bundle exec rails mastodon:webpush:generate_vapid_key` +# -------- +VAPID_PRIVATE_KEY= +VAPID_PUBLIC_KEY= + +# Sending mail +# ------------ +SMTP_SERVER= +SMTP_PORT=587 +SMTP_LOGIN= +SMTP_PASSWORD= +SMTP_FROM_ADDRESS=notifications@example.com + +# File storage (optional) +# ----------------------- +S3_ENABLED=true +S3_BUCKET=files.example.com +AWS_ACCESS_KEY_ID= +AWS_SECRET_ACCESS_KEY= +S3_ALIAS_HOST=files.example.com + +# IP and session retention +# ----------------------- +# Make sure to modify the scheduling of ip_cleanup_scheduler in config/sidekiq.yml +# to be less than daily if you lower IP_RETENTION_PERIOD below two days (172800). +# ----------------------- +IP_RETENTION_PERIOD=31556952 +SESSION_RETENTION_PERIOD=31556952 + +# Fetch All Replies Behavior +# -------------------------- +# When a user expands a post (DetailedStatus view), fetch all of its replies +# (default: false) +FETCH_REPLIES_ENABLED=false + +# Period to wait between fetching replies (in minutes) +FETCH_REPLIES_COOLDOWN_MINUTES=15 + +# Period to wait after a post is first created before fetching its replies (in minutes) +FETCH_REPLIES_INITIAL_WAIT_MINUTES=5 + +# Max number of replies to fetch - total, recursively through a whole reply tree +FETCH_REPLIES_MAX_GLOBAL=1000 + +# Max number of replies to fetch - for a single post +FETCH_REPLIES_MAX_SINGLE=500 + +# Max number of replies Collection pages to fetch - total +FETCH_REPLIES_MAX_PAGES=500 diff --git a/appstore/mastodon/4.3.6/scripts/init.sh b/appstore/mastodon/4.3.6/scripts/init.sh new file mode 100644 index 000000000..a1156ba97 --- /dev/null +++ b/appstore/mastodon/4.3.6/scripts/init.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +if [ -f .env ]; then + source .env + + # setup-1 add default values + CURRENT_DIR=$(pwd) + sed -i '/^ENV_FILE=/d' .env + sed -i '/^GLOBAL_ENV_FILE=/d' .env + echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env + echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env + echo "APP_ENV_FILE=${CURRENT_DIR}/envs/mastodon.env" >> .env + + # setup-2 add update permission + chown -R 991:991 "$MASTODON_ROOT_PATH" + + echo "Check Finish." + +else + echo "Error: .env file not found." +fi diff --git a/appstore/mastodon/4.3.6/scripts/uninstall.sh b/appstore/mastodon/4.3.6/scripts/uninstall.sh new file mode 100644 index 000000000..c86c4fbca --- /dev/null +++ b/appstore/mastodon/4.3.6/scripts/uninstall.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +if [ -f .env ]; then + source .env + + echo "Check Finish." + +else + echo "Error: .env file not found." +fi diff --git a/appstore/mastodon/4.3.6/scripts/upgrade.sh b/appstore/mastodon/4.3.6/scripts/upgrade.sh new file mode 100644 index 000000000..a1156ba97 --- /dev/null +++ b/appstore/mastodon/4.3.6/scripts/upgrade.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +if [ -f .env ]; then + source .env + + # setup-1 add default values + CURRENT_DIR=$(pwd) + sed -i '/^ENV_FILE=/d' .env + sed -i '/^GLOBAL_ENV_FILE=/d' .env + echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env + echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env + echo "APP_ENV_FILE=${CURRENT_DIR}/envs/mastodon.env" >> .env + + # setup-2 add update permission + chown -R 991:991 "$MASTODON_ROOT_PATH" + + echo "Check Finish." + +else + echo "Error: .env file not found." +fi diff --git a/appstore/mastodon/README.md b/appstore/mastodon/README.md new file mode 100644 index 000000000..88fbd12c2 --- /dev/null +++ b/appstore/mastodon/README.md @@ -0,0 +1,66 @@ +# Mastodon (长毛象) + +自由开源的去中心化的分布式微博客社交网络 + +![Mastodon](https://file.lifebus.top/imgs/mastodon_cover.png) + +![](https://img.shields.io/badge/%E6%96%B0%E7%96%86%E8%90%8C%E6%A3%AE%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91%E5%B7%A5%E4%BD%9C%E5%AE%A4-%E6%8F%90%E4%BE%9B%E6%8A%80%E6%9C%AF%E6%94%AF%E6%8C%81-blue) + +## 简介 + +Mastodon 是一款基于 ActivityPub 的免费开源社交网络服务器,用户可以关注好友并发现新朋友。在 Mastodon +上,用户可以发布任何他们想要的内容:链接、图片、文本和视频。所有 Mastodon 服务器都可以作为联合网络互操作(一台服务器上的用户可以与另一台服务器上的用户无缝通信,包括实现 +ActivityPub 的非 Mastodon 软件!) + +## 特征 + +### 不受供应商限制 + +可与任何符合要求的平台完全互操作- 不一定是 Mastodon;无论实现 ActivityPub 的是什么,都是社交网络的一部分!了解更多 + +### 实时、按时间顺序排列的时间线更新 + +您关注的人的更新会通过 WebSockets 实时显示在 UI 中。还有流水线视图! + +### 媒体附件,如图片和短视频 + +上传和查看更新中附加的图片和 WebM/MP4 视频。没有音轨的视频将被视为 GIF;普通视频将连续循环播放! + +### 安全和审核工具 + +Mastodon 包括私人帖子、锁定帐户、短语过滤、静音、屏蔽和各种其他功能,以及报告和审核系统。了解更多 + +### OAuth2 和简单的 REST API + +Mastodon 充当 OAuth2 提供商,因此第三方应用可以使用 REST 和 Streaming +API。这带来了一个拥有众多选择的丰富应用生态系统! + +## 安装说明 + +> 项目使用 软件版本 +> +> Redis 4+ +> +> PostgreSQL 12+ + +### 密钥 + +您必须提供唯一的加密密钥:`ACTIVE_RECORD_ENCRYPTION_PRIMARY_KEY` `ACTIVE_RECORD_ENCRYPTION_DETERMINISTIC_KEY` `ACTIVE_RECORD_ENCRYPTION_KEY_DERIVATION_SALT` + +您可以通过命令:`bin/rails db:encryption:init` 生成。 + +您也可以使用终端的 `openssl` 命令生成: + +```bash +echo "ACTIVE_RECORD_ENCRYPTION_PRIMARY_KEY=$(openssl rand -hex 32)" +echo "ACTIVE_RECORD_ENCRYPTION_DETERMINISTIC_KEY=$(openssl rand -hex 32)" +echo "ACTIVE_RECORD_ENCRYPTION_KEY_DERIVATION_SALT=$(openssl rand -hex 32)" +``` + +### 其他密钥 + +安装后,进入安装目录,查看 `env/mastodon.env` 文件,里面有其他密钥的配置说明,在您有需要的情况下。 + +--- + +![Ms Studio](https://file.lifebus.top/imgs/ms_blank_001.png) diff --git a/appstore/mastodon/data.yml b/appstore/mastodon/data.yml new file mode 100644 index 000000000..2900e80b4 --- /dev/null +++ b/appstore/mastodon/data.yml @@ -0,0 +1,14 @@ +additionalProperties: + key: mastodon + name: Mastodon (长毛象) + tags: + - WebSite + - Local + shortDescZh: 自由开源的去中心化的分布式微博客社交网络 + shortDescEn: Your self-hosted, globally interconnected microblogging community + type: website + crossVersionUpdate: true + limit: 0 + website: https://joinmastodon.org/ + github: https://github.com/mastodon/mastodon/ + document: https://docs.joinmastodon.org/ diff --git a/appstore/mastodon/logo.png b/appstore/mastodon/logo.png new file mode 100644 index 000000000..e80d6c710 Binary files /dev/null and b/appstore/mastodon/logo.png differ diff --git a/dockge/ani-rss/docker-compose.yml b/dockge/ani-rss/docker-compose.yml index 36ff1c764..f6a3ad1c0 100644 --- a/dockge/ani-rss/docker-compose.yml +++ b/dockge/ani-rss/docker-compose.yml @@ -11,7 +11,7 @@ services: - PORT=7789 - CONFIG=/config - TZ=Asia/Shanghai - image: wushuo894/ani-rss:v1.1.318 + image: wushuo894/ani-rss:v1.1.319 labels: createdBy: Apps networks: diff --git a/dockge/byte-muse/docker-compose.yml b/dockge/byte-muse/docker-compose.yml index 81f1193c1..b76a523b4 100644 --- a/dockge/byte-muse/docker-compose.yml +++ b/dockge/byte-muse/docker-compose.yml @@ -7,7 +7,7 @@ services: env_file: - ./envs/global.env - .env - image: envyafish/byte-muse:1.7.4 + image: envyafish/byte-muse:1.7.5 labels: createdBy: Apps networks: diff --git a/dockge/certimate/docker-compose.yml b/dockge/certimate/docker-compose.yml index 74f105894..d79662675 100644 --- a/dockge/certimate/docker-compose.yml +++ b/dockge/certimate/docker-compose.yml @@ -7,7 +7,7 @@ services: env_file: - ./envs/global.env - .env - image: usual2970/certimate:0.3.3 + image: usual2970/certimate:v0.3.4 labels: createdBy: Apps networks: diff --git a/dockge/mastodon/.env b/dockge/mastodon/.env new file mode 100644 index 000000000..0b1ed7269 --- /dev/null +++ b/dockge/mastodon/.env @@ -0,0 +1,72 @@ +# Postgres 服务 (前置检查) [必填] +PANEL_POSTGRES_TYPE=postgresql + +# Redis 服务 (前置检查) [必填] +PANEL_REDIS_TYPE=redis + +# 数据持久化路径 [必填] +MASTODON_ROOT_PATH=/home/mastodon + +# WebUI 端口 [必填] +PANEL_APP_PORT_HTTP=3000 + +# Stream 端口 [必填] +PANEL_APP_PORT_STREAM=4000 + +# 数据库加密密钥 [必填] +ACTIVE_RECORD_ENCRYPTION_DETERMINISTIC_KEY= + +# 数据库加密盐 [必填] +ACTIVE_RECORD_ENCRYPTION_KEY_DERIVATION_SALT= + +# 数据库加密主键 [必填] +ACTIVE_RECORD_ENCRYPTION_PRIMARY_KEY= + +# 密钥 [必填] +SECRET_KEY_BASE= + +# OTP 密钥 [必填] +OTP_SECRET= + +# 数据库 主机地址 [必填] +DB_HOST=127.0.0.1 + +# 数据库 端口 [必填] +DB_PORT=5432 + +# 数据库 名称 [必填] +DB_NAME=mastodon + +# 数据库 用户名 [必填] +DB_USER=mastodon + +# 数据库 密码 [必填] +DB_PASS= + +# Redis 主机 [必填] +REDIS_HOST=127.0.0.1 + +# Redis 端口 [必填] +REDIS_PORT=6379 + +# Redis 索引 (0-20) [必填] +REDIS_DB=0 + +# Redis 用户名 +REDIS_USERNAME= + +# Redis 密码 +REDIS_PASSWORD= + +# ES数据库 主机地址 +ES_HOST=127.0.0.1 + +# ES数据库 端口 +ES_PORT=9200 + +# ES数据库 用户名 +ES_USER=elastic + +# ES数据库 密码 +ES_PASS= + diff --git a/dockge/mastodon/docker-compose.yml b/dockge/mastodon/docker-compose.yml new file mode 100644 index 000000000..622c7676a --- /dev/null +++ b/dockge/mastodon/docker-compose.yml @@ -0,0 +1,53 @@ +networks: + 1panel-network: + external: true +services: + mastodon: + command: bundle exec puma -C config/puma.rb + container_name: mastodon + env_file: + - ./envs/global.env + - ./envs/mastodon.env + - .env + environment: + - TZ=Asia/Shanghai + image: ghcr.io/mastodon/mastodon:v4.3.6 + labels: + createdBy: Apps + networks: + - 1panel-network + ports: + - ${PANEL_APP_PORT_HTTP}:3000 + restart: always + volumes: + - ${MASTODON_ROOT_PATH}/system:/mastodon/public/system + sidekiq-mastodon: + command: bundle exec sidekiq + container_name: sidekiq-mastodon + env_file: + - ./envs/global.env + - ./envs/mastodon.env + - .env + environment: + - TZ=Asia/Shanghai + image: ghcr.io/mastodon/mastodon:v4.3.6 + networks: + - 1panel-network + restart: always + volumes: + - ${MASTODON_ROOT_PATH}/system:/mastodon/public/system + streaming-mastodon: + command: node ./streaming/index.js + container_name: streaming-mastodon + env_file: + - ./envs/global.env + - ./envs/mastodon.env + - .env + environment: + - TZ=Asia/Shanghai + image: ghcr.io/mastodon/mastodon-streaming:v4.3.6 + networks: + - 1panel-network + ports: + - ${PANEL_APP_PORT_STREAM}:4000 + restart: always diff --git a/dockge/mastodon/envs/default.env b/dockge/mastodon/envs/default.env new file mode 100644 index 000000000..cd05f46e6 --- /dev/null +++ b/dockge/mastodon/envs/default.env @@ -0,0 +1,2 @@ +# copyright© 2024 XinJiang Ms Studio +ENV_FILE=.env diff --git a/dockge/mastodon/envs/global.env b/dockge/mastodon/envs/global.env new file mode 100644 index 000000000..e10989fe4 --- /dev/null +++ b/dockge/mastodon/envs/global.env @@ -0,0 +1,2 @@ +# copyright© 2024 XinJiang Ms Studio +TZ=Asia/Shanghai diff --git a/dockge/mastodon/envs/mastodon.env b/dockge/mastodon/envs/mastodon.env new file mode 100644 index 000000000..12ab2b6dc --- /dev/null +++ b/dockge/mastodon/envs/mastodon.env @@ -0,0 +1,109 @@ +# This is a sample configuration file. You can generate your configuration +# with the `bundle exec rails mastodon:setup` interactive setup wizard, but to customize +# your setup even further, you'll need to edit it manually. This sample does +# not demonstrate all available configuration options. Please look at +# https://docs.joinmastodon.org/admin/config/ for the full documentation. + +# Note that this file accepts slightly different syntax depending on whether +# you are using `docker-compose` or not. In particular, if you use +# `docker-compose`, the value of each declared variable will be taken verbatim, +# including surrounding quotes. +# See: https://github.com/mastodon/mastodon/issues/16895 + +# Federation +# ---------- +# This identifies your server and cannot be changed safely later +# ---------- +LOCAL_DOMAIN=example.com + +# Redis +# ----- +REDIS_HOST=localhost +REDIS_PORT=6379 + +# PostgreSQL +# ---------- +DB_HOST=/var/run/postgresql +DB_USER=mastodon +DB_NAME=mastodon_production +DB_PASS= +DB_PORT=5432 + +# Elasticsearch (optional) +# ------------------------ +ES_ENABLED=true +ES_HOST=localhost +ES_PORT=9200 +# Authentication for ES (optional) +ES_USER=elastic +ES_PASS=password + +# Secrets +# ------- +# Make sure to use `bundle exec rails secret` to generate secrets +# ------- +SECRET_KEY_BASE= +OTP_SECRET= + +# Encryption secrets +# ------------------ +# Must be available (and set to same values) for all server processes +# These are private/secret values, do not share outside hosting environment +# Use `bin/rails db:encryption:init` to generate fresh secrets +# Do NOT change these secrets once in use, as this would cause data loss and other issues +# ------------------ +# ACTIVE_RECORD_ENCRYPTION_DETERMINISTIC_KEY= +# ACTIVE_RECORD_ENCRYPTION_KEY_DERIVATION_SALT= +# ACTIVE_RECORD_ENCRYPTION_PRIMARY_KEY= + +# Web Push +# -------- +# Generate with `bundle exec rails mastodon:webpush:generate_vapid_key` +# -------- +VAPID_PRIVATE_KEY= +VAPID_PUBLIC_KEY= + +# Sending mail +# ------------ +SMTP_SERVER= +SMTP_PORT=587 +SMTP_LOGIN= +SMTP_PASSWORD= +SMTP_FROM_ADDRESS=notifications@example.com + +# File storage (optional) +# ----------------------- +S3_ENABLED=true +S3_BUCKET=files.example.com +AWS_ACCESS_KEY_ID= +AWS_SECRET_ACCESS_KEY= +S3_ALIAS_HOST=files.example.com + +# IP and session retention +# ----------------------- +# Make sure to modify the scheduling of ip_cleanup_scheduler in config/sidekiq.yml +# to be less than daily if you lower IP_RETENTION_PERIOD below two days (172800). +# ----------------------- +IP_RETENTION_PERIOD=31556952 +SESSION_RETENTION_PERIOD=31556952 + +# Fetch All Replies Behavior +# -------------------------- +# When a user expands a post (DetailedStatus view), fetch all of its replies +# (default: false) +FETCH_REPLIES_ENABLED=false + +# Period to wait between fetching replies (in minutes) +FETCH_REPLIES_COOLDOWN_MINUTES=15 + +# Period to wait after a post is first created before fetching its replies (in minutes) +FETCH_REPLIES_INITIAL_WAIT_MINUTES=5 + +# Max number of replies to fetch - total, recursively through a whole reply tree +FETCH_REPLIES_MAX_GLOBAL=1000 + +# Max number of replies to fetch - for a single post +FETCH_REPLIES_MAX_SINGLE=500 + +# Max number of replies Collection pages to fetch - total +FETCH_REPLIES_MAX_PAGES=500