3.8 KiB
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.
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
-
Log into your Unraid WebGUI and navigate to the Docker tab.
-
Scroll to the bottom and click on Add Container.
-
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 tomain. Rundocker login registry.alwisp.comonce on the Unraid host so it can pull. If you built the image locally on the box instead (docker build -t pnger:latest .), usepnger:latest. - Network Type:
Bridge
- Name:
-
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:
-
PUID
- Name:
User ID (PUID) - Key:
PUID - Value:
99(Unraid's nobody user).
- Name:
-
PGID
- Name:
Group ID (PGID) - Key:
PGID - Value:
100(Unraid's users group).
- Name:
-
TZ
- Name:
Timezone - Key:
TZ - Value:
America/New_York(Enter your specific Timezone here).
- Name:
-
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.
- Name:
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
- 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.