Full ALPR Database System for Blue Iris!

I think the code is stable, and Charlie hasn't had time to add new features. Maybe he'll come back or someone else will take up the challenge?
I just want to know that Charlie (@algertc) is okay. I know he was having health scares and a lot of life changes, a move, a new job and other pressures. Hopefully he'll stop by and give us an update.
 
I just want to know that Charlie (@algertc) is okay. I know he was having health scares and a lot of life changes, a move, a new job and other pressures. Hopefully he'll stop by and give us an update.
Ditto this.

But I'll also say that this ALPR application and database is exactly the kind of coding that AI excels at. And it's open source. To wit, scroll back a few pages and see the security hole that my Claude was able to detect and fix.

If anyone wants to throw some tokens at algertc's project, I'm sure it could add some of the requested features, easily.
 
Ditto this.

But I'll also say that this ALPR application and database is exactly the kind of coding that AI excels at. And it's open source. To wit, scroll back a few pages and see the security hole that my Claude was able to detect and fix.

If anyone wants to throw some tokens at algertc's project, I'm sure it could add some of the requested features, easily.
Charlie was in the process of creating a "Gen 2" version with a new database, a notification/rules engine, etc. and said he was very close. Anyone know if that is available to view and start testing? Maybe he can just jump into this conversation for a moment and give us an update and perhaps the best steps to offload the workload from him?

I know he said he doesn't have an active ALPR setup, but the rest of us do and would gladly give the gen 2 a go.

And with a little guidance from him on how to set up a dev environment, maybe a few of us could start learning and improving that version?
 
Ditto this.

But I'll also say that this ALPR application and database is exactly the kind of coding that AI excels at. And it's open source. To wit, scroll back a few pages and see the security hole that my Claude was able to detect and fix.

If anyone wants to throw some tokens at algertc's project, I'm sure it could add some of the requested features, easily.
GitHub - prsmith777/ALPR-Database-Community: Fully-Featured Automated License Plate Recognition Database Platform for Blue Iris + CodeProject AI Server



Ive been on this for over a month with Codex. Ive added tons of stuff and its working well but its kind of specialized for my setup so I dont know if it would work for others. I also have no idea how it could be implemented by others...sorry Im new at all this
 
He has not signed in since June 8th.
 
Somehow part of your database schema didn't get updated to the latest version. Try manually reapplying the schema.sql and migrations.sql.
  • Grab the updated schema.sql and migrations.sql directly from the ALPR-Database GitHub Repository.
    Move the fresh files into your local host directory mapped to the container.
    Access your database container console and run:
    psql -U postgres -d postgres -f /migrations/migrations.sql
I got it working by manually modifying the schema. I know next to nothing about sql, but I kept feeding the results into Google's AI, and, the REALLY scary thing is, after doing everything it suggested, I flipping got it working.
 
GitHub - prsmith777/ALPR-Database-Community: Fully-Featured Automated License Plate Recognition Database Platform for Blue Iris + CodeProject AI Server



Ive been on this for over a month with Codex. Ive added tons of stuff and its working well but its kind of specialized for my setup so I dont know if it would work for others. I also have no idea how it could be implemented by others...sorry Im new at all this
I've been using this fork for about 2 weeks now, it added a lot of features and functionality on top of the algertc/ALPR-Database. Things like future plate correction, viewing 500 results all at once, the expansion of rules and many more!

Thank you prsmith777!
 
How would one switch to this new fork?
Save whatever you want from the old ALPR, it will not migrate to the new ALPR.

I log into my docker,

I ran below to see what the CONTAINER ID are for both ALPR and postgres 13.
Code:
sudo docker ps -a

Copy the CONTAINER ID for one at a time for both, then paste the CONTAINER ID into the code and run it to stop both ALPR and postgres 13
Code:
sudo docker stop CONTAINER ID

Then I ran these according to GitHub - prsmith777/ALPR-Database-Community: Fully-Featured Automated License Plate Recognition Database Platform for Blue Iris + CodeProject AI Server

