mirror of
https://codeberg.org/PostERG/xamxam.git
synced 2026-05-06 11:09:18 +02:00
84 lines
2.0 KiB
Markdown
84 lines
2.0 KiB
Markdown
# XAMXAM
|
|
|
|
(Anciennement *[Posterg](https://wiki.erg.be/m/#Posterg))*
|
|
|
|
Répertoire des travaux de fin d'études de l'[ERG](https://erg.be) (École de Recherche Graphique).
|
|
|
|
## Requirements
|
|
|
|
- PHP 8.4
|
|
- SQLite3 (`php8.4-sqlite3`)
|
|
- nginx (production)
|
|
|
|
## Development
|
|
|
|
|
|
### MacOS
|
|
|
|
Logiciels:
|
|
|
|
- un IDE pour éditer → VSCode
|
|
- git (ou une interface graphique) pour partager les modifications → git-gui (officiel) ou Github Desktop
|
|
- un server web avec PHP pour visualiser le project dans le navigateur → MAMP
|
|
|
|
|
|
### Workflow
|
|
|
|
0. Faire un changement dans ton IDE
|
|
1. Démarrer le site via MAMP, en sélectionnant le dossier `public`
|
|
2. Vérifier que ça marche sur le site en local, depuis ton navigateur
|
|
3. Une fois qu'un changement spécifique est fait, `commit` les changements sur les fichiers qui sont relatif à ce changement
|
|
4. Vérifier que vous avez syncroniser avec le `remote` → `pull` + `rebase` ! pas merge
|
|
5. `push` les changements vers le remote
|
|
|
|
|
|
```bash
|
|
just serve # http://localhost:8000 (public) and /admin/
|
|
```
|
|
|
|
## Deployment
|
|
|
|
Files are pushed to the server with rsync — there is no repo on the remote.
|
|
|
|
```bash
|
|
just deploy # rsync app files → posterg:/var/www/posterg/
|
|
just deploy-db # push local posterg.db → remote (only if remote DB is absent)
|
|
```
|
|
|
|
`deploy-db` refuses to run if a database already exists on the server, to avoid
|
|
accidental overwrites of production data.
|
|
|
|
### 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
|
|
```
|
|
|
|
Then deploy once and apply nginx config:
|
|
|
|
```bash
|
|
just deploy
|
|
just deploy-nginx
|
|
```
|
|
|
|
### Admin users (htpasswd)
|
|
|
|
```bash
|
|
just manage-admin-users
|
|
# Then on server:
|
|
ssh posterg "sudo bash /tmp/manage-admin-users.sh"
|
|
```
|
|
|
|
## Security notes
|
|
|
|
- Admin panel protected by nginx `auth_basic` + PHP session (`AdminAuth`)
|
|
- Uploads stored outside webroot, served via controlled `media.php`
|
|
- Rate limiting on public search (`src/RateLimit.php`)
|
|
- See `nginx/docs/SECURITY_HEADERS.md` for security headers reference
|
|
|
|
|