Blazor Web App (server-side interactivity) for tracking animal sightings.
- .NET SDK 10
- Node.js (for Tailwind build)
In one terminal:
cd C:\src\AnimalTracker
npm run watch:cssIn another terminal:
cd C:\src\AnimalTracker
dotnet run --project .\src\AnimalTracker\AnimalTracker.csproj- Copy or clone this repo onto UnRaid (for example under
/mnt/user/appdata/animaltracker-src). - In the repo root, create your environment file:
cp .env.example .env- Edit
.envand set:
APP_PORT(default8085)ANIMALTRACKER_IMAGE(defaultghcr.io/unthred/animaltracker:main)DATA_ROOT(default./data, or absolute/mnt/user/appdata/animaltracker)- optional logging levels:
LOG_LEVEL_DEFAULTLOG_LEVEL_ASPNETCORELOG_LEVEL_EF_SQL(setInformationtemporarily to see SQL)LOG_LEVEL_EF_MIGRATIONS
- optional first-run admin bootstrap:
ANIMALTRACKER_ADMIN_EMAILANIMALTRACKER_ADMIN_PASSWORD
- optional SMTP email delivery:
EMAIL_SMTP_HOSTEMAIL_SMTP_PORTEMAIL_SMTP_USERNAMEEMAIL_SMTP_PASSWORDEMAIL_FROM_EMAILEMAIL_FROM_NAMEEMAIL_ENABLE_SSL
- Start or update the container from repo root:
bash ./unraid-update.shThe update script:
- fast-forwards your repo on UnRaid
- pulls the latest published image from GHCR
- recreates only the
animaltrackercontainer to minimize downtime
Persisted paths (from docker-compose.yml):
${DATA_ROOT}/Data→/app/Data(SQLite DB)${DATA_ROOT}/App_Data→/app/App_Data(photos, backgrounds, data protection keys)
- If
EMAIL_SMTP_HOSTandEMAIL_FROM_EMAILare set, account confirmation and password reset emails are sent via SMTP. - Typical authenticated SMTP setup uses port
587withEMAIL_ENABLE_SSL=true. - If SMTP is not configured, the app falls back to showing generated auth links in the UI for local/dev use.
- If
ANIMALTRACKER_ADMIN_EMAILandANIMALTRACKER_ADMIN_PASSWORDare set in.env, the admin user is created/ensured on startup. - If left blank, register the first account in the UI; it becomes admin automatically.
- Admin dashboard route:
/admin.
Create animaltracker.yeradonkey.com in HAProxy and forward to the host port from .env (APP_PORT, default 8085).
Ensure HAProxy forwards:
X-Forwarded-Proto: httpsX-Forwarded-For