Code:
sudo git clone https://github.com/prsmith777/ALPR-Database-Community.git

Code:
sudo cd ALPR-Database-Community

Code:
sudo git checkout

approved-commit above

Code:
sudo docker build --tag alpr-dashboard:local .

Then run

Code:
sudo mkdir -p auth config logs storage

and

Code:
sudo cp .env.example to .env

Code:
sudo nano .env

fill in both passwords, CTRL Z then save the file.

Code:
sudo docker compose up -d.

Verify the new ALPR is up and running using the same url as the old ALPR.

Then you can delete the old ALPR and postgres 13 if you choose with.

Code:
sudo docker rm CONTAINER ID
 
Last edited:
Save whatever you want from the old ALPR, it will not migrate to the new ALPR.

I log into my docker,

I ran below to see what the CONTAINER ID are for both ALPR and postgres 13.
Code:
sudo docker ps -a

Copy the CONTAINER ID for one at a time for both, then paste the CONTAINER ID into the code and run it to stop both ALPR and postgres 13
Code:
sudo docker stop CONTAINER ID

Then I ran these according to GitHub - prsmith777/ALPR-Database-Community: Fully-Featured Automated License Plate Recognition Database Platform for Blue Iris + CodeProject AI Server

Code:
sudo git clone https://github.com/prsmith777/ALPR-Database-Community.git

Code:
sudo cd ALPR-Database-Community

Code:
sudo git checkout

approved-commit above

Code:
sudo docker build --tag alpr-dashboard:local .

Then run

Code:
sudo mkdir -p auth config logs storage

and

Code:
sudo cp .env.example to .env

Code:
sudo nano .env

fill in both passwords, CTRL Z then save the file.

Code:
sudo docker compose up -d.

Verify the new ALPR is up and running using the same url as the old ALPR.

Then you can delete the old ALPR and postgres 13 if you choose with.

sudo docker rm CONTAINER ID
Thanks for this detailed information.

Would there be a way to install this as a separate instance so I could run old and new in parallel?

You say to save the existing data because it won't migrate, but are there any details on the database differences. I'm not ready to lose all my existing data and would be willing to figure out a manual migration if needed.
 
You say to save the existing data because it won't migrate, but are there any details on the database differences. I'm not ready to lose all my existing data and would be willing to figure out a manual migration if needed.

Oh, I mean write down the "Known Plates", "MQTT server", and all the other information you want to keep. Above my pay grade to merge data from the two APR together.


Would there be a way to install this as a separate instance so I could run old and new in parallel?
You'll need another IP address, I'd would just install another Debian linux VM in my Proxmox virtual host, I don't know your setup so this is as far as I can help you.
 
Oh, I mean write down the "Known Plates", "MQTT server", and all the other information you want to keep. Above my pay grade to merge data from the two APR together.



You'll need another IP address, I'd would just install another Debian linux VM in my Proxmox virtual host, I don't know your setup so this is as far as I can help you.
This is the sort of task that Claude Code (and other AIs) excel at. Just be very clear up front that you want the AI to "plan before execute" so you can "review the plan" and do a "dry run before migration" and "run both in parallel" before retiring the original application. If you're explicit about these things, there is very little risk of data loss (e.g. lower than you doing it manually).

I will be doing this in about a week's time after I have Claude assist me with virtualizing the 3rd of my 3 installations, after it did an outstanding job on the first two.
 
Hi everyone,

I'd been thinking about this project. I've honestly been anxious to check the thread given my long absence. I don't actually get notifications, so I was surprised to see the activity.

I'm really happy to see that the good people of the forum have taken the torch and continued the development, especially considering the amount of tech debt in that codebase that was never originally intended to be used by anybody but me :facepalm:. Hopefully the newer LLMs can give that repo the brutal code review it deserves LOL.

Thank you to everyone who has contributed to the development of the tool, in whatever way that might be. I also looked through the fork briefly, and it seems good things are happening :)

Still with no ALPR setup in my near future and no time to spend on it (despite still being highly interested as a hobbyist), I'll confirm formally that I've stepped back from this project. It seems the fork is in good hands, and I would consider that to be the path forward now.

