55 lines
1.2 KiB
Markdown
55 lines
1.2 KiB
Markdown
# Jellomator
|
|
|
|
Dark dashboard for Arr* services and custom links.
|
|
|
|
## Features
|
|
|
|
- First-run admin setup
|
|
- Cookie-based admin auth
|
|
- Public dashboard with search/filter
|
|
- Dedicated protected admin page at `/admin`
|
|
- Link CRUD backed by MariaDB
|
|
- Icon blobs stored in the database
|
|
- Single-container deployment
|
|
- Admin-managed service links
|
|
|
|
## Local Dev
|
|
|
|
```bash
|
|
npm install
|
|
npm run dev
|
|
```
|
|
|
|
Backend runs on `http://localhost:6363`.
|
|
|
|
Open `/admin` for the protected management page.
|
|
|
|
## Docker
|
|
|
|
```bash
|
|
docker compose up --build
|
|
```
|
|
|
|
The app expects a MariaDB instance configured through environment variables.
|
|
|
|
### Session and Cookie Env Vars
|
|
|
|
- `SESSION_TTL_SECONDS` (default: `86400`)
|
|
- `SESSION_COOKIE_SECURE` (default: `false`, set `true` in production HTTPS)
|
|
- `REQUIRE_CSRF` (default: `false`, checks same-origin/same-referer for write routes when enabled)
|
|
- `LOGIN_MAX_ATTEMPTS` (default: `5`)
|
|
- `LOGIN_WINDOW_SECONDS` (default: `300`)
|
|
- `LOGIN_LOCKOUT_SECONDS` (default: `900`)
|
|
- `MAX_ICON_BYTES` (default: `2097152`)
|
|
|
|
## Gitea CI/CD
|
|
|
|
Add these secrets in Gitea:
|
|
|
|
- `REGISTRY`
|
|
- `REGISTRY_USERNAME`
|
|
- `REGISTRY_PASSWORD`
|
|
- `IMAGE_NAME`
|
|
|
|
The workflow builds and pushes `latest` plus the commit SHA tag.
|