diff --git a/flarum/metadata/app.json b/flarum/metadata/app.json index 876a3d88..21860597 100644 --- a/flarum/metadata/app.json +++ b/flarum/metadata/app.json @@ -2,7 +2,7 @@ "key": "flarum", "name": "flarum", "tags": ["WebSite"], - "versions": ["latest"], + "versions": ["1.7.1","latest"], "shortDescZh": "新一代的论坛软件,使在线讨论变得有趣。", "shortDescEn": "The next-generation forum software that makes online discussion fun.", "type": "website", diff --git a/flarum/versions/1.7.1/.env.sample b/flarum/versions/1.7.1/.env.sample new file mode 100644 index 00000000..ffddfab0 --- /dev/null +++ b/flarum/versions/1.7.1/.env.sample @@ -0,0 +1,10 @@ +CONTAINER_NAME="flarum" +PANEL_APP_PORT_HTTP="40020" +DATA_PATH="./data" +PANEL_DB_HOST="127.0.0.1" +FLARUM_DB_PORT="3306" +PANEL_DB_NAME="flarum" +PANEL_DB_USER="flarum" +PANEL_DB_USER_PASSWORD="MyDBPWD_brls9UwcRasl" +PANEL_DB_PREFIX="flarum_" +Dockerized_HOST="127.0.0.1" \ No newline at end of file diff --git a/flarum/versions/1.7.1/README.md b/flarum/versions/1.7.1/README.md new file mode 100644 index 00000000..77220bc1 --- /dev/null +++ b/flarum/versions/1.7.1/README.md @@ -0,0 +1,256 @@ +

+ +

+ Latest Version + Build Status + Docker Stars + Docker Pulls +
Become a sponsor + Donate Paypal +

