3.3 KiB
Odoo Pos Distribution
Dockerfiles, Docker Compose and Kubernetes configuration for running an Odoo based PoS in container and Kubernets.
Additionally it contains pos-addons for using receipt printers over the network.
Quickstart
Docker Compose
docker-compose up
Continue with "Odoo PoS configuration"
Kubernetes / K3s
The provided YAML files have been developed and tested with k3s.
Installation will happen in the namespace pos
.
- Install k3s (any other Kubernetes should work as well)
- Install local-path-provisioner
- Apply the deployment YAMLs:
kubectl apply -f deployment/
Continue with "Odoo PoS configuration"
Odoo PoS configuration
- Connect to Odoo and create a new database
On Kubernetes the Ingress defines the hostnames
pos
andiotbox
- Install Odoo Apps:
- "Point of Sale"
- "POS Network Printer"
- (Enable "Developer mode" under Odoo settings)
- Configure PoS for IoT Box (see docs/iotbox-config.png)
- Configure Order Printer (see docs/orderprinter.png)
Hardware and Networking
- Default network assumed:
192.168.233.0/24
- Printers: 192.168.233.3 and 192.168.233.5
- Printers used in this project: Epson TM-T20II
More hardware description and a network diagram: tbd.
Monitoring
There are two kinds of monitoring prepared: The cluster itself and the PoS application.
Simple Cluster Healthcheck
Under contrib/healthchecks-cronjob.yaml
a simple Kubernetes cronjob is
provided which regularly pings Healthchecks.io.
A secret with the ping URL needs to be added before the CronJobs does it's work:
kubectl -n posmon create secret generic healthchecks-io --from-literal=HCURL=https://hc-ping.com/MYUUID
Application and network monitoring
Application monitoring is done using Prometheus, Alertmanager and Blackbox exporter. No application specific exporters are used, so it's just a base monitoring to answer the question: "Is it up?".
- Install prometheus-operator
F.e.:
kubectl apply -f https://raw.githubusercontent.com/coreos/prometheus-operator/master/bundle.yaml
- Apply manifests:
kubectl apply -f contrib/posmon/
- Create secret for extra scrape config:
kubectl -n posmon create secret generic additional-scrape-configs --from-file=contrib/pos-blackbox-exporter-scrape.yaml
- Create secret for Alertmanager config:
kubectl -n posmon create secret generic alertmanager-posmon --from-file=contrib/alertmanager.yaml
Backup
Backup is done using K8up.
- Install K8up
- Apply manifests under
contrib/backup
Restore
tbd...
createdb -T template0 restoretest
pg_restore -d restoretest /data/odoo_data.dump