Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3eb031d6ef | ||
|
|
a38d558e84 |
14 changed files with 67 additions and 104 deletions
4
.gitignore
vendored
Normal file
4
.gitignore
vendored
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
core/certs/*.key
|
||||||
|
core/certs/*.crt
|
||||||
|
|
||||||
|
domains/stvnliu.me/vault/data
|
||||||
|
|
@ -1,19 +0,0 @@
|
||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIIDEzCCAfugAwIBAgIUUW/xlTVdPARWwtiddkINl6HE4jcwDQYJKoZIhvcNAQEL
|
|
||||||
BQAwGTEXMBUGA1UEAwwOKi5hbHBoYW1pbGwuZ3IwHhcNMjYxMDE4MTUyNjI3WhcN
|
|
||||||
MjcxMDE4MTUyNjI3WjAZMRcwFQYDVQQDDA4qLmFscGhhbWlsbC5ncjCCASIwDQYJ
|
|
||||||
KoZIhvcNAQEBBQADggEPADCCAQoCggEBANZ3yCtprx4AsOsvpOPq/kK39sLo6oO/
|
|
||||||
Fi+Bv/iOSKt03+xKzBhEnjubGMx6qy0jeCpEEfW2jyjXUywG8szzRcp/NbHewthn
|
|
||||||
58dU4ca3hwXvEvW0iErxawlt7MXcFI5biDaoycbNfL7ovxxvLGeKsL60ND15uSyx
|
|
||||||
ugfnlQx+c+YfMVh0PKHZ/8LTz/hTMklJc87yT/BH1V/Vs7xjUORbDPfurC2JqeG6
|
|
||||||
QZAKk/ew8JrSwJkzHGh5BHnzT8ZjePXUzvD2allWYA5bn3+v/UYc3rvo1WnnmZWz
|
|
||||||
V7XddJ49mTepVjc5YaL1OW15aMMV8fCYVh4mSiu8/MxzrMHU6Ff/nckCAwEAAaNT
|
|
||||||
MFEwHQYDVR0OBBYEFOkzSEYt2sC2zm7EqiADyzm48qkuMB8GA1UdIwQYMBaAFOkz
|
|
||||||
SEYt2sC2zm7EqiADyzm48qkuMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEL
|
|
||||||
BQADggEBAA7IZIgYAFoA2ynG5zd+kqUSxvkzZNeYNZQYQ6JbiraylfPLOa04BKKO
|
|
||||||
05dV+k3YXe1GoXuI9/23SWfFTrtGWxBfvKxhv2CsUHBf3AEYfI9x2pYg1uuutM/5
|
|
||||||
o4HTfbej6Pd4CGdGBtSc4BDf7sz4UVNL+nBi6AUts+Ft0fsBPyvbThAC/H7VHIKk
|
|
||||||
9ibhh4kOmsj3+yZ+GlAGoM/blSXz84nmXGVGAnG4K57PyHhswMrT/sxgAwnAgYVW
|
|
||||||
R59eUBDnITNB5QHYuX2vsVMlue5UU5Dzi0/crGnKTFTBHOZOjb2cdUN4oibgv+oH
|
|
||||||
r/5MxWtX0dqXJMam6bhjIVmqDSk3B3E=
|
|
||||||
-----END CERTIFICATE-----
|
|
||||||
|
|
@ -1,28 +0,0 @@
|
||||||
-----BEGIN PRIVATE KEY-----
|
|
||||||
MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDWd8graa8eALDr
|
|
||||||
L6Tj6v5Ct/bC6OqDvxYvgb/4jkirdN/sSswYRJ47mxjMeqstI3gqRBH1to8o11Ms
|
|
||||||
BvLM80XKfzWx3sLYZ+fHVOHGt4cF7xL1tIhK8WsJbezF3BSOW4g2qMnGzXy+6L8c
|
|
||||||
byxnirC+tDQ9ebkssboH55UMfnPmHzFYdDyh2f/C08/4UzJJSXPO8k/wR9Vf1bO8
|
|
||||||
Y1DkWwz37qwtianhukGQCpP3sPCa0sCZMxxoeQR580/GY3j11M7w9mpZVmAOW59/
|
|
||||||
r/1GHN676NVp55mVs1e13XSePZk3qVY3OWGi9TlteWjDFfHwmFYeJkorvPzMc6zB
|
|
||||||
1OhX/53JAgMBAAECggEAZ06WiLblKBYcIoW2LyVkaZ30ysloIaMbnDGrV56uCY0I
|
|
||||||
Selzq2LuN3cLuH+EUf9qZC2a2xmflwQ1p5kHPssWPKcPJclQYO6YGo/cG50O+MBD
|
|
||||||
CUD3f+YPcaDWMy7CZhpYIEAoxc74vnsdh6RTpuKLJalnGo+2L33Cxwj55mVJDbjp
|
|
||||||
/QnW4o33ncVX2MItZ2FuuNdTz1L7klOAd8bsxpNm0sytyGxoYw1UBOw6tCNyhuvl
|
|
||||||
cgFL856AAdcUVFvJ1pRr9t3W7cfL0ZevuXstCyMpLnZURR15mRKSNqftigJ19F21
|
|
||||||
fsjx3Cyy4nc6o0MsA4I84hsUIikw5orn37MZuG/ciwKBgQDwKnRaJlEl5S/X111J
|
|
||||||
Bqadzk8H21cCYm4xmoNcOlzwCxF18ZDrrbactkSnbtFuzpIvRUM8mbOuChyHdGSr
|
|
||||||
ltNPxFC9uUVQ2JodTmoRvzq4azrA1GbKHOCYV2VmDXOLK0hl69peE40McYRyScKZ
|
|
||||||
svXuoRFVFyRAFIdTrWiANBl5nwKBgQDkm5hBhVw5UapUgGQnBD57XsRF8qPNa5f0
|
|
||||||
i3zhGrHm8qJGx9LuPT63RvKCFZTLU46tktO9PPxD6poHqbWKcAeBZN7xt0gpYTfI
|
|
||||||
7+Rt4dP+AbLreFT0DpGxJ9GkstL/8YwsvdbTBlaS6tp039qGepL5GOhKAwRZBjZk
|
|
||||||
HJgGCX1/lwKBgA3vuL6+eHkFeqhAxBYHv8VqgmWHUd4+jfxs5fCFJn17dvDsKqey
|
|
||||||
deVUIlnA8YBHlm4Ny+AJX0bbKVqm42ydnPeFAdZwmNgfKZpHwZn0CdlHx6oG6UwT
|
|
||||||
LulIMQciArFxuorHi+1nnwi40aG8LAG1Q9YsHJBefmkFh/DQID9IRq4rAoGACC0o
|
|
||||||
fO9wJPyuwub0rhCQy4jQLFBJW4eFn9F9Xe++fSwgcbej67F1FMkM02pCMCOE7uBZ
|
|
||||||
gmM0ApnZeHyxaYooOpCJCMwtYI2BmUY7PVLeai9VXuam4zPCMjviW6mpsk3JXbBM
|
|
||||||
hq+rWQXdWmDHSBgKOa6SYFNLTIPUXjBHn6+nNXECgYA2jpehlffbCsaYJogtX9Sd
|
|
||||||
8iK/OhB2En9a4BucNhJOnRLNsu3UPz6EzqneUmsWXKntEyCQL4Yrj9NqEb2M04hg
|
|
||||||
pZAj+yftI/roW5zLJHs0AaGI5Fhpk5ntYmX46/WVJFyT+oCHsEIfeV7Q+CqMGoAb
|
|
||||||
SDR+QrzdJmpTZyaBsVDykw==
|
|
||||||
-----END PRIVATE KEY-----
|
|
||||||
|
|
@ -1,19 +0,0 @@
|
||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIIDEzCCAfugAwIBAgIUZYEMkLS+uh5XVPt7P36SR0W12aowDQYJKoZIhvcNAQEL
|
|
||||||
BQAwGTEXMBUGA1UEAwwOKi5hbHBoYW1pbGwuZ3IwHhcNMjYxMDE4MTUyNjM5WhcN
|
|
||||||
MjcxMDE4MTUyNjM5WjAZMRcwFQYDVQQDDA4qLmFscGhhbWlsbC5ncjCCASIwDQYJ
|
|
||||||
KoZIhvcNAQEBBQADggEPADCCAQoCggEBALz/WA6xxxJlZO3ohLhrTXC40BGvl/vv
|
|
||||||
YKw3CO8kMRFLOgNaFsNq9O6J1E3ZRz6TnGOt/ueoDqFuWhggw0cbmLYlTonCznv+
|
|
||||||
vYoLY5oV2ydyH0gqtrSl4aGWGdqmybp2GpK6rk07OR2coUw02H71pyNLwW9u6Axr
|
|
||||||
Dk3eEiRB76BCsxkolF/sebPen2GXavtp4WI2YOc6ULLzxfVjCOkQUP1/ibh548MT
|
|
||||||
gQcj9KAxEhzBe5qYAuCpBpQOkgy3htxCO+rYNN175D5nOKnK4Adr+HbA+trK/42v
|
|
||||||
Rs2/PsWx1ekvrhwroMRWy0slqJu7Nb0eBnV7WE7aMD6x/pmFn4FQkUcCAwEAAaNT
|
|
||||||
MFEwHQYDVR0OBBYEFGY6PsNoWnm2v9Lb4dmo9Nbxf88AMB8GA1UdIwQYMBaAFGY6
|
|
||||||
PsNoWnm2v9Lb4dmo9Nbxf88AMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEL
|
|
||||||
BQADggEBAK1ENKIODGfo+igRm64wzisSW9hw3qG/mTMI7N2kMeKRsGz0K7e/Onal
|
|
||||||
NXeW7NC3bZMHm6I5DfXHaILUSB+VZ2EuiD6R4kZ4dUANVZ1CTYpij46J/HdbSNoa
|
|
||||||
YFoJKizIr2W80KHEYRd4z6OCkvBH3seT1Brvko1Vq6v2xJHPnXDHhqgsgtPJ/luv
|
|
||||||
gCfSo8CXdtzGhTDORJnC5eT+fHSRed+1a0Q3QwArQ2rx3VSmIr3plyG+LTn78mKR
|
|
||||||
oAkUfZnc7+MWCPioFqLIuYqj/I84MKkFKbIu/Xo/bxQ7iy+eRqE17UDJEnA1BFkb
|
|
||||||
azwwLE3fNCu7wnwBXJPQ5k91MCkvHdQ=
|
|
||||||
-----END CERTIFICATE-----
|
|
||||||
|
|
@ -1,28 +0,0 @@
|
||||||
-----BEGIN PRIVATE KEY-----
|
|
||||||
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC8/1gOsccSZWTt
|
|
||||||
6IS4a01wuNARr5f772CsNwjvJDERSzoDWhbDavTuidRN2Uc+k5xjrf7nqA6hbloY
|
|
||||||
IMNHG5i2JU6Jws57/r2KC2OaFdsnch9IKra0peGhlhnapsm6dhqSuq5NOzkdnKFM
|
|
||||||
NNh+9acjS8FvbugMaw5N3hIkQe+gQrMZKJRf7Hmz3p9hl2r7aeFiNmDnOlCy88X1
|
|
||||||
YwjpEFD9f4m4eePDE4EHI/SgMRIcwXuamALgqQaUDpIMt4bcQjvq2DTde+Q+Zzip
|
|
||||||
yuAHa/h2wPrayv+Nr0bNvz7FsdXpL64cK6DEVstLJaibuzW9HgZ1e1hO2jA+sf6Z
|
|
||||||
hZ+BUJFHAgMBAAECggEACpVqAvilozwWWNRKimFH5uYSkMr6gds32K0ETRADx2ol
|
|
||||||
B4cF+0+EA8+oGevu92wgt9xIiAR7PUMGvI8pIFRFSv3v1fsYwQzU5GQa4cgTi7Py
|
|
||||||
WII71QXtCrVzITFx3oU6m7jkheKpIiVhSvkynnl3MJzPakQVroxYMrga3/jpSFob
|
|
||||||
H1cVlQ4KHeK6epEFNbMnXQFn5GHF5tyCc3br7quwGuGWlsZ/TfpLvqnqQQcdRkdT
|
|
||||||
FbdSdjTQnITaE0Uryo/9N04+lq7qmbBqjAokiMME7uGQQRrtBm5HGmmIuQesr0UX
|
|
||||||
aIdamc3be0/PDS9rDn5Jh+gUGV0uiJFRkHV1hl3/gQKBgQDvuu4fsvgDUcQ79wBD
|
|
||||||
8HNIYlWwzUoXnxRiy9aqvm2sg3BMo+o+mPnugY+5auzft10S5VcSD9E55KzPUM4K
|
|
||||||
j5uDZYioxztqJAlLZqTDmW43OnujuVgG3bD6kWySJi9WK7bXeb9RwHimBsJPAwV3
|
|
||||||
O1JkGD1JSOqIetoLqV1PqpHl4QKBgQDJ0vvAa2lt4Nu5H9kn+BqoDjGKctRNH2xX
|
|
||||||
BtqsvSWWfHPcp2ON+QU5KzNY/1H8uiwXcN2Y9Sp4vy8Tx9Kr5AjPuoBiB6NMuFw8
|
|
||||||
eM/aqFZdWoKBfrLbkynbdrulVElR6kUsLiiRV0MzRqtzedh3FZTx3wN222+XvShM
|
|
||||||
Gajw2FAMJwKBgDwDGZVJ4hhCodM5FBHt4Y4fP8BQw9mB80KAMK7xmNb02Gn3Jq6g
|
|
||||||
8QAp4ubRw5aFeoE+dDuLRh8uBayoV8wBAzczdbB6n38EomcDvP9SK2sb8tOblFOz
|
|
||||||
r5gqS3mSoYr6ynzKd4BppEo7quzInteoPAnen4j2/e9IgckljrxgwMFBAoGBAIFj
|
|
||||||
4kLamhz3q+ZjpLUbOvvDHb/FHpbTLoIcwtU77n0sDJvKNOkwXUjpiWHlTorYUKw2
|
|
||||||
j9sgUrpW17e2xDmvWHbU+rnea7Mj/v5F9fwZMEVpYYHj2IctMgihdmvoPZlmuDI6
|
|
||||||
5YdIiqy1AfZmh4DRNUxbzbzFsiV1///J86V1CNzBAoGBAKUDJVMbiVqCb7U5Petv
|
|
||||||
PaSCm93hGB5yJz92szi+cpY9ro2/j4lnT2KZT7bYpHwr7Q9Us9X4cQJvwV3WVCtW
|
|
||||||
PYgAf67ydaF0o8SJTk0fomMlTEKW/qW/NmicJFAnwtzd/EaO8KRB7yTE46rK0Dbn
|
|
||||||
NgSSDbNgg56z0/Vibeq1jSyb
|
|
||||||
-----END PRIVATE KEY-----
|
|
||||||
|
|
@ -4,10 +4,11 @@ services:
|
||||||
container_name: traefik
|
container_name: traefik
|
||||||
image: traefik:v3.7
|
image: traefik:v3.7
|
||||||
command:
|
command:
|
||||||
- "--api.insecure=true"
|
- "--api=true"
|
||||||
|
- "--tracing=true"
|
||||||
- "--providers.docker=true"
|
- "--providers.docker=true"
|
||||||
- "--providers.file.directory=/etc/traefik/apps"
|
- "--providers.docker.exposedByDefault=false"
|
||||||
- "--providers.file.watch=true"
|
- "--providers.file.directory=/etc/traefik/dynamic"
|
||||||
- "--entrypoints.web.address=:80"
|
- "--entrypoints.web.address=:80"
|
||||||
- "--entrypoints.websecure.address=:443"
|
- "--entrypoints.websecure.address=:443"
|
||||||
- "--entrypoints.minecraft.address=:25565/tcp"
|
- "--entrypoints.minecraft.address=:25565/tcp"
|
||||||
|
|
@ -16,6 +17,11 @@ services:
|
||||||
- "--entrypoints.web.http.redirections.entrypoint.to=websecure"
|
- "--entrypoints.web.http.redirections.entrypoint.to=websecure"
|
||||||
- "--entrypoints.web.http.redirections.entrypoint.scheme=https"
|
- "--entrypoints.web.http.redirections.entrypoint.scheme=https"
|
||||||
- "--entrypoints.web.http.redirections.entrypoint.permanent=true"
|
- "--entrypoints.web.http.redirections.entrypoint.permanent=true"
|
||||||
|
- "--entrypoints.websecure.asDefault=true"
|
||||||
|
- "--entrypoints.websecure.http.tls.domains[0].main=alphamill.gr"
|
||||||
|
- "--entrypoints.websecure.http.tls.domains[0].sans=*.alphamill.gr"
|
||||||
|
- "--entrypoints.websecure.http.tls.domains[1].main=stvnliu.me"
|
||||||
|
- "--entrypoints.websecure.http.tls.domains[1].sans=*.stvnliu.me"
|
||||||
security_opt:
|
security_opt:
|
||||||
- no-new-privileges:true
|
- no-new-privileges:true
|
||||||
ports:
|
ports:
|
||||||
|
|
@ -26,7 +32,12 @@ services:
|
||||||
- /var/run/docker.sock:/var/run/docker.sock:ro
|
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||||
- ./certs:/certs:ro
|
- ./certs:/certs:ro
|
||||||
- ./dynamic:/etc/traefik/dynamic:ro
|
- ./dynamic:/etc/traefik/dynamic:ro
|
||||||
- /srv/docker:/etc/traefik/apps:ro
|
labels:
|
||||||
|
- "traefik.enable=true"
|
||||||
|
- "traefik.http.routers.dashboard.rule=Host(`traefik.stvnliu.me`) && (PathPrefix(`/api`) || PathPrefix(`/dashboard`))"
|
||||||
|
- "traefik.http.routers.dashboard.service=api@internal"
|
||||||
|
- "traefik.http.routers.dashboard.middlewares=auth"
|
||||||
|
- "traefik.http.middlewares.auth.basicauth.users=admin:$$apr1$$UTCvF4Ic$$.S6iKW534mXL70ndt3L/P1"
|
||||||
networks:
|
networks:
|
||||||
- proxy_net
|
- proxy_net
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
tls:
|
tls:
|
||||||
certificates:
|
certificates:
|
||||||
- certFile: /certs/alphamill.gr.cert
|
- certFile: /certs/alphamill.gr.crt
|
||||||
keyFile: /certs/alphamill.gr.key
|
|
||||||
- certFile: /certs/stvnliu.me.cert
|
|
||||||
keyFile: /certs/alphamill.gr.key
|
keyFile: /certs/alphamill.gr.key
|
||||||
|
- certFile: /certs/stvnliu.me.crt
|
||||||
|
keyFile: /certs/stvnliu.me.key
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ include:
|
||||||
- ./core/docker-compose.yml
|
- ./core/docker-compose.yml
|
||||||
|
|
||||||
# stvnliu.me project compose file
|
# stvnliu.me project compose file
|
||||||
# - ./domains/stvnliu.me/docker-compose.yml
|
- ./domains/stvnliu.me/docker-compose.yml
|
||||||
|
|
||||||
# alphamill.gr project compose file
|
# alphamill.gr project compose file
|
||||||
- ./domains/alphamill.gr/docker-compose.yml
|
- ./domains/alphamill.gr/docker-compose.yml
|
||||||
|
|
|
||||||
|
|
@ -27,4 +27,6 @@ services:
|
||||||
- ROUNDCUBEMAIL_PLUGINS=carddav, globaladdressbook
|
- ROUNDCUBEMAIL_PLUGINS=carddav, globaladdressbook
|
||||||
labels:
|
labels:
|
||||||
- traefik.enable=true
|
- traefik.enable=true
|
||||||
|
- traefik.http.routers.webmail.tls=true
|
||||||
|
- traefik.http.routers.webmail.entrypoints=websecure
|
||||||
- traefik.http.routers.webmail.rule=Host(`webmail.alphamill.gr`)
|
- traefik.http.routers.webmail.rule=Host(`webmail.alphamill.gr`)
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,7 @@ services:
|
||||||
networks:
|
networks:
|
||||||
- proxy_net
|
- proxy_net
|
||||||
labels:
|
labels:
|
||||||
|
- traefik.enable=true
|
||||||
- traefik.http.routers.alphamill-site-container.rule=Host(`alphamill.gr`)
|
- traefik.http.routers.alphamill-site-container.rule=Host(`alphamill.gr`)
|
||||||
- traefik.http.services.alphamill-site-service.loadbalancer.server.port=3000
|
- traefik.http.services.alphamill-site-service.loadbalancer.server.port=3000
|
||||||
# ports:
|
# ports:
|
||||||
|
|
|
||||||
3
domains/stvnliu.me/docker-compose.yml
Normal file
3
domains/stvnliu.me/docker-compose.yml
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
include:
|
||||||
|
- path: ./vault/docker-compose.yml
|
||||||
|
- path: ./git/docker-compose.yml
|
||||||
3
domains/stvnliu.me/git/.gitignore
vendored
Normal file
3
domains/stvnliu.me/git/.gitignore
vendored
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
git
|
||||||
|
gitea
|
||||||
|
ssh
|
||||||
27
domains/stvnliu.me/git/docker-compose.yml
Normal file
27
domains/stvnliu.me/git/docker-compose.yml
Normal file
|
|
@ -0,0 +1,27 @@
|
||||||
|
networks:
|
||||||
|
proxy_net:
|
||||||
|
external: true
|
||||||
|
services:
|
||||||
|
forgejo-server:
|
||||||
|
image: codeberg.org/forgejo/forgejo:12
|
||||||
|
container_name: forgejo
|
||||||
|
environment:
|
||||||
|
- USER_UID=1000
|
||||||
|
- USER_GID=1000
|
||||||
|
restart: always
|
||||||
|
networks:
|
||||||
|
- proxy_net
|
||||||
|
volumes:
|
||||||
|
- .:/data
|
||||||
|
- /etc/timezone:/etc/timezone:ro
|
||||||
|
- /etc/localtime:/etc/localtime:ro
|
||||||
|
ports:
|
||||||
|
- '2222:22'
|
||||||
|
labels:
|
||||||
|
- traefik.enable=true
|
||||||
|
- traefik.http.routers.git-stvnliu-me.tls=true
|
||||||
|
- traefik.http.routers.git-stvnliu-me.entrypoints=websecure
|
||||||
|
- traefik.http.routers.git-stvnliu-me.rule=Host(`stvnliu.me`) && PathPrefix(`/git`)
|
||||||
|
- "traefik.http.middlewares.forgejo-strip.stripprefix.prefixes=/git"
|
||||||
|
- "traefik.http.routers.git-stvnliu-me.middlewares=forgejo-strip"
|
||||||
|
- traefik.http.services.git-stvnliu-me.loadbalancer.server.port=3000
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
networks:
|
networks:
|
||||||
default_net:
|
proxy_net:
|
||||||
|
name: "proxy-net"
|
||||||
external: true
|
external: true
|
||||||
services:
|
services:
|
||||||
vaultwarden:
|
vaultwarden:
|
||||||
|
|
@ -11,4 +12,9 @@ services:
|
||||||
volumes:
|
volumes:
|
||||||
- ./data:/data/
|
- ./data:/data/
|
||||||
networks:
|
networks:
|
||||||
- default_net
|
- proxy_net
|
||||||
|
labels:
|
||||||
|
- traefik.enable=true
|
||||||
|
- traefik.http.routers.vaultwarden-stvnliu-me.tls=true
|
||||||
|
- traefik.http.routers.vaultwarden-stvnliu-me.entrypoints=websecure
|
||||||
|
- traefik.http.routers.vaultwarden-stvnliu-me.rule=Host(`vw.stvnliu.me`)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue