原文永久链接:https://forum.piwind.com/d/17-flarumqing-liang-hua-kai-yuan-lun-tan-xi-tong-bu-shu
Date: 2025-04-01
在某论坛看到一位叫做"千机"的网友分享了flarum开源论坛的部署流程,看到其中的手写脚本、技术路线、以及理解都功底很深厚。
本人作为被某上市公司优化的研发,曾研发公司线下IDC和云服务的混合架构,也无偿分享一下我的搭建思路。
准备工作:云服务器,域名解析,TLS证书,docker环境,防火墙配置。
技术路线:用docker compose做容器编排(可视化用portainer方便),第三方crazymax/flarum构建的docker镜像,后端数据库使用MariaDB,再添加几个辅助容器(msmtpd作为SMTP服务器,redis作为缓存,meilisearch作为搜索引擎)
流程:先手写初始extend.php以便映射,再去创建stack,拉起stack之后再配置nginx反向代理,最后将基础的SMTP,redis会话缓存队列,Meilisearch配置好,就完成了flarum论坛的落地,后续就可以按需求做装饰和优化。
待业期间计划:完善家庭服务器(很多人叫NAS)、云服务器建站、大模型应用。目前已有:ProxmoxVE系统架设,open webui,openldap账套系统等等。后续也会陆续抽空更新文章。
欢迎加入 Piwind论坛 交流咨询答疑。
链接:
- 官网:https://flarum.org/
- 官方仓库:flarum/flarum: Simple forum software for building great communities.
- 官方手册:Installation | Flarum Documentation
- Composer仓库页面:flarum/flarum - Packagist
- 查看部署案例:https://forum.piwind.com/
看到官方没有提供docker部署方式,在dockerhub上找到这个项目:
- 讨论:Dockerized Flarum? - Flarum Community
- crazymax/flarum - Docker Image | Docker Hub
- 源码仓库:crazy-max/docker-flarum: Flarum Docker image
官方指定的安装方式为:依赖nginx/apache,php 7.3+,mysql 5.6+/8.0.23+,安装PHP仓库管理软件Composer,并通过Composer来下载flarum项目。
**本次技术路线:**第三方crazymax/flarum构建的docker镜像,后端数据库使用MariaDB,再添加几个辅助容器(msmtpd作为SMTP服务器,redis作为缓存,meilisearch作为搜索引擎)
本文结构包含如下:
- 安装flarum
- 基础配置
- 安装插件
- 功能罗列和需求解决
- Linguist翻译文本优化
- css样式
- 场景和解决方案
- 数据库
- cloudflare缓存策略
- 可选和放弃的插件
- 参考链接和阅读记录
1. 安装flarum
链接:
-
docker compose参考模板:https://github.com/crazy-max/docker-flarum/blob/master/examples/compose/compose.yml
-
环境变量初始化脚本:https://github.com/crazy-max/docker-flarum/blob/master/rootfs/etc/cont-init.d/03-config.sh
-
MariaDB开源仓库:https://github.com/MariaDB/server
-
MariaDB的dockerhub:https://hub.docker.com/_/mariadb
-
轻量化的SMTP relay - msmtpd:crazymax/msmtpd - Docker Image | Docker Hub
-
nginx参考配置: flarum官方参考nginx.conf
-
redis的dockerhub:https://hub.docker.com/_/redis
-
meilisearch的dockerhub:https://hub.docker.com/r/getmeili/meilisearch
-
danyspin97’s site - Getting started with execline scripting
注意 execline 脚本的语法
流程:
先从镜像中提取要映射的文件,或者直接手写相应的初始文件(手写注意配owner和权限):
【容器中的/opt/flarum/config.php是每次启动时动态生成的,因此不推荐映射出来,而是通过修改容器环境变量实现修改】
mkdir -p /data/linux/docker_data/flarum/flarum
touch /data/linux/docker_data/flarum/flarum/extend.php
# 注意替换成实际的PUID:PGID
chown 1000:1000 /data/linux/docker_data/flarum/flarum/*
mkdir -p /data/linux/docker_data/flarum/s6-services/flarum-queue
mkdir -p /data/linux/docker_data/flarum/s6-services/cron
touch /data/linux/docker_data/flarum/s6-services/flarum-queue/run
touch /data/linux/docker_data/flarum/s6-services/cron/run
chmod +x /data/linux/docker_data/flarum/s6-services/flarum-queue/run
chmod +x /data/linux/docker_data/flarum/s6-services/cron/run
编写 /data/linux/docker_data/flarum/flarum/extend.php,内容如下:
<?php
use Flarum\Extend;
return [
(new FoF\Redis\Extend\Redis([


6138

被折叠的 条评论
为什么被折叠?



