feat(net_config): safer ufw restart on NAT/forwarding changes
- Replace 'ufw disable && ufw --force enable' single-shot handler with a block that dry-runs the ruleset, disables, re-enables, then verifies ufw is active. No '&&' short-circuit, so failures are loud instead of leaving the host firewall-less. - Rename handler to 'Restart ufw (ip-forwarding settings changed)' to reflect that this is a full restart (required to pick up /etc/default/ufw and /etc/ufw/before.rules changes per ufw(8)). - Add NAT/masquerade tasks: enable ipv4 forwarding, set DEFAULT_FORWARD_POLICY=ACCEPT, and write a per-interface *nat block in /etc/ufw/before.rules. - Declare requires_ansible >=2.15 in meta/runtime.yml (handler uses block:, supported since 2.12; 2.15 is a safe modern floor). - README: document Ansible version requirement, port reservation rules, and Immich pgvector Q&A.
This commit is contained in:
@@ -34,8 +34,24 @@ This is a good playground to learn and I encourage you to adapt these roles to y
|
||||
| static-web | Static website hosting |
|
||||
| vpn | WireGuard server |
|
||||
|
||||
## Port Reservation Rules
|
||||
|
||||
Reserved ports that **must not** be used as role defaults:
|
||||
|
||||
| Port(s) | Protocol | Reserved for |
|
||||
| --- | --- | --- |
|
||||
| 80 | tcp | Nginx |
|
||||
| 443 | tcp | Nginx |
|
||||
| 3000-3009 | tcp | Testing |
|
||||
| 4430 | tcp | Testing |
|
||||
| 8080 | tcp | Testing |
|
||||
|
||||
When adding a new role, pick a default port outside these ranges.
|
||||
|
||||
## Requirements
|
||||
|
||||
Ansible `>=2.15`
|
||||
|
||||
Base tools:
|
||||
|
||||
```sh
|
||||
@@ -110,3 +126,17 @@ Linting:
|
||||
ansible-lint
|
||||
npx prettier --write .
|
||||
```
|
||||
|
||||
## Q&A
|
||||
|
||||
### Immich crash loop: `PostgresError: must be owner of extension vector`
|
||||
|
||||
Immich tries to self-update the `pgvector` extension at startup, but its database user is intentionally `NOSUPERUSER`, so the `ALTER EXTENSION vector UPDATE` call fails and the microservices worker exits with code 1.
|
||||
|
||||
Fix it on the running host by updating the extension as the `postgres` superuser:
|
||||
|
||||
```sh
|
||||
sudo -u postgres psql -d immich -c 'ALTER EXTENSION vector UPDATE;'
|
||||
```
|
||||
|
||||
The Immich role also runs this automatically on subsequent playbook runs, so re-deployments after a pgvector package upgrade do not require manual intervention.
|
||||
|
||||
Reference in New Issue
Block a user