自托管社交媒体管理软件Mixpost

news2024/12/28 5:17:40

在这里插入图片描述

本文软件应网友 ilikeit 的要求而折腾;

什么是 Mixpost ?

Mixpost 是一款强大且多功能的社交媒体管理软件,旨在简化社交媒体操作并增强内容营销策略。可以让您轻松地在一个地方创建、安排、发布和管理社交媒体内容,没有任何限制或每月订阅费。

软件特点:

  • 简化的社交帐户管理: 将所有社交媒体帐户集中在一个地方,以实现更智能、更高效的管理。

  • 高级分析: 深入了解受众的行为和偏好。Mixpost 根据共享的数据为每个平台提供详细的分析。

  • 帖子版本和条件: 为每个社交网络定制您的内容,并自动对高性能帖子进行后续评论,以增强参与度和影响力。

  • 高效媒体库: 快速访问和重复使用图像、GIF 和视频等媒体文件,并与库存图像源集成以获取多样化内容。

  • 团队协作和工作区: 通过专用工作区促进团队协作。讨论想法、管理任务和监控绩效,所有这些都在一个集中的平台上完成。

  • 队列和日历管理: 建立自然的内容发布时间表,并通过易于使用的日历直观地展示您的策略。

  • 可定制的帖子模板: 通过可重复使用的帖子模板提高效率,非常适合保持整个社交媒体渠道的一致性。

  • 动态变量和主题标签组: 插入动态文本并战略性地组织主题标签,以提高帖子效果。

准备

Mixpost 只支持 SSL 协议,比如你访问 http://群晖IP:9020 会自动t跳转到 https://群晖IP:9020/mixpost/login,从而导致错误

在这里插入图片描述

最近 cloudflared 总是连不上,所以这次用了 tailscale + npm 来验证,这是个内网的方案,所以本文只有安装,不涉及功能

文章传送门:用自定义域名访问tailscale节点

反向代理

假设我们实际访问地址为: https://mixpost.xxsu.cf

域名局域网地址备注
mixpost.xxsu.cfhttp://192.168.0.197:9020Mixpost 的访问地址

npm 中的设置

SSL 都勾选了

安装

在群晖上以 Docker 方式安装。

mixpost 有三个版本,分别是 Mixpost LiteMixpost ProMixpost Enterprise,后两个都需要先申请 license

在注册表中搜索 mixpost ,选择第一个 inovector/mixpost,版本选择 latest

本文写作时, Lite 版的latest 版本对应为 v1.7.1

涉及到 3 个容器,采用 docker-compose 方式安装,参照了官方的文档:https://docs.mixpost.app/enterprise/installation/docker

env.txt

改名是为了方便在 Filestation 编辑修改

# The name of your application.  
APP_NAME=Mixpost  
  
# Key used to encrypt and decrypt sensitive data. Generate this using the following tool:  
# https://mixpost.app/tools/encryption-key-generator  
APP_KEY=base64:vrBakOK2znbnc+z9IegfB6yn9yKpXnNybSDJlw7Q9Tk=
  
# Debug mode setting. Set to `false` for production environments.  
APP_DEBUG=false
  
# Your app's domain or subdomain, without the 'http://' or 'https://' prefix.  
APP_DOMAIN=mixpost.xxsu.cf

# Full application URL is automatically configured; no modification required.  
APP_URL=https://${APP_DOMAIN}  
  
# MySQL connection setup.  
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=mixpost_db
DB_USERNAME=mixpost_user
DB_PASSWORD=mixpost_123456

# Specify the email address to be used for SSL certificate registration and notifications.  
# SSL_EMAIL=wbsu2003@gmail.com

变量都有说明,捡主要的说一下

  • APP_DOMAIN:填入我们在前面设置的域名
  • APP_KEY:有两种方式生成,一种是直接访问 https://mixpost.app/tools/encryption-key-generator ,将生成的 key 替换到 APP_KEY

另一种是直接留空,等容器启动后,进入容器后执行

