Ops: upgrade PostgreSQL 16 → 18
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- Over a week
- Newbie friendliness
- 22/100
Research direction
Start with the image tags in docker-compose.yaml and docker-compose.test.yaml, which pin postgres:17-alpine, and the Portainer stack in deployment/portainer/docker-compose.portainer.yaml. Confirm the production version and extensions on the host, then rehearse the 16-to-18 upgrade on a staging copy and run manage.py migrate plus the test suite. Done means production reports PostgreSQL 18.x and the API, Celery and Channels paths work; this needs production access, so it is not a good first task.
Written by the indexing model from the issue text.
Description
Goal
Upgrade production (and align dev) PostgreSQL from 16 to 18 with minimal downtime and a verified rollback path.
Context
- Production currently on PostgreSQL 16 (operator-confirmed).
- In-repo dev compose uses
postgres:17-alpine(docker-compose.yaml,docker-compose.test.yaml) — consider aligning dev/test to 18 after prod upgrade. - Portainer deployment:
deployment/portainer/docker-compose.portainer.yaml— app services onpg_net; Postgres may be a separate stack/volume. - Django 4.x/5.x supports PostgreSQL 14+; confirm no extension/version blockers (
pg_trgm, etc.).
Suggested approach
- Prerequisite: automated backups in place (see separate backup ticket) + fresh manual dump before upgrade.
- Staging: upgrade staging clone 16→18; run full test suite + smoke (migrate, ingest, admin).
- Production:
pg_upgradeor dump/restore — pick based on data size and downtime budget. - Update image tags / Portainer env / any CI test DB image to
postgres:18-alpine(or pinned minor). - Post-upgrade:
VACUUM/ analyze, verify extensions, connection pooling (if any).
Scope
- Inventory PG version, extensions, and data directory layout on prod host
- Document upgrade runbook (steps, estimated downtime, rollback = restore from backup)
- Execute on staging; record issues
- Production maintenance window + upgrade
- Bump dev/test compose images to 18 for parity
- Update deployment docs
Risks
- Major version jump (16→18): use PostgreSQL upgrade docs; test
pg_upgradeon copy first. - Meshflow migration history: run
manage.py migrateafter upgrade on staging.
Acceptance
- Production
SELECT version();reports PostgreSQL 18.x - Meshflow API, Celery workers, and Channels/WebSocket paths operate normally post-upgrade
- Dev compose references Postgres 18 (or documents intentional lag)
- Dominant language
- Python
- Stars
- 1
- Forks
- 0
- Avg merge
- 1d 20h
- Merged PRs (30d)
- 5
Getting set up
- Ships a Dockerfile or Docker Compose file
- Has a pull request template
- No contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from pskillen/meshflow-api
-
enhancement meshtastic-2.8
Difficulty 2/5 1-3 hours Newbie friendliness 62/100
pskillen/meshflow-api#459 ·
-
enhancement meshtastic-2.8
Difficulty 3/5 1-2 days Newbie friendliness 35/100
pskillen/meshflow-api#465 ·
-
enhancement meshtastic-2.8
Difficulty 4/5 3-5 days Newbie friendliness 22/100
pskillen/meshflow-api#464 ·
-
enhancement meshtastic-2.8
Difficulty 4/5 3-5 days Newbie friendliness 35/100
pskillen/meshflow-api#463 ·
-
enhancement meshtastic-2.8
Difficulty 3/5 1-2 days Newbie friendliness 45/100
pskillen/meshflow-api#462 ·
All issues in pskillen/meshflow-api
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
microsoft/markitdown#2820 ·
Maintainers usually reply within 1 day
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 66/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
yt-project/yt#5624 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
NousResearch/hermes-agent#148376 ·
Maintainers usually reply within 1 day