本文软件应网友
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.cf | http://192.168.0.197:9020 | Mixpost 的访问地址 |
在 npm
中的设置
SSL
都勾选了
安装
在群晖上以 Docker 方式安装。
mixpost
有三个版本,分别是 Mixpost Lite
、Mixpost Pro
和 Mixpost 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_HOST
、DB_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/