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

1.6 KiB

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)

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

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)

cd frontend
npm install
npm run dev

Production-style (API serves frontend/dist):

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.