I run mine on a separate server in containers (using Podman). For architecture, the server just connects directly to each agent, using my VPN network
Selfhosted
A place to share alternatives to popular online services that can be self-hosted without giving up privacy or locking you into a service you don't control.
Rules:
-
Be civil: we're here to support and learn from one another. Insults won't be tolerated. Flame wars are frowned upon.
-
No spam posting.
-
Posts have to be centered around self-hosting. There are other communities for discussing hardware or home computing. If it's not obvious why your post topic revolves around selfhosting, please include details to make it clear.
-
Don't duplicate the full text of your blog or github here. Just post the link for folks to click.
-
Submission headline should match the article title (don’t cherry-pick information from the title to fit your agenda).
-
No trolling.
Resources:
- selfh.st Newsletter and index of selfhosted software and apps
- awesome-selfhosted software
- awesome-sysadmin resources
- Self-Hosted Podcast from Jupiter Broadcasting
Any issues on the community? Report it using the report flag.
Questions? DM the mods!
I am using it and tbh didn't have too many issues with it. It runs as a LXC on my Proxmox server.
With that it's a fairly comfortable setup - it does have API access on the proxmox node and therefore automatically discovers all LXCs,even the ones you add after the installation.
For other machines I use a fairly easy bash script to download the agent 2 and then overwrite the config file with the right parameters,but that's just me being lazy - it's not that much work doing it by hand as well.
And for everything else there is always SNMP which is fairly well supported and there are tons of templates nowadays.
Tbh, I had Prometheus/Grafana before and found it to be much more complicated, especially when you need active and passive nodes. The fact that Zabbix is "All in one" is fairly nice sometimes.
Dashboards are a bit lacking behind Grafana at times,but I can live with that.
I used to. It's really complicated and not big in the self hosted space.
I'd recommend the standard Prometheus, alert manager, and grafana stack instead. That's what I use now, and although yaml sure is something, at least there's tons of people to copy.
Zabbix is more powerfull for complex alerting scenarios and has better agent-based monitoring, while Prom/Grafana excels at metrics visualzation and integrates better with containers - they're actually complementary depending on what you're monitoring.
But can Prometheus + Grafana e.g. monitor a website’s content and alert when there is a new firmware version available?
Zabbix can be configured completely via its GUI. It’s really easy once you get the hang of it.
Ehh. I wouldn’t say it’s ever easy. At least not the initial setup. No matter how many times I do it, that initial setup is always a pain in the butt.
But once you get it configured and go through the initial headaches, it’s a breeze to coast on it.
What is complicated in Zabbix?
I have this running on a Raspberry Pi 5:
services:
db:
image: postgres:16-alpine
environment:
- POSTGRES_USER=zabbix
- POSTGRES_PASSWORD=zabbix
- PGDATA=/var/lib/postgresql/data
volumes:
- /opt/docker/zabbix7/pgdata/16/data:/var/lib/postgresql/data
networks:
- zabbix7
restart: unless-stopped
# fping needs setsuid
# Connect to container as "root" and run: chmod +s /usr/sbin/fping
server:
image: zabbix/zabbix-server-pgsql:alpine-7.4-latest
environment:
- POSTGRES_USER=zabbix
- POSTGRES_PASSWORD=zabbix
- PHP_TZ=Europe/London
- ZBX_SERVER_NAME=zabbix.domain.com
- ZBX_NODEADDRESS=zabbix-server:10051
cap_add:
- NET_RAW
- NET_ADMIN
volumes:
- /opt/docker/zabbix7/zabbix-server/alertscripts:/usr/lib/zabbix/alertscripts
- /opt/docker/zabbix7/zabbix-server/externalscripts:/usr/lib/zabbix/externalscripts
- /opt/docker/zabbix7/zabbix-server/mibs:/usr/lib/zabbix/mibs
- /opt/docker/zabbix7/zabbix-server/modules:/usr/lib/zabbix/modules
- /opt/docker/zabbix7/zabbix-server/export:/var/lib/zabbix/export
- /opt/docker/zabbix7/zabbix-server/snmptraps:/var/lib/zabbix/snmptraps
ports:
- 10051:10051
depends_on:
- db
links:
- "db:postgres-server"
networks:
- zabbix7
- traefik-public
restart: unless-stopped
web:
image: zabbix/zabbix-web-nginx-pgsql:alpine-7.4-latest
restart: unless-stopped
environment:
- PHP_TZ=Europe/London
- ZBX_SERVER_NAME=zabbix.domain.com
- ZBX_SERVER_HOST=zabbix-server
#ports:
# - 10080:8080
# - 10081:443
depends_on:
- server
- db
links:
- "server:zabbix-server"
- "db:postgres-server"
networks:
- zabbix7
- traefik-public
labels:
traefik.enable: "true"
traefik.http.routers.zbx.rule: Host(`zabbix.domain.com`)
traefik.http.routers.zbx.entrypoints: https
traefik.http.routers.zbx.tls: "true"
traefik.http.routers.zbx.tls.certresolver: le
traefik.http.services.zbx.loadbalancer.server.port: "8080"
networks:
traefik-public:
external: true
zabbix7:
attachable: true
I use it at home, as a test environment as I brought it to 2 workplaces. I have a mysql VM and a front end VM.
It's still on my to-do list.
have it on dietpi (pi 4) + tailscale at home to monitor my dedics