gitignore changes
This commit is contained in:
1 parent
d0011ca97d
commit
a311543ca2
17 files changed
+1106
No files matched your search
@@ -3,4 +3,5 @@ TEMP/
|
||||
MARIADB/
|
||||
WEBSERVER/BACKEND/
|
||||
WEBSERVER/PUBLIC/
|
||||
WEBSERVER/BACKUP/
|
||||
HAPROXY/backups/
|
||||
Executable
+29
@@ -0,0 +1,29 @@
|
||||
# Basis-Image: Apache + PHP
|
||||
FROM php:8.2-apache
|
||||
|
||||
# PHP Erweiterungen installieren (mysqli)
|
||||
RUN docker-php-ext-install mysqli
|
||||
|
||||
# pdftk installieren
|
||||
RUN apt-get update && \
|
||||
apt-get install -y \
|
||||
pdftk \
|
||||
net-tools \
|
||||
msmtp \
|
||||
msmtp-mta \
|
||||
geoip-bin && \
|
||||
apt-get clean && rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Apache Mod Rewrite aktivieren (optional)
|
||||
RUN a2enmod rewrite
|
||||
|
||||
# NEU: AllowOverride All aktivieren, damit .htaccess funktioniert
|
||||
RUN sed -i '/<Directory \/var\/www\/>/,/<\/Directory>/ s/AllowOverride None/AllowOverride All/' /etc/apache2/apache2.conf
|
||||
|
||||
RUN echo "sendmail_path=/usr/bin/msmtp -t -i -f bruno.eckhardt07@gmail.com" > /usr/local/etc/php/conf.d/sendmail.ini
|
||||
|
||||
COPY MAIL/msmtprc /etc/msmtprc
|
||||
|
||||
RUN chmod 644 /etc/msmtprc
|
||||
|
||||
RUN touch /var/log/msmtp.log && chmod 666 /var/log/msmtp.log
|
||||
Executable
+95
@@ -0,0 +1,95 @@
|
||||
-----BEGIN PRIVATE KEY-----
|
||||
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg+03+oq/lud3kCNQr
|
||||
vIlmMd+9Sx/uvTIQ4uDbSu5va4WhRANCAARyiOHLZwJ+6m6zKfwf0HVOVSVtZrFk
|
||||
uFWMXbFcKnCpyKkkscD2JuDW7MJcY6JQy5t6OghdiEAzN/d0WqLzJgvM
|
||||
-----END PRIVATE KEY-----
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIFTDCCBNKgAwIBAgISBr1UbkRQrXMgn4nycSatC4czMAoGCCqGSM49BAMDMDMx
|
||||
CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQwwCgYDVQQDEwNZ
|
||||
RTIwHhcNMjYwNjE1MDczMDA2WhcNMjYwOTEzMDczMDA1WjAcMRowGAYDVQQDExFi
|
||||
bGFja3BpLmlwdjY0Lm5ldDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABHKI4ctn
|
||||
An7qbrMp/B/QdU5VJW1msWS4VYxdsVwqcKnIqSSxwPYm4NbswlxjolDLm3o6CF2I
|
||||
QDM393RaovMmC8yjggPbMIID1zAOBgNVHQ8BAf8EBAMCB4AwEwYDVR0lBAwwCgYI
|
||||
KwYBBQUHAwEwDAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQU4jqdnPo1OagGzCvmE2Zz
|
||||
webpFNgwHwYDVR0jBBgwFoAUuVnyjs8i8IbTN0j/dhQYuoLYVYcwMwYIKwYBBQUH
|
||||
AQEEJzAlMCMGCCsGAQUFBzAChhdodHRwOi8veWUyLmkubGVuY3Iub3JnLzCCAdUG
|
||||
A1UdEQSCAcwwggHIghZhcC0xLmJsYWNrcGkuaXB2NjQubmV0ghZhcC0yLmJsYWNr
|
||||
cGkuaXB2NjQubmV0ghliYWNrZW5kLmJsYWNrcGkuaXB2NjQubmV0ghFibGFja3Bp
|
||||
LmlwdjY0Lm5ldIIdZGV2LWJhY2tlbmQuYmxhY2twaS5pcHY2NC5uZXSCHGRldi1w
|
||||
dWJsaWMuYmxhY2twaS5pcHY2NC5uZXSCHGZyaXR6Ym94LTEuYmxhY2twaS5pcHY2
|
||||
NC5uZXSCHGZyaXR6Ym94LTIuYmxhY2twaS5pcHY2NC5uZXSCF2dpdGVhLmJsYWNr
|
||||
cGkuaXB2NjQubmV0ghloZWl6dW5nLmJsYWNrcGkuaXB2NjQubmV0ggptcmhvc3Nh
|
||||
LmRlghduYXMtMS5ibGFja3BpLmlwdjY0Lm5ldIIXbmFzLTIuYmxhY2twaS5pcHY2
|
||||
NC5uZXSCGXByb3htb3guYmxhY2twaS5pcHY2NC5uZXSCGHB1YmxpYy5ibGFja3Bp
|
||||
LmlwdjY0Lm5ldIIXc3RhdHMuYmxhY2twaS5pcHY2NC5uZXSCGHN3aXRjaC5ibGFj
|
||||
a3BpLmlwdjY0Lm5ldIIVd3d3LmJsYWNrcGkuaXB2NjQubmV0MBMGA1UdIAQMMAow
|
||||
CAYGZ4EMAQIBMC4GA1UdHwQnMCUwI6AhoB+GHWh0dHA6Ly95ZTIuYy5sZW5jci5v
|
||||
cmcvNTIuY3JsMIIBDQYKKwYBBAHWeQIEAgSB/gSB+wD5AHcAr2eIO1ewTt2Pptl+
|
||||
9i6o64EKx3Fg8CReVdYML+eFhzoAAAGeymWZegAABAMASDBGAiEAr/+rLulyL/tP
|
||||
aCEBIS68NKXI17gp+lYSFKDAIwgTHjUCIQD7vWydrsMAcvprfunfuy9vQhyL9O8b
|
||||
wLnqQ/SL4bne1QB+ACbjZG5YaSEjvDQ/RyQ1mzeSzSRaiNgV05Mz/ZkYq0cjAAAB
|
||||
nspll8wACAAABQAd6Ay0BAMARzBFAiEAsrVPg4rmTFDF2MKytuaa3WFQfKqMtyRn
|
||||
WAs0FtA1th8CIDWcgAt4wG/QH71Fh+IaJiRXo/52f9nhAOQ3jPOre1a4MAoGCCqG
|
||||
SM49BAMDA2gAMGUCMGi1YYBJfmQHDIe+KsrE8vaFA+lfSO3MhuESEHtVAga1aLdc
|
||||
7JdBVnkS81XD7mmjFwIxANaZHnzaBNIS6JR+lXpZ01PfrDyu7oktsbqyZXuI1+jA
|
||||
BScTE1/su2vkrcj8/yF4GA==
|
||||
-----END CERTIFICATE-----
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIICjDCCAhGgAwIBAgIQTfOxXdbAeExQfNN7WObxFTAKBggqhkjOPQQDAzAuMQsw
|
||||
CQYDVQQGEwJVUzENMAsGA1UEChMESVNSRzEQMA4GA1UEAxMHUm9vdCBZRTAeFw0y
|
||||
NTA5MDMwMDAwMDBaFw0yODA5MDIyMzU5NTlaMDMxCzAJBgNVBAYTAlVTMRYwFAYD
|
||||
VQQKEw1MZXQncyBFbmNyeXB0MQwwCgYDVQQDEwNZRTIwdjAQBgcqhkjOPQIBBgUr
|
||||
gQQAIgNiAARxmrQzkdbEEL3MqXt3dJQttYc47axkdDTHud5TPqM2z5uSD5cmk0Wr
|
||||
HlWXvnlvqBLqiB34kluxIbmMyAiq3/YD6e80/vV259K8XQIdjFXloYOa0mIU71f7
|
||||
HQ09PvYDlw+jge4wgeswDgYDVR0PAQH/BAQDAgGGMBMGA1UdJQQMMAoGCCsGAQUF
|
||||
BwMBMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFLlZ8o7PIvCG0zdI/3YU
|
||||
GLqC2FWHMB8GA1UdIwQYMBaAFKPIJlqOoUzQNWP8myPIOq5W809WMDIGCCsGAQUF
|
||||
BwEBBCYwJDAiBggrBgEFBQcwAoYWaHR0cDovL3llLmkubGVuY3Iub3JnLzATBgNV
|
||||
HSAEDDAKMAgGBmeBDAECATAnBgNVHR8EIDAeMBygGqAYhhZodHRwOi8veWUuYy5s
|
||||
ZW5jci5vcmcvMAoGCCqGSM49BAMDA2kAMGYCMQDIcnw5dcZLN9ffynXnnkLD/itS
|
||||
JEycJPb3sRkzeqBowup7vOsAwaqoCnNn/jh9wycCMQCJM6CPlaOC4pQYYbJtVPYb
|
||||
DKrIb2EKk5NpOpE6/XttQYZV/3gilB9l+Cc/DOVwmyg=
|
||||
-----END CERTIFICATE-----
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIICpjCCAiugAwIBAgIRAIchZfw0tuX7qK3Vs3BftTowCgYIKoZIzj0EAwMwTzEL
|
||||
MAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2VhcmNo
|
||||
IEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDIwHhcNMjYwNTEzMDAwMDAwWhcN
|
||||
MzIwOTAyMjM1OTU5WjAuMQswCQYDVQQGEwJVUzENMAsGA1UEChMESVNSRzEQMA4G
|
||||
A1UEAxMHUm9vdCBZRTB2MBAGByqGSM49AgEGBSuBBAAiA2IABDwS/6vhrcVqcbBo
|
||||
+wgdI3fwn9x7DNJJOY/lTOti0vkwuRN87RhEhTH17E7XyFjWsPYhIPt/wzOqxTd2
|
||||
b+4ZJNy9ID04YywF9U5zasDVyGSNErVNtz8uSGh5izW87j77GaOB6zCB6DAOBgNV
|
||||
HQ8BAf8EBAMCAQYwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB
|
||||
/zAdBgNVHQ4EFgQUo8gmWo6hTNA1Y/ybI8g6rlbzT1YwHwYDVR0jBBgwFoAUfEKW
|
||||
rt5LSDv6kviejM9ti6lyN5UwMgYIKwYBBQUHAQEEJjAkMCIGCCsGAQUFBzAChhZo
|
||||
dHRwOi8veDIuaS5sZW5jci5vcmcvMBMGA1UdIAQMMAowCAYGZ4EMAQIBMCcGA1Ud
|
||||
HwQgMB4wHKAaoBiGFmh0dHA6Ly94Mi5jLmxlbmNyLm9yZy8wCgYIKoZIzj0EAwMD
|
||||
aQAwZgIxAMU19WCtmxVND8UHBZRoma49Z7jPs64Dma0eTu1OChVbB/2J7GV3nvYK
|
||||
Ax54uk1G9QIxAO0miLVJu8PLNiXXXkiE/gsK3CTRTF/aeo4bMX42Zw40csRU6AC2
|
||||
6hSW1/IWaas6dg==
|
||||
-----END CERTIFICATE-----
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIEcDCCAligAwIBAgIQbI8dxyfHEX97r4U6yYD5zTANBgkqhkiG9w0BAQsFADBP
|
||||
MQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJuZXQgU2VjdXJpdHkgUmVzZWFy
|
||||
Y2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBYMTAeFw0yNjA1MTMwMDAwMDBa
|
||||
Fw0zMjA5MDIyMzU5NTlaME8xCzAJBgNVBAYTAlVTMSkwJwYDVQQKEyBJbnRlcm5l
|
||||
dCBTZWN1cml0eSBSZXNlYXJjaCBHcm91cDEVMBMGA1UEAxMMSVNSRyBSb290IFgy
|
||||
MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEzZvVn4CDCuwJSvMWSj5cz3es3mcFDR0H
|
||||
ttwW+1qLFNvicWDEukWVEYmO6gbf9yoWHKS5xcUy4APgHoIYOIvXRdgKam7mAHf7
|
||||
AlF9ItgKbppbd9/w+kHsOdx1ymgHDB/qo4H1MIHyMA4GA1UdDwEB/wQEAwIBBjAd
|
||||
BgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDwYDVR0TAQH/BAUwAwEB/zAd
|
||||
BgNVHQ4EFgQUfEKWrt5LSDv6kviejM9ti6lyN5UwHwYDVR0jBBgwFoAUebRZ5nu2
|
||||
5eQBc4AIiMgaWPbpm24wMgYIKwYBBQUHAQEEJjAkMCIGCCsGAQUFBzAChhZodHRw
|
||||
Oi8veDEuaS5sZW5jci5vcmcvMBMGA1UdIAQMMAowCAYGZ4EMAQIBMCcGA1UdHwQg
|
||||
MB4wHKAaoBiGFmh0dHA6Ly94MS5jLmxlbmNyLm9yZy8wDQYJKoZIhvcNAQELBQAD
|
||||
ggIBAD2/e9frmMxNpCV03qUHegg+MV2wz9644YoXdqtH8RyWYcBO7xfjjGEXdU1e
|
||||
/o0OkEFiynUCOSIk/vLLo7ttz6CPAeNlWfC0XNkoGeWgK6jjXvozBaGuGH5n0Ufo
|
||||
shMeWTuURqNN5G00sSXDTBrpp2+mgvdZQjb8K11TYMA25QA+YHNfbIEL0BniAhKS
|
||||
2gsnJjSzrdZLI+EZ7SEyqdR2rkjd1KutLDU+n3TFyxjniZVGur4YlhMP3mY/dV95
|
||||
IruAkkjOZier6hGBdEgZXXvaCz9u9iVEadsIE75pAGL8oHV5vxdARDiotRpul1IN
|
||||
/UZwzAbrfUFcw1HkAcYD/mlZfnQ2ieCF2MS7j3Vhv7JPDKp45fmykmzYNSrumRW0
|
||||
upFFKDBOoF7hsOb7oLyHS+Uft6jOUfOrogj8YUx38hKb2K20r42OgsSdDdxdeYWc
|
||||
MS3Sb6mwJeSZEYxJ2gaXnDSPaKhhrNkYwljyVQyr4Nq+MEJytXNTnHqaAcrNwZlV
|
||||
pcJL1KBnMrMjP7eanvUwL3FYj3cF17jtboLt7gLoi4+2rWZFvn+w54jmd/FIuhhZ
|
||||
cEaU/wvU6BUNMtcVquVGHp7itQeDth5j+XL3j4WJ2SABwzUl6OeYdgpIt/ITZa+p
|
||||
TT0mQ/r5XyA4MEAiabn7XJjvCERlF2dcn2wqJw+CreTkkQ2R
|
||||
-----END CERTIFICATE-----
|
||||
Executable
+65
@@ -0,0 +1,65 @@
|
||||
global
|
||||
log stdout format raw local0 info
|
||||
maxconn 8192
|
||||
|
||||
defaults
|
||||
log global
|
||||
mode http
|
||||
option httplog
|
||||
option dontlognull
|
||||
option forwardfor
|
||||
timeout connect 5000
|
||||
timeout client 50000
|
||||
timeout server 50000
|
||||
|
||||
userlist users
|
||||
user alex password $6$kW4zFajpkGGupxHU$KgzNS59z9OvJwAMvFg.EtU/hlgXWbGANoazzedpYRExZE9tJzw8kQlivIDUtvLgcsHYrFTpldRzeTaekBFtIW0
|
||||
user worker password $6$kW4zFajpkGGupxHU$KgzNS59z9OvJwAMvFg.EtU/hlgXWbGANoazzedpYRExZE9tJzw8kQlivIDUtvLgcsHYrFTpldRzeTaekBFtIW0
|
||||
|
||||
frontend https
|
||||
bind *:80
|
||||
bind *:443 ssl crt /usr/local/etc/haproxy/mrhossa.pem
|
||||
http-request set-header X-Forwarded-Proto https if { ssl_fc }
|
||||
|
||||
# acl valid_method method PUT DELETE GET POST HEAD PATCH
|
||||
# http-request deny if !valid_method
|
||||
|
||||
# acl is_trusted src 178.19.224.210
|
||||
|
||||
# stick-table type ip size 100k expire 30s store http_req_rate(60s)
|
||||
|
||||
# http-request track-sc0 src
|
||||
# acl rate_too_high sc0_http_req_rate gt 240
|
||||
# http-request deny status 429 if rate_too_high !is_trusted
|
||||
|
||||
acl is_public hdr(host) -i mrhossa.de
|
||||
acl is_backend hdr(host) -i backend.mrhossa.de
|
||||
acl is_gitea hdr(host) -i gitea.mrhossa.de
|
||||
acl is_stats hdr(host) -i stats.mrhossa.de
|
||||
|
||||
use_backend web_public if is_public
|
||||
use_backend web_backend if is_backend
|
||||
use_backend web_gitea if is_gitea
|
||||
use_backend stats if is_stats
|
||||
|
||||
default_backend web_public
|
||||
|
||||
backend web_public
|
||||
cookie SESSSRV insert preserve nocache httponly secure
|
||||
server node1 152.53.159.169:8001 cookie node1 check
|
||||
|
||||
backend web_backend
|
||||
cookie SESSSRV insert preserve nocache httponly secure
|
||||
server node1 152.53.159.169:8002 cookie node1 check
|
||||
|
||||
backend web_gitea
|
||||
server Gitea 152.53.159.169:3000 check
|
||||
|
||||
backend stats
|
||||
mode http
|
||||
stats enable
|
||||
stats uri /
|
||||
stats realm Haproxy\ Statistics
|
||||
stats auth worker:souIfurULCSDnoKuPNxrLCTi
|
||||
stats admin if TRUE
|
||||
|
||||
Executable
+86
@@ -0,0 +1,86 @@
|
||||
-----BEGIN PRIVATE KEY-----
|
||||
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgRXzLH/jwuk2w+3Se
|
||||
5PcY6d/GrWahEUDgaCakiCML4iChRANCAARNru+Mcv4BstET3VWTZ2cW0lmBVun7
|
||||
yF0Dd+19UNtYhoz3eB2QSnTGV306BYM5VJRuHYJuvaZg5NPaMnDIT18G
|
||||
-----END PRIVATE KEY-----
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDuTCCAz+gAwIBAgISBZl61oPt/oKJ1zGciZ01eCSEMAoGCCqGSM49BAMDMDMx
|
||||
CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQwwCgYDVQQDEwNZ
|
||||
RTIwHhcNMjYwNzEzMTE0MzEyWhcNMjYxMDExMTE0MzExWjAVMRMwEQYDVQQDEwpt
|
||||
cmhvc3NhLmRlMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAETa7vjHL+AbLRE91V
|
||||
k2dnFtJZgVbp+8hdA3ftfVDbWIaM93gdkEp0xld9OgWDOVSUbh2Cbr2mYOTT2jJw
|
||||
yE9fBqOCAk8wggJLMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcD
|
||||
ATAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBTmNfRC8thoWS9xd5pNQpMOoAuCzzAf
|
||||
BgNVHSMEGDAWgBS5WfKOzyLwhtM3SP92FBi6gthVhzAzBggrBgEFBQcBAQQnMCUw
|
||||
IwYIKwYBBQUHMAKGF2h0dHA6Ly95ZTIuaS5sZW5jci5vcmcvME0GA1UdEQRGMESC
|
||||
EmJhY2tlbmQubXJob3NzYS5kZYIQZ2l0ZWEubXJob3NzYS5kZYIKbXJob3NzYS5k
|
||||
ZYIQc3RhdHMubXJob3NzYS5kZTATBgNVHSAEDDAKMAgGBmeBDAECATAtBgNVHR8E
|
||||
JjAkMCKgIKAehhxodHRwOi8veWUyLmMubGVuY3Iub3JnLzUuY3JsMIIBDAYKKwYB
|
||||
BAHWeQIEAgSB/QSB+gD4AH0ARq+GPTs+5Z+ld96oJF02sNntIqIj9GF3QSKUUu6V
|
||||
UF8AAAGfW39ivAAIAAAFAAzOLYIEAwBGMEQCIA3O3m+v4QXXj5Bk/sbP/nQQA6A1
|
||||
oJ8rBXMcKCNvuGWJAiBW2SkMum780BhxnKY3IaS/sFLqzgbOF/XoSUWAK4wXxQB3
|
||||
ANgJVTuUT3r/yBYZb5RPhauw+Pxeh1UmDxXRLnK7RUsUAAABn1t/YowAAAQDAEgw
|
||||
RgIhALDpjsHgUB7W+MbHa7pECcxMRvNS4+rfZoapQSXRNKazAiEAmM37lPhV83en
|
||||
4JHtv87ijP0ZCS9d5lX1zCFhxnXHy5IwCgYIKoZIzj0EAwMDaAAwZQIwJCREcbS2
|
||||
Qu7kE8EBE5CSmAYWb20UiVUw1eh1vR8Ok3f0wFRBeZmSaIoc/sOPXfYZAjEAtF4N
|
||||
0zP9ATWQVE7m/gL+4mH3d7Y+ZgbgDRZbXloo3EAMSezyk/+ZAZfSEcMIFZkw
|
||||
-----END CERTIFICATE-----
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIICjDCCAhGgAwIBAgIQTfOxXdbAeExQfNN7WObxFTAKBggqhkjOPQQDAzAuMQsw
|
||||
CQYDVQQGEwJVUzENMAsGA1UEChMESVNSRzEQMA4GA1UEAxMHUm9vdCBZRTAeFw0y
|
||||
NTA5MDMwMDAwMDBaFw0yODA5MDIyMzU5NTlaMDMxCzAJBgNVBAYTAlVTMRYwFAYD
|
||||
VQQKEw1MZXQncyBFbmNyeXB0MQwwCgYDVQQDEwNZRTIwdjAQBgcqhkjOPQIBBgUr
|
||||
gQQAIgNiAARxmrQzkdbEEL3MqXt3dJQttYc47axkdDTHud5TPqM2z5uSD5cmk0Wr
|
||||
HlWXvnlvqBLqiB34kluxIbmMyAiq3/YD6e80/vV259K8XQIdjFXloYOa0mIU71f7
|
||||
HQ09PvYDlw+jge4wgeswDgYDVR0PAQH/BAQDAgGGMBMGA1UdJQQMMAoGCCsGAQUF
|
||||
BwMBMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFLlZ8o7PIvCG0zdI/3YU
|
||||
GLqC2FWHMB8GA1UdIwQYMBaAFKPIJlqOoUzQNWP8myPIOq5W809WMDIGCCsGAQUF
|
||||
BwEBBCYwJDAiBggrBgEFBQcwAoYWaHR0cDovL3llLmkubGVuY3Iub3JnLzATBgNV
|
||||
HSAEDDAKMAgGBmeBDAECATAnBgNVHR8EIDAeMBygGqAYhhZodHRwOi8veWUuYy5s
|
||||
ZW5jci5vcmcvMAoGCCqGSM49BAMDA2kAMGYCMQDIcnw5dcZLN9ffynXnnkLD/itS
|
||||
JEycJPb3sRkzeqBowup7vOsAwaqoCnNn/jh9wycCMQCJM6CPlaOC4pQYYbJtVPYb
|
||||
DKrIb2EKk5NpOpE6/XttQYZV/3gilB9l+Cc/DOVwmyg=
|
||||
-----END CERTIFICATE-----
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIICpjCCAiugAwIBAgIRAIchZfw0tuX7qK3Vs3BftTowCgYIKoZIzj0EAwMwTzEL
|
||||
MAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2VhcmNo
|
||||
IEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDIwHhcNMjYwNTEzMDAwMDAwWhcN
|
||||
MzIwOTAyMjM1OTU5WjAuMQswCQYDVQQGEwJVUzENMAsGA1UEChMESVNSRzEQMA4G
|
||||
A1UEAxMHUm9vdCBZRTB2MBAGByqGSM49AgEGBSuBBAAiA2IABDwS/6vhrcVqcbBo
|
||||
+wgdI3fwn9x7DNJJOY/lTOti0vkwuRN87RhEhTH17E7XyFjWsPYhIPt/wzOqxTd2
|
||||
b+4ZJNy9ID04YywF9U5zasDVyGSNErVNtz8uSGh5izW87j77GaOB6zCB6DAOBgNV
|
||||
HQ8BAf8EBAMCAQYwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB
|
||||
/zAdBgNVHQ4EFgQUo8gmWo6hTNA1Y/ybI8g6rlbzT1YwHwYDVR0jBBgwFoAUfEKW
|
||||
rt5LSDv6kviejM9ti6lyN5UwMgYIKwYBBQUHAQEEJjAkMCIGCCsGAQUFBzAChhZo
|
||||
dHRwOi8veDIuaS5sZW5jci5vcmcvMBMGA1UdIAQMMAowCAYGZ4EMAQIBMCcGA1Ud
|
||||
HwQgMB4wHKAaoBiGFmh0dHA6Ly94Mi5jLmxlbmNyLm9yZy8wCgYIKoZIzj0EAwMD
|
||||
aQAwZgIxAMU19WCtmxVND8UHBZRoma49Z7jPs64Dma0eTu1OChVbB/2J7GV3nvYK
|
||||
Ax54uk1G9QIxAO0miLVJu8PLNiXXXkiE/gsK3CTRTF/aeo4bMX42Zw40csRU6AC2
|
||||
6hSW1/IWaas6dg==
|
||||
-----END CERTIFICATE-----
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIEcDCCAligAwIBAgIQbI8dxyfHEX97r4U6yYD5zTANBgkqhkiG9w0BAQsFADBP
|
||||
MQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJuZXQgU2VjdXJpdHkgUmVzZWFy
|
||||
Y2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBYMTAeFw0yNjA1MTMwMDAwMDBa
|
||||
Fw0zMjA5MDIyMzU5NTlaME8xCzAJBgNVBAYTAlVTMSkwJwYDVQQKEyBJbnRlcm5l
|
||||
dCBTZWN1cml0eSBSZXNlYXJjaCBHcm91cDEVMBMGA1UEAxMMSVNSRyBSb290IFgy
|
||||
MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEzZvVn4CDCuwJSvMWSj5cz3es3mcFDR0H
|
||||
ttwW+1qLFNvicWDEukWVEYmO6gbf9yoWHKS5xcUy4APgHoIYOIvXRdgKam7mAHf7
|
||||
AlF9ItgKbppbd9/w+kHsOdx1ymgHDB/qo4H1MIHyMA4GA1UdDwEB/wQEAwIBBjAd
|
||||
BgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDwYDVR0TAQH/BAUwAwEB/zAd
|
||||
BgNVHQ4EFgQUfEKWrt5LSDv6kviejM9ti6lyN5UwHwYDVR0jBBgwFoAUebRZ5nu2
|
||||
5eQBc4AIiMgaWPbpm24wMgYIKwYBBQUHAQEEJjAkMCIGCCsGAQUFBzAChhZodHRw
|
||||
Oi8veDEuaS5sZW5jci5vcmcvMBMGA1UdIAQMMAowCAYGZ4EMAQIBMCcGA1UdHwQg
|
||||
MB4wHKAaoBiGFmh0dHA6Ly94MS5jLmxlbmNyLm9yZy8wDQYJKoZIhvcNAQELBQAD
|
||||
ggIBAD2/e9frmMxNpCV03qUHegg+MV2wz9644YoXdqtH8RyWYcBO7xfjjGEXdU1e
|
||||
/o0OkEFiynUCOSIk/vLLo7ttz6CPAeNlWfC0XNkoGeWgK6jjXvozBaGuGH5n0Ufo
|
||||
shMeWTuURqNN5G00sSXDTBrpp2+mgvdZQjb8K11TYMA25QA+YHNfbIEL0BniAhKS
|
||||
2gsnJjSzrdZLI+EZ7SEyqdR2rkjd1KutLDU+n3TFyxjniZVGur4YlhMP3mY/dV95
|
||||
IruAkkjOZier6hGBdEgZXXvaCz9u9iVEadsIE75pAGL8oHV5vxdARDiotRpul1IN
|
||||
/UZwzAbrfUFcw1HkAcYD/mlZfnQ2ieCF2MS7j3Vhv7JPDKp45fmykmzYNSrumRW0
|
||||
upFFKDBOoF7hsOb7oLyHS+Uft6jOUfOrogj8YUx38hKb2K20r42OgsSdDdxdeYWc
|
||||
MS3Sb6mwJeSZEYxJ2gaXnDSPaKhhrNkYwljyVQyr4Nq+MEJytXNTnHqaAcrNwZlV
|
||||
pcJL1KBnMrMjP7eanvUwL3FYj3cF17jtboLt7gLoi4+2rWZFvn+w54jmd/FIuhhZ
|
||||
cEaU/wvU6BUNMtcVquVGHp7itQeDth5j+XL3j4WJ2SABwzUl6OeYdgpIt/ITZa+p
|
||||
TT0mQ/r5XyA4MEAiabn7XJjvCERlF2dcn2wqJw+CreTkkQ2R
|
||||
-----END CERTIFICATE-----
|
||||
Executable
+14
@@ -0,0 +1,14 @@
|
||||
defaults
|
||||
auth on
|
||||
tls on
|
||||
tls_trust_file /etc/ssl/certs/ca-certificates.crt
|
||||
logfile /var/log/msmtp.log
|
||||
|
||||
account gmail
|
||||
host smtp.gmail.com
|
||||
port 587
|
||||
from bruno.eckhardt07@gmail.com
|
||||
user bruno.eckhardt07@gmail.com
|
||||
password qrwj rnqp qoks qzpy
|
||||
account default : gmail
|
||||
|
||||
Executable
+65
@@ -0,0 +1,65 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -Eeuo pipefail
|
||||
|
||||
RED="\e[31m"
|
||||
GREEN="\e[32m"
|
||||
YELLOW="\e[33m"
|
||||
BLUE="\e[34m"
|
||||
RESET="\e[0m"
|
||||
|
||||
log_info() { echo -e "${BLUE}[INFO]${RESET} $1"; }
|
||||
log_success() { echo -e "${GREEN}[OK]${RESET} $1"; }
|
||||
log_warn() { echo -e "${YELLOW}[WARN]${RESET} $1"; }
|
||||
log_error() { echo -e "${RED}[ERROR]${RESET} $1"; }
|
||||
|
||||
trap 'log_error "Fehler in Zeile $LINENO"' ERR
|
||||
|
||||
if [[ "$EUID" -ne 0 ]]; then
|
||||
log_error "Script muss als root laufen!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
exec 9>/var/lock/docker-control.lock
|
||||
flock -n 9 || { log_error "Script läuft bereits!"; exit 1; }
|
||||
|
||||
export_database() {
|
||||
log_info "Exportiere DEV"
|
||||
cp /data/TEMP/Database.sql /data/TEMP/Database-$(date +%Y-%m-%d_%H-%M-%S).sql
|
||||
echo "Letzten 5 Dateien gelistet:"
|
||||
du -sh /data/TEMP/* | tail -n 5
|
||||
mariadb-dump -h 127.0.0.1 -u worker -pbBHofurUJWKzPE8Z --all-databases > /data/TEMP/Database.sql
|
||||
log_info "DEV wurde nach DEV.sql exportiert"
|
||||
}
|
||||
|
||||
import_database() {
|
||||
$timestamp=$(date +%Y%m%d%H%M%S)
|
||||
log_info "Bereinige alte Datenbank"
|
||||
mariadb -h 127.0.0.1 -u worker -pbBHofurUJWKzPE8Z -e "DROP DATABASE DEV; CREATE DATABASE DEV;"
|
||||
log_info "Alte Datenbank bereinigt"
|
||||
echo ""
|
||||
log_info "Lese DEV.sql ein"
|
||||
mariadb -h 127.0.0.1 -u worker -pbBHofurUJWKzPE8Z DEV < /data/TEMP/Database.sql
|
||||
mv /data/TEMP/Database.sql /data/TEMP/Database-${timestamp}.sql
|
||||
log_info "DEV-${timestamp}.sql wurde eingelesen"
|
||||
}
|
||||
|
||||
ACTION="${1:-}"
|
||||
|
||||
case "$ACTION" in
|
||||
|
||||
export)
|
||||
export_database
|
||||
;;
|
||||
|
||||
import)
|
||||
import_database
|
||||
;;
|
||||
|
||||
*)
|
||||
echo "Usage:"
|
||||
echo " $0 import"
|
||||
echo " $0 export"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
Executable
+52
@@ -0,0 +1,52 @@
|
||||
#!/bin/bash
|
||||
|
||||
# -------------------------------
|
||||
# Server Status Report Script
|
||||
# -------------------------------
|
||||
# Datum/Zeit
|
||||
DATE=$(date +"%Y-%m-%d %H:%M:%S")
|
||||
|
||||
# -------------------------------
|
||||
# Systemauslastung
|
||||
# -------------------------------
|
||||
|
||||
CPU_LOAD=$(uptime | awk -F 'load average:' '{ print $2 }' | sed 's/^ *//')
|
||||
CPU_TEMP=$(vcgencmd measure_temp)
|
||||
MEMORY_USAGE=$(free -h | awk '/Mem:/ {print $3 " used / " $2 " total"}')
|
||||
DISK_USAGE=$(df -h /)
|
||||
NFS_USAGE=$(df -h /data)
|
||||
|
||||
# -------------------------------
|
||||
# Docker Status
|
||||
# -------------------------------
|
||||
|
||||
if command -v docker &> /dev/null
|
||||
then
|
||||
DOCKER_CONTAINERS=$(docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Image}}")
|
||||
else
|
||||
DOCKER_CONTAINERS="Docker ist nicht installiert oder der Docker-Daemon läuft nicht."
|
||||
fi
|
||||
|
||||
# -------------------------------
|
||||
# Ausgabe auf Konsole
|
||||
# -------------------------------
|
||||
|
||||
echo "Server Status Report"
|
||||
echo =====================================================
|
||||
echo
|
||||
echo "Hostname : $(hostname)"
|
||||
echo "Datum : $DATE"
|
||||
echo "CPU Load : $CPU_LOAD"
|
||||
echo "CPU Temperature : $CPU_TEMP"
|
||||
echo "RAM : $MEMORY_USAGE"
|
||||
echo
|
||||
echo "System Festplatten:"
|
||||
echo "$DISK_USAGE"
|
||||
echo
|
||||
echo "NFS Festplatten:"
|
||||
echo "$NFS_USAGE"
|
||||
echo
|
||||
echo "Docker Container:"
|
||||
echo "$DOCKER_CONTAINERS"
|
||||
echo
|
||||
echo "====================================================="
|
||||
Executable
+69
@@ -0,0 +1,69 @@
|
||||
#!/bin/bash
|
||||
|
||||
DB_HOST="127.0.0.1"
|
||||
DB_USER="worker"
|
||||
DB_PASS="bBHofurUJWKzPE8Z"
|
||||
DB_NAME="LIVE"
|
||||
|
||||
CERT_NAME="mrhossa"
|
||||
EMAIL="bruno.eckhardt07@gmail.com"
|
||||
|
||||
PEM_FILE="/data/HAPROXY/mrhossa.pem"
|
||||
BACKUP_DIR="/data/HAPROXY/backups"
|
||||
|
||||
mkdir -p "$BACKUP_DIR"
|
||||
|
||||
echo "Lade Domains aus MySQL..."
|
||||
|
||||
DOMAINS=$(mysql -h "$DB_HOST" -u "$DB_USER" -p"$DB_PASS" -D "$DB_NAME" -N -B -e "SELECT SUBDOMAIN FROM Domains;")
|
||||
|
||||
DOMAIN_ARGS=()
|
||||
|
||||
for domain in $DOMAINS
|
||||
do
|
||||
DOMAIN_ARGS+=("-d" "$domain")
|
||||
done
|
||||
|
||||
echo "Domains:"
|
||||
printf '%s\n' "${DOMAIN_ARGS[@]}"
|
||||
|
||||
# Backup vorhandenes Zertifikat
|
||||
if [ -f "$PEM_FILE" ]; then
|
||||
TIMESTAMP=$(date +"%Y-%m-%d_%H-%M-%S")
|
||||
cp "$PEM_FILE" "$BACKUP_DIR/mrhossa_$TIMESTAMP.pem"
|
||||
echo "Backup erstellt: $BACKUP_DIR/mrhossa_$TIMESTAMP.pem"
|
||||
fi
|
||||
|
||||
echo "Bereinige alte Backups..."
|
||||
ls -t $BACKUP_DIR/*.pem 2>/dev/null | tail -n +21 | xargs -r rm -f
|
||||
|
||||
echo "Stoppe HAProxy Container..."
|
||||
sudo docker stop haproxy
|
||||
|
||||
echo "Hole/erneuere Zertifikat..."
|
||||
|
||||
sudo certbot certonly --standalone \
|
||||
--cert-name "$CERT_NAME" \
|
||||
"${DOMAIN_ARGS[@]}" \
|
||||
--non-interactive \
|
||||
--agree-tos \
|
||||
-m "$EMAIL" \
|
||||
--keep-until-expiring
|
||||
|
||||
echo "Finde aktuelles Zertifikat..."
|
||||
|
||||
LATEST_CERT=$(ls -dt /etc/letsencrypt/live/mrhossa* | head -n1)
|
||||
|
||||
echo "Benutze Zertifikat aus:"
|
||||
echo "$LATEST_CERT"
|
||||
|
||||
echo "Baue HAProxy PEM..."
|
||||
|
||||
cat "$LATEST_CERT/privkey.pem" \
|
||||
"$LATEST_CERT/fullchain.pem" \
|
||||
> "$PEM_FILE"
|
||||
|
||||
echo "Starte HAProxy Container..."
|
||||
sudo docker start haproxy
|
||||
|
||||
echo "Fertig."
|
||||
Executable
+241
@@ -0,0 +1,241 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# ./deploy.sh public
|
||||
# ./deploy.sh backend
|
||||
# ./deploy.sh all
|
||||
# ./deploy.sh list-backups public
|
||||
# ./deploy.sh rollback public
|
||||
# ./deploy.sh rollback public PUBLIC-20260216-143015-server01
|
||||
|
||||
|
||||
set -Eeuo pipefail
|
||||
|
||||
########################################
|
||||
# Farben
|
||||
########################################
|
||||
RED="\e[31m"
|
||||
GREEN="\e[32m"
|
||||
YELLOW="\e[33m"
|
||||
BLUE="\e[34m"
|
||||
BOLD="\e[1m"
|
||||
RESET="\e[0m"
|
||||
|
||||
########################################
|
||||
# Logging
|
||||
########################################
|
||||
log_info() { echo -e "${BLUE}[INFO]${RESET} $1"; }
|
||||
log_success() { echo -e "${GREEN}[OK]${RESET} $1"; }
|
||||
log_warn() { echo -e "${YELLOW}[WARN]${RESET} $1"; }
|
||||
log_error() { echo -e "${RED}[ERROR]${RESET} $1"; }
|
||||
|
||||
trap 'log_error "Fehler in Zeile $LINENO"' ERR
|
||||
|
||||
########################################
|
||||
# Konfiguration
|
||||
########################################
|
||||
BASE_DIR="/data/WEBSERVER"
|
||||
BACKUP_DIR="$BASE_DIR/BACKUP"
|
||||
|
||||
PUBLIC_REPO="http://gitea.blackpi.ipv64.net/bruno/Web-Public.git"
|
||||
BACKEND_REPO="http://gitea.blackpi.ipv64.net/bruno/Backend.git"
|
||||
|
||||
TIMESTAMP=$(date +"%Y%m%d-%H%M%S")
|
||||
HOSTNAME=$(hostname)
|
||||
|
||||
########################################
|
||||
# Root-Check
|
||||
########################################
|
||||
if [[ "$EUID" -ne 0 ]]; then
|
||||
log_error "Script muss als root laufen!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
########################################
|
||||
# Lockfile
|
||||
########################################
|
||||
exec 9>/var/lock/webdeploy.lock
|
||||
flock -n 9 || { log_error "Deploy läuft bereits!"; exit 1; }
|
||||
|
||||
########################################
|
||||
# Helper
|
||||
########################################
|
||||
ensure_directory() {
|
||||
[[ -d "$1" ]] || mkdir -p "$1"
|
||||
}
|
||||
|
||||
restart_container() {
|
||||
local container="$1"
|
||||
if docker ps -a --format '{{.Names}}' | grep -q "^${container}$"; then
|
||||
docker restart "$container" >/dev/null
|
||||
log_success "Container $container neu gestartet."
|
||||
else
|
||||
log_warn "Container $container existiert nicht."
|
||||
fi
|
||||
}
|
||||
|
||||
backup_current() {
|
||||
local name="$1"
|
||||
local target="$BASE_DIR/$name"
|
||||
local rsync_server="10.233.1.89"
|
||||
local rsync_user="root"
|
||||
local rsync_dir="/root/BACKUP/NFS/WEBSERVER/"
|
||||
|
||||
if [[ -d "$target" ]]; then
|
||||
ensure_directory "$BACKUP_DIR"
|
||||
local backup_name="${name}-${TIMESTAMP}-${HOSTNAME}"
|
||||
mv "$target" "$BACKUP_DIR/$backup_name"
|
||||
log_info "$name wurde lokal gesichert: $backup_name"
|
||||
|
||||
# rsync ausführen
|
||||
if rsync -avz "$BACKUP_DIR/$backup_name" "${rsync_user}@${rsync_server}:${rsync_dir}"; then
|
||||
log_info "$backup_name wurde erfolgreich auf den Backup-Server: ${rsync_user}@${rsync_server}:${rsync_dir} kopiert."
|
||||
else
|
||||
log_error "Fehler beim Kopieren von $backup_name auf den Backup-Server!"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
deploy() {
|
||||
local name="$1"
|
||||
local repo="$2"
|
||||
local container="$3"
|
||||
local target="$BASE_DIR/$name"
|
||||
|
||||
log_info "Deploying $name ..."
|
||||
|
||||
backup_current "$name"
|
||||
|
||||
git clone "$repo" "$target"
|
||||
|
||||
if [[ "$name" == "BACKEND" ]]; then
|
||||
git -C "$target" checkout live
|
||||
fi
|
||||
|
||||
restart_container "$container"
|
||||
log_success "$name erfolgreich deployed."
|
||||
}
|
||||
|
||||
########################################
|
||||
# Rollback
|
||||
########################################
|
||||
list_backups() {
|
||||
local name="$1"
|
||||
log_info "Verfügbare Backups für $name:"
|
||||
ls -ldt "$BACKUP_DIR/${name}-"* 2>/dev/null || log_warn "Keine Backups gefunden."
|
||||
}
|
||||
|
||||
rollback() {
|
||||
local name="$1"
|
||||
local container="$2"
|
||||
local specific_backup="${3:-}"
|
||||
|
||||
ensure_directory "$BACKUP_DIR"
|
||||
|
||||
local current="$BASE_DIR/$name"
|
||||
local backup_to_restore
|
||||
|
||||
if [[ -n "$specific_backup" ]]; then
|
||||
backup_to_restore="$BACKUP_DIR/$specific_backup"
|
||||
else
|
||||
backup_to_restore=$(ls -dt "$BACKUP_DIR/${name}-"* 2>/dev/null | head -n1)
|
||||
fi
|
||||
|
||||
if [[ -z "${backup_to_restore:-}" || ! -d "$backup_to_restore" ]]; then
|
||||
log_error "Kein gültiges Backup gefunden!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
log_warn "Rollback von $name → $(basename "$backup_to_restore")"
|
||||
|
||||
# 🔴 Container stoppen
|
||||
if docker ps --format '{{.Names}}' | grep -q "^${container}$"; then
|
||||
log_info "Stoppe Container $container ..."
|
||||
docker stop "$container" >/dev/null
|
||||
fi
|
||||
|
||||
# 🔴 Verzeichnis sicher löschen
|
||||
if [[ -d "$current" ]]; then
|
||||
log_info "Entferne aktuelles Verzeichnis ..."
|
||||
rm -rf "$current"
|
||||
fi
|
||||
|
||||
# 🔴 Backup zurückspielen
|
||||
mv "$backup_to_restore" "$current"
|
||||
|
||||
# 🟢 Container neu starten
|
||||
docker start "$container" >/dev/null
|
||||
log_success "Rollback abgeschlossen."
|
||||
}
|
||||
|
||||
|
||||
########################################
|
||||
# Fetch
|
||||
########################################
|
||||
fetch_changes() {
|
||||
local name="$1"
|
||||
local target="$BASE_DIR/$name"
|
||||
|
||||
if [[ -d "$target/.git" ]]; then
|
||||
git -C "$target" fetch origin
|
||||
git -C "$target" diff HEAD..origin/main --name-only
|
||||
else
|
||||
log_warn "$name ist nicht installiert."
|
||||
fi
|
||||
}
|
||||
|
||||
########################################
|
||||
# CLI
|
||||
########################################
|
||||
ACTION="${1:-}"
|
||||
TARGET="${2:-}"
|
||||
OPTIONAL="${3:-}"
|
||||
|
||||
case "$ACTION" in
|
||||
all)
|
||||
deploy "PUBLIC" "$PUBLIC_REPO" "webserver_public"
|
||||
deploy "BACKEND" "$BACKEND_REPO" "webserver_backend"
|
||||
;;
|
||||
public)
|
||||
deploy "PUBLIC" "$PUBLIC_REPO" "webserver_public"
|
||||
;;
|
||||
backend)
|
||||
deploy "BACKEND" "$BACKEND_REPO" "webserver_backend"
|
||||
;;
|
||||
rollback)
|
||||
case "$TARGET" in
|
||||
public)
|
||||
rollback "PUBLIC" "webserver_public" "$OPTIONAL"
|
||||
;;
|
||||
backend)
|
||||
rollback "BACKEND" "webserver_backend" "$OPTIONAL"
|
||||
;;
|
||||
*)
|
||||
echo "Usage: $0 rollback {public|backend} [backup-name]"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
list-backups)
|
||||
case "$TARGET" in
|
||||
public) list_backups "PUBLIC" ;;
|
||||
backend) list_backups "BACKEND" ;;
|
||||
*)
|
||||
echo "Usage: $0 list-backups {public|backend}"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
fetch)
|
||||
fetch_changes "PUBLIC"
|
||||
fetch_changes "BACKEND"
|
||||
;;
|
||||
*)
|
||||
echo "Usage:"
|
||||
echo " $0 {all|public|backend}"
|
||||
echo " $0 rollback {public|backend} [backup-name]"
|
||||
echo " $0 list-backups {public|backend}"
|
||||
echo " $0 fetch"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
Executable
+121
@@ -0,0 +1,121 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -Eeuo pipefail
|
||||
|
||||
RED="\e[31m"
|
||||
GREEN="\e[32m"
|
||||
YELLOW="\e[33m"
|
||||
BLUE="\e[34m"
|
||||
RESET="\e[0m"
|
||||
|
||||
log_info() { echo -e "${BLUE}[INFO]${RESET} $1"; }
|
||||
log_success() { echo -e "${GREEN}[OK]${RESET} $1"; }
|
||||
log_warn() { echo -e "${YELLOW}[WARN]${RESET} $1"; }
|
||||
log_error() { echo -e "${RED}[ERROR]${RESET} $1"; }
|
||||
|
||||
trap 'log_error "Fehler in Zeile $LINENO"' ERR
|
||||
|
||||
if [[ "$EUID" -ne 0 ]]; then
|
||||
log_error "Script muss als root laufen!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
exec 9>/var/lock/docker-control.lock
|
||||
flock -n 9 || { log_error "Script läuft bereits!"; exit 1; }
|
||||
|
||||
docker_up() {
|
||||
|
||||
local CONTAINER="$1"
|
||||
|
||||
if [[ "$CONTAINER" == "all" ]]; then
|
||||
log_info "Starte alle gestoppten Container"
|
||||
docker start $(docker ps -aq)
|
||||
else
|
||||
log_info "Starte Container: $CONTAINER"
|
||||
docker start "$CONTAINER"
|
||||
fi
|
||||
|
||||
log_success "Start abgeschlossen"
|
||||
}
|
||||
|
||||
docker_stop() {
|
||||
|
||||
local CONTAINER="$1"
|
||||
|
||||
if [[ "$CONTAINER" == "all" ]]; then
|
||||
log_info "Stoppe alle Container"
|
||||
docker stop $(docker ps -q)
|
||||
else
|
||||
log_info "Stoppe Container: $CONTAINER"
|
||||
docker stop "$CONTAINER"
|
||||
fi
|
||||
|
||||
log_success "Stop abgeschlossen"
|
||||
}
|
||||
|
||||
docker_restart() {
|
||||
|
||||
local CONTAINER="$1"
|
||||
|
||||
if [[ "$CONTAINER" == "all" ]]; then
|
||||
log_info "Restart aller Container"
|
||||
docker restart $(docker ps -q)
|
||||
else
|
||||
log_info "Restart Container: $CONTAINER"
|
||||
docker restart "$CONTAINER"
|
||||
fi
|
||||
|
||||
log_success "Restart abgeschlossen"
|
||||
}
|
||||
|
||||
docker_remove() {
|
||||
|
||||
local CONTAINER="$1"
|
||||
|
||||
if [[ "$CONTAINER" == "all" ]]; then
|
||||
log_info "Loesche aller Container"
|
||||
docker stop $(docker ps -q)
|
||||
docker rm $(docker ps -q)
|
||||
else
|
||||
log_info "Loesche Container: $CONTAINER"
|
||||
docker stop "$CONTAINER"
|
||||
docker rm "$CONTAINER"
|
||||
fi
|
||||
|
||||
log_success "Loeschen abgeschlossen"
|
||||
}
|
||||
|
||||
########################################
|
||||
# CLI
|
||||
########################################
|
||||
|
||||
ACTION="${1:-}"
|
||||
TARGET="${2:-}"
|
||||
|
||||
case "$ACTION" in
|
||||
|
||||
up)
|
||||
docker_up "$TARGET"
|
||||
;;
|
||||
|
||||
stop)
|
||||
docker_stop "$TARGET"
|
||||
;;
|
||||
|
||||
restart)
|
||||
docker_restart "$TARGET"
|
||||
;;
|
||||
|
||||
remove)
|
||||
docker_remove "$TARGET"
|
||||
;;
|
||||
|
||||
*)
|
||||
echo "Usage:"
|
||||
echo " $0 up <container|all>"
|
||||
echo " $0 stop <container|all>"
|
||||
echo " $0 remove <container|all>"
|
||||
echo " $0 restart <container|all>"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
Executable
+177
@@ -0,0 +1,177 @@
|
||||
#!/usr/bin/env bash
|
||||
set -Eeuo pipefail
|
||||
|
||||
RED="\e[31m"
|
||||
GREEN="\e[32m"
|
||||
YELLOW="\e[33m"
|
||||
BLUE="\e[34m"
|
||||
BOLD="\e[1m"
|
||||
RESET="\e[0m"
|
||||
|
||||
log_info() { echo -e "${BLUE}[INFO]${RESET} $1"; }
|
||||
log_success() { echo -e "${GREEN}[OK]${RESET} $1"; }
|
||||
log_warn() { echo -e "${YELLOW}[WARN]${RESET} $1"; }
|
||||
log_error() { echo -e "${RED}[ERROR]${RESET} $1"; }
|
||||
|
||||
trap 'log_error "Fehler in Zeile $LINENO"' ERR
|
||||
|
||||
if [[ "$EUID" -ne 0 ]]; then
|
||||
log_error "Script muss als root laufen!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
backend() {
|
||||
echo ""
|
||||
echo "BACKEND Sitemap wird erzeugt..."
|
||||
echo ""
|
||||
BASEURL="https://backend.blackpi.ipv64.net"
|
||||
SEARCH_PATH="/data/WEBSERVER/BACKEND/WEBROOT"
|
||||
SITEMAP="/data/WEBSERVER/BACKEND/WEBROOT/sitemap.xml"
|
||||
EXCLUDE_DIRS=(
|
||||
"config_backups"
|
||||
"Commands"
|
||||
"controller"
|
||||
"modules"
|
||||
"config.php"
|
||||
"main.js"
|
||||
"style.js"
|
||||
"login.php"
|
||||
".htaccess"
|
||||
"static"
|
||||
"templates"
|
||||
#"api"
|
||||
)
|
||||
|
||||
echo ""
|
||||
echo '<?xml version="1.0" encoding="UTF-8"?>' > $SITEMAP
|
||||
echo '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">' >> $SITEMAP
|
||||
|
||||
find "$SEARCH_PATH" -type f | while read file; do
|
||||
relpath="${file#$SEARCH_PATH/}"
|
||||
|
||||
skip=false
|
||||
for dir in "${EXCLUDE_DIRS[@]}"; do
|
||||
if [[ "$relpath" == "$dir"* ]]; then
|
||||
skip=true
|
||||
break
|
||||
fi
|
||||
done
|
||||
if [ "$skip" = true ]; then
|
||||
continue
|
||||
fi
|
||||
|
||||
lastmod=$(date -r "$file" "+%Y-%m-%d")
|
||||
|
||||
changefreq="daily"
|
||||
priority="1.0"
|
||||
|
||||
if [ "$relpath" == "index.php" ] || [ "$relpath" == "index.html" ]; then
|
||||
changefreq="weekly"
|
||||
priority="1.0"
|
||||
fi
|
||||
|
||||
echo " <url>" >> $SITEMAP
|
||||
echo " <loc>$BASEURL/$relpath</loc>" >> $SITEMAP
|
||||
echo " <lastmod>$lastmod</lastmod>" >> $SITEMAP
|
||||
echo " <changefreq>$changefreq</changefreq>" >> $SITEMAP
|
||||
echo " <priority>$priority</priority>" >> $SITEMAP
|
||||
echo " </url>" >> $SITEMAP
|
||||
|
||||
echo " -> $BASEURL/$relpath"
|
||||
done
|
||||
|
||||
echo '</urlset>' >> $SITEMAP
|
||||
|
||||
echo ""
|
||||
echo "Sitemap wurde erzeugt: $SITEMAP"
|
||||
echo ""
|
||||
}
|
||||
|
||||
public() {
|
||||
echo ""
|
||||
echo " PUBLIC Sitemap wird erzeugt..."
|
||||
echo ""
|
||||
BASEURL="https://www.blackpi.ipv64.net"
|
||||
SEARCH_PATH="/data/WEBSERVER/PUBLIC/WEBROOT"
|
||||
SITEMAP="/data/WEBSERVER/PUBLIC/WEBROOT/sitemap.xml"
|
||||
EXCLUDE_DIRS=(
|
||||
"controller"
|
||||
"moduls"
|
||||
"templates"
|
||||
"services/GenBerichte/"
|
||||
"services/GenBerichte/Arbeitsberichte/overtime_corrections.json"
|
||||
"services/Berichte/Arbeitsberichte/overtime_corrections.json"
|
||||
"services/test/"
|
||||
"services/test.php"
|
||||
"main.js"
|
||||
"style.js"
|
||||
"api"
|
||||
".htaccess"
|
||||
)
|
||||
|
||||
echo ""
|
||||
echo '<?xml version="1.0" encoding="UTF-8"?>' > $SITEMAP
|
||||
echo '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">' >> $SITEMAP
|
||||
|
||||
find "$SEARCH_PATH" -type f | while read file; do
|
||||
relpath="${file#$SEARCH_PATH/}"
|
||||
|
||||
skip=false
|
||||
for dir in "${EXCLUDE_DIRS[@]}"; do
|
||||
if [[ "$relpath" == "$dir"* ]]; then
|
||||
skip=true
|
||||
break
|
||||
fi
|
||||
done
|
||||
if [ "$skip" = true ]; then
|
||||
continue
|
||||
fi
|
||||
|
||||
lastmod=$(date -r "$file" "+%Y-%m-%d")
|
||||
|
||||
changefreq="daily"
|
||||
priority="1.0"
|
||||
|
||||
if [ "$relpath" == "index.php" ] || [ "$relpath" == "index.html" ]; then
|
||||
changefreq="weekly"
|
||||
priority="1.0"
|
||||
fi
|
||||
|
||||
echo " <url>" >> $SITEMAP
|
||||
echo " <loc>$BASEURL/$relpath</loc>" >> $SITEMAP
|
||||
echo " <lastmod>$lastmod</lastmod>" >> $SITEMAP
|
||||
echo " <changefreq>$changefreq</changefreq>" >> $SITEMAP
|
||||
echo " <priority>$priority</priority>" >> $SITEMAP
|
||||
echo " </url>" >> $SITEMAP
|
||||
|
||||
echo " -> $BASEURL/$relpath"
|
||||
done
|
||||
|
||||
echo '</urlset>' >> $SITEMAP
|
||||
|
||||
echo ""
|
||||
echo "Sitemap wurde erzeugt: $SITEMAP"
|
||||
echo ""
|
||||
}
|
||||
|
||||
ACTION="${1:-}"
|
||||
TARGET="${2:-}"
|
||||
OPTIONAL="${3:-}"
|
||||
|
||||
case "$ACTION" in
|
||||
all)
|
||||
backend
|
||||
public
|
||||
;;
|
||||
public)
|
||||
public
|
||||
;;
|
||||
backend)
|
||||
backend
|
||||
;;
|
||||
*)
|
||||
echo " $0 {public|backend}"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
Executable
+10
@@ -0,0 +1,10 @@
|
||||
#!/bin/bash
|
||||
|
||||
echo "Git Config"
|
||||
|
||||
USER="bruno"
|
||||
MAIL="bruno.eckhardt07@gmail.com"
|
||||
|
||||
git config --global credential.helper store
|
||||
git config --global user.name $USER
|
||||
git config --global user.email $MAIL
|
||||
Submodule WEBSERVER/BACKUP/BACKEND-20260713-142246-v2202607332846482301 added at 643be91c57.
Submodule WEBSERVER/BACKUP/BACKEND-20260713-145324-v2202607332846482301 added at 6798a60d83.
Submodule WEBSERVER/BACKUP/PUBLIC-20260713-142715-v2202607332846482301 added at decd7bcf50.
Executable
+78
@@ -0,0 +1,78 @@
|
||||
services:
|
||||
haproxy:
|
||||
image: haproxy:latest
|
||||
container_name: haproxy
|
||||
volumes:
|
||||
- ./HAPROXY:/usr/local/etc/haproxy
|
||||
ports:
|
||||
- "80:80"
|
||||
- "443:443"
|
||||
networks:
|
||||
docker-net:
|
||||
ipv4_address: 172.30.0.2
|
||||
restart: always
|
||||
|
||||
mariadb:
|
||||
image: mariadb:latest
|
||||
container_name: mariadb
|
||||
volumes:
|
||||
- ./MARIADB:/var/lib/mysql
|
||||
environment:
|
||||
MARIADB_ROOT_PASSWORD: bBHofurUJWKzPE8Z
|
||||
MARIADB_DATABASE: LIVE
|
||||
MARIADB_USER: worker
|
||||
MARIADB_PASSWORD: bBHofurUJWKzPE8Z
|
||||
ports:
|
||||
- "3306:3306"
|
||||
networks:
|
||||
docker-net:
|
||||
ipv4_address: 172.30.0.10
|
||||
restart: always
|
||||
|
||||
webserver-public:
|
||||
build: .
|
||||
container_name: webserver_public
|
||||
volumes:
|
||||
- ./WEBSERVER/PUBLIC/WEBROOT:/var/www/html/
|
||||
ports:
|
||||
- "8001:80"
|
||||
networks:
|
||||
docker-net:
|
||||
ipv4_address: 172.30.0.11
|
||||
restart: always
|
||||
|
||||
webserver-backend:
|
||||
build: .
|
||||
container_name: webserver_backend
|
||||
volumes:
|
||||
- ./WEBSERVER/BACKEND/WEBROOT:/var/www/html/
|
||||
ports:
|
||||
- "8002:80"
|
||||
networks:
|
||||
docker-net:
|
||||
ipv4_address: 172.30.0.12
|
||||
restart: always
|
||||
|
||||
gitea:
|
||||
image: gitea/gitea:latest
|
||||
container_name: gitea
|
||||
volumes:
|
||||
- ./GITEA:/data
|
||||
environment:
|
||||
- TZ=Europe/Berlin
|
||||
- APP_INI_PATH=./GITEA/conf/app.ini
|
||||
networks:
|
||||
docker-net:
|
||||
ipv4_address: 172.30.0.13
|
||||
ports:
|
||||
- "3000:3000"
|
||||
- "2222:22"
|
||||
restart: always
|
||||
|
||||
|
||||
networks:
|
||||
docker-net:
|
||||
driver: bridge
|
||||
ipam:
|
||||
config:
|
||||
- subnet: 172.30.0.0/16
|
||||
Reference in new issue
Block a user