+ +## About + +Docker image for [Flarum](https://flarum.org/), the next-generation forum +software that makes online discussion fun. + +> **Note** +> +> Want to be notified of new releases? Check out 🔔 [Diun (Docker Image Update Notifier)](https://github.com/crazy-max/diun) +> project! + +___ + +- [About](#about) +- [Features](#features) +- [Build locally](#build-locally) +- [Image](#image) +- [Environment variables](#environment-variables) + - [General](#general) + - [Flarum](#flarum) + - [Database](#database) +- [Volumes](#volumes) +- [Ports](#ports) +- [Usage](#usage) + - [Docker Compose](#docker-compose) + - [Command line](#command-line) +- [Upgrade](#upgrade) +- [Notes](#notes) + - [First launch](#first-launch) + - [Manage extensions](#manage-extensions) + - [Sending mails with SMTP](#sending-mails-with-smtp) +- [Contributing](#contributing) +- [License](#license) + +## Features + +* Run as non-root user +* Multi-platform image +* [s6-overlay](https://github.com/just-containers/s6-overlay/) as process supervisor +* [msmtpd SMTP relay](https://github.com/crazy-max/docker-msmtpd) image to send emails +* [Traefik](https://github.com/containous/traefik-library-image) as reverse proxy and creation/renewal of Let's Encrypt certificates (see [this template](examples/traefik)) + +## Build locally + +```shell +git clone https://github.com/crazy-max/docker-flarum.git +cd docker-flarum + +# Build image and output to docker (default) +docker buildx bake + +# Build multi-platform image +docker buildx bake image-all +``` + +## Image + +| Registry | Image | +|--------------------------------------------------------------------------------------------------|---------------------------------| +| [Docker Hub](https://hub.docker.com/r/crazymax/flarum/) | `crazymax/flarum` | +| [GitHub Container Registry](https://github.com/users/crazy-max/packages/container/package/flarum) | `ghcr.io/crazy-max/flarum` | + +Following platforms for this image are available: + +``` +$ docker run --rm mplatform/mquery crazymax/flarum:latest +Image: crazymax/flarum:latest + * Manifest List: Yes + * Supported platforms: + - linux/amd64 + - linux/arm/v6 + - linux/arm/v7 + - linux/arm64 +``` + +## Environment variables + +### General + +* `TZ`: The timezone assigned to the container (default `UTC`) +* `PUID`: Flarum user id (default `1000`) +* `PGID`: Flarum group id (default `1000`) +* `MEMORY_LIMIT`: PHP memory limit (default `256M`) +* `UPLOAD_MAX_SIZE`: Upload max size (default `16M`) +* `CLEAR_ENV`: Clear environment in FPM workers (default `yes`) +* `OPCACHE_MEM_SIZE`: PHP OpCache memory consumption (default `128`) +* `LISTEN_IPV6`: Enable IPv6 for Nginx (default `true`) +* `REAL_IP_FROM`: Trusted addresses that are known to send correct replacement addresses (default `0.0.0.0/32`) +* `REAL_IP_HEADER`: Request header field whose value will be used to replace the client address (default `X-Forwarded-For`) +* `LOG_IP_VAR`: Use another variable to retrieve the remote IP address for access [log_format](http://nginx.org/en/docs/http/ngx_http_log_module.html#log_format) on Nginx. (default `remote_addr`) + +### Flarum + +* `FLARUM_DEBUG`: Enables or disables debug mode, used to troubleshoot issues (default `false`) +* `FLARUM_BASE_URL`: The URL to your Flarum installation **required** +* `FLARUM_FORUM_TITLE`: Flarum forum title, only used during first installation (default `Flarum Dockerized`) +* `FLARUM_API_PATH`: Flarum api path (default `api`) +* `FLARUM_ADMIN_PATH`: Flarum admin path (default `admin`) +* `FLARUM_POWEREDBY_HEADER`: Set Flarum's `X-Powered-By` header (default `true`) +* `FLARUM_REFERRER_POLICY`: Referrer policy (default `same-origin`) +* `FLARUM_COOKIE_SAMESITE`: Set `SameSite` attribute of `Set-Cookie` (default `lax`) + +### Database + +* `DB_HOST`: MySQL database hostname / IP address **required** +* `DB_PORT`: MySQL database port (default `3306`) +* `DB_NAME`: MySQL database name (default `flarum`) +* `DB_USER`: MySQL user (default `flarum`) +* `DB_PASSWORD`: MySQL password +* `DB_PREFIX`: MySQL database prefix (default `flarum_`) +* `DB_NOPREFIX`: Enforce no prefix for the MySQL database (default `false`) +* `DB_TIMEOUT`: Time in seconds after which we stop trying to reach the MySQL server (useful for clusters, default `60`) + +> 💡 `DB_USER_FILE` and `DB_PASSWORD_FILE` can be used to fill in the value from a file, especially for Docker's +> secrets feature. + +## Volumes + +* `/data`: Contains assets, extensions and storage + +> :warning: Note that the volume should be owned by the user/group with the specified `PUID` and `PGID`. If you +> don't give the volume correct permissions, the container may not start. + +## Ports + +* `8000`: HTTP port + +## Usage + +### Docker Compose + +Docker compose is the recommended way to run this image. You can use the following +[docker compose template](examples/compose/docker-compose.yml), then run the container: + +```bash +docker-compose up -d +docker-compose logs -f +``` + +### Command line + +You can also use the following minimal command: + +```bash +docker run -d -p 8000:8000 --name flarum \ + -v $(pwd)/data:/data \ + -e "DB_HOST=db" \ + -e "FLARUM_BASE_URL=http://127.0.0.1:8000" \ + crazymax/flarum:latest +``` + +> `-e "DB_HOST=db"`
+> :warning: `db` must be a running MySQL instance + +## Upgrade + +You can upgrade Flarum automatically through the UI, it works well. But I recommend to recreate the container +whenever I push an update: + +```bash +docker-compose pull +docker-compose up -d +``` + +## Notes + +### First launch + +On first launch, an initial administrator user will be created: + +| Login | Password | +|----------|----------| +| `flarum` | `flarum` | + +### Manage extensions + +You can install [Flarum extensions](https://extiverse.com/) from the command line using a +[specially crafted script](rootfs/usr/local/bin/extension) with this image: + +`docker-compose exec flarum extension require ` + +To remove an extension: + +`docker-compose exec flarum extension remove ` + +To list all extensions: + +`docker-compose exec flarum extension list` + +Example with [`fof/upload`](https://extiverse.com/extension/fof/upload) extension: + +``` +$ docker-compose exec flarum extension require fof/upload +Using version ^1.0 for fof/upload +./composer.json has been updated +Running composer update fof/upload +Loading composer repositories with package information +Updating dependencies +Lock file operations: 5 installs, 0 updates, 0 removals + - Locking fof/upload (1.0.0) + - Locking guzzlehttp/guzzle (7.3.0) + - Locking guzzlehttp/promises (1.4.1) + - Locking psr/http-client (1.0.1) + - Locking softcreatr/php-mime-detector (3.2.0) +Writing lock file +Installing dependencies from lock file (including require-dev) +Package operations: 5 installs, 0 updates, 0 removals + - Downloading softcreatr/php-mime-detector (3.2.0) + - Downloading psr/http-client (1.0.1) + - Downloading guzzlehttp/promises (1.4.1) + - Downloading guzzlehttp/guzzle (7.3.0) + - Downloading fof/upload (1.0.0) + - Installing softcreatr/php-mime-detector (3.2.0): Extracting archive + - Installing psr/http-client (1.0.1): Extracting archive + - Installing guzzlehttp/promises (1.4.1): Extracting archive + - Installing guzzlehttp/guzzle (7.3.0): Extracting archive + - Installing fof/upload (1.0.0): Extracting archive +2 package suggestions were added by new dependencies, use `composer suggest` to see details. +Generating autoload files +70 packages you are using are looking for funding. +Use the `composer fund` command to find out more! +fof/upload extension added +Clearing the cache... +``` + +> :warning: You cannot use [Bazaar marketplace extension](https://discuss.flarum.org/d/5151-bazaar-the-extension-marketplace) +> to install extensions for now. + +### Sending mails with SMTP + +You can use our SMTP relay `msmtpd` service published on port `2500` and declared in our [`docker-compose.yml`](examples/compose/docker-compose.yml): + +![](.github/smtp-settings.png) + +## Contributing + +Want to contribute? Awesome! The most basic way to show your support is to star the project, or to raise issues. You +can also support this project by [**becoming a sponsor on GitHub**](https://github.com/sponsors/crazy-max) or by making +a [Paypal donation](https://www.paypal.me/crazyws) to ensure this journey continues indefinitely! + +Thanks again for your support, it is much appreciated! :pray: + +## License + +MIT. See `LICENSE` for more details. + diff --git a/flarum/versions/1.7.1/config.json b/flarum/versions/1.7.1/config.json new file mode 100644 index 00000000..b012984a --- /dev/null +++ b/flarum/versions/1.7.1/config.json @@ -0,0 +1,104 @@ +{ + "formFields": [ + { + "type": "apps", + "labelZh": "数据库服务", + "labelEn": "Database Service", + "required": true, + "default": "mysql", + "values": [{ + "label": "MySQL", + "value": "mysql" + }], + "child": { + "type": "service", + "labelZh": "数据库服务", + "labelEn": "Database Service", + "required": true, + "default": "", + "envKey": "PANEL_DB_HOST" + }, + "params": [ + { + "type": "param", + "key": "mysql", + "value": "3306", + "envKey": "FLARUM_DB_PORT" + }, + { + "type": "param", + "key": "postgresql", + "value": "5432", + "envKey": "FLARUM_DB_PORT" + } + ] + }, + { + "type": "text", + "labelZh": "数据库名", + "labelEn": "Database", + "required": true, + "default": "flarum", + "random": true, + "rule": "paramCommon", + "envKey": "PANEL_DB_NAME" + }, + { + "type": "text", + "labelZh": "数据库用户", + "labelEn": "User", + "required": true, + "default": "flarum", + "random": true, + "rule": "paramCommon", + "envKey": "PANEL_DB_USER" + }, + { + "type": "password", + "labelZh": "数据库用户密码", + "labelEn": "Password", + "required": true, + "default": "flarum", + "random": true, + "rule": "paramComplexity", + "envKey": "PANEL_DB_USER_PASSWORD" + }, + { + "type": "text", + "labelZh": "数据库前缀", + "labelEn": "Database prefix", + "required": true, + "default": "flarum_", + "envKey": "PANEL_DB_PREFIX" + }, + { + "type": "number", + "labelZh": "端口", + "labelEn": "Port", + "required": true, + "default": 40020, + "rule": "paramPort", + "envKey": "PANEL_APP_PORT_HTTP", + "edit": true + }, + { + "type": "text", + "labelZh": "数据存放文件夹", + "labelEn": "Data storage folder", + "required": true, + "default": "./data", + "envKey": "DATA_PATH", + "edit": true + }, + { + "type": "text", + "labelZh": "本机IP", + "labelEn": "Local IP", + "required": true, + "default": "127.0.0.1", + "envKey": "Dockerized_HOST", + "edit": true + } + ] +} + diff --git a/flarum/versions/1.7.1/data/.gitkeep b/flarum/versions/1.7.1/data/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/flarum/versions/1.7.1/docker-compose.yml b/flarum/versions/1.7.1/docker-compose.yml new file mode 100644 index 00000000..8c0ce89d --- /dev/null +++ b/flarum/versions/1.7.1/docker-compose.yml @@ -0,0 +1,36 @@ +version: "3" +services: + flarum: + container_name: ${CONTAINER_NAME} + restart: unless-stopped + networks: + - 1panel-network + ports: + - "${PANEL_APP_PORT_HTTP}:8000" + volumes: + - "${DATA_PATH}:/data" + environment: + - TZ=Asia/Shanghai + - PUID=1000 + - PGID=1000 + - MEMORY_LIMIT=256M + - UPLOAD_MAX_SIZE=256M + - CLEAR_ENV=yes + - OPCACHE_MEM_SIZE=128M + - LISTEN_IPV6=true + - REAL_IP_FROM=0.0.0.0/32 + - DB_HOST=${PANEL_DB_HOST} + - DB_PORT=${FLARUM_DB_PORT} + - DB_NAME=${PANEL_DB_NAME} + - DB_USER=${PANEL_DB_USER} + - DB_PASSWORD=${PANEL_DB_USER_PASSWORD} + - DB_PREFIX=${PANEL_DB_PREFIX} + - DB_NOPREFIX=false + - DB_TIMEOUT=60 + - FLARUM_BASE_URL=http://${Dockerized_HOST}:${PANEL_APP_PORT_HTTP} + image: crazymax/flarum:1.7.1 + labels: + createdBy: Apps +networks: + 1panel-network: + external: true diff --git a/list.json b/list.json index 7ca64b3c..fadb8a17 100644 --- a/list.json +++ b/list.json @@ -102,7 +102,7 @@ "key": "flarum", "name": "flarum", "tags": ["WebSite"], - "versions": ["latest"], + "versions": ["1.7.1","latest"], "shortDescZh": "新一代的论坛软件,使在线讨论变得有趣。", "shortDescEn": "The next-generation forum software that makes online discussion fun.", "type": "website",