feat: Configuración completa de Docker con PostgreSQL, HTTPS y servidor de producción

- Agregada configuración de servidor HTTPS con Express (server.js)
- Integración de PostgreSQL en docker-compose.yml con servicio dedicado
- Actualizado Dockerfile para optimizar build en Alpine Linux
- Configurado vite.config.ts con soporte HTTPS para desarrollo
- Agregados certificados SSL para HTTPS
- Actualizado svelte.config.js con configuración CSRF
- Ajustadas métricas de restauración en +page.server.ts para usar last_restore_date
- Agregado script npm start en package.json
- Instalado express como dependencia de producción
This commit is contained in:
2026-03-04 08:19:38 -06:00
parent 5fa97105c9
commit 03e3793dd3
11 changed files with 824 additions and 754 deletions

View File

@@ -0,0 +1,88 @@
-----BEGIN CERTIFICATE-----
MIIFLzCCBBegAwIBAgISBSlK1w8yv74gA1MpoRWxuScSMA0GCSqGSIb3DQEBCwUA
MDMxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQwwCgYDVQQD
EwNSMTMwHhcNMjYwMjE3MjAzNTIwWhcNMjYwNTE4MjAzNTE5WjAoMSYwJAYDVQQD
Ex13d3cuY3BhbmVsLWEyNC5hZHVhbmFzb2Z0LmNvbTCCASIwDQYJKoZIhvcNAQEB
BQADggEPADCCAQoCggEBAL/Eab9LDyi1w37BYZpF32XufVXOP/5LWz38tnUTVAc+
7XNgzJJESA7ZDL8ObPZfqNLd0wx8k/4l6UC7hI0+VGEEnpQARAMnK7X/E5YRUgcY
+X5SnufbrO0raDiJJyU6KjypZ6ie8/O595vG3ZgNYRacI2AxR3WOhx4mZJcTd5mo
uBPOfn7pVYu6O/iNCSwVmt+01abR6znAgX54ri9J5LR+Y36V8pDS6kSPfS/+pblt
hLYjxtE0XyA2FoJ/anVCyxSE4v0A4Hf9zuUjDIDFGavL6sn375NnUphCm/+U63XX
hITAguZxiOi/ObrZhLMivWtTsDCxuEbIpOFAZu///QMCAwEAAaOCAkYwggJCMA4G
A1UdDwEB/wQEAwIFoDATBgNVHSUEDDAKBggrBgEFBQcDATAMBgNVHRMBAf8EAjAA
MB0GA1UdDgQWBBT5Xeqix1yWnv2zUvlW2WZq54MP5zAfBgNVHSMEGDAWgBTnq58P
LDOgU9NeT3jIsoQOO9aSMzAzBggrBgEFBQcBAQQnMCUwIwYIKwYBBQUHMAKGF2h0
dHA6Ly9yMTMuaS5sZW5jci5vcmcvMEMGA1UdEQQ8MDqCGWNwYW5lbC1hMjQuYWR1
YW5hc29mdC5jb22CHXd3dy5jcGFuZWwtYTI0LmFkdWFuYXNvZnQuY29tMBMGA1Ud
IAQMMAowCAYGZ4EMAQIBMC4GA1UdHwQnMCUwI6AhoB+GHWh0dHA6Ly9yMTMuYy5s
ZW5jci5vcmcvMTkuY3JsMIIBDAYKKwYBBAHWeQIEAgSB/QSB+gD4AHYAyzj3FYl8
hKFEX1vB3fvJbvKaWc1HCmkFhbDLFMMUWOcAAAGcbYYZgQAABAMARzBFAiEA3lrX
okh5ZBsHXkrM3V5vQiliDs43mwOpXvS94hpPrOkCIGW5eJmyEHzu2HsJUXeew3It
D8/9ZrcwMWLJSzBltKjeAH4AGoudaUpXmMiZoMqIvfSPwLRWYMzDYA0fcfRp/8fR
rKMAAAGcbYYc/AAIAAAFAEnJns8EAwBHMEUCIEFhMKBwxFIGTbR8JNX9hF9UYvYd
YtIS3Ej0Dd6Gf5RwAiEA9eXfJKJDK8XO48qubNrUSrZVyO7iPWhVAT4Zbe3lszkw
DQYJKoZIhvcNAQELBQADggEBAJX7OOSpmtVV2rYqweE9D5ndlqtJqqMPI0IPVHnO
zuuIBuAL3QpPkM6ydKjNXfgKGDowJEmcAHOT44Rm2Og+7ODJ08xUkj1PovFgErUs
cjZns+eiBzyMhIdQu5ACu0wv6jqzPiYtCbHvdaSBNNCjc08DyE4r0c2f7JiknkCF
XMd1tBnjd8njB4RiSbFYJP3MQL2hx9GX0d18gQvBXfhqTQI4ETCdIEmffLzvmiEO
HrBFy/z52b7HzfL0TajnoHWPpdDfvwOuEt18MklB+1970sVuxhh3HpS/X1Gd17Gc
6gBzxyzpA7oYP9unVuYppE1WwmgtfU8dFhFx0+acgDRxYlA=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFBTCCAu2gAwIBAgIQWgDyEtjUtIDzkkFX6imDBTANBgkqhkiG9w0BAQsFADBP
MQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJuZXQgU2VjdXJpdHkgUmVzZWFy
Y2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBYMTAeFw0yNDAzMTMwMDAwMDBa
Fw0yNzAzMTIyMzU5NTlaMDMxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBF
bmNyeXB0MQwwCgYDVQQDEwNSMTMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
AoIBAQClZ3CN0FaBZBUXYc25BtStGZCMJlA3mBZjklTb2cyEBZPs0+wIG6BgUUNI
fSvHSJaetC3ancgnO1ehn6vw1g7UDjDKb5ux0daknTI+WE41b0VYaHEX/D7YXYKg
L7JRbLAaXbhZzjVlyIuhrxA3/+OcXcJJFzT/jCuLjfC8cSyTDB0FxLrHzarJXnzR
yQH3nAP2/Apd9Np75tt2QnDr9E0i2gB3b9bJXxf92nUupVcM9upctuBzpWjPoXTi
dYJ+EJ/B9aLrAek4sQpEzNPCifVJNYIKNLMc6YjCR06CDgo28EdPivEpBHXazeGa
XP9enZiVuppD0EqiFwUBBDDTMrOPAgMBAAGjgfgwgfUwDgYDVR0PAQH/BAQDAgGG
MB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDATASBgNVHRMBAf8ECDAGAQH/
AgEAMB0GA1UdDgQWBBTnq58PLDOgU9NeT3jIsoQOO9aSMzAfBgNVHSMEGDAWgBR5
tFnme7bl5AFzgAiIyBpY9umbbjAyBggrBgEFBQcBAQQmMCQwIgYIKwYBBQUHMAKG
Fmh0dHA6Ly94MS5pLmxlbmNyLm9yZy8wEwYDVR0gBAwwCjAIBgZngQwBAgEwJwYD
VR0fBCAwHjAcoBqgGIYWaHR0cDovL3gxLmMubGVuY3Iub3JnLzANBgkqhkiG9w0B
AQsFAAOCAgEAUTdYUqEimzW7TbrOypLqCfL7VOwYf/Q79OH5cHLCZeggfQhDconl
k7Kgh8b0vi+/XuWu7CN8n/UPeg1vo3G+taXirrytthQinAHGwc/UdbOygJa9zuBc
VyqoH3CXTXDInT+8a+c3aEVMJ2St+pSn4ed+WkDp8ijsijvEyFwE47hulW0Ltzjg
9fOV5Pmrg/zxWbRuL+k0DBDHEJennCsAen7c35Pmx7jpmJ/HtgRhcnz0yjSBvyIw
6L1QIupkCv2SBODT/xDD3gfQQyKv6roV4G2EhfEyAsWpmojxjCUCGiyg97FvDtm/
NK2LSc9lybKxB73I2+P2G3CaWpvvpAiHCVu30jW8GCxKdfhsXtnIy2imskQqVZ2m
0Pmxobb28Tucr7xBK7CtwvPrb79os7u2XP3O5f9b/H66GNyRrglRXlrYjI1oGYL/
f4I1n/Sgusda6WvA6C190kxjU15Y12mHU4+BxyR9cx2hhGS9fAjMZKJss28qxvz6
Axu4CaDmRNZpK/pQrXF17yXCXkmEWgvSOEZy6Z9pcbLIVEGckV/iVeq0AOo2pkg9
p4QRIy0tK2diRENLSF2KysFwbY6B26BFeFs3v1sYVRhFW9nLkOrQVporCS0KyZmf
wVD89qSTlnctLcZnIavjKsKUu1nA1iU0yYMdYepKR7lWbnwhdx3ewok=
-----END CERTIFICATE-----
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC/xGm/Sw8otcN+
wWGaRd9l7n1Vzj/+S1s9/LZ1E1QHPu1zYMySREgO2Qy/Dmz2X6jS3dMMfJP+JelA
u4SNPlRhBJ6UAEQDJyu1/xOWEVIHGPl+Up7n26ztK2g4iSclOio8qWeonvPzufeb
xt2YDWEWnCNgMUd1joceJmSXE3eZqLgTzn5+6VWLujv4jQksFZrftNWm0es5wIF+
eK4vSeS0fmN+lfKQ0upEj30v/qW5bYS2I8bRNF8gNhaCf2p1QssUhOL9AOB3/c7l
IwyAxRmry+rJ9++TZ1KYQpv/lOt114SEwILmcYjovzm62YSzIr1rU7AwsbhGyKTh
QGbv//0DAgMBAAECggEADuxN/mDs8RIUAI0z9zlwxRHmFwNR34wlsZE08a9rXpT7
DXt+7/L4WI9zenq46ANRs/cnMVWQfrqciDkPe55aGqKtZH8Qy94EfMk40PjQFVVQ
NRBg5VInBt3V4nBp52+7UbUtJ+YWveS+7BRxsh94arYD2rx6/x70TNhYA5m0OPTR
qWLNJabPxxi2Dm2zkEo2+pxzw1R+s3g8Sd6026LxiiDiZrUgVEwGnpIAOuHNGQ1u
8K5XWzjezrl8OUSwRSFAJyqSTcF5Ktj+dVCtMkUKg2WpK0qotVIZmm6YJ5cH13CP
/32myqHZRKkV6KslHAFlOaxZ0cvIAb3mXksSwO4bIQKBgQDu1ME75gaLbarV6FrE
vEG5vikS/nzRRjS7/96ecWF5iC1O9C+Sp0ViVlng3qQlW3h9OgUHhJYg+JvNMIT3
s9LR7rqvSf0RWbebsK7aOWh8poZaGGP3lk7BU6X3OhYHa4i9H/9BpeovQSuML/cP
A7g+4TQ8KA3lB1oolCRE3+NchwKBgQDNjYkEVNJ0SWevl/BPYUgrlJ+4OkooNXTk
6XgxWyHIr06k7M7UsoUnBauH/odHABBWFg6uwan8uCcWyP9kAdAVo1gVKePwO0eK
Ori9EthB169ZoYYdVecHGgkjW1JYXwS3us7+k9Jy09UBLniOoAfY8HGZeP+xo+3G
+7hKa6BWpQKBgDc2qmGdoR+0v8zqBan717oIM1i3ysVa1LAtzBqXHbDKAaeCHklq
MEk2q1qoPgyA5A8XTbhaN5bxwpsiP2tAgFmWNkR193J+akstAo9ivDwtB1xmzR2c
+yIIo5LPM+6NNrR6ZDmaENTR3S5wnE41TvACgl/x5pxvIbHF5ciidd6bAoGBALfw
jcoYdXOmNGjHmD4QmdqV1w+u6altnLszyWCxYlwJtGCVoMhpMAopYsQBmuCISBYh
CuaLWyhRSnlzSEcf8CtMzoexws243l3uCl73vBm/fqTAjBk4Q9LxE3hWQivea4RW
YOEjOtGSiivSgANxZVRWZfGme3llbmP/4XyHLyYZAoGBAMu5Amt9Dg7CAe4CLKmV
BIt2PmU1YoNxTXwlDwRYu8Fy20IdH5U93fS7sGifeg7oLa2t3YN2S3DE9XOri03D
3XTOUHV3/uGbkzJtd5QBGWyC9IAznvVDhpZlowKyk4SVdPxn/zxoVNgMHLtJHPYd
7Yf7vY2YofoFlsVKRqQme9Sw
-----END PRIVATE KEY-----

