73 lines
3.8 KiB
Markdown
73 lines
3.8 KiB
Markdown
# Unraid Installation Guide for PNGer
|
|
|
|
This guide walks you through installing PNGer on Unraid using the Docker tab and "Add Container" feature. For the compose/CLI paths, local development and the full environment-variable table, see [INSTALL.md](INSTALL.md).
|
|
|
|
> PNGer has **no authentication**. Anyone who can reach the port can upload images and burn CPU on your box. Keep it on the LAN, or put it behind a reverse proxy with auth before exposing it.
|
|
|
|
## Requirements
|
|
- Unraid OS with Docker enabled.
|
|
- Appdata path ready (optional, if you want persistent temp storage).
|
|
|
|
## Step-by-Step Installation
|
|
|
|
1. Log into your Unraid WebGUI and navigate to the **Docker** tab.
|
|
2. Scroll to the bottom and click on **Add Container**.
|
|
3. Fill in the following details:
|
|
- **Name**: `PNGer`
|
|
- **Repository**: `registry.alwisp.com/jason/pnger:latest` — this is what the Gitea Actions workflow publishes on every push to `main`. Run `docker login registry.alwisp.com` once on the Unraid host so it can pull. If you built the image locally on the box instead (`docker build -t pnger:latest .`), use `pnger:latest`.
|
|
- **Network Type**: `Bridge`
|
|
|
|
4. Click on **+ Add another Path, Port, Variable, Label or Device** to add the required parameters.
|
|
|
|
### Port Configuration
|
|
- **Config Type**: `Port`
|
|
- **Name**: `WebUI`
|
|
- **Container Port**: `3000`
|
|
- **Host Port**: `8080` (or whichever port is free on your Unraid system).
|
|
- **Connection Protocol**: `TCP`
|
|
|
|
### Environment Variables
|
|
Add the following variables by clicking **+ Add another Path, Port, Variable...** and selecting **Variable** as the Config Type:
|
|
|
|
1. **PUID**
|
|
- **Name**: `User ID (PUID)`
|
|
- **Key**: `PUID`
|
|
- **Value**: `99` (Unraid's nobody user).
|
|
|
|
2. **PGID**
|
|
- **Name**: `Group ID (PGID)`
|
|
- **Key**: `PGID`
|
|
- **Value**: `100` (Unraid's users group).
|
|
|
|
3. **TZ**
|
|
- **Name**: `Timezone`
|
|
- **Key**: `TZ`
|
|
- **Value**: `America/New_York` (Enter your specific Timezone here).
|
|
|
|
4. **MAX_FILE_SIZE** (Optional — and currently inert)
|
|
- **Name**: `Max Upload Size (Bytes)`
|
|
- **Key**: `MAX_FILE_SIZE`
|
|
- **Value**: `10485760` (10 MB in bytes).
|
|
- ⚠️ The application does **not** read this today: the live upload middleware sets no size limit, so uploads are effectively unbounded and are held in memory. Setting the variable does nothing. Until it is wired up, cap request bodies at your reverse proxy and give the container a sensible memory limit.
|
|
|
|
### Volume Mapping (not needed)
|
|
PNGer is stateless — uploads are processed in memory and streamed straight back, and nothing is ever written to `/app/temp` despite the directory existing. There is nothing to persist and nothing to back up. If you want the mapping anyway, it is harmless:
|
|
- **Config Type**: `Path`
|
|
- **Name**: `Temp Processing Dir`
|
|
- **Container Path**: `/app/temp`
|
|
- **Host Path**: `/mnt/user/appdata/pnger/temp`
|
|
|
|
5. **Apply Settings**:
|
|
- Scroll to the bottom and press **Apply**. Unraid will pull the image and create the container with the specified settings.
|
|
|
|
## Accessing PNGer
|
|
Once the container states "started", you can access the Web GUI by navigating to your Unraid IP and the port you assigned (e.g., `http://192.168.1.100:8080`).
|
|
|
|
---
|
|
|
|
**Updates:**
|
|
Every push to `main` rebuilds `registry.alwisp.com/jason/pnger:latest` on the Gitea runner. To take a new build: **Docker** tab → container row → **Force update** (or let the *CA Auto Update Applications* plugin do it on a schedule). There is no state, so an update is just a container recreation. Only `:latest` is published — there is no per-SHA tag to pin or roll back to.
|
|
|
|
**Troubleshooting:**
|
|
If the container stops instantly, check the **Logs** in Unraid. Ensure that the port you selected on the host is not already in use by another container (like a web server or another app). If the container starts but the WebGUI is blank, confirm the host port maps to container port **3000**.
|