4.9 KiB
Unraid Installation Guide — UI Stock Tracker
UI Stock Tracker runs as a single Docker container — nginx serves the frontend and proxies API calls to the Node.js backend, both managed inside the container by supervisord.
Two installation methods are covered: CLI via SSH (recommended) and GUI via Compose Manager.
Prerequisites
- Unraid 6.10 or later
- Docker enabled: Settings → Docker → Enable Docker → Yes
- A share to store the persistent SQLite database (e.g.
/mnt/user/appdata/ui-tracker/data)
Method 1 — CLI via SSH (Recommended)
1. SSH into your Unraid server
ssh root@<your-unraid-ip>
2. Copy the project files
mkdir -p /mnt/user/appdata/ui-tracker
cd /mnt/user/appdata/ui-tracker
git clone https://github.com/<your-username>/ui-tracker.git .
No git? Copy the folder via SMB (
\\<unraid-ip>\appdata) or SFTP instead.
3. Build and start
docker compose up -d --build
The first build takes a few minutes — it compiles both the React frontend and the Node.js backend, then installs Chromium. Subsequent starts are instant.
4. Verify it's running
docker compose ps
Expected:
NAME STATUS
ui-tracker running
5. Open the web UI
http://<your-unraid-ip>:8080
Useful commands
# Live logs (nginx + backend combined)
docker compose logs -f
# Restart the container
docker compose restart
# Stop
docker compose down
# Rebuild after updating the code
docker compose up -d --build
Method 2 — GUI via Compose Manager Plugin
1. Install Compose Manager
- Go to Apps (Community Applications)
- Search for Compose Manager and install it
- It appears under Docker → Compose
2. Upload the project files
Copy the ui-tracker folder to your Unraid server at:
/mnt/user/appdata/ui-tracker/
Use any of: SMB share (\\<unraid-ip>\appdata), SFTP (FileZilla / WinSCP), or the Unraid Tools → File Manager.
3. Add the stack
- Go to Docker → Compose → Add New Stack
- Name:
ui-tracker - Compose file path:
/mnt/user/appdata/ui-tracker/docker-compose.yml - Click Save
4. Build and start
- Expand the
ui-trackerstack row - Click Build (takes a few minutes on first run)
- Click Start
5. Open the web UI
http://<your-unraid-ip>:8080
Manual Docker Run (No Compose)
If you prefer to run it without docker-compose:
docker build -t ui-tracker /mnt/user/appdata/ui-tracker
docker run -d \
--name ui-tracker \
--restart unless-stopped \
-p 8080:8080 \
-v /mnt/user/appdata/ui-tracker/data:/app/data \
ui-tracker
Container Internals
| Process | Role |
|---|---|
| supervisord | Process manager — keeps both services alive |
| nginx | Serves the React frontend on port 8080, proxies /api/ to Node.js |
| node | Express API + Puppeteer scraper + scheduler |
Port Reference
| Host Port | Purpose |
|---|---|
| 8080 | Web UI (only port you need open) |
To use a different port, change
"8080:8080"to"<port>:8080"indocker-compose.ymlbefore building.
Data Persistence
The SQLite database lives at:
/mnt/user/appdata/ui-tracker/data/tracker.db
It is mounted into the container via the volume in docker-compose.yml. All tracked items and Telegram settings survive container restarts, rebuilds, and updates.
Backup:
cp /mnt/user/appdata/ui-tracker/data/tracker.db ~/tracker-backup.db
First-Time Setup
Once the UI is open:
- Click Settings (top right)
- Enter your Bot Token:
8769097441:AAFBqPlSTcTIi3I-F5ZIN9EEpwbNDzHg8hM - Enter your Chat ID:
8435449432 - Click Test Alert — a Telegram message should arrive within seconds
- Click Save
- Click Add Item, paste a
store.ui.comproduct URL, set your check interval, click Start Tracking
Troubleshooting
UI shows "Cannot reach backend"
docker logs ui-tracker
Look for Node.js startup errors. The backend starts on port 3001 internally — nginx proxies to it.
Telegram test fails
- Verify the bot token and chat ID in Settings
- Send
/startto your bot in Telegram at least once to open the conversation - Confirm Unraid has outbound HTTPS access (port 443)
Items stuck on "Unknown" status
docker logs ui-tracker | grep Scheduler
Puppeteer errors here usually mean Chromium failed to launch. Try restarting:
docker compose restart
Port 8080 already in use
netstat -tulnp | grep 8080
Change the host port in docker-compose.yml and rebuild.
Updating
cd /mnt/user/appdata/ui-tracker
git pull
docker compose up -d --build
The database and all your settings are preserved.