fix: change Umami external port from 3000 to 3001 to avoid conflict with Gitea
Co-authored-by: Junie <junie@jetbrains.com>
This commit is contained in:
@@ -588,3 +588,15 @@
|
||||
**Context**: Post-workflow follow-up (feature already marked Complete); continues the `feature/analytics_uptime_dashboard` branch, refining the Umami deployment approach before it has been executed on the Pi. Documentation-only change (no code/build impact).
|
||||
|
||||
---
|
||||
|
||||
## Post-Completion Follow-up: Umami External Port Changed (3000 → 3001) to Avoid Conflict with Gitea
|
||||
|
||||
**Timestamp**: 2026-07-25T22:39:00Z
|
||||
|
||||
**User Input**: "de poort 3000 is la in gebruik. volgens mij door gitea: Error: unable to start container ...: rootlessport listen tcp 192.168.1.103:3000: bind: address already in use"
|
||||
|
||||
**AI Response**: "Confirmed the reported cause: Gitea already occupies port 3000 system-wide on the same Pi, so even though Umami's `podman-compose.yml.example` binds specifically to `192.168.1.103:3000` (not `0.0.0.0`), it still conflicts because Gitea's own binding already covers that IP/port combination. Changed the external port mapping to `192.168.1.103:3001:3000` (container still listens internally on 3000), and updated all references accordingly: `nginx/analytics-nginx.conf.example` (`proxy_pass` target + comments), `monitoring-setup.md` (decision summary), and `umami-setup.md` (heartbeat-check `curl` command, with an explanatory note)."
|
||||
|
||||
**Context**: Post-workflow follow-up (feature already marked Complete); continues the `feature/analytics_uptime_dashboard` branch, fixing a port conflict discovered before the Umami deployment has been executed on the Pi. Documentation/example-config-only change (no code/build impact).
|
||||
|
||||
---
|
||||
|
||||
+5
-3
@@ -3,9 +3,11 @@
|
||||
# Umami-analyticsdashboard bereikbaar te maken via analytics.slpsoftware.nl.
|
||||
#
|
||||
# Umami zelf draait als podman-container op de webserver-Pi (Pi Main,
|
||||
# 192.168.1.103:3000 — zie ../umami/podman-compose.yml.example) en heeft dus
|
||||
# 192.168.1.103:3001 — zie ../umami/podman-compose.yml.example) en heeft dus
|
||||
# GEEN eigen nginx-configuratie op die Pi nodig; Umami serveert zijn eigen
|
||||
# dashboard + tracking-script rechtstreeks via die poort.
|
||||
# dashboard + tracking-script rechtstreeks via die poort. Let op: de externe
|
||||
# poort is bewust 3001 (niet het gebruikelijke 3000), omdat Gitea op diezelfde
|
||||
# Pi al poort 3000 systeembreed bezet.
|
||||
#
|
||||
# Kopieer dit bestand handmatig naar bijvoorbeeld
|
||||
# /etc/nginx/sites-available/slpsoftware-analytics.conf op de reverse-proxy-Pi,
|
||||
@@ -47,7 +49,7 @@ server {
|
||||
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
|
||||
|
||||
location / {
|
||||
proxy_pass http://192.168.1.103:3000;
|
||||
proxy_pass http://192.168.1.103:3001;
|
||||
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
|
||||
+6
-3
@@ -17,11 +17,14 @@ services:
|
||||
image: docker.umami.is/umami-software/umami:postgresql-latest
|
||||
# Alleen op het interne (LAN) IP van deze Pi binden, niet op 0.0.0.0 — zelfde
|
||||
# aanpak als webserver-nginx.conf.example, zodat deze poort niet per ongeluk
|
||||
# vanaf buiten het netwerk bereikbaar is. De reverse-proxy-Pi stuurt
|
||||
# analytics.slpsoftware.nl door naar 192.168.1.103:3000 (zie
|
||||
# vanaf buiten het netwerk bereikbaar is. Externe poort is 3001 (i.p.v. het
|
||||
# gebruikelijke 3000), omdat Gitea op dezelfde Pi al poort 3000 systeembreed
|
||||
# bezet (ook op dit interne IP, ongeacht dat Umami een specifiek IP opgeeft).
|
||||
# De container zelf luistert intern nog gewoon op 3000. De reverse-proxy-Pi
|
||||
# stuurt analytics.slpsoftware.nl door naar 192.168.1.103:3001 (zie
|
||||
# ../nginx/analytics-nginx.conf.example).
|
||||
ports:
|
||||
- "192.168.1.103:3000:3000"
|
||||
- "192.168.1.103:3001:3000"
|
||||
environment:
|
||||
DATABASE_URL: postgresql://umami:${POSTGRES_PASSWORD}@db:5432/umami
|
||||
DATABASE_TYPE: postgresql
|
||||
|
||||
@@ -41,7 +41,8 @@ Both the console and Sentry are now active (original Question 3 resolved as a co
|
||||
|
||||
### Website analytics — decided: self-hosted Umami
|
||||
**Decided**: self-hosted Umami, running via Podman on the webserver Pi (Pi Main,
|
||||
`192.168.1.103:3000`), reachable for the dashboard itself via `analytics.slpsoftware.nl`
|
||||
`192.168.1.103:3001` — note: not the default 3000, since Gitea already occupies
|
||||
that port on the same Pi), reachable for the dashboard itself via `analytics.slpsoftware.nl`
|
||||
(reverse-proxied + SSL via certbot, same pattern as `test.slpsoftware.nl`). Chosen over
|
||||
GA4 for privacy-friendliness (typically no cookie banner needed) and full self-hosted
|
||||
control, and over a hosted Umami/Plausible plan to avoid recurring cost.
|
||||
|
||||
@@ -73,9 +73,12 @@ onder een eigen `umami`-user te draaien in plaats van je eigen hoofdaccount:
|
||||
cd ~/umami
|
||||
podman-compose up -d
|
||||
```
|
||||
4. Controleer dat Umami draait en bereikbaar is op het interne netwerk:
|
||||
4. Controleer dat Umami draait en bereikbaar is op het interne netwerk. Let op: de
|
||||
**externe** poort is `3001`, niet het gebruikelijke `3000` — die poort is op deze Pi al
|
||||
in gebruik door Gitea (`bind: address already in use` bij het opstarten van de
|
||||
container als je toch `3000` gebruikt):
|
||||
```bash
|
||||
curl http://192.168.1.103:3000/api/heartbeat
|
||||
curl http://192.168.1.103:3001/api/heartbeat
|
||||
```
|
||||
Dit zou een JSON-antwoord met `"ok"` moeten teruggeven.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user