/[LeafOK_CVS]/lbbs/INSTALL.md
ViewVC logotype

Diff of /lbbs/INSTALL.md

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 1.1 by sysadm, Tue Aug 26 03:05:26 2025 UTC Revision 1.32 by sysadm, Sat Jan 10 06:53:26 2026 UTC
# Line 1  Line 1 
1  Installation  # Installation
2  ==================  
3  To install LBBS, please perform the following steps:  The Chinese version of this installation guide is available at [INSTALL.zh_CN.md](INSTALL.zh_CN.md).
4    
5  0) Prerequisite    To install LBBS on Linux (e.g., Debian 13, CentOS Stream 10), please perform the following steps:
6     Follow README.md under [leafok_bbs](https://github.com/leafok88/leafok_bbs) to initialize the database structure shared by both web version and telnet version.    
7     It is highly recommended to finish the configuration steps of web version first and make sure those features could work properly.  ## 0. Prerequisites
8    
9  1) Extract the source files from a tarball or export from GitHub    Follow the instructions in [leafok_bbs](https://github.com/leafok/leafok_bbs) README.md to initialize the database structure shared by both the web and telnet versions.
10     Run the following command to set up the autoconf/automake environment,    
11     sh ./autogen.sh    It is highly recommended to complete the web version configuration steps first and ensure those features work properly.
12     and fix any error if exists.  
13    ## 1. Common Requirements
14  2) Compile source files    
15     ./configure --prefix=/usr/local/lbbs    - gcc >= 13.3
16     make  - autoconf >= 2.68
17    - automake >= 1.16
18  3) Create user and group    - php >= 8.2
19     sudo useradd bbs  - mysql >= 8.4
20    
21  4) Install binary files and data files    ### Distribution-Specific Packages
22     sudo make install  
23    **Debian / Ubuntu:**
24  5) Modify following configuration files    ```bash
25     Default configuration files is saved as *.default, you should rename them first.    sudo apt-get install -y libssh-dev libsystemd-dev
26     /usr/local/lbbs/conf/bbsd.conf    ```
27     /usr/local/lbbs/utils/conf/db_conn.inc.php    
28    **CentOS / RHEL:**
29  6) Generate menu configuration file with section data by running the script    ```bash
30     sudo -u bbs php /usr/local/lbbs/utils/bin/gen_section_menu.php    sudo dnf install -y libssh-devel systemd-devel
31     sudo -u bbs php /usr/local/lbbs/utils/bin/gen_ex_list.php    ```
32    
33  7) Create or copy SSH2 RSA certificate into /usr/local/lbbs/conf    **MSYS2 with MinGW-w64 toolchain:**
34     ssh-keygen -t rsa -C "Your Server Name" -f ssh_host_rsa_key  ```bash
35    pacman -S --needed msys2-runtime-devel libssh libssh-devel pcre2-devel mingw-w64-x86_64-libiconv mingw-w64-x86_64-libmariadbclient
36  8) Startup    ```
37     sudo /usr/local/lbbs/bin/bbsd  
38    ## 2. Extract Source Files
39  9) Set up systemd    
40     Create your own /usr/lib/systemd/system/lbbs.service from the sample at conf/lbbs.service.default, and make any change if necessary.    Extract the source files from a tarball or export from GitHub.
41     Reload daemon config and start the service.    
42    Run the following command to set up the autoconf/automake environment:
43    ```bash
44    autoreconf --install --force
45    ```
46    
47    ## 3. Compile Source Files
48    
49    ```bash
50    export LBBS_HOME_DIR=/usr/local/lbbs
51    ```
52    
53    **For Linux:**
54    ```bash
55    ./configure --prefix=$LBBS_HOME_DIR
56    ```
57    
58    **For MSYS2 with MinGW-w64 toolchain:**
59    ```bash
60    ./configure --prefix=$LBBS_HOME_DIR --disable-shared PKG_CONFIG_PATH=/mingw64/lib/pkgconfig/
61    ```
62    
63    ```bash
64    make
65    ```
66    
67    ## 4. Create User and Group
68    
69    ```bash
70    sudo useradd bbs
71    ```
72    
73    ## 5. Install Binary and Data Files
74    
75    ```bash
76    sudo make install
77    chown -R bbs:bbs $LBBS_HOME_DIR
78    ```
79    
80    ## 6. Modify Configuration Files
81    
82    Default configuration files are saved as `*.default`. Copy and rename them first:
83    
84    ```bash
85    cd $LBBS_HOME_DIR
86    cp conf/bbsd.conf.default conf/bbsd.conf
87    cp conf/bbsnet.conf.default conf/bbsnet.conf
88    cp conf/badwords.conf.default conf/badwords.conf
89    cp utils/conf/db_conn.conf.php.default utils/conf/db_conn.conf.php
90    ```
91    
92    Then edit each file to match your environment:
93    
94    ### bbsd.conf
95    Key settings to adjust:
96    - `db_host`, `db_username`, `db_password`, `db_database`: MySQL connection details
97    - `bbs_server`, `bbs_port`, `bbs_ssh_port`: Network settings
98    - `bbs_name`: Your BBS name
99    - `bbs_max_client`: Maximum concurrent connections (adjust based on server capacity)
100    
101    ### db_conn.conf.php
102    Set the database connection parameters:
103    - `$DB_hostname`, `$DB_username`, `$DB_password`, `$DB_database`
104    
105    ### bbsnet.conf & badwords.conf
106    Review and customize as needed for your BBS policies.
107    
108    ## 7. Copy MySQL CA Certificate
109    
110    Copy the MySQL server's CA certificate file to `$LBBS_HOME_DIR/conf/ca_cert.pem`.
111    
112    ## 8. Generate Menu Configuration Files
113    
114    Run the following scripts to generate menu configuration files with section data:
115    
116    ```bash
117    sudo -u bbs php $LBBS_HOME_DIR/utils/bin/gen_section_menu.php
118    sudo -u bbs php $LBBS_HOME_DIR/utils/bin/gen_ex_list.php
119    sudo -u bbs php $LBBS_HOME_DIR/utils/bin/gen_top.php
120    ```
121    
122    ## 9. Create SSH2 Certificates
123    
124    Generate SSH host keys for the SSH server component. The `-N ""` flag sets an empty passphrase for the keys (required for automated service startup).
125    
126    ```bash
127    ssh-keygen -t rsa -C "Your Server Name" -N "" -f $LBBS_HOME_DIR/conf/ssh_host_rsa_key
128    ssh-keygen -t ed25519 -C "Your Server Name" -N "" -f $LBBS_HOME_DIR/conf/ssh_host_ed25519_key
129    ssh-keygen -t ecdsa -C "Your Server Name" -N "" -f $LBBS_HOME_DIR/conf/ssh_host_ecdsa_key
130    ```
131    
132    ## 10. Startup
133    
134    ```bash
135    sudo -u bbs $LBBS_HOME_DIR/bin/bbsd
136    ```
137    
138    ## 11. (Optional) Set Up systemd
139    
140    Create your own `/usr/lib/systemd/system/lbbs.service` from the sample at `conf/lbbs.service`, and make any necessary changes.
141    
142    Reload daemon configuration and start the service.
143    
144    ## 12. (Optional) Set Up logrotate
145    
146    Create your own `/etc/logrotate.d/lbbs` from the sample at `conf/lbbs.logrotate`, and make any necessary changes.
147    
148    Restart the logrotate service.
149    
150    ## 13. Cleanup on Abnormal Service Termination
151    
152    In case of unexpected failure or improper operation resulting in abnormal termination of the LBBS process, manual cleanup of shared memory/semaphore might be required before relaunching the process.
153    
154    ### When Cleanup is Needed
155    - After a crash or force-kill of the `bbsd` process
156    - If `bbsd` fails to start with "shared memory already exists" errors
157    - When `ipcs` shows resources owned by user `bbs`
158    
159    ### Checking for Orphaned Resources
160    First, check for any remaining shared memory segments or semaphores:
161    ```bash
162    sudo -u bbs ipcs
163    ```
164    
165    Look for entries in the "SHM" (shared memory) and "SEM" (semaphore) sections where the "OWNER" is `bbs`.
166    
167    ### Cleaning Up
168    If resources exist, remove them with:
169    ```bash
170    sudo -u bbs ipcrm -a
171    ```
172    
173    This removes all shared memory and semaphore resources accessible to the `bbs` user.
174    
175    ## 14. Docker Installation (Alternative Method)
176    
177    For containerized deployment, LBBS provides Docker support.
178    
179    ### Building from Source
180    To build the Docker image from source code:
181    ```bash
182    docker compose up --build -d
183    ```
184    
185    ### Using Pre-built Images
186    To use pre-built images from Docker Hub:
187    ```bash
188    docker compose pull
189    docker compose up -d
190    ```
191    
192    ### Configuration for Docker
193    When using Docker, you still need to configure LBBS appropriately:
194    
195    1. **Configuration Files**: Create and customize the configuration files as described in Step 6.
196    2. **Database Connection**: Ensure `db_conn.conf.php` points to your MySQL server (which should be accessible from the container).
197    3. **Port Mapping**: By default, Docker Compose maps:
198       - SSH port: 2322 → 2322 (container)
199       - Telnet port: 2323 → 2323 (container)
200      
201       Adjust these in `docker-compose.yml` if needed.
202    4. **Persistent Data**: The `data/` and `conf/` directories are mounted as volumes for persistence.
203    
204    ### Docker Compose Management
205    - Start: `docker compose up -d`
206    - Stop: `docker compose down`
207    - View logs: `docker compose logs -f`
208    - Restart: `docker compose restart`
209    
210    For more details, refer to the `docker-compose.yml` file and Docker documentation.


Legend:
Removed lines/characters  
Changed lines/characters
  Added lines/characters

webmaster@leafok.com
ViewVC Help
Powered by ViewVC 1.3.0-beta1