# 生成应用程序密钥  
php artisan key:generate

相对来说,第一种更简单一些

更多环境变量的说明,请参考官方文档:https://docs.mixpost.app/lite/configuration/environment-variables

docker-compose.yml

将下面的内容保存为 docker-compose.yml 文件

version: '3.1'

services:
    mixpost:
        image: inovector/mixpost:latest
        container_name: mixpost-app
        restart: unless-stopped
        env_file:
            - env.txt
        ports:
            - 9020:80
        volumes:
            - ./storage:/var/www/html/storage/app
            - ./logs:/var/www/html/storage/logs
        depends_on:
            - mysql
            - redis 
 
    mysql:
        #image: 'mysql/mysql-server:8.0'
        image: 'mysql:8.0'
        container_name: mixpost-mysql
        restart: unless-stopped
        # ports:
        #     - 3309:3306
        environment:
            MYSQL_DATABASE: ${DB_DATABASE}
            MYSQL_USER: ${DB_USERNAME}
            MYSQL_PASSWORD: ${DB_PASSWORD}
            MYSQL_ROOT_PASSWORD: ${DB_PASSWORD}
        volumes:
            - ./mysql:/var/lib/mysql
        healthcheck:
            test: ["CMD", "mysqladmin", "ping", "-p ${DB_PASSWORD}"]
            retries: 3
            timeout: 5s

    redis:
        image: 'redis:latest'
        container_name: mixpost-redis
        restart: unless-stopped
        command: redis-server --appendonly yes --replica-read-only no
        volumes:
            - ./redis:/data
        healthcheck:
            test: ["CMD", "redis-cli", "ping"]
            retries: 3
            timeout: 5s

为了省事,数据库老苏没用 mysql/mysql-server:8.0,而是用了机器中已有的 mysql:8.0,这两个镜像有什么区别?是否会导致问题,老苏也不是太清楚。如果不放心,建议还是更换成官方要求的镜像吧

然后执行下面的命令

# 新建文件夹 mixpost 和 子目录
mkdir -p /volume1/docker/mixpost/{logs,mysql,redis,storage}

# 进入 mixpost 目录
cd /volume1/docker/mixpost

# 修改目录权限
chmod -R 775 storage

# 将 docker-compose.yml 放入当前目录

# 一键启动
docker-compose --env-file env.txt up -d

运行

按我们前面 APP_DOMAIN 中的设置,在浏览器中输入 https://域名 就能看到登录界面

系统提供了一个默认用户

Email:admin@example.com
Password:changeme

如果你想用自己的用户名登录,可以执行下面的操作

# 进入容器  
docker exec --user root -it mixpost-app /bin/bash  

# 创建一个用户
php artisan mixpost-auth:create

登录成功后的主界面

ADD ACCOUNTS 添加社交账号

  • CONFIGURE SERVICES 设置第三方服务的凭证

  • Add account 设置 Mastodon

故障排除

如果出现异常情况

  • 首先应该查看容器的状态是否正常

  • 其次查看容器的日志

  • 最后要看看 laravel.log

Timed out

多容器启动时,比较容易出现超时,尤其是老苏这种机械硬盘的老机器

可以将 COMPOSE_HTTP_TIMEOUT 的值设大一点

# 默认值是 60
export COMPOSE_HTTP_TIMEOUT=1200

Internal error

登录后显示下面这种情况

经查 laravel.log ,显示是数据库 Connection refused,说明数据库没有连上,需要检查 DB_HOSTDB_PORT 等数据库的相关设置是否正确

登录失败

这个说明数据库连接没问题,但是数据库中没有相应的表单和记录,原因不清楚,可以进容器做 migrate

# 进入容器  
docker exec --user root -it mixpost-app /bin/bash  
  
# 运行数据库迁移  
php artisan migrate

老苏只能列一些自己遇到的问题,其他的请查阅官方的问题排查指南:https://docs.mixpost.app/troubleshooting/

参考文档

