Debt Manager - Unreleased custom PHP dashboard for managing debts
Debt Manager - Unreleased custom PHP dashboard for managing debts
Debt Manager is a PHP Based application created by myself, not yet available publically, along with a API i use this to automatically track when friends have paid me any money they may owe me.
It uses the webdevops PHP and Nginx container
Kubernetes Manifest (deployment.yaml)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: debtmanager
app.kubernetes.io/instance: debtmanager
app.kubernetes.io/name: debtmanager
name: debtmanager
namespace: webdev
spec:
replicas: 1
strategy:
type: Recreate
selector:
matchLabels:
app: debtmanager
template:
metadata:
labels:
app: debtmanager
app.kubernetes.io/name: debtmanager
spec:
nodeSelector:
worker: "true"
containers:
- image: webdevops/php-nginx:8.1
name: debtmanager
ports:
- containerPort: 81
hostPort: 81
protocol: TCP
- containerPort: 80
hostPort: 80
protocol: TCP
env:
- name: APPLICATION_PATH
value: /app
- name: PHP_DATE_TIMEZONE
value: Europe/London
- name: SERVICE_NGINX_CLIENT_MAX_BODY_SIZE
value: 50m
- name: TZ
value: Europe/London
- name: WEB_DOCUMENT_INDEX
value: index.php
- name: WEB_DOCUMENT_ROOT
value: /app/panel
volumeMounts:
- mountPath: "/app"
readOnly: false
name: data
subPath: "app"
- mountPath: "/opt/docker/etc/nginx/conf.d"
name: debtmanager-config
- mountPath: "/vendor"
readOnly: false
name: data
subPath: "vendor"
volumes:
- name: data
persistentVolumeClaim:
claimName: debtmanager
- name: debtmanager-config
configMap:
name: debtmanager-config
---
apiVersion: v1
kind: Service
metadata:
labels:
app: debtmanager
name: debtmanager
namespace: webdev
spec:
ports:
- name: "api"
port: 81
targetPort: 81
- name: "web"
port: 80
targetPort: 80
selector:
app: debtmanager
---
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
name: debtmanager
namespace: webdev
annotations:
kubernetes.io/ingress.class: traefik-external
spec:
entryPoints:
- websecure
routes:
- match: Host(`debtmanager.f9.casa`)
kind: Rule
services:
- name: debtmanager
port: 80
middlewares:
- name: default-headers
namespace: default
- match: Host(`api.f9.casa`)
kind: Rule
services:
- name: debtmanager
port: 81
tls:
secretName: f9-casa-tls
Kubernetes Manifest (configmap.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
apiVersion: v1
kind: ConfigMap
metadata:
name: debtmanager-config
namespace: webdev
labels:
app: debtmanager
data:
api.conf: |
server {
listen 81 default_server;
listen [::]:81 default_server;
server_name _;
root "/app/api";
index index.php;
rewrite ^/public/(.*)$ /public.php?u=$1 last;
rewrite /webhook /webhook.php last;
rewrite ^/webhook/(.*)$ /webhook.php last;
include /opt/docker/etc/nginx/vhost.common.d/*.conf;
}
servers.conf: |
server {
listen 82 default_server;
listen [::]:82 default_server;
server_name _;
root "/app/servers";
index index.php;
include /opt/docker/etc/nginx/vhost.common.d/*.conf;
}
10-php.conf: |
# Sets PHP upstream
upstream php {
server 127.0.0.1:9000;
}
Docker Compose
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
version: '3.9'
services:
debtmanager:
image: webdevops/php-nginx:8.1
hostname: debtmanager
networks:
- traefik-public
environment:
- APPLICATION_PATH=/app
- WEB_DOCUMENT_ROOT=/app/panel
- TZ=Europe/London
- WEB_DOCUMENT_INDEX=index.php
- SERVICE_NGINX_CLIENT_MAX_BODY_SIZE=50m
- PHP_DATE_TIMEZONE=Europe/London
volumes:
- /srv/cephfs/docker/appdata/debtmanager/www:/app
- /srv/cephfs/docker/appdata/debtmanager/vhost/:/opt/docker/etc/nginx/conf.d:rw
- /srv/cephfs/docker/appdata/debtmanager/vendor/:/vendor:rw
deploy:
labels:
- "traefik.enable=true"
- "traefik.http.routers.debtmanager.rule=Host(`debtmanager.f9.casa`)"
- "traefik.http.services.debtmanager.loadbalancer.server.port=80"
- "traefik.http.routers.debtmanager.entrypoints=websecure"
- "traefik.http.routers.debtmanager.tls=true"
- "traefik.http.routers.debtmanager.tls.certresolver=letsencrypt"
- "traefik.http.routers.debtmanager.service=debtmanager"
- "traefik.http.routers.debtmanagerapi.rule=Host(`api.f9.casa`)"
- "traefik.http.services.debtmanagerapi.loadbalancer.server.port=81"
- "traefik.http.routers.debtmanagerapi.entrypoints=websecure"
- "traefik.http.routers.debtmanagerapi.tls=true"
- "traefik.http.routers.debtmanagerapi.tls.certresolver=letsencrypt"
- "traefik.http.routers.debtmanagerapi.service=debtmanagerapi"
- homepage.group=Finance
- homepage.name=Debt Manager
- homepage.icon=ihatemoney.png
- homepage.href=https://debtmanager.f9.casa
- homepage.description=Debt Management
- homepage.siteMonitor=http://debtmanager
mode: replicated
networks:
traefik-public:
external: true
This post is licensed under CC BY 4.0 by the author.