Files
xamxam/docs/SETUP.md

135 lines
1.8 KiB
Markdown

# Post-ERG Setup Guide
Complete setup guide for development and production deployment.
## Requirements
- PHP 8.4
- SQLite3 (`php8.4-sqlite3`)
- nginx (production)
## Development Setup
### 1. Initial Setup
```bash
just setup
```
### 2. Start Development Server
```bash
just serve
```
Access at: http://localhost:8000
### 3. Run Tests
```bash
just test
```
## Production Deployment
### First-Time Server Setup
```bash
ssh posterg
sudo mkdir -p /var/www/posterg
sudo chown www-data:posterg /var/www/posterg
sudo chmod 775 /var/www/posterg
exit
```
### Deploy Application
```bash
just deploy
just deploy-nginx
```
### Set Admin Password
```bash
just manage-admin-users
ssh posterg "sudo bash /tmp/manage-admin-users.sh"
```
### Verify Deployment
```bash
# Test public site
curl -I https://posterg.erg.be/
# Test admin protection
curl -I https://posterg.erg.be/admin/
# Test file protection
curl -I https://posterg.erg.be/storage/test.db
```
## Nginx Configuration
See `nginx/SETUP.md` and `nginx/docs/PRODUCTION_DEPLOYMENT.md` for detailed nginx setup.
## Admin Panel
The admin panel is protected by:
1. nginx HTTP Basic Authentication (htpasswd)
2. PHP session authentication
Manage users with:
```bash
just manage-admin-users
```
## Database
### Initialize Test Database
```bash
just init-db
```
### Reset Database
```bash
just reset-db
```
### Deploy Test Database to Server
```bash
just deploy-db
```
## Common Operations
### View Logs
```bash
just logs
```
### Stop Development Server
```bash
just stop
```
### Run Migrations
```bash
just migrate
```
## Security
- Admin panel: HTTP Basic Auth + PHP session
- File uploads: Stored outside webroot, served via `media.php`
- Rate limiting: 30 req/min general, 10 req/min admin
- Security headers: X-Frame-Options, CSP, HSTS, etc.
See `nginx/docs/SECURITY_HEADERS.md` for details.