Форум на базе Laravel с расширенными функциями безопасности и управления пользователями. Демо: conff.net
- Регистрация и аутентификация пользователей
- Управление темами и сообщениями
- Загрузка файлов со сканированием безопасности
- Интеграция hCaptcha для защиты от спама
- Интеграция API StopForumSpam
- Ограниченное по времени редактирование сообщений
- Настраиваемые ограничения загрузки файлов
- Защита от загрузки SVG
- PHP 8.1 или выше
- Composer
- MySQL 5.7+ или MariaDB 10.3+
- Node.js 16+ и NPM
- Веб-сервер (Apache/Nginx)
git clone https://github.com/yourusername/your-repo-name.git
cd your-repo-name# Установите Composer
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php composer-setup.php
php -r "unlink('composer-setup.php');"
# Запустите установку зависимостей
php composer.phar installnpm installcp .env.example .envОтредактируйте файл .env и настройте следующее:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=имя_вашей_базы_данных
DB_USERNAME=пользователь_базы_данных
DB_PASSWORD=пароль_базы_данных
APP_NAME=НазваниеВашегоФорума
APP_ENV=production
APP_DEBUG=false
APP_URL=https://ваш-домен.com
Зарегистрируйтесь на https://www.hcaptcha.com/ и получите ключи:
HCAPTCHA_SITE_KEY=ваш_ключ_сайта
HCAPTCHA_SECRET_KEY=ваш_секретный_ключ
Зарегистрируйтесь на https://www.stopforumspam.com/keys и получите API ключ:
STOPFORUMSPAM_API_KEY=ваш_api_ключ
STOPFORUMSPAM_ENABLED=true
php artisan key:generatephp artisan migratephp artisan storage:linkchmod -R 775 storage bootstrap/cache
chown -R www-data:www-data storage bootstrap/cacheДля разработки:
npm run devДля продакшена:
npm run buildНастройте в .env:
# Разрешить скачивание файлов (1 = всем, 0 = только зарегистрированным)
ALLOW_FILE_DOWNLOAD=0
# Лимиты времени редактирования (в минутах)
POST_EDIT_TIME_LIMIT=60 # 1 час
TOPIC_EDIT_TIME_LIMIT=1440 # 24 часа
# Лимиты загрузки файлов
UPLOAD_MAX_FILESIZE=10M
POST_MAX_SIZE=10M
MAX_FILE_SIZE=7240 # в КБ
MAX_IMAGE_PIXELS=16000
# Разрешенные типы файлов
ALLOWED_FILE_EXTENSIONS="zip,rar,7z,txt,pdf,doc,docx,json,xml"
ALLOWED_IMAGE_FORMATS="jpg,png,gif"
# Функции безопасности
DISABLE_SVG_UPLOAD=true
ENABLE_FILE_SCANNING=true
FILE_UPLOAD_QUARANTINE_ENABLED=true
# Показывать имя пользователя вместо имени
DISPLAY_USERNAME_INSTEAD_OF_NAME=true
php artisan serveПерейдите по адресу http://localhost:8000
Для продакшена настройте ваш веб-сервер (Apache/Nginx) так, чтобы он указывал на директорию public.
server {
listen 80;
server_name ваш-домен.com;
root /путь/к/вашему-приложению/public;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";
index index.php;
charset utf-8;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
error_page 404 /index.php;
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.(?!well-known).* {
deny all;
}
}- Никогда не коммитьте файл
.env- Он содержит конфиденциальные данные - Сгенерируйте новый APP_KEY после развертывания, используя
php artisan key:generate - Используйте сложные пароли базы данных
- Включите HTTPS на продакшене
- Обновляйте зависимости: Регулярно выполняйте
composer updateиnpm update - Настройте правильные права доступа к файлам
- Включите файрвол и ограничьте доступ к базе данных
- Регулярные резервные копии базы данных и загруженных файлов
- Установите
APP_ENV=production - Установите
APP_DEBUG=false - Настройте SSL сертификат
- Настройте автоматические резервные копии
- Настройте параметры email для уведомлений
- Протестируйте функциональность hCaptcha
- Проверьте и настройте лимиты загрузки файлов
- Настройте логирование и мониторинг
sudo chown -R www-data:www-data storage bootstrap/cache
sudo chmod -R 775 storage bootstrap/cacheПроверьте учетные данные базы данных в .env и убедитесь, что MySQL запущен.
rm -rf node_modules package-lock.json
npm install
npm run buildphp artisan cache:clear
php artisan config:clear
php artisan view:clear
php artisan route:clearПо вопросам и проблемам, пожалуйста, создайте issue в GitHub репозитории.
Этот проект является программным обеспечением с открытым исходным кодом, лицензированным по лицензии MIT.
