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:
2026-07-25 22:53:34 +02:00
co-authored by Junie
parent 5102945ab4
commit 11b77a6994
5 changed files with 30 additions and 9 deletions
@@ -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;
@@ -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.