Files
MincedPad/README.md
2026-07-14 13:03:51 +08:00

61 lines
1.6 KiB
Markdown

# MincedPad
Self-hosted anonymous paste / file share: public wall, TTL, burn-after-read, and a password-gated admin panel. One Docker container serves the Vue SPA and FastAPI API on port **8080**.
## Deploy (Docker Compose)
```bash
docker compose up -d --build
```
Open http://127.0.0.1:8080/
Admin: http://127.0.0.1:8080/admin
Data (SQLite + uploads) persists in `./data` on the host (`DATA_DIR=/data` in the container).
## Environment
| Variable | Default | Meaning |
| --- | --- | --- |
| `ADMIN_PASSWORD` | `changeme` | Admin login password |
| `SECRET_KEY` | (dev default) | JWT signing secret — change in production |
| `MAX_UPLOAD_MB` | `200` | Max upload size in megabytes |
| `RATE_LIMIT_PER_SECOND` | `2` | Create/upload rate limit per IP |
| `DATA_DIR` | `/data` | SQLite + uploads directory |
Set these under `environment:` in `docker-compose.yml` (or via your orchestrator).
## Mobile
The UI is mobile-first (Element Plus responsive grid, full-width controls under 768px). Use a real phone or browser device mode for smoke checks after deploy.
## Local development
**API**
```bash
cd backend
python -m venv ../.venv && source ../.venv/bin/activate
pip install -r requirements.txt
DATA_DIR=../data PYTHONPATH=. uvicorn app.main:app --host 0.0.0.0 --port 8080 --reload
```
**Frontend** (proxies `/api` to `:8080`)
```bash
cd frontend
npm install
npm run dev
```
Production-style (API serves `frontend/dist`):
```bash
cd frontend && npm run build
cd ../backend && DATA_DIR=../data PYTHONPATH=. uvicorn app.main:app --port 8080
```
## License
Use as you like for self-hosting.