I'm writing this from a different computer that I fired up to check what was on my branch of the repository to see if I had anything to offer. It seems not, and that you guys have a solid direction for things. If anyone does end up wanting to discuss/chat, I can PM my email, which I will actually see and respond to, compared to notifications here.

The last thing that remains is my medium sized bucket of license plate images. Only certain versions of mikes model through CPAI actually uploaded both the full frames and the crops properly, but I am sitting on what seems to be at least somewhat valuable data for this community's purposes. Roughly 30GB of fulls and crops (tracked together). Depending on the model version, some images may require annotation, but I still suspect they might still be helpful.

As it read in the app, I stated the usage of those images to be for the purposes of improvement of our open detection and OCR models. They have been sitting, and I've declined to provide them for anything else. Might as well see if something can be made of them.

I'm not going to make the bucket public in order to respect the initial pledge to the users and their privacy, but if anyone known here working on training wants them, I will provide access.

IPcamtalk sends me email notifications for a bit after I log in, so I'll keep an eye on that and my PMs.

Again, super happy to see the idea carry on under somebody else. Makes my day to see it honestly after being such an awful maintainer haha. Bittersweet to not have a camera setup and keep tinkering on this, but I'm glad to see it sparked something to continue.

-Algertc
 
Hi everyone,

I'd been thinking about this project. I've honestly been anxious to check the thread given my long absence. I don't actually get notifications, so I was surprised to see the activity.

I'm really happy to see that the good people of the forum have taken the torch and continued the development, especially considering the amount of tech debt in that codebase that was never originally intended to be used by anybody but me :facepalm:. Hopefully the newer LLMs can give that repo the brutal code review it deserves LOL.

Thank you to everyone who has contributed to the development of the tool, in whatever way that might be. I also looked through the fork briefly, and it seems good things are happening :)

Still with no ALPR setup in my near future and no time to spend on it (despite still being highly interested as a hobbyist), I'll confirm formally that I've stepped back from this project. It seems the fork is in good hands, and I would consider that to be the path forward now.

I'm writing this from a different computer that I fired up to check what was on my branch of the repository to see if I had anything to offer. It seems not, and that you guys have a solid direction for things. If anyone does end up wanting to discuss/chat, I can PM my email, which I will actually see and respond to, compared to notifications here.

The last thing that remains is my medium sized bucket of license plate images. Only certain versions of mikes model through CPAI actually uploaded both the full frames and the crops properly, but I am sitting on what seems to be at least somewhat valuable data for this community's purposes. Roughly 30GB of fulls and crops (tracked together). Depending on the model version, some images may require annotation, but I still suspect they might still be helpful.

As it read in the app, I stated the usage of those images to be for the purposes of improvement of our open detection and OCR models. They have been sitting, and I've declined to provide them for anything else. Might as well see if something can be made of them.

I'm not going to make the bucket public in order to respect the initial pledge to the users and their privacy, but if anyone known here working on training wants them, I will provide access.

IPcamtalk sends me email notifications for a bit after I log in, so I'll keep an eye on that and my PMs.

Again, super happy to see the idea carry on under somebody else. Makes my day to see it honestly after being such an awful maintainer haha. Bittersweet to not have a camera setup and keep tinkering on this, but I'm glad to see it sparked something to continue.

-Algertc
I'm still not understanding the way to migrate from the original version to the fork by @prsmith777, especially the database or how to regularly update to new versions, etc.

Any insight you can provide since you've looked further into the fork than I have. Also, what would be the way to start understanding the codebase of either yours or the fork? I'm not even sure what development environment one would setup.
 
Hey guys,
I did all this work on ALPR using AI (Codex). I'm new at all this and never thought to make it easy for others to migrate or use.

That being said, I just ran it through Codex and it says it shouldnt be too difficult to come up with a plan for others to migrate.

I am busy this week, but hopefully I can get to it next week.

