Add DISCOURSE_PUMA_BIND to Discourse env and switch the discourse.service to load EnvironmentFile=/opt/discourse/.env. Create a separate systemd unit for Sidekiq (discourse-sidekiq.service), enable both services, and adjust messaging to "Services". In simplelogin install: remove git from apt list, bump PostgreSQL setup from 16 to 17, and export FLASK_APP=server before running migrations/initialization so Flask commands run with the correct app context.
Discourse install: add PG_DB_EXTENSIONS="vector" to setup_postgresql_db and remove the separate CREATE EXTENSION psql call; also remove curl and git from the apt install list and drop the automatic admin bootstrap messaging. SimpleLogin install: source /opt/simplelogin/.env before running migrations and add EnvironmentFile=/opt/simplelogin/.env to the systemd unit files (gunicorn, email_handler, job_runner) so services inherit environment variables.
Bump PostgreSQL target from 16 to 17 in discourse-install.sh and make pg_hba.conf lookup dynamic (uses find) instead of a hardcoded path, ensuring compatibility with systems where the data directory path differs. Also add EMAIL_SERVERS_WITH_PRIORITY and POSTFIX_SERVER entries to the SimpleLogin .env to configure local mail delivery (set to localhost).
Add support for deploying Discourse as a container: adds ct/discourse.sh (container build/install/update flow and resource defaults), frontend/public/json/discourse.json (app metadata, install resources, and notes), and install/discourse-install.sh (full installer that installs dependencies, Postgres/Node/Ruby, clones the Discourse repo, generates secrets and DB password saved to /opt/discourse/.env, installs gems and yarn, precompiles assets, runs migrations, creates an admin user, sets up a systemd service and nginx reverse proxy, and enables required services). Admin user 'admin' is created with a generated password stored in the .env file.