| 18 |
- [Build from Source](#build-from-source) |
- [Build from Source](#build-from-source) |
| 19 |
- [Using Pre-built Images](#using-pre-built-images) |
- [Using Pre-built Images](#using-pre-built-images) |
| 20 |
- [Configuration for Docker](#configuration-for-docker) |
- [Configuration for Docker](#configuration-for-docker) |
|
- [Docker Compose Services](#docker-compose-services) |
|
|
- [Common Docker Commands](#common-docker-commands) |
|
| 21 |
- [Persistent Data](#persistent-data) |
- [Persistent Data](#persistent-data) |
| 22 |
- [Copyright Information](#copyright-information) |
- [Copyright Information](#copyright-information) |
| 23 |
- [License](#license) |
- [License](#license) |
| 30 |
|
|
| 31 |
**Features:** |
**Features:** |
| 32 |
- Web-based article browsing, posting, searching, and other basic functions |
- Web-based article browsing, posting, searching, and other basic functions |
|
- **Advanced Search Capabilities:** |
|
|
- Solr-powered full-text search with Chinese language support |
|
|
- Search by user ID (UID), username, or nickname |
|
|
- Advanced search v2 with filtering by date range, section, and content type |
|
|
- Support for searching original posts vs. replies |
|
|
- Filter by excerpted articles only |
|
| 33 |
- Support for multiple categories and sections, each with discussion areas, digest areas, and featured areas |
- Support for multiple categories and sections, each with discussion areas, digest areas, and featured areas |
| 34 |
- Comprehensive moderator management support |
- Comprehensive moderator management support |
| 35 |
|
- **Advanced Search Capabilities:** |
| 36 |
|
- Solr-powered full-text search with Chinese language support |
| 37 |
- **Modern Architecture:** |
- **Modern Architecture:** |
| 38 |
- Refactored Lightweight Markup Language (LML) renderer with improved performance |
- Refactored Lightweight Markup Language (LML) renderer with improved performance |
| 39 |
- User timezone support for localized date/time display |
- User timezone support for localized date/time display |
| 46 |
|
|
| 47 |
### 1. Prerequisites and Required Libraries |
### 1. Prerequisites and Required Libraries |
| 48 |
- **PHP 8.2+** and **MySQL 8.4+** installed |
- **PHP 8.2+** and **MySQL 8.4+** installed |
| 49 |
- Install Composer using your package manager (e.g., `apt`, `yum`, or from [getcomposer.org](https://getcomposer.org/)) |
- Install Composer using your package manager (e.g., `apt`, `yum`) |
| 50 |
- Run the following command in the project root directory: |
- Run the following command in the project root directory: |
| 51 |
```bash |
```bash |
| 52 |
composer install --prefer-dist --no-scripts --no-progress |
composer install --prefer-dist --no-scripts --no-progress |
| 64 |
- Site information: Edit `conf/site.conf.php` |
- Site information: Edit `conf/site.conf.php` |
| 65 |
- Database connection: Edit `conf/db_conn.conf.php` |
- Database connection: Edit `conf/db_conn.conf.php` |
| 66 |
- Email sending: Edit `conf/smtp.conf.php` (supports both SMTP and local sendmail) |
- Email sending: Edit `conf/smtp.conf.php` (supports both SMTP and local sendmail) |
| 67 |
- **Solr search** (optional): Edit `conf/solr.conf.php` if using Solr for advanced search features |
- **Solr search** (optional): Edit `conf/solr.conf.php` if using Solr for advanced search features |
| 68 |
- Default configuration assumes Solr running on `localhost:8983` with core `lbbs` |
- Default configuration assumes Solr running on `localhost:8983` with core `lbbs` |
| 69 |
- Update hostname, port, authentication, and path as needed |
- Update hostname, port, authentication, and path as needed |
| 70 |
|
- Import schema from `TODO/solr/schema.json` into core `lbbs` |
| 71 |
|
- Install pecl/solr extension with PIE |
| 72 |
|
|
| 73 |
### 4. Site Customization |
### 4. Site Customization |
| 74 |
- Modify `lib/common.inc.php` for site-specific configurations |
- Modify `lib/common.inc.php` for site-specific configurations |
| 77 |
- Create directories (if they don't exist): |
- Create directories (if they don't exist): |
| 78 |
- `bbs/cache` |
- `bbs/cache` |
| 79 |
- `bbs/upload` |
- `bbs/upload` |
| 80 |
|
- `export_xml` |
| 81 |
- `stat` |
- `stat` |
| 82 |
- Ensure the web server user has write permissions for: |
- Ensure the web server user has write permissions for: |
| 83 |
- `bbs/cache` |
- `bbs/cache` |
| 84 |
- `bbs/upload` |
- `bbs/upload` |
| 85 |
|
- `export_xml` |
| 86 |
- `gen_ex` |
- `gen_ex` |
| 87 |
- `stat` |
- `stat` |
| 88 |
|
|
| 132 |
- Edit the configuration files as needed |
- Edit the configuration files as needed |
| 133 |
- Restart the container: `docker compose restart` |
- Restart the container: `docker compose restart` |
| 134 |
|
|
|
### Docker Compose Services |
|
|
- **web**: Apache HTTP Server with PHP 8.2 |
|
|
- **db**: MySQL 8.4 database |
|
|
- **phpmyadmin**: Database management interface (optional, available at `http://localhost:8081`) |
|
|
|
|
|
### Common Docker Commands |
|
|
```bash |
|
|
# View logs |
|
|
docker compose logs -f |
|
|
|
|
|
# Stop containers |
|
|
docker compose down |
|
|
|
|
|
# Rebuild and restart |
|
|
docker compose up --build -d |
|
|
|
|
|
# Access container shell |
|
|
docker compose exec web bash |
|
|
``` |
|
|
|
|
| 135 |
### Persistent Data |
### Persistent Data |
| 136 |
- Database data is stored in a Docker volume (`leafok_bbs_db_data`) |
- Database data is stored in a Docker volume (`leafok_bbs_db_data`) |
| 137 |
- Uploaded files and cache are stored in mounted host directories |
- Uploaded files and cache are stored in mounted host directories |
| 138 |
|
|
| 139 |
## Copyright Information |
## Copyright Information |
| 140 |
Copyright (C) 2004-2026 Leaflet <leaflet@leafok.com> |
Copyright (C) 2001-2026 Leaflet <leaflet@leafok.com> |
| 141 |
|
|
| 142 |
## License |
## License |
| 143 |
This program is free software; you can redistribute it and/or modify it under the terms of the [GNU General Public License](LICENSE) as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. |
This program is free software; you can redistribute it and/or modify it under the terms of the [GNU General Public License](LICENSE) as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. |