inovector/mixpost: Mixpost - Self-hosted social media management software (Buffer alternative)
地址:https://github.com/inovector/mixpost

Self-hosted, Open Source Social Media Management - Mixpost
地址:https://mixpost.app/

Mixpost: Comprehensive Self-hosted Social Media Management Software
地址:https://docs.mixpost.app/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1940422.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言 | Leetcode C语言题解之第242题有效的字母异位词

题目&#xff1a; 题解&#xff1a; bool isAnagram(char* s, char* t) {int len_s strlen(s), len_t strlen(t);if (len_s ! len_t) {return false;}int table[26];memset(table, 0, sizeof(table));for (int i 0; i < len_s; i) {table[s[i] - a];}for (int i 0; i &…

Java开发之Java线程池

#来自ゾフィー&#xff08;佐菲&#xff09; 1 简介 在需要异步或者并发编程中&#xff0c;常常使用线程池&#xff0c;所谓线程池&#xff0c;就是事先创建好一堆线程&#xff0c;装到一个池子里面&#xff0c;需要用到时候取出来&#xff0c;这样带来了以下的好处&#xff1a…

用ComfyUI安装可图Kolors大模型做手机壁纸

一、Kolors简介 国内科技公司快手在人工智能领域取得了显著进展&#xff0c;特别推出了「可图 Kolors」这一开源模型&#xff0c;它在图像生成质量上超越了SD3&#xff0c;与Midjourney v6模型相媲美&#xff0c;并支持中文提示词识别与生成中文字符&#xff0c;成为国产AI绘画…

【STM32】理解时钟树(图示分析)

文章目录 时钟系统什么是时钟时钟树简化图示类比示例时钟树详解时钟源系统时钟配置各总线时钟外设时钟 时钟系统 什么是时钟 时钟在电子和计算机系统中指的是生成周期性信号的电路或设备&#xff0c;这种周期性信号用于同步系统内的各种操作。时钟信号通常是方波&#xff0c;…

YOLO 模型基础入门及官方示例演示

文章目录 Github官网简介模式数据集Python 环境Conda 环境Docker 环境部署 CPU 版本官方 CLI 示例官方 Python 示例 任务目标检测姿势估计图像分类 Ultralytics HUB视频流示例 Github https://github.com/ultralytics/ultralytics 官网 https://docs.ultralytics.com/zhhttp…

图像生成(Text-to-Image)发展脉络

这篇博客对 图像生成&#xff08;image generation&#xff09; 领域的经典工作发展进行了梳理&#xff0c;包括重要的一些改进&#xff0c;目的是帮助读者对此领域有一个整体的发展方向把握&#xff0c;并非是对每个工作的详细介绍。 脉络发展&#xff08;时间顺序&#xff0…

13.5.【C语言】二维数组

接第13篇&#xff08;http://t.csdnimg.cn/TioJH&#xff09; 把一维数组做为数组的元素&#xff0c;这时候就是二维数组&#xff0c;二维数组作为数组元素的数组被称为三维数组&#xff0c;二维数组以上的数组统称为多维数组。 01.创建 格式&#xff1a; 数据类型 数组名[…

GESP CCF 图形化编程四级认证真题 2024年6月

一、单选题&#xff08;共 10 题&#xff0c;每题 2 分&#xff0c;共 30 分&#xff09; 题号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 答案 C B C D C D A B D C C D A A B 1、小…

Java语言程序设计基础篇_编程练习题**15.12(几何问题:是否在圆内)

**15.12(几何问题:是否在圆内) 请编写一个程序&#xff0c;绘制一个圆心在(100, 60)而半径为50的固定的圆。当鼠标移动时&#xff0c;显示一条消息表示鼠标点是在圆内还是在圆外&#xff0c;如图15-27a所示 答题思路&#xff1a; 新建一个面板Pane(),一个Circle(100&#xff…

七天打造一套量化交易系统:Day1-数据分类、获取、清洗与存储