28
certs/llave_privada.key Normal file
View File

@@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC/xGm/Sw8otcN+
wWGaRd9l7n1Vzj/+S1s9/LZ1E1QHPu1zYMySREgO2Qy/Dmz2X6jS3dMMfJP+JelA
u4SNPlRhBJ6UAEQDJyu1/xOWEVIHGPl+Up7n26ztK2g4iSclOio8qWeonvPzufeb
xt2YDWEWnCNgMUd1joceJmSXE3eZqLgTzn5+6VWLujv4jQksFZrftNWm0es5wIF+
eK4vSeS0fmN+lfKQ0upEj30v/qW5bYS2I8bRNF8gNhaCf2p1QssUhOL9AOB3/c7l
IwyAxRmry+rJ9++TZ1KYQpv/lOt114SEwILmcYjovzm62YSzIr1rU7AwsbhGyKTh
QGbv//0DAgMBAAECggEADuxN/mDs8RIUAI0z9zlwxRHmFwNR34wlsZE08a9rXpT7
DXt+7/L4WI9zenq46ANRs/cnMVWQfrqciDkPe55aGqKtZH8Qy94EfMk40PjQFVVQ
NRBg5VInBt3V4nBp52+7UbUtJ+YWveS+7BRxsh94arYD2rx6/x70TNhYA5m0OPTR
qWLNJabPxxi2Dm2zkEo2+pxzw1R+s3g8Sd6026LxiiDiZrUgVEwGnpIAOuHNGQ1u
8K5XWzjezrl8OUSwRSFAJyqSTcF5Ktj+dVCtMkUKg2WpK0qotVIZmm6YJ5cH13CP
/32myqHZRKkV6KslHAFlOaxZ0cvIAb3mXksSwO4bIQKBgQDu1ME75gaLbarV6FrE
vEG5vikS/nzRRjS7/96ecWF5iC1O9C+Sp0ViVlng3qQlW3h9OgUHhJYg+JvNMIT3
s9LR7rqvSf0RWbebsK7aOWh8poZaGGP3lk7BU6X3OhYHa4i9H/9BpeovQSuML/cP
A7g+4TQ8KA3lB1oolCRE3+NchwKBgQDNjYkEVNJ0SWevl/BPYUgrlJ+4OkooNXTk
6XgxWyHIr06k7M7UsoUnBauH/odHABBWFg6uwan8uCcWyP9kAdAVo1gVKePwO0eK
Ori9EthB169ZoYYdVecHGgkjW1JYXwS3us7+k9Jy09UBLniOoAfY8HGZeP+xo+3G
+7hKa6BWpQKBgDc2qmGdoR+0v8zqBan717oIM1i3ysVa1LAtzBqXHbDKAaeCHklq
MEk2q1qoPgyA5A8XTbhaN5bxwpsiP2tAgFmWNkR193J+akstAo9ivDwtB1xmzR2c
+yIIo5LPM+6NNrR6ZDmaENTR3S5wnE41TvACgl/x5pxvIbHF5ciidd6bAoGBALfw
jcoYdXOmNGjHmD4QmdqV1w+u6altnLszyWCxYlwJtGCVoMhpMAopYsQBmuCISBYh
CuaLWyhRSnlzSEcf8CtMzoexws243l3uCl73vBm/fqTAjBk4Q9LxE3hWQivea4RW
YOEjOtGSiivSgANxZVRWZfGme3llbmP/4XyHLyYZAoGBAMu5Amt9Dg7CAe4CLKmV
BIt2PmU1YoNxTXwlDwRYu8Fy20IdH5U93fS7sGifeg7oLa2t3YN2S3DE9XOri03D
3XTOUHV3/uGbkzJtd5QBGWyC9IAznvVDhpZlowKyk4SVdPxn/zxoVNgMHLtJHPYd
7Yf7vY2YofoFlsVKRqQme9Sw
-----END PRIVATE KEY-----