As someone who has spent many years working on my smart home, I suggest, as do others, KEEP IT LOCAL.
I never understood this ‘chicken and egg’ analogy. Dinosaurs were laying eggs millions of years before they became chickens.
It starts with a docker-compose file. There’s lots of persistent data and it’s in volume mounts. I don’t know if I’m making a lot of sense, I’m new to Docker and don’t know all the right words to use yet.
If you have more than a few machines and are starting to lose track of which cables go where, and which IPs you’re using, netbox is a good resource.
version: '3.4' services: netbox: &netbox image: netboxcommunity/netbox:${VERSION-v3.3-2.2.0} depends_on: - postgres - redis - redis-cache - netbox-worker env_file: env/netbox.env user: 'unit:root' volumes: - ./configuration:/etc/netbox/config:z,ro - ./reports:/etc/netbox/reports:z,ro - ./scripts:/etc/netbox/scripts:z,ro - netbox-media-files:/opt/netbox/netbox/media:z netbox-worker: <<: *netbox depends_on: - redis - postgres command: - /opt/netbox/venv/bin/python - /opt/netbox/netbox/manage.py - rqworker netbox-housekeeping: <<: *netbox depends_on: - redis - postgres command: - /opt/netbox/housekeeping.sh # postgres postgres: image: postgres:14-alpine env_file: env/postgres.env volumes: - netbox-postgres-data:/var/lib/postgresql/data # redis redis: image: redis:7-alpine command: - sh - -c # this is to evaluate the $REDIS_PASSWORD from the env - redis-server --appendonly yes --requirepass $$REDIS_PASSWORD ## $$ because of docker-compose env_file: env/redis.env volumes: - netbox-redis-data:/data redis-cache: image: redis:7-alpine command: - sh - -c # this is to evaluate the $REDIS_PASSWORD from the env - redis-server --requirepass $$REDIS_PASSWORD ## $$ because of docker-compose env_file: env/redis-cache.env volumes: netbox-media-files: driver: local netbox-postgres-data: driver: local netbox-redis-data: driver: local
The volumes that start with ./ I can deal with. It’s those 3 at the end I don’t know about.