七天打造一套量化交易系统&#xff1a;Day1-数据分类、获取、清洗与存储 数据是量化交易的基础&#xff0c;重要性不言而喻。无论是股票、期货、期权、基金、ETF等等&#xff0c;甚至包括比特币&#xff0c;这些投资标的历史行情数据都可以用作回测分析&#xff0c;本篇将分享…

Python测试服务器连接的实战代码

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

2024最佳游戏引擎排行

游戏产业几十年来一直是一个大生意&#xff0c;而且发展势头迅猛。据估计&#xff0c;全球游戏市场在 2025 年每年将达到 5031.4 亿美元&#xff0c;2023 年为 3960 亿美元。 尽管如今有市面上有各种各样的解决方案&#xff0c;但游戏开发人员和管理者在选择适合他们需求的游戏…

【基于netty+zookeeper的rpc远程调用框架】首篇——缘起

&#x1f43c;作者简介&#xff1a;一名大三在校生&#x1f38b; 空有想法&#xff0c;没有实践 文章目录 第一章 概述缘起一、为什么要手写一个rpc项目二、什么是rpc三、rpc怎么使用四、rpc的通信流程 欢迎添加微信&#xff0c;加入我的核心小队&#xff0c;请备注来意 第一章…

NCRE1-2 管理和运营宽带城域网的关键技术

是记录&#xff0c;会有错误 网络管理 这个喜欢考选择题 带内网络管理 用传统的电信网络通过 D C N ( D a t a C o m m u n i c a t i o n N e t w o r k ) DCN(Data\ Communication\ Network) DCN(Data Communication Network)或 P S I N ( P u b l i c S w i t c h T e l …

Java特性与快速入门(JDK,JRE,JVM与hello world)

目录 1.Java重要特点 2.Java运行机制及运行过程 跨平台性 3.什么是JDK,JRE 4.JDK,JRE和JVM的包含关系 5.Java快速入门 输出 hello world&#xff01; 代码示例&#xff1a; 原理讲解&#xff1a; 练习 代码示例&#xff1a; 1.Java重要特点 2.Java运行机制及运行…

自定义Bean转换工具类

BeanConvertor工具类&#xff1a;简化Java对象转换的利器 在Java开发中,我们经常需要在不同的对象之间转换数据。这可能是因为我们需要将数据从一个层(如数据访问层)转移到另一个层(如服务层或表示层),或者是因为我们需要将外部API的数据结构转换为我们的内部数据结构。这种转…

LeetCode 739, 82, 106

文章目录 739. 每日温度题目链接标签思路代码 82. 删除排序链表中的重复元素 II题目链接标签思路代码 106. 从中序与后序遍历序列构造二叉树题目链接标签思路二叉树的三种遍历值与索引的映射对于后序遍历的使用对于中序遍历的使用 代码 739. 每日温度 题目链接 739. 每日温度…

完整创建一个vite前端项目

目录 1.先创建一个vite项目 2.下载第三方依赖 ① 安装路由vue-router ② 安装vuex全局数据管理 ③ 安装element-plus ④ 安装element-plus图标 ⑤ 安装axios发送请求 ⑥ 完整main.js代码模板 3.开发组件 4.登陆页面开发用例 5. 完整项目代码 废话少说&#xff0c;直接…

【C++】 string类的模拟实现

目录 一、我们先创建三个文件分别为 String.h&#xff08;声明&#xff09;、String.cpp&#xff08;定义&#xff09;、teat.cpp&#xff08;测试&#xff09; 二、成员函数 构造函数与析构函数 &#x1f31f;string() &#x1f31f;string(const char* str) &#x1f…

探索SideLlama:浏览器中的本地大型语言模型

在这个数字化时代&#xff0c;浏览器扩展程序已经成为我们日常网络体验中不可或缺的一部分。它们不仅为我们提供了便利&#xff0c;还为我们的浏览体验增添了更多的功能和乐趣。今天&#xff0c;我要介绍的是一个全新的Chrome浏览器扩展程序——SideLlama&#xff0c;它能够让你…