ALPR Database Community keeps the original Blue Iris/CodeProject ALPR foundation while adding stronger privacy, security, and operational tooling. Major additions include named users and roles, audit history, safer plate corrections and aliases, improved search/filtering and CSV/JSON exports, unified MQTT/Pushover/email/webhook notifications, structured diagnostics, storage and backup controls, richer Blue Iris direction and vehicle views, local vehicle ReID and attributes, and radar/traffic support. It also removes upstream telemetry, training uploads, and remote update paths, and builds from a pinned source commit instead of pulling the upstream image. See the fork README and changelog.
The PostgreSQL upgrade makes migration more involved, but not inherently difficult:

  • Upstream uses PostgreSQL 13; the fork uses 17.10. The old Docker volume cannot be attached directly to PostgreSQL 17.
  • Users need a logical dump and restore into a fresh PostgreSQL 17 volume, followed by the fork’s schema migrations. This is the normal supported cross-major upgrade path. PostgreSQL’s documentation confirms that major upgrades require dump/reload or pg_upgrade.
  • Your schema work is overwhelmingly additive and preserves existing plate data and legacy notification rules. However, historical backfills and index creation may require noticeable downtime on large databases.
  • auth, config, and storage must also be preserved because images and some configuration are outside PostgreSQL.
  • PostgreSQL 13 is already unsupported, so moving away from it is the right decision. PostgreSQL version policy
The larger obstacle is packaging: currently there is no public migration guide or stable fork release/tag. Before inviting migrations, I would publish a tested upstream-v0.1.9 migration target and a helper covering:

backup → stop old app → dump PG13 → restore into fresh PG17 → apply migrations → preserve auth/config/storage → compare counts and images → retain old volume for rollback

So I’d describe it as “planned maintenance, not a drop-in docker compose up.” With a tested helper script, it should be quite manageable.
 
Again, super happy to see the idea carry on under somebody else. Makes my day to see it honestly after being such an awful maintainer haha. Bittersweet to not have a camera setup and keep tinkering on this, but I'm glad to see it sparked something to continue.
Thank you for getting this as far as you did! We're all here on this thread because of the work you put in. A ton of FOSS projects are no longer maintained by their originators, but that doesn't make the projects any less useful, nor their originators' work any less valuable. Take care of yourself. Put your own mask on before helping others.
 
  • Like
Reactions: algertc
ALPR Database Community should be ready for everyone to try now.


This is only good on Linux and Windows running a Linux VM.

Install script will give you several options:

  1. New installation
Creates a completely new, empty Community system for someone who has never used ALPR.
  • Checks computer compatibility and resources.
  • Installs or validates Git, Docker, Compose, Buildx, and Node.js 24.
  • Downloads the verified Community release.
  • Starts the guided installer.
  • Creates a new database, storage directories, configuration, and administrator account.
  • Starts ALPR.
It does not contain existing plate records or images.

  1. Migrate an existing ALPR system
Prepares a new Community installation that will receive data from an older ALPR system.
  • Checks migration-specific requirements.
  • Installs or validates the required software, including PostgreSQL client utilities, rsync, and SSH.
  • Downloads the verified Community release into a separate target directory.
  • Does not alter or stop the old ALPR system.
  • Finishes by directing the user to the migration wizard.
The migration wizard then copies and validates the database, images, configuration, and administrator setup. This is a side-by-side migration—not an in-place upgrade.

  1. Check this computer without changing it
Determines whether the computer is ready before installing anything.

The user chooses whether to test it as:

  • A new-installation computer, or
  • A migration-target computer.
It reports the Linux version, processor architecture, CPU, memory, storage, filesystem, required utilities, and compatibility problems. It does not install packages, clone ALPR, create databases, or start containers.


If you want to migrate your database these are the requirements:

  • Original ALPR Database: the database must match the v0.1.9 schema, running PostgreSQL 13 or 17. An older Original installation must first be updated through v0.1.9 so its database migrations are complete.
  • ALPR Database Community: v0.1.20 or newer, running PostgreSQL 13 or 17.
 
  • Like
Reactions: MikeLud1