Adding fusion site

This commit is contained in:
Brodin 2024-07-18 11:24:17 -04:00
parent a5fe3f0adf
commit e6841391cb
216 changed files with 28187 additions and 34 deletions

View File

@ -1,34 +0,0 @@
services:
db:
image: mysql:8.0
restart: always
environment:
MYSQL_DATABASE: fusiondance
MYSQL_USER: wordpress
MYSQL_PASSWORD: ${DBPASS}
MYSQL_RANDOM_ROOT_PASSWORD: '1'
volumes:
- ./db:/var/lib/mysql
wordpress:
depends_on:
- db
image: wordpress
restart: always
environment:
# PUID: ${UID}
# PGID: ${GID}
WORDPRESS_DB_HOST: fusiondance-db-1
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: ${DBPASS}
WORDPRESS_DB_NAME: fusiondance
VIRTUAL_HOST: "www.libertyfusiondance.com, libertyfusiondance.com"
LETSENCRYPT_HOST: "libertyfusiondance.com"
LETSENCRYPT_EMAIL: ${EMAIL}
# LETSENCRYPT_TEST: true
volumes:
- ./wordpress:/var/www/html
- ./backup:/var/www/html/wp-content/updraft
networks:
default:
name: nginx-proxy
external: true

View File

@ -1,3 +1,5 @@
DOMAIN=example.com
DBPASS=password
EMAIL=example@mail.com
DOMAIN=example.com

View File

@ -0,0 +1,31 @@
{
"url": "http://localhost:2368",
"server": {
"port": 2368,
"host": "::"
},
"mail": {
"transport": "SMTP",
"options": {
"service": "Mailgun",
"host": "smtp.mailgun.org",
"port": 587,
"secure": false,
"auth": {
"user": "postmaster@mg.libertyfusiondance.com",
"pass": "fb802ed457aaa1e236cea58d336009ec-91fbbdba-05a4ad8b"
}
}
},
"logging": {
"transports": [
"file",
"stdout"
]
},
"process": "systemd",
"paths": {
"contentPath": "/var/lib/ghost/content"
}
}

View File

@ -0,0 +1,30 @@
{
"url": "http://localhost:2368",
"server": {
"port": 2368,
"host": "::"
},
"mail": {
"transport": "SMTP",
"options": {
"service": "Mailgun",
"host": "smtp.mailgun.org",
"port": 587,
"secure": false,
"auth": {
"user": "postmaster@mg.libertyfusiondance.com",
"pass": "fb802ed457aaa1e236cea58d336009ec-91fbbdba-05a4ad8b"
}
}
},
"logging": {
"transports": [
"file",
"stdout"
]
},
"process": "systemd",
"paths": {
"contentPath": "/var/lib/ghost/content"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 123 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

View File

@ -0,0 +1,31 @@
{"name":"Log","hostname":"f51bdf7f5c0d","pid":1,"level":30,"version":"5.87.2","msg":"Ghost is running in production...","time":"2024-07-17T01:42:28.756Z","v":0}
{"name":"Log","hostname":"f51bdf7f5c0d","pid":1,"level":30,"version":"5.87.2","msg":"Your site is now available on http://0.0.0.0:2368/","time":"2024-07-17T01:42:28.757Z","v":0}
{"name":"Log","hostname":"f51bdf7f5c0d","pid":1,"level":30,"version":"5.87.2","msg":"Ctrl+C to shut down","time":"2024-07-17T01:42:28.757Z","v":0}
{"name":"Log","hostname":"f51bdf7f5c0d","pid":1,"level":30,"version":"5.87.2","msg":"Ghost server started in 0.436s","time":"2024-07-17T01:42:28.758Z","v":0}
{"name":"Log","hostname":"f51bdf7f5c0d","pid":1,"level":30,"version":"5.87.2","msg":"Database is in a ready state.","time":"2024-07-17T01:42:28.924Z","v":0}
{"name":"Log","hostname":"f51bdf7f5c0d","pid":1,"level":30,"version":"5.87.2","msg":"Ghost database ready in 0.608s","time":"2024-07-17T01:42:28.929Z","v":0}
{"name":"Log","hostname":"f51bdf7f5c0d","pid":1,"level":40,"version":"5.87.2","msg":"Missing mail.from config, falling back to a generated email address. Please update your config file and set a valid from address","time":"2024-07-17T01:42:29.139Z","v":0}
{"name":"Log","hostname":"f51bdf7f5c0d","pid":1,"level":30,"version":"5.87.2","msg":"Adding offloaded job to the queue","time":"2024-07-17T01:42:30.288Z","v":0}
{"name":"Log","hostname":"f51bdf7f5c0d","pid":1,"level":30,"version":"5.87.2","msg":"Scheduling job mentions-email-report at 52 2 * * * *. Next run on: Wed Jul 17 2024 02:02:52 GMT+0000 (Coordinated Universal Time)","time":"2024-07-17T01:42:30.307Z","v":0}
{"name":"Log","hostname":"f51bdf7f5c0d","pid":1,"level":30,"version":"5.87.2","msg":"Adding offloaded job to the queue","time":"2024-07-17T01:42:30.562Z","v":0}
{"name":"Log","hostname":"f51bdf7f5c0d","pid":1,"level":30,"version":"5.87.2","msg":"Scheduling job clean-expired-comped at 13 18 1 * * *. Next run on: Thu Jul 18 2024 01:18:13 GMT+0000 (Coordinated Universal Time)","time":"2024-07-17T01:42:30.568Z","v":0}
{"name":"Log","hostname":"f51bdf7f5c0d","pid":1,"level":30,"version":"5.87.2","msg":"Adding offloaded job to the queue","time":"2024-07-17T01:42:30.572Z","v":0}
{"name":"Log","hostname":"f51bdf7f5c0d","pid":1,"level":30,"version":"5.87.2","msg":"Scheduling job clean-tokens at 4 57 1 * * *. Next run on: Wed Jul 17 2024 01:57:04 GMT+0000 (Coordinated Universal Time)","time":"2024-07-17T01:42:30.573Z","v":0}
{"name":"Log","hostname":"f51bdf7f5c0d","pid":1,"level":30,"version":"5.87.2","msg":"Ghost booted in 2.412s","time":"2024-07-17T01:42:30.734Z","v":0}
{"name":"Log","hostname":"f51bdf7f5c0d","pid":1,"level":30,"version":"5.87.2","msg":"Adding offloaded job to the queue","time":"2024-07-17T01:42:30.739Z","v":0}
{"name":"Log","hostname":"f51bdf7f5c0d","pid":1,"level":30,"version":"5.87.2","msg":"Scheduling job update-check at 38 11 18 * * *. Next run on: Wed Jul 17 2024 18:11:38 GMT+0000 (Coordinated Universal Time)","time":"2024-07-17T01:42:30.741Z","v":0}
{"name":"Log","hostname":"f51bdf7f5c0d","pid":1,"level":30,"version":"5.87.2","msg":"Running milestone emails job on Thu Jul 18 2024 01:42:30 GMT+0000 (Coordinated Universal Time)","time":"2024-07-17T01:42:30.746Z","v":0}
{"name":"Log","hostname":"f51bdf7f5c0d","pid":1,"level":30,"version":"5.87.2","msg":"Ghost URL Service Ready in 2.521s","time":"2024-07-17T01:42:30.842Z","v":0}
{"name":"Log","hostname":"f51bdf7f5c0d","pid":1,"level":30,"version":"5.87.2","req":{"meta":{"requestId":"50b9a850-66b1-4868-b363-336c4eae0a69","userId":null},"url":"/favicon.ico","method":"GET","originalUrl":"/favicon.ico","params":{},"headers":{"accept":"*/*","user-agent":"Mozilla/5.0 Safari/537.36","host":"0.0.0.0:2368","connection":"close"},"query":{}},"res":{"_headers":{"x-powered-by":"Express","content-type":"image/x-icon","content-length":15406,"etag":"\"a9c6dbdcdc3ae568f4e0dad92149a0e3\"","cache-control":"public, max-age=86400","vary":"Accept-Encoding"},"statusCode":200,"responseTime":"5ms"},"msg":"","time":"2024-07-17T01:42:37.204Z","v":0}
{"name":"Log","hostname":"f51bdf7f5c0d","pid":1,"level":30,"version":"5.87.2","req":{"meta":{"requestId":"9c9cd865-8a69-4842-afda-bda56bb95a16","userId":null},"url":"/","method":"GET","originalUrl":"/","params":{},"headers":{"host":"neuroserv:2368","user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0","accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/png,image/svg+xml,*/*;q=0.8","accept-language":"en-US,en;q=0.5","accept-encoding":"gzip, deflate","dnt":"1","sec-gpc":"1","connection":"keep-alive","upgrade-insecure-requests":"1","priority":"u=0, i"},"query":{}},"res":{"_headers":{"x-powered-by":"Express","cache-control":"public, max-age=0","content-type":"text/html; charset=utf-8","etag":"W/\"434e-bRas19RMXA2Ff9z9JY/4OFM+gwo\"","vary":"Accept-Encoding","content-encoding":"gzip"},"statusCode":200,"responseTime":"352ms"},"msg":"","time":"2024-07-17T01:42:37.385Z","v":0}
{"name":"Log","hostname":"f51bdf7f5c0d","pid":1,"level":30,"version":"5.87.2","req":{"meta":{"requestId":"6032bcc7-38a3-43e5-bfcf-28ecbbc85e59","userId":null},"url":"/assets/built/screen.css?v=d8bd103103","method":"GET","originalUrl":"/assets/built/screen.css?v=d8bd103103","params":{},"headers":{"host":"neuroserv:2368","user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0","accept":"text/css,*/*;q=0.1","accept-language":"en-US,en;q=0.5","accept-encoding":"gzip, deflate","dnt":"1","sec-gpc":"1","connection":"keep-alive","referer":"http://neuroserv:2368/","priority":"u=0"},"query":{"v":"d8bd103103"}},"res":{"_headers":{"x-powered-by":"Express","accept-ranges":"bytes","cache-control":"public, max-age=31536000","last-modified":"Sat, 26 Oct 1985 08:15:00 GMT","etag":"W/\"c0f7-7438674ba0\"","content-type":"text/css; charset=UTF-8","vary":"Accept-Encoding","content-encoding":"gzip"},"statusCode":200,"responseTime":"4ms"},"msg":"","time":"2024-07-17T01:42:37.414Z","v":0}
{"name":"Log","hostname":"f51bdf7f5c0d","pid":1,"level":30,"version":"5.87.2","req":{"meta":{"requestId":"ab563fd1-cd22-43ee-9060-d7215465987e","userId":null},"url":"/assets/fonts/inter-roman.woff2?v=d8bd103103","method":"GET","originalUrl":"/assets/fonts/inter-roman.woff2?v=d8bd103103","params":{},"headers":{"host":"neuroserv:2368","user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0","accept":"application/font-woff2;q=1.0,application/font-woff;q=0.9,*/*;q=0.8","accept-language":"en-US,en;q=0.5","accept-encoding":"gzip, deflate","referer":"http://neuroserv:2368/","dnt":"1","sec-gpc":"1","connection":"keep-alive","priority":"u=2"},"query":{"v":"d8bd103103"}},"res":{"_headers":{"x-powered-by":"Express","accept-ranges":"bytes","cache-control":"public, max-age=31536000","last-modified":"Sat, 26 Oct 1985 08:15:00 GMT","etag":"W/\"9394-7438674ba0\"","content-type":"font/woff2","content-length":37780},"statusCode":200,"responseTime":"3ms"},"msg":"","time":"2024-07-17T01:42:37.424Z","v":0}
{"name":"Log","hostname":"f51bdf7f5c0d","pid":1,"level":30,"version":"5.87.2","req":{"meta":{"requestId":"557a1259-b53a-4e61-8e77-a3c906dd666c","userId":null},"url":"/public/member-attribution.min.js?v=d8bd103103","method":"GET","originalUrl":"/public/member-attribution.min.js?v=d8bd103103","params":{},"headers":{"host":"neuroserv:2368","user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0","accept":"*/*","accept-language":"en-US,en;q=0.5","accept-encoding":"gzip, deflate","referer":"http://neuroserv:2368/","dnt":"1","sec-gpc":"1","connection":"keep-alive"},"query":{"v":"d8bd103103"}},"res":{"_headers":{"x-powered-by":"Express","content-type":"application/javascript","etag":"\"d3835a893b20615fbdbecc7c556ae8dc\"","cache-control":"public, max-age=31536000","vary":"Accept-Encoding","content-encoding":"gzip"},"statusCode":200,"responseTime":"5ms"},"msg":"","time":"2024-07-17T01:42:37.428Z","v":0}
{"name":"Log","hostname":"f51bdf7f5c0d","pid":1,"level":30,"version":"5.87.2","req":{"meta":{"requestId":"9369d6e3-0079-4e22-9f6e-d2c99dd2fc44","userId":null},"url":"/public/cards.min.js?v=d8bd103103","method":"GET","originalUrl":"/public/cards.min.js?v=d8bd103103","params":{},"headers":{"host":"neuroserv:2368","user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0","accept":"*/*","accept-language":"en-US,en;q=0.5","accept-encoding":"gzip, deflate","referer":"http://neuroserv:2368/","dnt":"1","sec-gpc":"1","connection":"keep-alive"},"query":{"v":"d8bd103103"}},"res":{"_headers":{"x-powered-by":"Express","content-type":"application/javascript","etag":"\"431228c753b74a6958600d170f921e6d\"","cache-control":"public, max-age=31536000","vary":"Accept-Encoding","content-encoding":"gzip"},"statusCode":200,"responseTime":"7ms"},"msg":"","time":"2024-07-17T01:42:37.428Z","v":0}
{"name":"Log","hostname":"f51bdf7f5c0d","pid":1,"level":30,"version":"5.87.2","req":{"meta":{"requestId":"a11e719f-131b-4b81-b4bf-a320cc588e77","userId":null},"url":"/assets/built/source.js?v=d8bd103103","method":"GET","originalUrl":"/assets/built/source.js?v=d8bd103103","params":{},"headers":{"host":"neuroserv:2368","user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0","accept":"*/*","accept-language":"en-US,en;q=0.5","accept-encoding":"gzip, deflate","dnt":"1","sec-gpc":"1","connection":"keep-alive","referer":"http://neuroserv:2368/","priority":"u=1"},"query":{"v":"d8bd103103"}},"res":{"_headers":{"x-powered-by":"Express","accept-ranges":"bytes","cache-control":"public, max-age=31536000","last-modified":"Sat, 26 Oct 1985 08:15:00 GMT","etag":"W/\"cdf7-7438674ba0\"","content-type":"application/javascript; charset=UTF-8","vary":"Accept-Encoding","content-encoding":"gzip"},"statusCode":200,"responseTime":"8ms"},"msg":"","time":"2024-07-17T01:42:37.429Z","v":0}
{"name":"Log","hostname":"f51bdf7f5c0d","pid":1,"level":30,"version":"5.87.2","req":{"meta":{"requestId":"31bbaff2-ba9a-45fa-a174-77d5c8eea0ea","userId":null},"url":"/public/cards.min.css?v=d8bd103103","method":"GET","originalUrl":"/public/cards.min.css?v=d8bd103103","params":{},"headers":{"host":"neuroserv:2368","user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0","accept":"text/css,*/*;q=0.1","accept-language":"en-US,en;q=0.5","accept-encoding":"gzip, deflate","referer":"http://neuroserv:2368/","dnt":"1","sec-gpc":"1","connection":"keep-alive","priority":"u=2"},"query":{"v":"d8bd103103"}},"res":{"_headers":{"x-powered-by":"Express","content-type":"text/css","etag":"\"bab5aee254a903a07ef4673e8e2e18c5\"","cache-control":"public, max-age=31536000","vary":"Accept-Encoding","content-encoding":"gzip"},"statusCode":200,"responseTime":"8ms"},"msg":"","time":"2024-07-17T01:42:37.430Z","v":0}
{"name":"Log","hostname":"f51bdf7f5c0d","pid":1,"level":30,"version":"5.87.2","req":{"meta":{"requestId":"e52ad415-6410-40fa-bb01-bbe42bc9a00b","userId":null},"url":"/favicon.ico","method":"GET","originalUrl":"/favicon.ico","params":{},"headers":{"host":"neuroserv:2368","user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0","accept":"image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5","accept-language":"en-US,en;q=0.5","accept-encoding":"gzip, deflate","referer":"http://neuroserv:2368/","dnt":"1","sec-gpc":"1","connection":"keep-alive","priority":"u=6"},"query":{}},"res":{"_headers":{"x-powered-by":"Express","content-type":"image/x-icon","etag":"\"a9c6dbdcdc3ae568f4e0dad92149a0e3\"","cache-control":"public, max-age=86400","vary":"Accept-Encoding","content-encoding":"gzip"},"statusCode":200,"responseTime":"2ms"},"msg":"","time":"2024-07-17T01:42:37.685Z","v":0}
{"name":"Log","hostname":"f51bdf7f5c0d","pid":1,"level":40,"version":"5.87.2","msg":"Ghost is shutting down","time":"2024-07-17T01:43:12.578Z","v":0}
{"name":"Log","hostname":"f51bdf7f5c0d","pid":1,"level":40,"version":"5.87.2","msg":"Ghost has shut down","time":"2024-07-17T01:43:12.580Z","v":0}
{"name":"Log","hostname":"f51bdf7f5c0d","pid":1,"level":40,"version":"5.87.2","msg":"Your site is now offline","time":"2024-07-17T01:43:12.580Z","v":0}
{"name":"Log","hostname":"f51bdf7f5c0d","pid":1,"level":40,"version":"5.87.2","msg":"Ghost was running for a few seconds","time":"2024-07-17T01:43:12.581Z","v":0}

View File

@ -0,0 +1,40 @@
{"name":"Log","hostname":"9f17f9b67b1f","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.18.0.22:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.18.0.22:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.18.0.22:3306","time":"2024-07-17T03:17:02.199Z","v":0}
{"name":"Log","hostname":"9f17f9b67b1f","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.18.0.22:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.18.0.22:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.18.0.22:3306","time":"2024-07-17T05:54:33.609Z","v":0}
{"name":"Log","hostname":"9f17f9b67b1f","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.18.0.22:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.18.0.22:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.18.0.22:3306","time":"2024-07-17T05:54:34.880Z","v":0}
{"name":"Log","hostname":"9f17f9b67b1f","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.18.0.22:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.18.0.22:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.18.0.22:3306","time":"2024-07-17T05:54:36.150Z","v":0}
{"name":"Log","hostname":"9f17f9b67b1f","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.18.0.22:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.18.0.22:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.18.0.22:3306","time":"2024-07-17T06:01:52.119Z","v":0}
{"name":"Log","hostname":"9f17f9b67b1f","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.18.0.22:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.18.0.22:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.18.0.22:3306","time":"2024-07-17T06:01:53.388Z","v":0}
{"name":"Log","hostname":"9f17f9b67b1f","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.18.0.22:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.18.0.22:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.18.0.22:3306","time":"2024-07-17T06:01:54.799Z","v":0}
{"name":"Log","hostname":"2712f728b5f1","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.18.0.22:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.18.0.22:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.18.0.22:3306","time":"2024-07-17T06:27:08.879Z","v":0}
{"name":"Log","hostname":"2712f728b5f1","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.18.0.22:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.18.0.22:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.18.0.22:3306","time":"2024-07-17T06:27:10.172Z","v":0}
{"name":"Log","hostname":"2712f728b5f1","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.18.0.22:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.18.0.22:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.18.0.22:3306","time":"2024-07-17T06:27:11.422Z","v":0}
{"name":"Log","hostname":"2712f728b5f1","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.18.0.22:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.18.0.22:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.18.0.22:3306","time":"2024-07-17T06:27:12.770Z","v":0}
{"name":"Log","hostname":"2712f728b5f1","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.18.0.22:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.18.0.22:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.18.0.22:3306","time":"2024-07-17T06:27:14.499Z","v":0}
{"name":"Log","hostname":"2712f728b5f1","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.18.0.22:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.18.0.22:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.18.0.22:3306","time":"2024-07-17T06:30:26.803Z","v":0}
{"name":"Log","hostname":"2712f728b5f1","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.18.0.22:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.18.0.22:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.18.0.22:3306","time":"2024-07-17T06:30:27.998Z","v":0}
{"name":"Log","hostname":"2712f728b5f1","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.18.0.22:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.18.0.22:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.18.0.22:3306","time":"2024-07-17T06:30:29.255Z","v":0}
{"name":"Log","hostname":"2712f728b5f1","pid":1,"level":50,"version":"5.87.2","req":{"meta":{"requestId":"7183f010-60e6-4523-bd78-b14d8706625c","userId":null},"url":"/users/me/?include=roles","method":"GET","originalUrl":"/ghost/api/admin/users/me/?include=roles","params":{},"headers":{"host":"libertyfusiondance.com","connection":"close","x-real-ip":"192.168.86.1","x-forwarded-for":"192.168.86.1","x-forwarded-host":"libertyfusiondance.com","x-forwarded-proto":"https","x-forwarded-ssl":"on","x-forwarded-port":"443","x-original-uri":"/ghost/api/admin/users/me/?include=roles","user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0","accept":"application/json, text/javascript, */*; q=0.01","accept-language":"en-US,en;q=0.5","accept-encoding":"gzip, deflate, br, zstd","content-type":"application/json; charset=UTF-8","x-ghost-version":"5.87","app-pragma":"no-cache","x-requested-with":"XMLHttpRequest","referer":"https://libertyfusiondance.com/ghost/","sec-fetch-dest":"empty","sec-fetch-mode":"cors","sec-fetch-site":"same-origin","cookie":"**REDACTED**"},"query":{"include":"roles"}},"res":{"_headers":{"x-powered-by":"Express","content-version":"v5.87","vary":"Accept-Version, Accept-Encoding","cache-control":"no-cache, private, no-store, must-revalidate, max-stale=0, post-check=0, pre-check=0","content-type":"application/json; charset=utf-8","content-length":"343","etag":"W/\"157-D54S8KiTtL1PioiBaK6Q+xHRLMM\""},"statusCode":403,"responseTime":"293ms"},"err":{"id":"1a5279c0-4406-11ef-ba6e-290e3a154ff5","domain":"https://libertyfusiondance.com","code":null,"name":"NoPermissionError","statusCode":403,"level":"normal","message":"Authorization failed","context":"\"Unable to determine the authenticated user or integration. Check that cookies are being passed through if using session authentication.\"","stack":"NoPermissionError: Authorization failed\n at authorizeAdminApi (/var/lib/ghost/versions/5.87.2/core/server/services/auth/authorize.js:33:25)\n at Layer.handle [as handle_request] (/var/lib/ghost/versions/5.87.2/node_modules/express/lib/router/layer.js:95:5)\n at next (/var/lib/ghost/versions/5.87.2/node_modules/express/lib/router/route.js:149:13)\n at authenticate (/var/lib/ghost/versions/5.87.2/core/server/services/auth/session/middleware.js:28:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)","hideStack":false},"msg":"Authorization failed","time":"2024-07-17T06:30:47.393Z","v":0}
{"name":"Log","hostname":"2712f728b5f1","pid":1,"level":50,"version":"5.87.2","req":{"meta":{"requestId":"868fb2e1-987d-415e-b6ef-c826d606e4ac","userId":null},"url":"/users/me/?include=roles","method":"GET","originalUrl":"/ghost/api/admin/users/me/?include=roles","params":{},"headers":{"host":"libertyfusiondance.com","connection":"close","x-real-ip":"192.168.86.1","x-forwarded-for":"192.168.86.1","x-forwarded-host":"libertyfusiondance.com","x-forwarded-proto":"https","x-forwarded-ssl":"on","x-forwarded-port":"443","x-original-uri":"/ghost/api/admin/users/me/?include=roles","user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0","accept":"application/json, text/javascript, */*; q=0.01","accept-language":"en-US,en;q=0.5","accept-encoding":"gzip, deflate, br, zstd","content-type":"application/json; charset=UTF-8","x-ghost-version":"5.87","app-pragma":"no-cache","x-requested-with":"XMLHttpRequest","referer":"https://libertyfusiondance.com/ghost/","sec-fetch-dest":"empty","sec-fetch-mode":"cors","sec-fetch-site":"same-origin","cookie":"**REDACTED**"},"query":{"include":"roles"}},"res":{"_headers":{"x-powered-by":"Express","content-version":"v5.87","vary":"Accept-Version, Accept-Encoding","cache-control":"no-cache, private, no-store, must-revalidate, max-stale=0, post-check=0, pre-check=0","content-type":"application/json; charset=utf-8","content-length":"343","etag":"W/\"157-3Yuqu6wLKwchEYYx8+2j7q79NUU\""},"statusCode":403,"responseTime":"3ms"},"err":{"id":"1a58e260-4406-11ef-ba6e-290e3a154ff5","domain":"https://libertyfusiondance.com","code":null,"name":"NoPermissionError","statusCode":403,"level":"normal","message":"Authorization failed","context":"\"Unable to determine the authenticated user or integration. Check that cookies are being passed through if using session authentication.\"","stack":"NoPermissionError: Authorization failed\n at authorizeAdminApi (/var/lib/ghost/versions/5.87.2/core/server/services/auth/authorize.js:33:25)\n at Layer.handle [as handle_request] (/var/lib/ghost/versions/5.87.2/node_modules/express/lib/router/layer.js:95:5)\n at next (/var/lib/ghost/versions/5.87.2/node_modules/express/lib/router/route.js:149:13)\n at authenticate (/var/lib/ghost/versions/5.87.2/core/server/services/auth/session/middleware.js:28:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)","hideStack":false},"msg":"Authorization failed","time":"2024-07-17T06:30:47.433Z","v":0}
{"name":"Log","hostname":"2712f728b5f1","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.18.0.22:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.18.0.22:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.18.0.22:3306","time":"2024-07-17T06:43:46.821Z","v":0}
{"name":"Log","hostname":"2712f728b5f1","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.18.0.22:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.18.0.22:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.18.0.22:3306","time":"2024-07-17T06:43:48.075Z","v":0}
{"name":"Log","hostname":"2712f728b5f1","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.18.0.22:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.18.0.22:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.18.0.22:3306","time":"2024-07-17T06:43:49.522Z","v":0}
{"name":"Log","hostname":"2712f728b5f1","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.18.0.22:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.18.0.22:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.18.0.22:3306","time":"2024-07-17T06:45:18.653Z","v":0}
{"name":"Log","hostname":"2712f728b5f1","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.18.0.22:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.18.0.22:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.18.0.22:3306","time":"2024-07-17T06:45:19.894Z","v":0}
{"name":"Log","hostname":"2712f728b5f1","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.18.0.22:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.18.0.22:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.18.0.22:3306","time":"2024-07-17T06:48:31.803Z","v":0}
{"name":"Log","hostname":"2712f728b5f1","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.18.0.22:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.18.0.22:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.18.0.22:3306","time":"2024-07-17T06:48:33.065Z","v":0}
{"name":"Log","hostname":"2712f728b5f1","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.18.0.22:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.18.0.22:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.18.0.22:3306","time":"2024-07-17T06:48:34.476Z","v":0}
{"name":"Log","hostname":"2712f728b5f1","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.18.0.22:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.18.0.22:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.18.0.22:3306","time":"2024-07-17T06:53:37.498Z","v":0}
{"name":"Log","hostname":"2712f728b5f1","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.18.0.22:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.18.0.22:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.18.0.22:3306","time":"2024-07-17T06:53:38.767Z","v":0}
{"name":"Log","hostname":"2712f728b5f1","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.18.0.22:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.18.0.22:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.18.0.22:3306","time":"2024-07-17T06:53:40.138Z","v":0}
{"name":"Log","hostname":"2712f728b5f1","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.18.0.22:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.18.0.22:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.18.0.22:3306","time":"2024-07-17T06:57:16.875Z","v":0}
{"name":"Log","hostname":"2712f728b5f1","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.18.0.22:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.18.0.22:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.18.0.22:3306","time":"2024-07-17T06:57:18.143Z","v":0}
{"name":"Log","hostname":"2712f728b5f1","pid":1,"level":50,"version":"5.87.2","req":{"meta":{"requestId":"3c2da825-15b4-461f-8aea-144138eae647","userId":null},"url":"/send-magic-link/","method":"POST","originalUrl":"/members/api/send-magic-link/","params":{},"headers":{"host":"libertyfusiondance.com","connection":"close","x-real-ip":"192.168.86.1","x-forwarded-for":"192.168.86.1","x-forwarded-host":"libertyfusiondance.com","x-forwarded-proto":"https","x-forwarded-ssl":"on","x-forwarded-port":"443","x-original-uri":"/members/api/send-magic-link/","content-length":"2069","user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0","accept":"*/*","accept-language":"en-US,en;q=0.5","accept-encoding":"gzip, deflate, br, zstd","referer":"https://libertyfusiondance.com/","content-type":"application/json","origin":"https://libertyfusiondance.com","sec-fetch-dest":"empty","sec-fetch-mode":"cors","sec-fetch-site":"same-origin","priority":"u=0"},"query":{}},"res":{"_headers":{"x-powered-by":"Express","cache-control":"no-cache, private, no-store, must-revalidate, max-stale=0, post-check=0, pre-check=0","access-control-allow-origin":"*","content-type":"application/json; charset=utf-8","content-length":"285","etag":"W/\"11d-jBclF01NpCAqJXf2Q+opaJmxwYA\"","vary":"Accept-Encoding"},"statusCode":429,"responseTime":"44ms"},"err":{"id":"db87a8b0-4409-11ef-a400-6be2eeaefd69","domain":"https://libertyfusiondance.com","code":null,"name":"TooManyRequestsError","statusCode":429,"level":"normal","message":"Too many sign-in attempts try again in 7 minutes","context":"\"Too many login attempts.\"","help":"\"Too many login attempts.\"","stack":"TooManyRequestsError: Too many sign-in attempts try again in 7 minutes\n at failCallback (/var/lib/ghost/versions/5.87.2/core/server/web/shared/middleware/api/spam-prevention.js:200:33)\n at module.exports.<anonymous> (/var/lib/ghost/versions/5.87.2/node_modules/express-brute/index.js:146:44)\n at tryCatcher (/var/lib/ghost/versions/5.87.2/node_modules/bluebird/js/release/util.js:16:23)\n at Promise.successAdapter [as _fulfillmentHandler0] (/var/lib/ghost/versions/5.87.2/node_modules/bluebird/js/release/nodeify.js:23:30)\n at Promise._settlePromise (/var/lib/ghost/versions/5.87.2/node_modules/bluebird/js/release/promise.js:601:21)\n at Promise._settlePromise0 (/var/lib/ghost/versions/5.87.2/node_modules/bluebird/js/release/promise.js:649:10)\n at Promise._settlePromises (/var/lib/ghost/versions/5.87.2/node_modules/bluebird/js/release/promise.js:729:18)\n at _drainQueueStep (/var/lib/ghost/versions/5.87.2/node_modules/bluebird/js/release/async.js:93:12)\n at _drainQueue (/var/lib/ghost/versions/5.87.2/node_modules/bluebird/js/release/async.js:86:9)\n at Async._drainQueues (/var/lib/ghost/versions/5.87.2/node_modules/bluebird/js/release/async.js:102:5)\n at Async.drainQueues [as _onImmediate] (/var/lib/ghost/versions/5.87.2/node_modules/bluebird/js/release/async.js:15:14)\n at process.processImmediate (node:internal/timers:476:21)","hideStack":false},"msg":"Too many sign-in attempts try again in 7 minutes","time":"2024-07-17T06:57:40.033Z","v":0}
{"name":"Log","hostname":"2712f728b5f1","pid":1,"level":50,"version":"5.87.2","err":{"id":"e3d27630-4409-11ef-a400-6be2eeaefd69","domain":"https://libertyfusiondance.com","code":"EENVELOPE","name":"EmailError","statusCode":500,"level":"normal","message":"Failed to send email. Reason: Data command failed: 421 Domain sandbox248c35dc4c7e4da1b009af9bdc6b6c66.mailgun.org is not allowed to send: Free accounts are for test purposes only. Please upgrade or add the address to authorized recipients in Account Settings..","help":"\"Please see https://ghost.org/docs/config/#mail for instructions on configuring email.\"","stack":"Error: Data command failed: 421 Domain sandbox248c35dc4c7e4da1b009af9bdc6b6c66.mailgun.org is not allowed to send: Free accounts are for test purposes only. Please upgrade or add the address to authorized recipients in Account Settings.\n at createMailError (/var/lib/ghost/versions/5.87.2/core/server/services/mail/GhostMailer.js:105:12)\n at SMTPConnection._formatError (/var/lib/ghost/versions/5.87.2/node_modules/nodemailer/lib/smtp-connection/index.js:798:19)\n at SMTPConnection._actionDATA (/var/lib/ghost/versions/5.87.2/node_modules/nodemailer/lib/smtp-connection/index.js:1691:34)\n at SMTPConnection.<anonymous> (/var/lib/ghost/versions/5.87.2/node_modules/nodemailer/lib/smtp-connection/index.js:1663:26)\n at SMTPConnection._processResponse (/var/lib/ghost/versions/5.87.2/node_modules/nodemailer/lib/smtp-connection/index.js:982:20)\n at SMTPConnection._onData (/var/lib/ghost/versions/5.87.2/node_modules/nodemailer/lib/smtp-connection/index.js:763:14)\n at SMTPConnection._onSocketData (/var/lib/ghost/versions/5.87.2/node_modules/nodemailer/lib/smtp-connection/index.js:195:44)\n at TLSSocket.emit (node:events:517:28)\n at TLSSocket.emit (node:domain:489:12)\n at addChunk (node:internal/streams/readable:368:12)\n at readableAddChunk (node:internal/streams/readable:341:9)\n at Readable.push (node:internal/streams/readable:278:10)\n at TLSWrap.onStreamRead (node:internal/stream_base_commons:190:23)","hideStack":false},"msg":"Failed to send email. Reason: Data command failed: 421 Domain sandbox248c35dc4c7e4da1b009af9bdc6b6c66.mailgun.org is not allowed to send: Free accounts are for test purposes only. Please upgrade or add the address to authorized recipients in Account Settings..","time":"2024-07-17T06:57:53.943Z","v":0}
{"name":"Log","hostname":"2712f728b5f1","pid":1,"level":50,"version":"5.87.2","err":{"id":"f6b42aa0-4436-11ef-a400-6be2eeaefd69","domain":"https://libertyfusiondance.com","code":"EENVELOPE","name":"EmailError","statusCode":500,"level":"normal","message":"Failed to send email. Reason: Data command failed: 421 Domain sandbox248c35dc4c7e4da1b009af9bdc6b6c66.mailgun.org is not allowed to send: Free accounts are for test purposes only. Please upgrade or add the address to authorized recipients in Account Settings..","help":"\"Please see https://ghost.org/docs/config/#mail for instructions on configuring email.\"","stack":"Error: Data command failed: 421 Domain sandbox248c35dc4c7e4da1b009af9bdc6b6c66.mailgun.org is not allowed to send: Free accounts are for test purposes only. Please upgrade or add the address to authorized recipients in Account Settings.\n at createMailError (/var/lib/ghost/versions/5.87.2/core/server/services/mail/GhostMailer.js:105:12)\n at SMTPConnection._formatError (/var/lib/ghost/versions/5.87.2/node_modules/nodemailer/lib/smtp-connection/index.js:798:19)\n at SMTPConnection._actionDATA (/var/lib/ghost/versions/5.87.2/node_modules/nodemailer/lib/smtp-connection/index.js:1691:34)\n at SMTPConnection.<anonymous> (/var/lib/ghost/versions/5.87.2/node_modules/nodemailer/lib/smtp-connection/index.js:1663:26)\n at SMTPConnection._processResponse (/var/lib/ghost/versions/5.87.2/node_modules/nodemailer/lib/smtp-connection/index.js:982:20)\n at SMTPConnection._onData (/var/lib/ghost/versions/5.87.2/node_modules/nodemailer/lib/smtp-connection/index.js:763:14)\n at SMTPConnection._onSocketData (/var/lib/ghost/versions/5.87.2/node_modules/nodemailer/lib/smtp-connection/index.js:195:44)\n at TLSSocket.emit (node:events:517:28)\n at TLSSocket.emit (node:domain:489:12)\n at addChunk (node:internal/streams/readable:368:12)\n at readableAddChunk (node:internal/streams/readable:341:9)\n at Readable.push (node:internal/streams/readable:278:10)\n at TLSWrap.onStreamRead (node:internal/stream_base_commons:190:23)","hideStack":false},"msg":"Failed to send email. Reason: Data command failed: 421 Domain sandbox248c35dc4c7e4da1b009af9bdc6b6c66.mailgun.org is not allowed to send: Free accounts are for test purposes only. Please upgrade or add the address to authorized recipients in Account Settings..","time":"2024-07-17T12:20:32.971Z","v":0}
{"name":"Log","hostname":"2712f728b5f1","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.18.0.22:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.18.0.22:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.18.0.22:3306","time":"2024-07-17T14:59:15.446Z","v":0}
{"name":"Log","hostname":"2712f728b5f1","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.18.0.22:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.18.0.22:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.18.0.22:3306","time":"2024-07-17T14:59:16.690Z","v":0}
{"name":"Log","hostname":"2712f728b5f1","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.18.0.22:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.18.0.22:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.18.0.22:3306","time":"2024-07-17T14:59:18.130Z","v":0}
{"name":"Log","hostname":"2712f728b5f1","pid":1,"level":50,"version":"5.87.2","req":{"meta":{"requestId":"c7439ff1-c7ea-401a-bd5e-c40a56d14990","userId":null},"url":"/users/me/?include=roles","method":"GET","originalUrl":"/ghost/api/admin/users/me/?include=roles","params":{},"headers":{"host":"libertyfusiondance.com","connection":"close","x-real-ip":"192.168.86.1","x-forwarded-for":"192.168.86.1","x-forwarded-host":"libertyfusiondance.com","x-forwarded-proto":"https","x-forwarded-ssl":"on","x-forwarded-port":"443","x-original-uri":"/ghost/api/admin/users/me/?include=roles","user-agent":"Mozilla/5.0 (Android 14; Mobile; rv:128.0) Gecko/128.0 Firefox/128.0","accept":"application/json, text/javascript, */*; q=0.01","accept-language":"en-US","accept-encoding":"gzip, deflate, br, zstd","content-type":"application/json; charset=UTF-8","x-ghost-version":"5.87","app-pragma":"no-cache","x-requested-with":"XMLHttpRequest","referer":"https://libertyfusiondance.com/ghost/","sec-fetch-dest":"empty","sec-fetch-mode":"cors","sec-fetch-site":"same-origin"},"query":{"include":"roles"}},"res":{"_headers":{"x-powered-by":"Express","content-version":"v5.87","vary":"Accept-Version, Accept-Encoding","cache-control":"no-cache, private, no-store, must-revalidate, max-stale=0, post-check=0, pre-check=0","content-type":"application/json; charset=utf-8","content-length":"343","etag":"W/\"157-pum9UWUufgQYG6f1Jc9hd/efqLg\""},"statusCode":403,"responseTime":"3ms"},"err":{"id":"7c7ac450-4469-11ef-914e-dd328b766460","domain":"https://libertyfusiondance.com","code":null,"name":"NoPermissionError","statusCode":403,"level":"normal","message":"Authorization failed","context":"\"Unable to determine the authenticated user or integration. Check that cookies are being passed through if using session authentication.\"","stack":"NoPermissionError: Authorization failed\n at authorizeAdminApi (/var/lib/ghost/versions/5.87.2/core/server/services/auth/authorize.js:33:25)\n at Layer.handle [as handle_request] (/var/lib/ghost/versions/5.87.2/node_modules/express/lib/router/layer.js:95:5)\n at next (/var/lib/ghost/versions/5.87.2/node_modules/express/lib/router/route.js:149:13)\n at authenticate (/var/lib/ghost/versions/5.87.2/core/server/services/auth/session/middleware.js:28:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)","hideStack":false},"msg":"Authorization failed","time":"2024-07-17T18:22:12.249Z","v":0}
{"name":"Log","hostname":"2712f728b5f1","pid":1,"level":50,"version":"5.87.2","req":{"meta":{"requestId":"4e532a85-9d98-4acc-867b-452339bb2a03","userId":null},"url":"/users/me/?include=roles","method":"GET","originalUrl":"/ghost/api/admin/users/me/?include=roles","params":{},"headers":{"host":"libertyfusiondance.com","connection":"close","x-real-ip":"192.168.86.1","x-forwarded-for":"192.168.86.1","x-forwarded-host":"libertyfusiondance.com","x-forwarded-proto":"https","x-forwarded-ssl":"on","x-forwarded-port":"443","x-original-uri":"/ghost/api/admin/users/me/?include=roles","user-agent":"Mozilla/5.0 (Android 14; Mobile; rv:128.0) Gecko/128.0 Firefox/128.0","accept":"application/json, text/javascript, */*; q=0.01","accept-language":"en-US","accept-encoding":"gzip, deflate, br, zstd","content-type":"application/json; charset=UTF-8","x-ghost-version":"5.87","app-pragma":"no-cache","x-requested-with":"XMLHttpRequest","referer":"https://libertyfusiondance.com/ghost/","sec-fetch-dest":"empty","sec-fetch-mode":"cors","sec-fetch-site":"same-origin"},"query":{"include":"roles"}},"res":{"_headers":{"x-powered-by":"Express","content-version":"v5.87","vary":"Accept-Version, Accept-Encoding","cache-control":"no-cache, private, no-store, must-revalidate, max-stale=0, post-check=0, pre-check=0","content-type":"application/json; charset=utf-8","content-length":"343","etag":"W/\"157-8SAucj1Nko6N/20BiUC0wfqHA5k\""},"statusCode":403,"responseTime":"3ms"},"err":{"id":"7c8c7790-4469-11ef-914e-dd328b766460","domain":"https://libertyfusiondance.com","code":null,"name":"NoPermissionError","statusCode":403,"level":"normal","message":"Authorization failed","context":"\"Unable to determine the authenticated user or integration. Check that cookies are being passed through if using session authentication.\"","stack":"NoPermissionError: Authorization failed\n at authorizeAdminApi (/var/lib/ghost/versions/5.87.2/core/server/services/auth/authorize.js:33:25)\n at Layer.handle [as handle_request] (/var/lib/ghost/versions/5.87.2/node_modules/express/lib/router/layer.js:95:5)\n at next (/var/lib/ghost/versions/5.87.2/node_modules/express/lib/router/route.js:149:13)\n at authenticate (/var/lib/ghost/versions/5.87.2/core/server/services/auth/session/middleware.js:28:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)","hideStack":false},"msg":"Authorization failed","time":"2024-07-17T18:22:12.364Z","v":0}
{"name":"Log","hostname":"2712f728b5f1","pid":1,"level":50,"version":"5.87.2","req":{"meta":{"requestId":"1989b9b1-63af-4532-a9ff-d13e22f18ab7","userId":null},"url":"/users/me/?include=roles","method":"GET","originalUrl":"/ghost/api/admin/users/me/?include=roles","params":{},"headers":{"host":"libertyfusiondance.com","connection":"close","x-real-ip":"72.78.102.91","x-forwarded-for":"72.78.102.91","x-forwarded-host":"libertyfusiondance.com","x-forwarded-proto":"https","x-forwarded-ssl":"on","x-forwarded-port":"443","x-original-uri":"/ghost/api/admin/users/me/?include=roles","user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0","accept":"application/json, text/javascript, */*; q=0.01","accept-language":"en-US,en;q=0.5","accept-encoding":"gzip, deflate, br, zstd","content-type":"application/json; charset=UTF-8","x-ghost-version":"5.87","app-pragma":"no-cache","x-requested-with":"XMLHttpRequest","referer":"https://libertyfusiondance.com/ghost/","sec-fetch-dest":"empty","sec-fetch-mode":"cors","sec-fetch-site":"same-origin"},"query":{"include":"roles"}},"res":{"_headers":{"x-powered-by":"Express","content-version":"v5.87","vary":"Accept-Version, Accept-Encoding","cache-control":"no-cache, private, no-store, must-revalidate, max-stale=0, post-check=0, pre-check=0","content-type":"application/json; charset=utf-8","content-length":"343","etag":"W/\"157-HIWwgzCWY6HD7TBtEbNLzxDMyPY\""},"statusCode":403,"responseTime":"2ms"},"err":{"id":"e4576bf0-447d-11ef-914e-dd328b766460","domain":"https://libertyfusiondance.com","code":null,"name":"NoPermissionError","statusCode":403,"level":"normal","message":"Authorization failed","context":"\"Unable to determine the authenticated user or integration. Check that cookies are being passed through if using session authentication.\"","stack":"NoPermissionError: Authorization failed\n at authorizeAdminApi (/var/lib/ghost/versions/5.87.2/core/server/services/auth/authorize.js:33:25)\n at Layer.handle [as handle_request] (/var/lib/ghost/versions/5.87.2/node_modules/express/lib/router/layer.js:95:5)\n at next (/var/lib/ghost/versions/5.87.2/node_modules/express/lib/router/route.js:149:13)\n at authenticate (/var/lib/ghost/versions/5.87.2/core/server/services/auth/session/middleware.js:28:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)","hideStack":false},"msg":"Authorization failed","time":"2024-07-17T20:48:16.435Z","v":0}
{"name":"Log","hostname":"2712f728b5f1","pid":1,"level":50,"version":"5.87.2","req":{"meta":{"requestId":"85a68ad7-6737-4e24-b0b9-f9f7f59dd9e9","userId":null},"url":"/users/me/?include=roles","method":"GET","originalUrl":"/ghost/api/admin/users/me/?include=roles","params":{},"headers":{"host":"libertyfusiondance.com","connection":"close","x-real-ip":"72.78.102.91","x-forwarded-for":"72.78.102.91","x-forwarded-host":"libertyfusiondance.com","x-forwarded-proto":"https","x-forwarded-ssl":"on","x-forwarded-port":"443","x-original-uri":"/ghost/api/admin/users/me/?include=roles","user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0","accept":"application/json, text/javascript, */*; q=0.01","accept-language":"en-US,en;q=0.5","accept-encoding":"gzip, deflate, br, zstd","content-type":"application/json; charset=UTF-8","x-ghost-version":"5.87","app-pragma":"no-cache","x-requested-with":"XMLHttpRequest","referer":"https://libertyfusiondance.com/ghost/","sec-fetch-dest":"empty","sec-fetch-mode":"cors","sec-fetch-site":"same-origin"},"query":{"include":"roles"}},"res":{"_headers":{"x-powered-by":"Express","content-version":"v5.87","vary":"Accept-Version, Accept-Encoding","cache-control":"no-cache, private, no-store, must-revalidate, max-stale=0, post-check=0, pre-check=0","content-type":"application/json; charset=utf-8","content-length":"343","etag":"W/\"157-l5Q5UQL6NNVP4L97HNSFfQ4T4Dk\""},"statusCode":403,"responseTime":"2ms"},"err":{"id":"e47ea300-447d-11ef-914e-dd328b766460","domain":"https://libertyfusiondance.com","code":null,"name":"NoPermissionError","statusCode":403,"level":"normal","message":"Authorization failed","context":"\"Unable to determine the authenticated user or integration. Check that cookies are being passed through if using session authentication.\"","stack":"NoPermissionError: Authorization failed\n at authorizeAdminApi (/var/lib/ghost/versions/5.87.2/core/server/services/auth/authorize.js:33:25)\n at Layer.handle [as handle_request] (/var/lib/ghost/versions/5.87.2/node_modules/express/lib/router/layer.js:95:5)\n at next (/var/lib/ghost/versions/5.87.2/node_modules/express/lib/router/route.js:149:13)\n at authenticate (/var/lib/ghost/versions/5.87.2/core/server/services/auth/session/middleware.js:28:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)","hideStack":false},"msg":"Authorization failed","time":"2024-07-17T20:48:16.690Z","v":0}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,112 @@
{"name":"Log","hostname":"2fac5047f394","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.20.0.3:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.20.0.3:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.20.0.3:3306","time":"2024-07-17T01:39:46.213Z","v":0}
{"name":"Log","hostname":"3ba65351f0cf","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ER_ACCESS_DENIED_ERROR","name":"DatabaseError","statusCode":500,"level":"critical","message":"Access denied for user 'root'@'172.18.0.22' (using password: YES)","help":"\"Unknown database error\"","stack":"Error: Access denied for user 'root'@'172.18.0.22' (using password: YES)\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at Packet.asError (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/packets/packet.js:728:17)\n at ClientHandshake.execute (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/commands/command.js:29:26)\n at Connection.handlePacket (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:481:34)\n at PacketParser.onPacket (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:97:12)\n at PacketParser.executeStart (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/packet_parser.js:75:16)\n at Socket.<anonymous> (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:104:25)\n at Socket.emit (node:events:517:28)\n at addChunk (node:internal/streams/readable:368:12)\n at readableAddChunk (node:internal/streams/readable:341:9)\n at Readable.push (node:internal/streams/readable:278:10)","hideStack":false},"msg":"Access denied for user 'root'@'172.18.0.22' (using password: YES)","time":"2024-07-17T01:45:22.379Z","v":0}
{"name":"Log","hostname":"3ba65351f0cf","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.18.0.23:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.18.0.23:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.18.0.23:3306","time":"2024-07-17T01:45:23.749Z","v":0}
{"name":"Log","hostname":"3ba65351f0cf","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ER_ACCESS_DENIED_ERROR","name":"DatabaseError","statusCode":500,"level":"critical","message":"Access denied for user 'root'@'ghost-fusiondance-ghost-1.nginx-proxy' (using password: YES)","help":"\"Unknown database error\"","stack":"Error: Access denied for user 'root'@'ghost-fusiondance-ghost-1.nginx-proxy' (using password: YES)\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at Packet.asError (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/packets/packet.js:728:17)\n at ClientHandshake.execute (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/commands/command.js:29:26)\n at Connection.handlePacket (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:481:34)\n at PacketParser.onPacket (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:97:12)\n at PacketParser.executeStart (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/packet_parser.js:75:16)\n at Socket.<anonymous> (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:104:25)\n at Socket.emit (node:events:517:28)\n at addChunk (node:internal/streams/readable:368:12)\n at readableAddChunk (node:internal/streams/readable:341:9)\n at Readable.push (node:internal/streams/readable:278:10)","hideStack":false},"msg":"Access denied for user 'root'@'ghost-fusiondance-ghost-1.nginx-proxy' (using password: YES)","time":"2024-07-17T01:45:25.103Z","v":0}
{"name":"Log","hostname":"3ba65351f0cf","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ER_ACCESS_DENIED_ERROR","name":"DatabaseError","statusCode":500,"level":"critical","message":"Access denied for user 'root'@'172.18.0.22' (using password: YES)","help":"\"Unknown database error\"","stack":"Error: Access denied for user 'root'@'172.18.0.22' (using password: YES)\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at Packet.asError (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/packets/packet.js:728:17)\n at ClientHandshake.execute (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/commands/command.js:29:26)\n at Connection.handlePacket (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:481:34)\n at PacketParser.onPacket (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:97:12)\n at PacketParser.executeStart (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/packet_parser.js:75:16)\n at Socket.<anonymous> (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:104:25)\n at Socket.emit (node:events:517:28)\n at addChunk (node:internal/streams/readable:368:12)\n at readableAddChunk (node:internal/streams/readable:341:9)\n at Readable.push (node:internal/streams/readable:278:10)","hideStack":false},"msg":"Access denied for user 'root'@'172.18.0.22' (using password: YES)","time":"2024-07-17T01:45:26.513Z","v":0}
{"name":"Log","hostname":"3ba65351f0cf","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.18.0.23:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.18.0.23:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.18.0.23:3306","time":"2024-07-17T01:45:28.334Z","v":0}
{"name":"Log","hostname":"3ba65351f0cf","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ER_ACCESS_DENIED_ERROR","name":"DatabaseError","statusCode":500,"level":"critical","message":"Access denied for user 'root'@'ghost-fusiondance-ghost-1.nginx-proxy' (using password: YES)","help":"\"Unknown database error\"","stack":"Error: Access denied for user 'root'@'ghost-fusiondance-ghost-1.nginx-proxy' (using password: YES)\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at Packet.asError (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/packets/packet.js:728:17)\n at ClientHandshake.execute (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/commands/command.js:29:26)\n at Connection.handlePacket (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:481:34)\n at PacketParser.onPacket (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:97:12)\n at PacketParser.executeStart (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/packet_parser.js:75:16)\n at Socket.<anonymous> (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:104:25)\n at Socket.emit (node:events:517:28)\n at addChunk (node:internal/streams/readable:368:12)\n at readableAddChunk (node:internal/streams/readable:341:9)\n at Readable.push (node:internal/streams/readable:278:10)","hideStack":false},"msg":"Access denied for user 'root'@'ghost-fusiondance-ghost-1.nginx-proxy' (using password: YES)","time":"2024-07-17T01:45:30.968Z","v":0}
{"name":"Log","hostname":"3ba65351f0cf","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.18.0.24:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.18.0.24:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.18.0.24:3306","time":"2024-07-17T01:45:35.217Z","v":0}
{"name":"Log","hostname":"3ba65351f0cf","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ER_ACCESS_DENIED_ERROR","name":"DatabaseError","statusCode":500,"level":"critical","message":"Access denied for user 'root'@'172.18.0.22' (using password: YES)","help":"\"Unknown database error\"","stack":"Error: Access denied for user 'root'@'172.18.0.22' (using password: YES)\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at Packet.asError (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/packets/packet.js:728:17)\n at ClientHandshake.execute (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/commands/command.js:29:26)\n at Connection.handlePacket (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:481:34)\n at PacketParser.onPacket (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:97:12)\n at PacketParser.executeStart (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/packet_parser.js:75:16)\n at Socket.<anonymous> (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:104:25)\n at Socket.emit (node:events:517:28)\n at addChunk (node:internal/streams/readable:368:12)\n at readableAddChunk (node:internal/streams/readable:341:9)\n at Readable.push (node:internal/streams/readable:278:10)","hideStack":false},"msg":"Access denied for user 'root'@'172.18.0.22' (using password: YES)","time":"2024-07-17T01:45:42.662Z","v":0}
{"name":"Log","hostname":"3ba65351f0cf","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ER_ACCESS_DENIED_ERROR","name":"DatabaseError","statusCode":500,"level":"critical","message":"Access denied for user 'root'@'172.18.0.22' (using password: YES)","help":"\"Unknown database error\"","stack":"Error: Access denied for user 'root'@'172.18.0.22' (using password: YES)\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at Packet.asError (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/packets/packet.js:728:17)\n at ClientHandshake.execute (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/commands/command.js:29:26)\n at Connection.handlePacket (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:481:34)\n at PacketParser.onPacket (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:97:12)\n at PacketParser.executeStart (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/packet_parser.js:75:16)\n at Socket.<anonymous> (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:104:25)\n at Socket.emit (node:events:517:28)\n at addChunk (node:internal/streams/readable:368:12)\n at readableAddChunk (node:internal/streams/readable:341:9)\n at Readable.push (node:internal/streams/readable:278:10)","hideStack":false},"msg":"Access denied for user 'root'@'172.18.0.22' (using password: YES)","time":"2024-07-17T01:45:56.503Z","v":0}
{"name":"Log","hostname":"3ba65351f0cf","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.18.0.23:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.18.0.23:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.18.0.23:3306","time":"2024-07-17T01:46:23.134Z","v":0}
{"name":"Log","hostname":"aac501bf773a","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.18.0.23:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.18.0.23:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.18.0.23:3306","time":"2024-07-17T01:46:36.261Z","v":0}
{"name":"Log","hostname":"aac501bf773a","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ER_ACCESS_DENIED_ERROR","name":"DatabaseError","statusCode":500,"level":"critical","message":"Access denied for user 'root'@'ghost-fusiondance-ghost-1.nginx-proxy' (using password: YES)","help":"\"Unknown database error\"","stack":"Error: Access denied for user 'root'@'ghost-fusiondance-ghost-1.nginx-proxy' (using password: YES)\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at Packet.asError (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/packets/packet.js:728:17)\n at ClientHandshake.execute (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/commands/command.js:29:26)\n at Connection.handlePacket (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:481:34)\n at PacketParser.onPacket (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:97:12)\n at PacketParser.executeStart (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/packet_parser.js:75:16)\n at Socket.<anonymous> (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:104:25)\n at Socket.emit (node:events:517:28)\n at addChunk (node:internal/streams/readable:368:12)\n at readableAddChunk (node:internal/streams/readable:341:9)\n at Readable.push (node:internal/streams/readable:278:10)","hideStack":false},"msg":"Access denied for user 'root'@'ghost-fusiondance-ghost-1.nginx-proxy' (using password: YES)","time":"2024-07-17T01:46:37.552Z","v":0}
{"name":"Log","hostname":"aac501bf773a","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.18.0.24:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.18.0.24:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.18.0.24:3306","time":"2024-07-17T01:46:38.859Z","v":0}
{"name":"Log","hostname":"aac501bf773a","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ER_ACCESS_DENIED_ERROR","name":"DatabaseError","statusCode":500,"level":"critical","message":"Access denied for user 'root'@'ghost-fusiondance-ghost-1.nginx-proxy' (using password: YES)","help":"\"Unknown database error\"","stack":"Error: Access denied for user 'root'@'ghost-fusiondance-ghost-1.nginx-proxy' (using password: YES)\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at Packet.asError (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/packets/packet.js:728:17)\n at ClientHandshake.execute (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/commands/command.js:29:26)\n at Connection.handlePacket (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:481:34)\n at PacketParser.onPacket (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:97:12)\n at PacketParser.executeStart (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/packet_parser.js:75:16)\n at Socket.<anonymous> (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:104:25)\n at Socket.emit (node:events:517:28)\n at addChunk (node:internal/streams/readable:368:12)\n at readableAddChunk (node:internal/streams/readable:341:9)\n at Readable.push (node:internal/streams/readable:278:10)","hideStack":false},"msg":"Access denied for user 'root'@'ghost-fusiondance-ghost-1.nginx-proxy' (using password: YES)","time":"2024-07-17T01:46:40.302Z","v":0}
{"name":"Log","hostname":"aac501bf773a","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ER_ACCESS_DENIED_ERROR","name":"DatabaseError","statusCode":500,"level":"critical","message":"Access denied for user 'root'@'172.18.0.22' (using password: YES)","help":"\"Unknown database error\"","stack":"Error: Access denied for user 'root'@'172.18.0.22' (using password: YES)\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at Packet.asError (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/packets/packet.js:728:17)\n at ClientHandshake.execute (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/commands/command.js:29:26)\n at Connection.handlePacket (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:481:34)\n at PacketParser.onPacket (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:97:12)\n at PacketParser.executeStart (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/packet_parser.js:75:16)\n at Socket.<anonymous> (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:104:25)\n at Socket.emit (node:events:517:28)\n at addChunk (node:internal/streams/readable:368:12)\n at readableAddChunk (node:internal/streams/readable:341:9)\n at Readable.push (node:internal/streams/readable:278:10)","hideStack":false},"msg":"Access denied for user 'root'@'172.18.0.22' (using password: YES)","time":"2024-07-17T01:46:42.170Z","v":0}
{"name":"Log","hostname":"aac501bf773a","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ER_ACCESS_DENIED_ERROR","name":"DatabaseError","statusCode":500,"level":"critical","message":"Access denied for user 'root'@'ghost-fusiondance-ghost-1.nginx-proxy' (using password: YES)","help":"\"Unknown database error\"","stack":"Error: Access denied for user 'root'@'ghost-fusiondance-ghost-1.nginx-proxy' (using password: YES)\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at Packet.asError (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/packets/packet.js:728:17)\n at ClientHandshake.execute (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/commands/command.js:29:26)\n at Connection.handlePacket (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:481:34)\n at PacketParser.onPacket (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:97:12)\n at PacketParser.executeStart (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/packet_parser.js:75:16)\n at Socket.<anonymous> (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:104:25)\n at Socket.emit (node:events:517:28)\n at addChunk (node:internal/streams/readable:368:12)\n at readableAddChunk (node:internal/streams/readable:341:9)\n at Readable.push (node:internal/streams/readable:278:10)","hideStack":false},"msg":"Access denied for user 'root'@'ghost-fusiondance-ghost-1.nginx-proxy' (using password: YES)","time":"2024-07-17T01:46:44.775Z","v":0}
{"name":"Log","hostname":"aac501bf773a","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.18.0.23:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.18.0.23:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.18.0.23:3306","time":"2024-07-17T01:46:48.970Z","v":0}
{"name":"Log","hostname":"aac501bf773a","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.18.0.23:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.18.0.23:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.18.0.23:3306","time":"2024-07-17T01:46:56.433Z","v":0}
{"name":"Log","hostname":"aac501bf773a","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.18.0.24:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.18.0.24:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.18.0.24:3306","time":"2024-07-17T01:47:10.252Z","v":0}
{"name":"Log","hostname":"1295bc9a5700","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.18.0.29:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.18.0.29:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.18.0.29:3306","time":"2024-07-17T01:47:22.374Z","v":0}
{"name":"Log","hostname":"1295bc9a5700","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.18.0.24:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.18.0.24:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.18.0.24:3306","time":"2024-07-17T01:47:23.749Z","v":0}
{"name":"Log","hostname":"1295bc9a5700","pid":1,"level":50,"version":"5.87.2","err":{"id":"845e54b0-43de-11ef-a436-9dea73be23b3","domain":"https://libertyfusiondance.com","code":"ER_ACCESS_DENIED_ERROR","name":"InternalServerError","statusCode":500,"level":"critical","message":"Access denied for user 'root'@'172.18.0.22' (using password: YES)","stack":"Error: Access denied for user 'root'@'172.18.0.22' (using password: YES)\n at bootGhost (/var/lib/ghost/versions/5.87.2/core/boot.js:604:32)\n at Packet.asError (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/packets/packet.js:728:17)\n at ClientHandshake.execute (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/commands/command.js:29:26)\n at Connection.handlePacket (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:481:34)\n at PacketParser.onPacket (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:97:12)\n at PacketParser.executeStart (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/packet_parser.js:75:16)\n at Socket.<anonymous> (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:104:25)\n at Socket.emit (node:events:517:28)\n at addChunk (node:internal/streams/readable:368:12)\n at readableAddChunk (node:internal/streams/readable:341:9)\n at Readable.push (node:internal/streams/readable:278:10)\n at TCP.onStreamRead (node:internal/stream_base_commons:190:23)","hideStack":false},"msg":"Access denied for user 'root'@'172.18.0.22' (using password: YES)","time":"2024-07-17T01:47:25.436Z","v":0}
{"name":"Log","hostname":"1295bc9a5700","pid":1,"level":50,"version":"5.87.2","err":{"domain":"https://libertyfusiondance.com","code":"ECONNREFUSED","message":"connect ECONNREFUSED 172.18.0.23:3306","stack":"Error: connect ECONNREFUSED 172.18.0.23:3306\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)"},"msg":"Unhandled rejection: connect ECONNREFUSED 172.18.0.23:3306","time":"2024-07-17T01:47:27.372Z","v":0}
{"name":"Log","hostname":"68b6b2950eae","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.18.0.23:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.18.0.23:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.18.0.23:3306","time":"2024-07-17T01:48:58.093Z","v":0}
{"name":"Log","hostname":"68b6b2950eae","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ER_ACCESS_DENIED_ERROR","name":"DatabaseError","statusCode":500,"level":"critical","message":"Access denied for user 'root'@'172.18.0.29' (using password: YES)","help":"\"Unknown database error\"","stack":"Error: Access denied for user 'root'@'172.18.0.29' (using password: YES)\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at Packet.asError (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/packets/packet.js:728:17)\n at ClientHandshake.execute (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/commands/command.js:29:26)\n at Connection.handlePacket (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:481:34)\n at PacketParser.onPacket (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:97:12)\n at PacketParser.executeStart (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/packet_parser.js:75:16)\n at Socket.<anonymous> (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:104:25)\n at Socket.emit (node:events:517:28)\n at addChunk (node:internal/streams/readable:368:12)\n at readableAddChunk (node:internal/streams/readable:341:9)\n at Readable.push (node:internal/streams/readable:278:10)","hideStack":false},"msg":"Access denied for user 'root'@'172.18.0.29' (using password: YES)","time":"2024-07-17T01:48:59.395Z","v":0}
{"name":"Log","hostname":"68b6b2950eae","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.18.0.22:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.18.0.22:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.18.0.22:3306","time":"2024-07-17T01:49:00.644Z","v":0}
{"name":"Log","hostname":"68b6b2950eae","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ER_ACCESS_DENIED_ERROR","name":"DatabaseError","statusCode":500,"level":"critical","message":"Access denied for user 'root'@'ghost-fusiondance-ghost-1.nginx-proxy' (using password: YES)","help":"\"Unknown database error\"","stack":"Error: Access denied for user 'root'@'ghost-fusiondance-ghost-1.nginx-proxy' (using password: YES)\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at Packet.asError (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/packets/packet.js:728:17)\n at ClientHandshake.execute (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/commands/command.js:29:26)\n at Connection.handlePacket (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:481:34)\n at PacketParser.onPacket (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:97:12)\n at PacketParser.executeStart (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/packet_parser.js:75:16)\n at Socket.<anonymous> (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:104:25)\n at Socket.emit (node:events:517:28)\n at addChunk (node:internal/streams/readable:368:12)\n at readableAddChunk (node:internal/streams/readable:341:9)\n at Readable.push (node:internal/streams/readable:278:10)","hideStack":false},"msg":"Access denied for user 'root'@'ghost-fusiondance-ghost-1.nginx-proxy' (using password: YES)","time":"2024-07-17T01:49:02.067Z","v":0}
{"name":"Log","hostname":"68b6b2950eae","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ER_ACCESS_DENIED_ERROR","name":"DatabaseError","statusCode":500,"level":"critical","message":"Access denied for user 'root'@'172.18.0.29' (using password: YES)","help":"\"Unknown database error\"","stack":"Error: Access denied for user 'root'@'172.18.0.29' (using password: YES)\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at Packet.asError (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/packets/packet.js:728:17)\n at ClientHandshake.execute (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/commands/command.js:29:26)\n at Connection.handlePacket (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:481:34)\n at PacketParser.onPacket (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:97:12)\n at PacketParser.executeStart (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/packet_parser.js:75:16)\n at Socket.<anonymous> (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:104:25)\n at Socket.emit (node:events:517:28)\n at addChunk (node:internal/streams/readable:368:12)\n at readableAddChunk (node:internal/streams/readable:341:9)\n at Readable.push (node:internal/streams/readable:278:10)","hideStack":false},"msg":"Access denied for user 'root'@'172.18.0.29' (using password: YES)","time":"2024-07-17T01:49:03.916Z","v":0}
{"name":"Log","hostname":"68b6b2950eae","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.18.0.24:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.18.0.24:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.18.0.24:3306","time":"2024-07-17T01:49:06.560Z","v":0}
{"name":"Log","hostname":"68b6b2950eae","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ER_ACCESS_DENIED_ERROR","name":"DatabaseError","statusCode":500,"level":"critical","message":"Access denied for user 'root'@'172.18.0.29' (using password: YES)","help":"\"Unknown database error\"","stack":"Error: Access denied for user 'root'@'172.18.0.29' (using password: YES)\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at Packet.asError (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/packets/packet.js:728:17)\n at ClientHandshake.execute (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/commands/command.js:29:26)\n at Connection.handlePacket (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:481:34)\n at PacketParser.onPacket (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:97:12)\n at PacketParser.executeStart (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/packet_parser.js:75:16)\n at Socket.<anonymous> (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:104:25)\n at Socket.emit (node:events:517:28)\n at addChunk (node:internal/streams/readable:368:12)\n at readableAddChunk (node:internal/streams/readable:341:9)\n at Readable.push (node:internal/streams/readable:278:10)","hideStack":false},"msg":"Access denied for user 'root'@'172.18.0.29' (using password: YES)","time":"2024-07-17T01:49:10.812Z","v":0}
{"name":"Log","hostname":"68b6b2950eae","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ER_ACCESS_DENIED_ERROR","name":"DatabaseError","statusCode":500,"level":"critical","message":"Access denied for user 'root'@'172.18.0.29' (using password: YES)","help":"\"Unknown database error\"","stack":"Error: Access denied for user 'root'@'172.18.0.29' (using password: YES)\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at Packet.asError (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/packets/packet.js:728:17)\n at ClientHandshake.execute (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/commands/command.js:29:26)\n at Connection.handlePacket (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:481:34)\n at PacketParser.onPacket (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:97:12)\n at PacketParser.executeStart (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/packet_parser.js:75:16)\n at Socket.<anonymous> (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:104:25)\n at Socket.emit (node:events:517:28)\n at addChunk (node:internal/streams/readable:368:12)\n at readableAddChunk (node:internal/streams/readable:341:9)\n at Readable.push (node:internal/streams/readable:278:10)","hideStack":false},"msg":"Access denied for user 'root'@'172.18.0.29' (using password: YES)","time":"2024-07-17T01:49:18.328Z","v":0}
{"name":"Log","hostname":"68b6b2950eae","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.18.0.23:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.18.0.23:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.18.0.23:3306","time":"2024-07-17T01:49:32.162Z","v":0}
{"name":"Log","hostname":"02b62123e086","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.18.0.22:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.18.0.22:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.18.0.22:3306","time":"2024-07-17T01:50:01.242Z","v":0}
{"name":"Log","hostname":"02b62123e086","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ER_ACCESS_DENIED_ERROR","name":"DatabaseError","statusCode":500,"level":"critical","message":"Access denied for user 'root'@'172.18.0.29' (using password: YES)","help":"\"Unknown database error\"","stack":"Error: Access denied for user 'root'@'172.18.0.29' (using password: YES)\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at Packet.asError (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/packets/packet.js:728:17)\n at ClientHandshake.execute (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/commands/command.js:29:26)\n at Connection.handlePacket (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:481:34)\n at PacketParser.onPacket (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:97:12)\n at PacketParser.executeStart (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/packet_parser.js:75:16)\n at Socket.<anonymous> (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:104:25)\n at Socket.emit (node:events:517:28)\n at addChunk (node:internal/streams/readable:368:12)\n at readableAddChunk (node:internal/streams/readable:341:9)\n at Readable.push (node:internal/streams/readable:278:10)","hideStack":false},"msg":"Access denied for user 'root'@'172.18.0.29' (using password: YES)","time":"2024-07-17T01:50:02.554Z","v":0}
{"name":"Log","hostname":"02b62123e086","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ER_ACCESS_DENIED_ERROR","name":"DatabaseError","statusCode":500,"level":"critical","message":"Access denied for user 'root'@'172.18.0.29' (using password: YES)","help":"\"Unknown database error\"","stack":"Error: Access denied for user 'root'@'172.18.0.29' (using password: YES)\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at Packet.asError (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/packets/packet.js:728:17)\n at ClientHandshake.execute (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/commands/command.js:29:26)\n at Connection.handlePacket (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:481:34)\n at PacketParser.onPacket (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:97:12)\n at PacketParser.executeStart (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/packet_parser.js:75:16)\n at Socket.<anonymous> (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:104:25)\n at Socket.emit (node:events:517:28)\n at addChunk (node:internal/streams/readable:368:12)\n at readableAddChunk (node:internal/streams/readable:341:9)\n at Readable.push (node:internal/streams/readable:278:10)","hideStack":false},"msg":"Access denied for user 'root'@'172.18.0.29' (using password: YES)","time":"2024-07-17T01:50:03.924Z","v":0}
{"name":"Log","hostname":"02b62123e086","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ER_ACCESS_DENIED_ERROR","name":"DatabaseError","statusCode":500,"level":"critical","message":"Access denied for user 'root'@'ghost-fusiondance-ghost-1.nginx-proxy' (using password: YES)","help":"\"Unknown database error\"","stack":"Error: Access denied for user 'root'@'ghost-fusiondance-ghost-1.nginx-proxy' (using password: YES)\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at Packet.asError (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/packets/packet.js:728:17)\n at ClientHandshake.execute (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/commands/command.js:29:26)\n at Connection.handlePacket (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:481:34)\n at PacketParser.onPacket (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:97:12)\n at PacketParser.executeStart (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/packet_parser.js:75:16)\n at Socket.<anonymous> (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:104:25)\n at Socket.emit (node:events:517:28)\n at addChunk (node:internal/streams/readable:368:12)\n at readableAddChunk (node:internal/streams/readable:341:9)\n at Readable.push (node:internal/streams/readable:278:10)","hideStack":false},"msg":"Access denied for user 'root'@'ghost-fusiondance-ghost-1.nginx-proxy' (using password: YES)","time":"2024-07-17T01:50:05.352Z","v":0}
{"name":"Log","hostname":"02b62123e086","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.18.0.24:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.18.0.24:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.18.0.24:3306","time":"2024-07-17T01:50:07.180Z","v":0}
{"name":"Log","hostname":"02b62123e086","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ER_ACCESS_DENIED_ERROR","name":"DatabaseError","statusCode":500,"level":"critical","message":"Access denied for user 'root'@'172.18.0.29' (using password: YES)","help":"\"Unknown database error\"","stack":"Error: Access denied for user 'root'@'172.18.0.29' (using password: YES)\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at Packet.asError (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/packets/packet.js:728:17)\n at ClientHandshake.execute (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/commands/command.js:29:26)\n at Connection.handlePacket (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:481:34)\n at PacketParser.onPacket (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:97:12)\n at PacketParser.executeStart (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/packet_parser.js:75:16)\n at Socket.<anonymous> (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:104:25)\n at Socket.emit (node:events:517:28)\n at addChunk (node:internal/streams/readable:368:12)\n at readableAddChunk (node:internal/streams/readable:341:9)\n at Readable.push (node:internal/streams/readable:278:10)","hideStack":false},"msg":"Access denied for user 'root'@'172.18.0.29' (using password: YES)","time":"2024-07-17T01:50:09.809Z","v":0}
{"name":"Log","hostname":"02b62123e086","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ER_ACCESS_DENIED_ERROR","name":"DatabaseError","statusCode":500,"level":"critical","message":"Access denied for user 'root'@'172.18.0.29' (using password: YES)","help":"\"Unknown database error\"","stack":"Error: Access denied for user 'root'@'172.18.0.29' (using password: YES)\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at Packet.asError (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/packets/packet.js:728:17)\n at ClientHandshake.execute (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/commands/command.js:29:26)\n at Connection.handlePacket (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:481:34)\n at PacketParser.onPacket (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:97:12)\n at PacketParser.executeStart (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/packet_parser.js:75:16)\n at Socket.<anonymous> (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:104:25)\n at Socket.emit (node:events:517:28)\n at addChunk (node:internal/streams/readable:368:12)\n at readableAddChunk (node:internal/streams/readable:341:9)\n at Readable.push (node:internal/streams/readable:278:10)","hideStack":false},"msg":"Access denied for user 'root'@'172.18.0.29' (using password: YES)","time":"2024-07-17T01:50:14.053Z","v":0}
{"name":"Log","hostname":"02b62123e086","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ER_ACCESS_DENIED_ERROR","name":"DatabaseError","statusCode":500,"level":"critical","message":"Access denied for user 'root'@'ghost-fusiondance-ghost-1.nginx-proxy' (using password: YES)","help":"\"Unknown database error\"","stack":"Error: Access denied for user 'root'@'ghost-fusiondance-ghost-1.nginx-proxy' (using password: YES)\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at Packet.asError (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/packets/packet.js:728:17)\n at ClientHandshake.execute (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/commands/command.js:29:26)\n at Connection.handlePacket (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:481:34)\n at PacketParser.onPacket (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:97:12)\n at PacketParser.executeStart (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/packet_parser.js:75:16)\n at Socket.<anonymous> (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:104:25)\n at Socket.emit (node:events:517:28)\n at addChunk (node:internal/streams/readable:368:12)\n at readableAddChunk (node:internal/streams/readable:341:9)\n at Readable.push (node:internal/streams/readable:278:10)","hideStack":false},"msg":"Access denied for user 'root'@'ghost-fusiondance-ghost-1.nginx-proxy' (using password: YES)","time":"2024-07-17T01:50:21.498Z","v":0}
{"name":"Log","hostname":"02b62123e086","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ER_ACCESS_DENIED_ERROR","name":"DatabaseError","statusCode":500,"level":"critical","message":"Access denied for user 'root'@'172.18.0.29' (using password: YES)","help":"\"Unknown database error\"","stack":"Error: Access denied for user 'root'@'172.18.0.29' (using password: YES)\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at Packet.asError (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/packets/packet.js:728:17)\n at ClientHandshake.execute (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/commands/command.js:29:26)\n at Connection.handlePacket (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:481:34)\n at PacketParser.onPacket (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:97:12)\n at PacketParser.executeStart (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/packet_parser.js:75:16)\n at Socket.<anonymous> (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:104:25)\n at Socket.emit (node:events:517:28)\n at addChunk (node:internal/streams/readable:368:12)\n at readableAddChunk (node:internal/streams/readable:341:9)\n at Readable.push (node:internal/streams/readable:278:10)","hideStack":false},"msg":"Access denied for user 'root'@'172.18.0.29' (using password: YES)","time":"2024-07-17T01:50:35.298Z","v":0}
{"name":"Log","hostname":"02b62123e086","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ER_ACCESS_DENIED_ERROR","name":"DatabaseError","statusCode":500,"level":"critical","message":"Access denied for user 'root'@'ghost-fusiondance-ghost-1.nginx-proxy' (using password: YES)","help":"\"Unknown database error\"","stack":"Error: Access denied for user 'root'@'ghost-fusiondance-ghost-1.nginx-proxy' (using password: YES)\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at Packet.asError (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/packets/packet.js:728:17)\n at ClientHandshake.execute (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/commands/command.js:29:26)\n at Connection.handlePacket (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:481:34)\n at PacketParser.onPacket (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:97:12)\n at PacketParser.executeStart (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/packet_parser.js:75:16)\n at Socket.<anonymous> (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:104:25)\n at Socket.emit (node:events:517:28)\n at addChunk (node:internal/streams/readable:368:12)\n at readableAddChunk (node:internal/streams/readable:341:9)\n at Readable.push (node:internal/streams/readable:278:10)","hideStack":false},"msg":"Access denied for user 'root'@'ghost-fusiondance-ghost-1.nginx-proxy' (using password: YES)","time":"2024-07-17T01:50:44.940Z","v":0}
{"name":"Log","hostname":"02b62123e086","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.18.0.24:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.18.0.24:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.18.0.24:3306","time":"2024-07-17T01:50:46.494Z","v":0}
{"name":"Log","hostname":"02b62123e086","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"DATABASE_CREATION_FAILED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.18.0.23:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.18.0.23:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:134:19\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.18.0.23:3306","time":"2024-07-17T01:50:47.849Z","v":0}
{"name":"Log","hostname":"02b62123e086","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.18.0.24:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.18.0.24:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.18.0.24:3306","time":"2024-07-17T01:50:49.343Z","v":0}
{"name":"Log","hostname":"02b62123e086","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ER_ACCESS_DENIED_ERROR","name":"DatabaseError","statusCode":500,"level":"critical","message":"Access denied for user 'root'@'172.18.0.29' (using password: YES)","help":"\"Unknown database error\"","stack":"Error: Access denied for user 'root'@'172.18.0.29' (using password: YES)\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at Packet.asError (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/packets/packet.js:728:17)\n at ClientHandshake.execute (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/commands/command.js:29:26)\n at Connection.handlePacket (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:481:34)\n at PacketParser.onPacket (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:97:12)\n at PacketParser.executeStart (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/packet_parser.js:75:16)\n at Socket.<anonymous> (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:104:25)\n at Socket.emit (node:events:517:28)\n at addChunk (node:internal/streams/readable:368:12)\n at readableAddChunk (node:internal/streams/readable:341:9)\n at Readable.push (node:internal/streams/readable:278:10)","hideStack":false},"msg":"Access denied for user 'root'@'172.18.0.29' (using password: YES)","time":"2024-07-17T01:50:51.174Z","v":0}
{"name":"Log","hostname":"02b62123e086","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ER_ACCESS_DENIED_ERROR","name":"DatabaseError","statusCode":500,"level":"critical","message":"Access denied for user 'root'@'ghost-fusiondance-ghost-1.nginx-proxy' (using password: YES)","help":"\"Unknown database error\"","stack":"Error: Access denied for user 'root'@'ghost-fusiondance-ghost-1.nginx-proxy' (using password: YES)\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at Packet.asError (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/packets/packet.js:728:17)\n at ClientHandshake.execute (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/commands/command.js:29:26)\n at Connection.handlePacket (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:481:34)\n at PacketParser.onPacket (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:97:12)\n at PacketParser.executeStart (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/packet_parser.js:75:16)\n at Socket.<anonymous> (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:104:25)\n at Socket.emit (node:events:517:28)\n at addChunk (node:internal/streams/readable:368:12)\n at readableAddChunk (node:internal/streams/readable:341:9)\n at Readable.push (node:internal/streams/readable:278:10)","hideStack":false},"msg":"Access denied for user 'root'@'ghost-fusiondance-ghost-1.nginx-proxy' (using password: YES)","time":"2024-07-17T01:50:53.833Z","v":0}
{"name":"Log","hostname":"02b62123e086","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.18.0.24:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.18.0.24:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.18.0.24:3306","time":"2024-07-17T01:50:58.088Z","v":0}
{"name":"Log","hostname":"02b62123e086","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ER_ACCESS_DENIED_ERROR","name":"DatabaseError","statusCode":500,"level":"critical","message":"Access denied for user 'root'@'172.18.0.29' (using password: YES)","help":"\"Unknown database error\"","stack":"Error: Access denied for user 'root'@'172.18.0.29' (using password: YES)\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at Packet.asError (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/packets/packet.js:728:17)\n at ClientHandshake.execute (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/commands/command.js:29:26)\n at Connection.handlePacket (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:481:34)\n at PacketParser.onPacket (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:97:12)\n at PacketParser.executeStart (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/packet_parser.js:75:16)\n at Socket.<anonymous> (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:104:25)\n at Socket.emit (node:events:517:28)\n at addChunk (node:internal/streams/readable:368:12)\n at readableAddChunk (node:internal/streams/readable:341:9)\n at Readable.push (node:internal/streams/readable:278:10)","hideStack":false},"msg":"Access denied for user 'root'@'172.18.0.29' (using password: YES)","time":"2024-07-17T01:51:05.538Z","v":0}
{"name":"Log","hostname":"02b62123e086","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ER_ACCESS_DENIED_ERROR","name":"DatabaseError","statusCode":500,"level":"critical","message":"Access denied for user 'root'@'172.18.0.29' (using password: YES)","help":"\"Unknown database error\"","stack":"Error: Access denied for user 'root'@'172.18.0.29' (using password: YES)\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at Packet.asError (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/packets/packet.js:728:17)\n at ClientHandshake.execute (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/commands/command.js:29:26)\n at Connection.handlePacket (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:481:34)\n at PacketParser.onPacket (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:97:12)\n at PacketParser.executeStart (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/packet_parser.js:75:16)\n at Socket.<anonymous> (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:104:25)\n at Socket.emit (node:events:517:28)\n at addChunk (node:internal/streams/readable:368:12)\n at readableAddChunk (node:internal/streams/readable:341:9)\n at Readable.push (node:internal/streams/readable:278:10)","hideStack":false},"msg":"Access denied for user 'root'@'172.18.0.29' (using password: YES)","time":"2024-07-17T01:51:19.408Z","v":0}
{"name":"Log","hostname":"02b62123e086","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ER_ACCESS_DENIED_ERROR","name":"DatabaseError","statusCode":500,"level":"critical","message":"Access denied for user 'root'@'ghost-fusiondance-ghost-1.nginx-proxy' (using password: YES)","help":"\"Unknown database error\"","stack":"Error: Access denied for user 'root'@'ghost-fusiondance-ghost-1.nginx-proxy' (using password: YES)\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at Packet.asError (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/packets/packet.js:728:17)\n at ClientHandshake.execute (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/commands/command.js:29:26)\n at Connection.handlePacket (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:481:34)\n at PacketParser.onPacket (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:97:12)\n at PacketParser.executeStart (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/packet_parser.js:75:16)\n at Socket.<anonymous> (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:104:25)\n at Socket.emit (node:events:517:28)\n at addChunk (node:internal/streams/readable:368:12)\n at readableAddChunk (node:internal/streams/readable:341:9)\n at Readable.push (node:internal/streams/readable:278:10)","hideStack":false},"msg":"Access denied for user 'root'@'ghost-fusiondance-ghost-1.nginx-proxy' (using password: YES)","time":"2024-07-17T01:51:43.682Z","v":0}
{"name":"Log","hostname":"02b62123e086","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ER_ACCESS_DENIED_ERROR","name":"DatabaseError","statusCode":500,"level":"critical","message":"Access denied for user 'root'@'ghost-fusiondance-ghost-1.nginx-proxy' (using password: YES)","help":"\"Unknown database error\"","stack":"Error: Access denied for user 'root'@'ghost-fusiondance-ghost-1.nginx-proxy' (using password: YES)\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at Packet.asError (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/packets/packet.js:728:17)\n at ClientHandshake.execute (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/commands/command.js:29:26)\n at Connection.handlePacket (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:481:34)\n at PacketParser.onPacket (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:97:12)\n at PacketParser.executeStart (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/packet_parser.js:75:16)\n at Socket.<anonymous> (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:104:25)\n at Socket.emit (node:events:517:28)\n at addChunk (node:internal/streams/readable:368:12)\n at readableAddChunk (node:internal/streams/readable:341:9)\n at Readable.push (node:internal/streams/readable:278:10)","hideStack":false},"msg":"Access denied for user 'root'@'ghost-fusiondance-ghost-1.nginx-proxy' (using password: YES)","time":"2024-07-17T01:51:44.975Z","v":0}
{"name":"Log","hostname":"02b62123e086","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ER_ACCESS_DENIED_ERROR","name":"DatabaseError","statusCode":500,"level":"critical","message":"Access denied for user 'root'@'ghost-fusiondance-ghost-1.nginx-proxy' (using password: YES)","help":"\"Unknown database error\"","stack":"Error: Access denied for user 'root'@'ghost-fusiondance-ghost-1.nginx-proxy' (using password: YES)\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at Packet.asError (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/packets/packet.js:728:17)\n at ClientHandshake.execute (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/commands/command.js:29:26)\n at Connection.handlePacket (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:481:34)\n at PacketParser.onPacket (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:97:12)\n at PacketParser.executeStart (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/packet_parser.js:75:16)\n at Socket.<anonymous> (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:104:25)\n at Socket.emit (node:events:517:28)\n at addChunk (node:internal/streams/readable:368:12)\n at readableAddChunk (node:internal/streams/readable:341:9)\n at Readable.push (node:internal/streams/readable:278:10)","hideStack":false},"msg":"Access denied for user 'root'@'ghost-fusiondance-ghost-1.nginx-proxy' (using password: YES)","time":"2024-07-17T01:51:46.344Z","v":0}
{"name":"Log","hostname":"02b62123e086","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ER_ACCESS_DENIED_ERROR","name":"DatabaseError","statusCode":500,"level":"critical","message":"Access denied for user 'root'@'172.18.0.29' (using password: YES)","help":"\"Unknown database error\"","stack":"Error: Access denied for user 'root'@'172.18.0.29' (using password: YES)\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at Packet.asError (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/packets/packet.js:728:17)\n at ClientHandshake.execute (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/commands/command.js:29:26)\n at Connection.handlePacket (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:481:34)\n at PacketParser.onPacket (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:97:12)\n at PacketParser.executeStart (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/packet_parser.js:75:16)\n at Socket.<anonymous> (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:104:25)\n at Socket.emit (node:events:517:28)\n at addChunk (node:internal/streams/readable:368:12)\n at readableAddChunk (node:internal/streams/readable:341:9)\n at Readable.push (node:internal/streams/readable:278:10)","hideStack":false},"msg":"Access denied for user 'root'@'172.18.0.29' (using password: YES)","time":"2024-07-17T01:51:47.789Z","v":0}
{"name":"Log","hostname":"02b62123e086","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"DATABASE_CREATION_FAILED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.18.0.23:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.18.0.23:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:134:19\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.18.0.23:3306","time":"2024-07-17T01:51:49.623Z","v":0}
{"name":"Log","hostname":"02b62123e086","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"DATABASE_CREATION_FAILED","name":"DatabaseError","statusCode":500,"level":"critical","message":"Access denied for user 'root'@'172.18.0.29' (using password: YES)","help":"\"Unknown database error\"","stack":"Error: Access denied for user 'root'@'172.18.0.29' (using password: YES)\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:134:19\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at Packet.asError (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/packets/packet.js:728:17)\n at ClientHandshake.execute (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/commands/command.js:29:26)\n at Connection.handlePacket (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:481:34)\n at PacketParser.onPacket (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:97:12)\n at PacketParser.executeStart (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/packet_parser.js:75:16)\n at Socket.<anonymous> (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:104:25)\n at Socket.emit (node:events:517:28)\n at addChunk (node:internal/streams/readable:368:12)\n at readableAddChunk (node:internal/streams/readable:341:9)\n at Readable.push (node:internal/streams/readable:278:10)","hideStack":false},"msg":"Access denied for user 'root'@'172.18.0.29' (using password: YES)","time":"2024-07-17T01:51:52.279Z","v":0}
{"name":"Log","hostname":"02b62123e086","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.18.0.24:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.18.0.24:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.18.0.24:3306","time":"2024-07-17T01:51:56.518Z","v":0}
{"name":"Log","hostname":"02b62123e086","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ER_ACCESS_DENIED_ERROR","name":"DatabaseError","statusCode":500,"level":"critical","message":"Access denied for user 'root'@'172.18.0.29' (using password: YES)","help":"\"Unknown database error\"","stack":"Error: Access denied for user 'root'@'172.18.0.29' (using password: YES)\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at Packet.asError (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/packets/packet.js:728:17)\n at ClientHandshake.execute (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/commands/command.js:29:26)\n at Connection.handlePacket (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:481:34)\n at PacketParser.onPacket (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:97:12)\n at PacketParser.executeStart (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/packet_parser.js:75:16)\n at Socket.<anonymous> (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:104:25)\n at Socket.emit (node:events:517:28)\n at addChunk (node:internal/streams/readable:368:12)\n at readableAddChunk (node:internal/streams/readable:341:9)\n at Readable.push (node:internal/streams/readable:278:10)","hideStack":false},"msg":"Access denied for user 'root'@'172.18.0.29' (using password: YES)","time":"2024-07-17T01:52:03.952Z","v":0}
{"name":"Log","hostname":"02b62123e086","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.18.0.24:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.18.0.24:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.18.0.24:3306","time":"2024-07-17T01:52:17.791Z","v":0}
{"name":"Log","hostname":"02b62123e086","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ER_ACCESS_DENIED_ERROR","name":"DatabaseError","statusCode":500,"level":"critical","message":"Access denied for user 'root'@'172.18.0.29' (using password: YES)","help":"\"Unknown database error\"","stack":"Error: Access denied for user 'root'@'172.18.0.29' (using password: YES)\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at Packet.asError (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/packets/packet.js:728:17)\n at ClientHandshake.execute (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/commands/command.js:29:26)\n at Connection.handlePacket (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:481:34)\n at PacketParser.onPacket (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:97:12)\n at PacketParser.executeStart (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/packet_parser.js:75:16)\n at Socket.<anonymous> (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:104:25)\n at Socket.emit (node:events:517:28)\n at addChunk (node:internal/streams/readable:368:12)\n at readableAddChunk (node:internal/streams/readable:341:9)\n at Readable.push (node:internal/streams/readable:278:10)","hideStack":false},"msg":"Access denied for user 'root'@'172.18.0.29' (using password: YES)","time":"2024-07-17T01:52:44.430Z","v":0}
{"name":"Log","hostname":"02b62123e086","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.18.0.24:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.18.0.24:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.18.0.24:3306","time":"2024-07-17T01:53:17.118Z","v":0}
{"name":"Log","hostname":"02b62123e086","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ER_ACCESS_DENIED_ERROR","name":"DatabaseError","statusCode":500,"level":"critical","message":"Access denied for user 'root'@'172.18.0.29' (using password: YES)","help":"\"Unknown database error\"","stack":"Error: Access denied for user 'root'@'172.18.0.29' (using password: YES)\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at Packet.asError (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/packets/packet.js:728:17)\n at ClientHandshake.execute (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/commands/command.js:29:26)\n at Connection.handlePacket (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:481:34)\n at PacketParser.onPacket (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:97:12)\n at PacketParser.executeStart (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/packet_parser.js:75:16)\n at Socket.<anonymous> (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:104:25)\n at Socket.emit (node:events:517:28)\n at addChunk (node:internal/streams/readable:368:12)\n at readableAddChunk (node:internal/streams/readable:341:9)\n at Readable.push (node:internal/streams/readable:278:10)","hideStack":false},"msg":"Access denied for user 'root'@'172.18.0.29' (using password: YES)","time":"2024-07-17T01:53:18.741Z","v":0}
{"name":"Log","hostname":"02b62123e086","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.18.0.24:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.18.0.24:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.18.0.24:3306","time":"2024-07-17T01:53:20.036Z","v":0}
{"name":"Log","hostname":"02b62123e086","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ER_ACCESS_DENIED_ERROR","name":"DatabaseError","statusCode":500,"level":"critical","message":"Access denied for user 'root'@'172.18.0.29' (using password: YES)","help":"\"Unknown database error\"","stack":"Error: Access denied for user 'root'@'172.18.0.29' (using password: YES)\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at Packet.asError (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/packets/packet.js:728:17)\n at ClientHandshake.execute (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/commands/command.js:29:26)\n at Connection.handlePacket (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:481:34)\n at PacketParser.onPacket (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:97:12)\n at PacketParser.executeStart (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/packet_parser.js:75:16)\n at Socket.<anonymous> (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:104:25)\n at Socket.emit (node:events:517:28)\n at addChunk (node:internal/streams/readable:368:12)\n at readableAddChunk (node:internal/streams/readable:341:9)\n at Readable.push (node:internal/streams/readable:278:10)","hideStack":false},"msg":"Access denied for user 'root'@'172.18.0.29' (using password: YES)","time":"2024-07-17T01:53:21.473Z","v":0}
{"name":"Log","hostname":"02b62123e086","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ER_ACCESS_DENIED_ERROR","name":"DatabaseError","statusCode":500,"level":"critical","message":"Access denied for user 'root'@'172.18.0.29' (using password: YES)","help":"\"Unknown database error\"","stack":"Error: Access denied for user 'root'@'172.18.0.29' (using password: YES)\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at Packet.asError (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/packets/packet.js:728:17)\n at ClientHandshake.execute (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/commands/command.js:29:26)\n at Connection.handlePacket (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:481:34)\n at PacketParser.onPacket (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:97:12)\n at PacketParser.executeStart (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/packet_parser.js:75:16)\n at Socket.<anonymous> (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:104:25)\n at Socket.emit (node:events:517:28)\n at addChunk (node:internal/streams/readable:368:12)\n at readableAddChunk (node:internal/streams/readable:341:9)\n at Readable.push (node:internal/streams/readable:278:10)","hideStack":false},"msg":"Access denied for user 'root'@'172.18.0.29' (using password: YES)","time":"2024-07-17T01:53:23.333Z","v":0}
{"name":"Log","hostname":"02b62123e086","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.18.0.23:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.18.0.23:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.18.0.23:3306","time":"2024-07-17T01:53:25.979Z","v":0}
{"name":"Log","hostname":"02b62123e086","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ER_ACCESS_DENIED_ERROR","name":"DatabaseError","statusCode":500,"level":"critical","message":"Access denied for user 'root'@'172.18.0.29' (using password: YES)","help":"\"Unknown database error\"","stack":"Error: Access denied for user 'root'@'172.18.0.29' (using password: YES)\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at Packet.asError (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/packets/packet.js:728:17)\n at ClientHandshake.execute (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/commands/command.js:29:26)\n at Connection.handlePacket (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:481:34)\n at PacketParser.onPacket (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:97:12)\n at PacketParser.executeStart (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/packet_parser.js:75:16)\n at Socket.<anonymous> (/var/lib/ghost/versions/5.87.2/node_modules/mysql2/lib/connection.js:104:25)\n at Socket.emit (node:events:517:28)\n at addChunk (node:internal/streams/readable:368:12)\n at readableAddChunk (node:internal/streams/readable:341:9)\n at Readable.push (node:internal/streams/readable:278:10)","hideStack":false},"msg":"Access denied for user 'root'@'172.18.0.29' (using password: YES)","time":"2024-07-17T01:53:30.240Z","v":0}
{"name":"Log","hostname":"8c560430f94f","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.18.0.22:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.18.0.22:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.18.0.22:3306","time":"2024-07-17T01:54:43.316Z","v":0}
{"name":"Log","hostname":"8c560430f94f","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.18.0.22:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.18.0.22:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.18.0.22:3306","time":"2024-07-17T01:54:44.720Z","v":0}
{"name":"Log","hostname":"8c560430f94f","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.18.0.22:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.18.0.22:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.18.0.22:3306","time":"2024-07-17T01:54:46.128Z","v":0}
{"name":"Log","hostname":"8c560430f94f","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.18.0.22:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.18.0.22:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.18.0.22:3306","time":"2024-07-17T01:54:47.553Z","v":0}
{"name":"Log","hostname":"8c560430f94f","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.18.0.22:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.18.0.22:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.18.0.22:3306","time":"2024-07-17T01:54:49.395Z","v":0}
{"name":"Log","hostname":"8c560430f94f","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.18.0.22:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.18.0.22:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.18.0.22:3306","time":"2024-07-17T01:54:51.991Z","v":0}
{"name":"Log","hostname":"8c560430f94f","pid":1,"level":50,"version":"5.87.2","req":{"meta":{"requestId":"f57d590e-2995-4527-bb23-5223ea7e2e35","userId":null},"url":"/send-magic-link/","method":"POST","originalUrl":"/members/api/send-magic-link/","params":{},"headers":{"host":"libertyfusiondance.com","connection":"close","x-real-ip":"192.168.86.1","x-forwarded-for":"192.168.86.1","x-forwarded-host":"libertyfusiondance.com","x-forwarded-proto":"https","x-forwarded-ssl":"on","x-forwarded-port":"443","x-original-uri":"/members/api/send-magic-link/","content-length":"208","user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0","accept":"*/*","accept-language":"en-US,en;q=0.5","accept-encoding":"gzip, deflate, br, zstd","referer":"https://libertyfusiondance.com/","content-type":"application/json","origin":"https://libertyfusiondance.com","sec-fetch-dest":"empty","sec-fetch-mode":"cors","sec-fetch-site":"same-origin","priority":"u=0"},"query":{}},"res":{"_headers":{"x-powered-by":"Express","cache-control":"no-cache, private, no-store, must-revalidate, max-stale=0, post-check=0, pre-check=0","access-control-allow-origin":"*","content-type":"application/json; charset=utf-8","content-length":"252","etag":"W/\"fc-TX9SLJR2gyMcyOIGY5fpB+t0LqA\"","vary":"Accept-Encoding"},"statusCode":400,"responseTime":"19ms"},"err":{"id":"450e8710-43e0-11ef-b49c-df93003518e2","domain":"https://libertyfusiondance.com","code":null,"name":"BadRequestError","statusCode":400,"level":"normal","message":"No member exists with this e-mail address. Please sign up first.","stack":"BadRequestError: No member exists with this e-mail address. Please sign up first.\n at RouterController.sendMagicLink (/var/lib/ghost/versions/5.87.2/node_modules/@tryghost/members-api/lib/controllers/RouterController.js:577:19)\n at async forwardErrorMw (/var/lib/ghost/versions/5.87.2/node_modules/@tryghost/members-api/lib/members-api.js:323:13)","hideStack":false},"msg":"No member exists with this e-mail address. Please sign up first.","time":"2024-07-17T01:59:58.214Z","v":0}
{"name":"Log","hostname":"8c560430f94f","pid":1,"level":50,"version":"5.87.2","req":{"meta":{"requestId":"260ca439-b079-4120-addd-620ee6d092c8","userId":null},"url":"/users/me/?include=roles","method":"GET","originalUrl":"/ghost/api/admin/users/me/?include=roles","params":{},"headers":{"host":"libertyfusiondance.com","connection":"close","x-real-ip":"192.168.86.1","x-forwarded-for":"192.168.86.1","x-forwarded-host":"libertyfusiondance.com","x-forwarded-proto":"https","x-forwarded-ssl":"on","x-forwarded-port":"443","x-original-uri":"/ghost/api/admin/users/me/?include=roles","user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0","accept":"application/json, text/javascript, */*; q=0.01","accept-language":"en-US,en;q=0.5","accept-encoding":"gzip, deflate, br, zstd","content-type":"application/json; charset=UTF-8","x-ghost-version":"5.87","app-pragma":"no-cache","x-requested-with":"XMLHttpRequest","referer":"https://libertyfusiondance.com/ghost/","sec-fetch-dest":"empty","sec-fetch-mode":"cors","sec-fetch-site":"same-origin"},"query":{"include":"roles"}},"res":{"_headers":{"x-powered-by":"Express","content-version":"v5.87","vary":"Accept-Version, Accept-Encoding","cache-control":"no-cache, private, no-store, must-revalidate, max-stale=0, post-check=0, pre-check=0","content-type":"application/json; charset=utf-8","content-length":"343","etag":"W/\"157-On3RQV0Yz2IiTvp8i9abSQPi5yQ\""},"statusCode":403,"responseTime":"59ms"},"err":{"id":"bb38a910-43e1-11ef-b49c-df93003518e2","domain":"https://libertyfusiondance.com","code":null,"name":"NoPermissionError","statusCode":403,"level":"normal","message":"Authorization failed","context":"\"Unable to determine the authenticated user or integration. Check that cookies are being passed through if using session authentication.\"","stack":"NoPermissionError: Authorization failed\n at authorizeAdminApi (/var/lib/ghost/versions/5.87.2/core/server/services/auth/authorize.js:33:25)\n at Layer.handle [as handle_request] (/var/lib/ghost/versions/5.87.2/node_modules/express/lib/router/layer.js:95:5)\n at next (/var/lib/ghost/versions/5.87.2/node_modules/express/lib/router/route.js:149:13)\n at authenticate (/var/lib/ghost/versions/5.87.2/core/server/services/auth/session/middleware.js:28:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)","hideStack":false},"msg":"Authorization failed","time":"2024-07-17T02:10:25.958Z","v":0}
{"name":"Log","hostname":"8c560430f94f","pid":1,"level":50,"version":"5.87.2","req":{"meta":{"requestId":"cc3e05e1-cb00-41b6-a052-e90deca30eb3","userId":null},"url":"/users/me/?include=roles","method":"GET","originalUrl":"/ghost/api/admin/users/me/?include=roles","params":{},"headers":{"host":"libertyfusiondance.com","connection":"close","x-real-ip":"192.168.86.1","x-forwarded-for":"192.168.86.1","x-forwarded-host":"libertyfusiondance.com","x-forwarded-proto":"https","x-forwarded-ssl":"on","x-forwarded-port":"443","x-original-uri":"/ghost/api/admin/users/me/?include=roles","user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0","accept":"application/json, text/javascript, */*; q=0.01","accept-language":"en-US,en;q=0.5","accept-encoding":"gzip, deflate, br, zstd","content-type":"application/json; charset=UTF-8","x-ghost-version":"5.87","app-pragma":"no-cache","x-requested-with":"XMLHttpRequest","referer":"https://libertyfusiondance.com/ghost/","sec-fetch-dest":"empty","sec-fetch-mode":"cors","sec-fetch-site":"same-origin"},"query":{"include":"roles"}},"res":{"_headers":{"x-powered-by":"Express","content-version":"v5.87","vary":"Accept-Version, Accept-Encoding","cache-control":"no-cache, private, no-store, must-revalidate, max-stale=0, post-check=0, pre-check=0","content-type":"application/json; charset=utf-8","content-length":"343","etag":"W/\"157-G1NH/8K1StzVZ1ish2jJqmD6QWE\""},"statusCode":403,"responseTime":"2ms"},"err":{"id":"bb42e240-43e1-11ef-b49c-df93003518e2","domain":"https://libertyfusiondance.com","code":null,"name":"NoPermissionError","statusCode":403,"level":"normal","message":"Authorization failed","context":"\"Unable to determine the authenticated user or integration. Check that cookies are being passed through if using session authentication.\"","stack":"NoPermissionError: Authorization failed\n at authorizeAdminApi (/var/lib/ghost/versions/5.87.2/core/server/services/auth/authorize.js:33:25)\n at Layer.handle [as handle_request] (/var/lib/ghost/versions/5.87.2/node_modules/express/lib/router/layer.js:95:5)\n at next (/var/lib/ghost/versions/5.87.2/node_modules/express/lib/router/route.js:149:13)\n at authenticate (/var/lib/ghost/versions/5.87.2/core/server/services/auth/session/middleware.js:28:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)","hideStack":false},"msg":"Authorization failed","time":"2024-07-17T02:10:26.022Z","v":0}
{"name":"Log","hostname":"8c560430f94f","pid":1,"level":50,"version":"5.87.2","err":{"id":"4b438c90-43e3-11ef-b49c-df93003518e2","domain":"https://libertyfusiondance.com","code":null,"name":"EmailError","statusCode":500,"level":"normal","message":"Failed to send email. Reason: Email has been temporarily rejected.","context":"\"Unable to send welcome email, your site will continue to function.\"","help":"\"Please see https://ghost.org/docs/config/#mail for instructions on configuring email.\"","stack":"EmailError: Failed to send email. Reason: Email has been temporarily rejected.\n at createMailError (/var/lib/ghost/versions/5.87.2/core/server/services/mail/GhostMailer.js:105:12)\n at GhostMailer.handleDirectTransportResponse (/var/lib/ghost/versions/5.87.2/core/server/services/mail/GhostMailer.js:195:19)\n at GhostMailer.send (/var/lib/ghost/versions/5.87.2/core/server/services/mail/GhostMailer.js:157:25)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n at async getResponse (/var/lib/ghost/versions/5.87.2/node_modules/@tryghost/api-framework/lib/pipeline.js:259:34)\n at async Object.ImplWrapper [as send] (/var/lib/ghost/versions/5.87.2/node_modules/@tryghost/api-framework/lib/pipeline.js:264:30)\n at async /var/lib/ghost/versions/5.87.2/core/server/services/auth/setup.js:186:17","hideStack":false},"msg":"Failed to send email. Reason: Email has been temporarily rejected.","time":"2024-07-17T02:21:37.116Z","v":0}
{"name":"Log","hostname":"fbea4a3d4bbd","pid":1,"level":50,"version":"5.87.2","err":{"id":"217cb480-43e4-11ef-8997-314348f6cb30","domain":"https://libertyfusiondance.com","code":"ENOENT","name":"NotFoundError","statusCode":404,"level":"normal","message":"The currently active theme \"source\" is missing.","context":"\"name: source\"","help":"\"path: /var/lib/ghost/content/themes/\"","stack":"Error: ENOENT: no such file or directory, stat '/var/lib/ghost/content/themes/source'","hideStack":true},"msg":"The currently active theme \"source\" is missing.","time":"2024-07-17T02:27:36.521Z","v":0}
{"name":"Log","hostname":"fbea4a3d4bbd","pid":1,"level":50,"version":"5.87.2","req":{"meta":{"requestId":"5baf36a3-9695-4833-b7bf-f56a29726a14","userId":"1"},"url":"/themes/active/","method":"GET","originalUrl":"/ghost/api/admin/themes/active/","params":{},"headers":{"host":"libertyfusiondance.com","connection":"close","x-real-ip":"192.168.86.1","x-forwarded-for":"192.168.86.1","x-forwarded-host":"libertyfusiondance.com","x-forwarded-proto":"https","x-forwarded-ssl":"on","x-forwarded-port":"443","x-original-uri":"/ghost/api/admin/themes/active/","user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0","accept":"application/json, text/javascript, */*; q=0.01","accept-language":"en-US,en;q=0.5","accept-encoding":"gzip, deflate, br, zstd","content-type":"application/json; charset=UTF-8","x-ghost-version":"5.87","app-pragma":"no-cache","x-requested-with":"XMLHttpRequest","referer":"https://libertyfusiondance.com/ghost/","sec-fetch-dest":"empty","sec-fetch-mode":"cors","sec-fetch-site":"same-origin","cookie":"**REDACTED**"},"query":{}},"res":{"_headers":{"x-powered-by":"Express","content-version":"v5.87","vary":"Accept-Version, Accept-Encoding","cache-control":"no-cache, private, no-store, must-revalidate, max-stale=0, post-check=0, pre-check=0","content-type":"application/json; charset=utf-8","content-length":"245","etag":"W/\"f5-bv2qhaOeYmtcEO3shjEIKBTGO4Q\""},"statusCode":422,"responseTime":"17ms"},"err":{"id":"4a5d07b0-43e4-11ef-8997-314348f6cb30","domain":"https://libertyfusiondance.com","code":null,"name":"ValidationError","statusCode":422,"level":"normal","message":"Theme \"source\" is not loaded and cannot be checked.","stack":"ValidationError: Theme \"source\" is not loaded and cannot be checked.\n at Object.getThemeErrors (/var/lib/ghost/versions/5.87.2/core/server/services/themes/validate.js:111:15)\n at async Object.query (/var/lib/ghost/versions/5.87.2/core/server/api/endpoints/themes.js:30:33)\n at async getResponse (/var/lib/ghost/versions/5.87.2/node_modules/@tryghost/api-framework/lib/pipeline.js:259:34)\n at async ImplWrapper (/var/lib/ghost/versions/5.87.2/node_modules/@tryghost/api-framework/lib/pipeline.js:264:30)\n at async Http (/var/lib/ghost/versions/5.87.2/node_modules/@tryghost/api-framework/lib/http.js:70:28)","hideStack":false,"errorDetails":"\"source\""},"msg":"Theme \"source\" is not loaded and cannot be checked.","time":"2024-07-17T02:28:45.104Z","v":0}
{"name":"Log","hostname":"fbea4a3d4bbd","pid":1,"level":50,"version":"5.87.2","req":{"meta":{"requestId":"abeeefdf-5ec1-4770-a498-b1c9bf447bcf","userId":null},"url":"/","method":"GET","originalUrl":"/","params":{},"headers":{"host":"libertyfusiondance.com","connection":"close","x-real-ip":"192.168.86.1","x-forwarded-for":"192.168.86.1","x-forwarded-host":"libertyfusiondance.com","x-forwarded-proto":"https","x-forwarded-ssl":"on","x-forwarded-port":"443","x-original-uri":"/","user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0","accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/png,image/svg+xml,*/*;q=0.8","accept-language":"en-US,en;q=0.5","accept-encoding":"gzip, deflate, br, zstd","upgrade-insecure-requests":"1","sec-fetch-dest":"document","sec-fetch-mode":"navigate","sec-fetch-site":"none","sec-fetch-user":"?1","if-none-match":"W/\"4828-tWfn7+OdqkiimDjLp7gHV9m72d4\"","priority":"u=0, i"},"query":{}},"res":{"_headers":{"x-powered-by":"Express","cache-control":"no-cache, private, no-store, must-revalidate, max-stale=0, post-check=0, pre-check=0","content-type":"text/html; charset=utf-8","etag":"W/\"61a-RI/RIl5XcV01u6WV6oTaKXDHhZQ\"","vary":"Accept-Encoding","content-encoding":"gzip"},"statusCode":500,"responseTime":"17ms"},"err":{"id":"4c6d2301-43e4-11ef-8997-314348f6cb30","domain":"https://libertyfusiondance.com","code":null,"name":"InternalServerError","statusCode":500,"level":"critical","message":"The currently active theme \"source\" is missing.","stack":"InternalServerError: The currently active theme \"source\" is missing.\n at ensureActiveTheme (/var/lib/ghost/versions/5.87.2/core/frontend/services/theme-engine/middleware/ensure-active-theme.js:19:21)\n at Layer.handle [as handle_request] (/var/lib/ghost/versions/5.87.2/node_modules/express/lib/router/layer.js:95:5)\n at trim_prefix (/var/lib/ghost/versions/5.87.2/node_modules/express/lib/router/index.js:328:13)\n at /var/lib/ghost/versions/5.87.2/node_modules/express/lib/router/index.js:286:9\n at Function.process_params (/var/lib/ghost/versions/5.87.2/node_modules/express/lib/router/index.js:346:12)\n at next (/var/lib/ghost/versions/5.87.2/node_modules/express/lib/router/index.js:280:10)\n at loadMemberSession (/var/lib/ghost/versions/5.87.2/core/server/services/members/middleware.js:95:9)","hideStack":false},"msg":"The currently active theme \"source\" is missing.","time":"2024-07-17T02:28:48.576Z","v":0}
{"name":"Log","hostname":"fbea4a3d4bbd","pid":1,"level":50,"version":"5.87.2","req":{"meta":{"requestId":"b98018e4-d86d-4531-9d91-facfb225f8bd","userId":null},"url":"/","method":"GET","originalUrl":"/","params":{},"headers":{"host":"libertyfusiondance.com","connection":"close","x-real-ip":"192.168.86.1","x-forwarded-for":"192.168.86.1","x-forwarded-host":"libertyfusiondance.com","x-forwarded-proto":"https","x-forwarded-ssl":"on","x-forwarded-port":"443","x-original-uri":"/","user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0","accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/png,image/svg+xml,*/*;q=0.8","accept-language":"en-US,en;q=0.5","accept-encoding":"gzip, deflate, br, zstd","referer":"https://libertyfusiondance.com/","upgrade-insecure-requests":"1","sec-fetch-dest":"document","sec-fetch-mode":"navigate","sec-fetch-site":"same-origin","sec-fetch-user":"?1","priority":"u=0, i"},"query":{}},"res":{"_headers":{"x-powered-by":"Express","cache-control":"no-cache, private, no-store, must-revalidate, max-stale=0, post-check=0, pre-check=0","content-type":"text/html; charset=utf-8","etag":"W/\"61a-RI/RIl5XcV01u6WV6oTaKXDHhZQ\"","vary":"Accept-Encoding","content-encoding":"gzip"},"statusCode":500,"responseTime":"8ms"},"err":{"id":"4f7a6300-43e4-11ef-8997-314348f6cb30","domain":"https://libertyfusiondance.com","code":null,"name":"InternalServerError","statusCode":500,"level":"critical","message":"The currently active theme \"source\" is missing.","stack":"InternalServerError: The currently active theme \"source\" is missing.\n at ensureActiveTheme (/var/lib/ghost/versions/5.87.2/core/frontend/services/theme-engine/middleware/ensure-active-theme.js:19:21)\n at Layer.handle [as handle_request] (/var/lib/ghost/versions/5.87.2/node_modules/express/lib/router/layer.js:95:5)\n at trim_prefix (/var/lib/ghost/versions/5.87.2/node_modules/express/lib/router/index.js:328:13)\n at /var/lib/ghost/versions/5.87.2/node_modules/express/lib/router/index.js:286:9\n at Function.process_params (/var/lib/ghost/versions/5.87.2/node_modules/express/lib/router/index.js:346:12)\n at next (/var/lib/ghost/versions/5.87.2/node_modules/express/lib/router/index.js:280:10)\n at loadMemberSession (/var/lib/ghost/versions/5.87.2/core/server/services/members/middleware.js:95:9)","hideStack":false},"msg":"The currently active theme \"source\" is missing.","time":"2024-07-17T02:28:53.687Z","v":0}
{"name":"Log","hostname":"aedc42230fb1","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.18.0.22:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.18.0.22:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.18.0.22:3306","time":"2024-07-17T02:29:24.963Z","v":0}
{"name":"Log","hostname":"aedc42230fb1","pid":1,"level":50,"version":"5.87.2","err":{"id":"6341b5f0-43e4-11ef-a7ac-8d06ecb97f66","domain":"https://libertyfusiondance.com","code":"ENOENT","name":"NotFoundError","statusCode":404,"level":"normal","message":"The currently active theme \"source\" is missing.","context":"\"name: source\"","help":"\"path: /var/lib/ghost/content/themes/\"","stack":"Error: ENOENT: no such file or directory, stat '/var/lib/ghost/content/themes/source'","hideStack":true},"msg":"The currently active theme \"source\" is missing.","time":"2024-07-17T02:29:26.864Z","v":0}
{"name":"Log","hostname":"8e0be6455e1e","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.18.0.22:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.18.0.22:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.18.0.22:3306","time":"2024-07-17T02:30:19.298Z","v":0}
{"name":"Log","hostname":"8e0be6455e1e","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.18.0.22:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.18.0.22:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.18.0.22:3306","time":"2024-07-17T02:30:20.704Z","v":0}
{"name":"Log","hostname":"8e0be6455e1e","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.18.0.22:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.18.0.22:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.18.0.22:3306","time":"2024-07-17T02:30:22.058Z","v":0}
{"name":"Log","hostname":"8e0be6455e1e","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.18.0.22:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.18.0.22:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.18.0.22:3306","time":"2024-07-17T02:30:23.494Z","v":0}
{"name":"Log","hostname":"8e0be6455e1e","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.18.0.22:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.18.0.22:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.18.0.22:3306","time":"2024-07-17T02:30:25.461Z","v":0}
{"name":"Log","hostname":"8e0be6455e1e","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.18.0.22:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.18.0.22:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.18.0.22:3306","time":"2024-07-17T02:30:28.104Z","v":0}
{"name":"Log","hostname":"8e0be6455e1e","pid":1,"level":50,"version":"5.87.2","err":{"id":"91595510-43e4-11ef-ac1a-9fb3d2415a52","domain":"https://libertyfusiondance.com","code":"ENOENT","name":"NotFoundError","statusCode":404,"level":"normal","message":"The currently active theme \"source\" is missing.","context":"\"name: source\"","help":"\"path: /var/lib/ghost/content/themes/\"","stack":"Error: ENOENT: no such file or directory, stat '/var/lib/ghost/content/themes/source'","hideStack":true},"msg":"The currently active theme \"source\" is missing.","time":"2024-07-17T02:30:44.194Z","v":0}
{"name":"Log","hostname":"8e0be6455e1e","pid":1,"level":50,"version":"5.87.2","req":{"meta":{"requestId":"b22e7ac1-18ad-42b3-82cd-6d043fc71240","userId":null},"url":"/","method":"GET","originalUrl":"/","params":{},"headers":{"host":"libertyfusiondance.com","connection":"close","x-real-ip":"192.168.86.1","x-forwarded-for":"192.168.86.1","x-forwarded-host":"libertyfusiondance.com","x-forwarded-proto":"https","x-forwarded-ssl":"on","x-forwarded-port":"443","x-original-uri":"/","user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0","accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/png,image/svg+xml,*/*;q=0.8","accept-language":"en-US,en;q=0.5","accept-encoding":"gzip, deflate, br, zstd","referer":"https://libertyfusiondance.com/","upgrade-insecure-requests":"1","sec-fetch-dest":"document","sec-fetch-mode":"navigate","sec-fetch-site":"same-origin","sec-fetch-user":"?1","priority":"u=0, i"},"query":{}},"res":{"_headers":{"x-powered-by":"Express","cache-control":"no-cache, private, no-store, must-revalidate, max-stale=0, post-check=0, pre-check=0","content-type":"text/html; charset=utf-8","etag":"W/\"61a-Pb7dfZTZ3k2pWHUpSasr28ATTjI\"","vary":"Accept-Encoding","content-encoding":"gzip"},"statusCode":500,"responseTime":"62ms"},"err":{"id":"96d6d1c0-43e4-11ef-ac1a-9fb3d2415a52","domain":"https://libertyfusiondance.com","code":null,"name":"InternalServerError","statusCode":500,"level":"critical","message":"The currently active theme \"source\" is missing.","stack":"InternalServerError: The currently active theme \"source\" is missing.\n at ensureActiveTheme (/var/lib/ghost/versions/5.87.2/core/frontend/services/theme-engine/middleware/ensure-active-theme.js:19:21)\n at Layer.handle [as handle_request] (/var/lib/ghost/versions/5.87.2/node_modules/express/lib/router/layer.js:95:5)\n at trim_prefix (/var/lib/ghost/versions/5.87.2/node_modules/express/lib/router/index.js:328:13)\n at /var/lib/ghost/versions/5.87.2/node_modules/express/lib/router/index.js:286:9\n at Function.process_params (/var/lib/ghost/versions/5.87.2/node_modules/express/lib/router/index.js:346:12)\n at next (/var/lib/ghost/versions/5.87.2/node_modules/express/lib/router/index.js:280:10)\n at loadMemberSession (/var/lib/ghost/versions/5.87.2/core/server/services/members/middleware.js:95:9)","hideStack":false},"msg":"The currently active theme \"source\" is missing.","time":"2024-07-17T02:30:53.460Z","v":0}
{"name":"Log","hostname":"8e0be6455e1e","pid":1,"level":50,"version":"5.87.2","req":{"meta":{"requestId":"1800875d-26af-4d01-88e1-4b88028f6a5d","userId":null},"url":"/users/me/?include=roles","method":"GET","originalUrl":"/ghost/api/admin/users/me/?include=roles","params":{},"headers":{"host":"libertyfusiondance.com","connection":"close","x-real-ip":"192.168.86.1","x-forwarded-for":"192.168.86.1","x-forwarded-host":"libertyfusiondance.com","x-forwarded-proto":"https","x-forwarded-ssl":"on","x-forwarded-port":"443","x-original-uri":"/ghost/api/admin/users/me/?include=roles","user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0","accept":"application/json, text/javascript, */*; q=0.01","accept-language":"en-US,en;q=0.5","accept-encoding":"gzip, deflate, br, zstd","content-type":"application/json; charset=UTF-8","x-ghost-version":"5.87","app-pragma":"no-cache","x-requested-with":"XMLHttpRequest","referer":"https://libertyfusiondance.com/ghost/","sec-fetch-dest":"empty","sec-fetch-mode":"cors","sec-fetch-site":"same-origin","cookie":"**REDACTED**"},"query":{"include":"roles"}},"res":{"_headers":{"x-powered-by":"Express","content-version":"v5.87","vary":"Accept-Version, Accept-Encoding","cache-control":"no-cache, private, no-store, must-revalidate, max-stale=0, post-check=0, pre-check=0","content-type":"application/json; charset=utf-8","content-length":"343","etag":"W/\"157-UCa1for1xnb+K3KJgUgXlYzdClo\""},"statusCode":403,"responseTime":"339ms"},"err":{"id":"98d42860-43e4-11ef-ac1a-9fb3d2415a52","domain":"https://libertyfusiondance.com","code":null,"name":"NoPermissionError","statusCode":403,"level":"normal","message":"Authorization failed","context":"\"Unable to determine the authenticated user or integration. Check that cookies are being passed through if using session authentication.\"","stack":"NoPermissionError: Authorization failed\n at authorizeAdminApi (/var/lib/ghost/versions/5.87.2/core/server/services/auth/authorize.js:33:25)\n at Layer.handle [as handle_request] (/var/lib/ghost/versions/5.87.2/node_modules/express/lib/router/layer.js:95:5)\n at next (/var/lib/ghost/versions/5.87.2/node_modules/express/lib/router/route.js:149:13)\n at authenticate (/var/lib/ghost/versions/5.87.2/core/server/services/auth/session/middleware.js:28:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)","hideStack":false},"msg":"Authorization failed","time":"2024-07-17T02:30:56.747Z","v":0}
{"name":"Log","hostname":"8e0be6455e1e","pid":1,"level":50,"version":"5.87.2","req":{"meta":{"requestId":"2c983f33-66e2-4606-afea-3c2aa7627963","userId":null},"url":"/users/me/?include=roles","method":"GET","originalUrl":"/ghost/api/admin/users/me/?include=roles","params":{},"headers":{"host":"libertyfusiondance.com","connection":"close","x-real-ip":"192.168.86.1","x-forwarded-for":"192.168.86.1","x-forwarded-host":"libertyfusiondance.com","x-forwarded-proto":"https","x-forwarded-ssl":"on","x-forwarded-port":"443","x-original-uri":"/ghost/api/admin/users/me/?include=roles","user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0","accept":"application/json, text/javascript, */*; q=0.01","accept-language":"en-US,en;q=0.5","accept-encoding":"gzip, deflate, br, zstd","content-type":"application/json; charset=UTF-8","x-ghost-version":"5.87","app-pragma":"no-cache","x-requested-with":"XMLHttpRequest","referer":"https://libertyfusiondance.com/ghost/","sec-fetch-dest":"empty","sec-fetch-mode":"cors","sec-fetch-site":"same-origin","cookie":"**REDACTED**"},"query":{"include":"roles"}},"res":{"_headers":{"x-powered-by":"Express","content-version":"v5.87","vary":"Accept-Version, Accept-Encoding","cache-control":"no-cache, private, no-store, must-revalidate, max-stale=0, post-check=0, pre-check=0","content-type":"application/json; charset=utf-8","content-length":"343","etag":"W/\"157-FBJwXWUVp3UvltGN+1r0A/5niiY\""},"statusCode":403,"responseTime":"2ms"},"err":{"id":"98de6190-43e4-11ef-ac1a-9fb3d2415a52","domain":"https://libertyfusiondance.com","code":null,"name":"NoPermissionError","statusCode":403,"level":"normal","message":"Authorization failed","context":"\"Unable to determine the authenticated user or integration. Check that cookies are being passed through if using session authentication.\"","stack":"NoPermissionError: Authorization failed\n at authorizeAdminApi (/var/lib/ghost/versions/5.87.2/core/server/services/auth/authorize.js:33:25)\n at Layer.handle [as handle_request] (/var/lib/ghost/versions/5.87.2/node_modules/express/lib/router/layer.js:95:5)\n at next (/var/lib/ghost/versions/5.87.2/node_modules/express/lib/router/route.js:149:13)\n at authenticate (/var/lib/ghost/versions/5.87.2/core/server/services/auth/session/middleware.js:28:13)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)","hideStack":false},"msg":"Authorization failed","time":"2024-07-17T02:30:56.811Z","v":0}
{"name":"Log","hostname":"8e0be6455e1e","pid":1,"level":50,"version":"5.87.2","req":{"meta":{"requestId":"3e6f4bf2-abc0-4d69-bb01-d60d5e0732f7","userId":"1"},"url":"/themes/active/","method":"GET","originalUrl":"/ghost/api/admin/themes/active/","params":{},"headers":{"host":"libertyfusiondance.com","connection":"close","x-real-ip":"192.168.86.1","x-forwarded-for":"192.168.86.1","x-forwarded-host":"libertyfusiondance.com","x-forwarded-proto":"https","x-forwarded-ssl":"on","x-forwarded-port":"443","x-original-uri":"/ghost/api/admin/themes/active/","user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0","accept":"application/json, text/javascript, */*; q=0.01","accept-language":"en-US,en;q=0.5","accept-encoding":"gzip, deflate, br, zstd","content-type":"application/json; charset=UTF-8","x-ghost-version":"5.87","app-pragma":"no-cache","x-requested-with":"XMLHttpRequest","referer":"https://libertyfusiondance.com/ghost/","sec-fetch-dest":"empty","sec-fetch-mode":"cors","sec-fetch-site":"same-origin","cookie":"**REDACTED**"},"query":{}},"res":{"_headers":{"x-powered-by":"Express","content-version":"v5.87","vary":"Accept-Version, Accept-Encoding","cache-control":"no-cache, private, no-store, must-revalidate, max-stale=0, post-check=0, pre-check=0","content-type":"application/json; charset=utf-8","content-length":"245","etag":"W/\"f5-tlwTBxfVDi/zgWBO6wNHlxJ3CTY\""},"statusCode":422,"responseTime":"12ms"},"err":{"id":"a137d510-43e4-11ef-ac1a-9fb3d2415a52","domain":"https://libertyfusiondance.com","code":null,"name":"ValidationError","statusCode":422,"level":"normal","message":"Theme \"source\" is not loaded and cannot be checked.","stack":"ValidationError: Theme \"source\" is not loaded and cannot be checked.\n at Object.getThemeErrors (/var/lib/ghost/versions/5.87.2/core/server/services/themes/validate.js:111:15)\n at async Object.query (/var/lib/ghost/versions/5.87.2/core/server/api/endpoints/themes.js:30:33)\n at async getResponse (/var/lib/ghost/versions/5.87.2/node_modules/@tryghost/api-framework/lib/pipeline.js:259:34)\n at async ImplWrapper (/var/lib/ghost/versions/5.87.2/node_modules/@tryghost/api-framework/lib/pipeline.js:264:30)\n at async Http (/var/lib/ghost/versions/5.87.2/node_modules/@tryghost/api-framework/lib/http.js:70:28)","hideStack":false,"errorDetails":"\"source\""},"msg":"Theme \"source\" is not loaded and cannot be checked.","time":"2024-07-17T02:31:10.818Z","v":0}
{"name":"Log","hostname":"8e0be6455e1e","pid":1,"level":50,"version":"5.87.2","req":{"meta":{"requestId":"51a28267-de63-4de6-ad6a-0e952d711c74","userId":null},"url":"/","method":"POST","originalUrl":"/","params":{},"headers":{"host":"libertyfusiondance.com","connection":"close","x-real-ip":"192.168.86.1","x-forwarded-for":"192.168.86.1","x-forwarded-host":"libertyfusiondance.com","x-forwarded-proto":"https","x-forwarded-ssl":"on","x-forwarded-port":"443","x-original-uri":"/","content-length":"0","user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0","accept":"text/plain","accept-language":"en-US,en;q=0.5","accept-encoding":"gzip, deflate, br, zstd","referer":"https://libertyfusiondance.com/ghost/","content-type":"text/html;charset=utf-8","x-ghost-preview":"c=%23FF1A75&d=Thoughts%2C+stories+and+ideas.&icon=&logo=&cover=https%3A%2F%2Fstatic.ghost.org%2Fv5.0.0%2Fimages%2Fpublication-cover.jpg&custom=%7B%7D","origin":"https://libertyfusiondance.com","sec-fetch-dest":"empty","sec-fetch-mode":"cors","sec-fetch-site":"same-origin","priority":"u=4"},"query":{}},"res":{"_headers":{"x-powered-by":"Express","access-control-allow-origin":"https://libertyfusiondance.com","vary":"Origin, Accept-Encoding","access-control-allow-credentials":"true","cache-control":"no-cache, private, no-store, must-revalidate, max-stale=0, post-check=0, pre-check=0","content-type":"text/html; charset=utf-8","etag":"W/\"61a-Pb7dfZTZ3k2pWHUpSasr28ATTjI\"","content-encoding":"gzip"},"statusCode":500,"responseTime":"4ms"},"err":{"id":"a29fc980-43e4-11ef-ac1a-9fb3d2415a52","domain":"https://libertyfusiondance.com","code":null,"name":"InternalServerError","statusCode":500,"level":"critical","message":"The currently active theme \"source\" is missing.","stack":"InternalServerError: The currently active theme \"source\" is missing.\n at ensureActiveTheme (/var/lib/ghost/versions/5.87.2/core/frontend/services/theme-engine/middleware/ensure-active-theme.js:19:21)\n at Layer.handle [as handle_request] (/var/lib/ghost/versions/5.87.2/node_modules/express/lib/router/layer.js:95:5)\n at trim_prefix (/var/lib/ghost/versions/5.87.2/node_modules/express/lib/router/index.js:328:13)\n at /var/lib/ghost/versions/5.87.2/node_modules/express/lib/router/index.js:286:9\n at Function.process_params (/var/lib/ghost/versions/5.87.2/node_modules/express/lib/router/index.js:346:12)\n at next (/var/lib/ghost/versions/5.87.2/node_modules/express/lib/router/index.js:280:10)\n at loadMemberSession (/var/lib/ghost/versions/5.87.2/core/server/services/members/middleware.js:95:9)","hideStack":false},"msg":"The currently active theme \"source\" is missing.","time":"2024-07-17T02:31:13.179Z","v":0}
{"name":"Log","hostname":"8e0be6455e1e","pid":1,"level":50,"version":"5.87.2","req":{"meta":{"requestId":"b559ace7-0834-4a6e-add6-5358f33a0dfb","userId":"1"},"url":"/themes/active/","method":"GET","originalUrl":"/ghost/api/admin/themes/active/","params":{},"headers":{"host":"libertyfusiondance.com","connection":"close","x-real-ip":"192.168.86.1","x-forwarded-for":"192.168.86.1","x-forwarded-host":"libertyfusiondance.com","x-forwarded-proto":"https","x-forwarded-ssl":"on","x-forwarded-port":"443","x-original-uri":"/ghost/api/admin/themes/active/","user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0","accept":"application/json, text/javascript, */*; q=0.01","accept-language":"en-US,en;q=0.5","accept-encoding":"gzip, deflate, br, zstd","content-type":"application/json; charset=UTF-8","x-ghost-version":"5.87","app-pragma":"no-cache","x-requested-with":"XMLHttpRequest","referer":"https://libertyfusiondance.com/ghost/","sec-fetch-dest":"empty","sec-fetch-mode":"cors","sec-fetch-site":"same-origin","cookie":"**REDACTED**"},"query":{}},"res":{"_headers":{"x-powered-by":"Express","content-version":"v5.87","vary":"Accept-Version, Accept-Encoding","cache-control":"no-cache, private, no-store, must-revalidate, max-stale=0, post-check=0, pre-check=0","content-type":"application/json; charset=utf-8","content-length":"245","etag":"W/\"f5-v7Fu5Wkxn7F7Cvbm68CQQ5GieUM\""},"statusCode":422,"responseTime":"12ms"},"err":{"id":"acc9de50-43e4-11ef-ac1a-9fb3d2415a52","domain":"https://libertyfusiondance.com","code":null,"name":"ValidationError","statusCode":422,"level":"normal","message":"Theme \"source\" is not loaded and cannot be checked.","stack":"ValidationError: Theme \"source\" is not loaded and cannot be checked.\n at Object.getThemeErrors (/var/lib/ghost/versions/5.87.2/core/server/services/themes/validate.js:111:15)\n at async Object.query (/var/lib/ghost/versions/5.87.2/core/server/api/endpoints/themes.js:30:33)\n at async getResponse (/var/lib/ghost/versions/5.87.2/node_modules/@tryghost/api-framework/lib/pipeline.js:259:34)\n at async ImplWrapper (/var/lib/ghost/versions/5.87.2/node_modules/@tryghost/api-framework/lib/pipeline.js:264:30)\n at async Http (/var/lib/ghost/versions/5.87.2/node_modules/@tryghost/api-framework/lib/http.js:70:28)","hideStack":false,"errorDetails":"\"source\""},"msg":"Theme \"source\" is not loaded and cannot be checked.","time":"2024-07-17T02:31:30.231Z","v":0}
{"name":"Log","hostname":"8e0be6455e1e","pid":1,"level":50,"version":"5.87.2","req":{"meta":{"requestId":"48ebff51-4b27-44f4-9d4d-5ee66e8aef27","userId":null},"url":"/","method":"POST","originalUrl":"/","params":{},"headers":{"host":"libertyfusiondance.com","connection":"close","x-real-ip":"192.168.86.1","x-forwarded-for":"192.168.86.1","x-forwarded-host":"libertyfusiondance.com","x-forwarded-proto":"https","x-forwarded-ssl":"on","x-forwarded-port":"443","x-original-uri":"/","content-length":"0","user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0","accept":"text/plain","accept-language":"en-US,en;q=0.5","accept-encoding":"gzip, deflate, br, zstd","referer":"https://libertyfusiondance.com/ghost/","content-type":"text/html;charset=utf-8","x-ghost-preview":"c=%23FF1A75&d=Thoughts%2C+stories+and+ideas.&icon=&logo=&cover=https%3A%2F%2Fstatic.ghost.org%2Fv5.0.0%2Fimages%2Fpublication-cover.jpg&custom=%7B%7D","origin":"https://libertyfusiondance.com","sec-fetch-dest":"empty","sec-fetch-mode":"cors","sec-fetch-site":"same-origin","priority":"u=4"},"query":{}},"res":{"_headers":{"x-powered-by":"Express","access-control-allow-origin":"https://libertyfusiondance.com","vary":"Origin, Accept-Encoding","access-control-allow-credentials":"true","cache-control":"no-cache, private, no-store, must-revalidate, max-stale=0, post-check=0, pre-check=0","content-type":"text/html; charset=utf-8","etag":"W/\"61a-Pb7dfZTZ3k2pWHUpSasr28ATTjI\"","content-encoding":"gzip"},"statusCode":500,"responseTime":"8ms"},"err":{"id":"bedca370-43e4-11ef-ac1a-9fb3d2415a52","domain":"https://libertyfusiondance.com","code":null,"name":"InternalServerError","statusCode":500,"level":"critical","message":"The currently active theme \"source\" is missing.","stack":"InternalServerError: The currently active theme \"source\" is missing.\n at ensureActiveTheme (/var/lib/ghost/versions/5.87.2/core/frontend/services/theme-engine/middleware/ensure-active-theme.js:19:21)\n at Layer.handle [as handle_request] (/var/lib/ghost/versions/5.87.2/node_modules/express/lib/router/layer.js:95:5)\n at trim_prefix (/var/lib/ghost/versions/5.87.2/node_modules/express/lib/router/index.js:328:13)\n at /var/lib/ghost/versions/5.87.2/node_modules/express/lib/router/index.js:286:9\n at Function.process_params (/var/lib/ghost/versions/5.87.2/node_modules/express/lib/router/index.js:346:12)\n at next (/var/lib/ghost/versions/5.87.2/node_modules/express/lib/router/index.js:280:10)\n at loadMemberSession (/var/lib/ghost/versions/5.87.2/core/server/services/members/middleware.js:95:9)","hideStack":false},"msg":"The currently active theme \"source\" is missing.","time":"2024-07-17T02:32:00.557Z","v":0}
{"name":"Log","hostname":"5a9e48a4ee0a","pid":1,"level":50,"version":"5.87.2","err":{"id":"3e4bedf0-43e5-11ef-ac9e-27491cf3fcf6","domain":"https://libertyfusiondance.com","code":"ENOENT","name":"NotFoundError","statusCode":404,"level":"normal","message":"The currently active theme \"source\" is missing.","context":"\"name: source\"","help":"\"path: /var/lib/ghost/content/themes/\"","stack":"Error: ENOENT: no such file or directory, stat '/var/lib/ghost/content/themes/source'","hideStack":true},"msg":"The currently active theme \"source\" is missing.","time":"2024-07-17T02:35:34.352Z","v":0}
{"name":"Log","hostname":"bd51a6f0503e","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.18.0.29:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.18.0.29:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.18.0.29:3306","time":"2024-07-17T02:40:35.537Z","v":0}
{"name":"Log","hostname":"bd51a6f0503e","pid":1,"level":50,"version":"5.87.2","err":{"id":"f2f096c0-43e5-11ef-b0a7-098a287680be","domain":"https://libertyfusiondance.com","code":"ENOENT","name":"NotFoundError","statusCode":404,"level":"normal","message":"The currently active theme \"source\" is missing.","context":"\"name: source\"","help":"\"path: /var/lib/ghost/content/themes/\"","stack":"Error: ENOENT: no such file or directory, stat '/var/lib/ghost/content/themes/source'","hideStack":true},"msg":"The currently active theme \"source\" is missing.","time":"2024-07-17T02:40:37.421Z","v":0}
{"name":"Log","hostname":"0b2fb732c66d","pid":1,"level":50,"version":"5.87.2","err":{"id":"619a83b0-43e6-11ef-8255-f54542608641","domain":"https://libertyfusiondance.com","code":"IMAGE_SIZE_URL","name":"InternalServerError","statusCode":502,"level":"critical","message":"Unknown Request error.","context":"\"https://libertyfusiondance.com/favicon.ico\"","stack":"ProbeError: bad status code: 502\n at /var/lib/ghost/versions/5.87.2/core/server/lib/image/ImageSize.js:208:39\n at PassThrough.<anonymous> (/var/lib/ghost/versions/5.87.2/node_modules/probe-image-size/http.js:50:16)\n at PassThrough.emit (node:events:517:28)\n at PassThrough.emit (node:domain:489:12)\n at ClientRequest.<anonymous> (/var/lib/ghost/versions/5.87.2/node_modules/needle/lib/needle.js:603:9)\n at Object.onceWrapper (node:events:632:26)\n at ClientRequest.emit (node:events:517:28)\n at ClientRequest.emit (node:domain:489:12)\n at HTTPParser.parserOnIncomingClient (node:_http_client:700:27)\n at HTTPParser.parserOnHeadersComplete (node:_http_common:119:17)\n at TLSSocket.socketOnData (node:_http_client:541:22)\n at TLSSocket.emit (node:events:517:28)\n at TLSSocket.emit (node:domain:489:12)\n at addChunk (node:internal/streams/readable:368:12)\n at readableAddChunk (node:internal/streams/readable:341:9)\n at Readable.push (node:internal/streams/readable:278:10)\n at TLSWrap.onStreamRead (node:internal/stream_base_commons:190:23)","hideStack":false},"msg":"Unknown Request error.","time":"2024-07-17T02:43:43.084Z","v":0}
{"name":"Log","hostname":"0739fe4731cc","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.18.0.29:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.18.0.29:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.18.0.29:3306","time":"2024-07-17T02:48:04.552Z","v":0}
{"name":"Log","hostname":"0739fe4731cc","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.18.0.29:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.18.0.29:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.18.0.29:3306","time":"2024-07-17T02:48:05.943Z","v":0}
{"name":"Log","hostname":"0739fe4731cc","pid":115,"level":50,"version":"5.87.2","err":{"id":"922417c0-43e7-11ef-9809-cbe2da11da93","domain":"https://libertyfusiondance.com","code":null,"name":"InternalServerError","statusCode":500,"level":"critical","message":"(EADDRINUSE) Cannot start Ghost.","context":"\"Port 2368 is already in use by another program.\"","help":"\"Is another Ghost instance already running?\"","stack":"InternalServerError: (EADDRINUSE) Cannot start Ghost.\n at Server.<anonymous> (/var/lib/ghost/versions/5.87.2/core/server/GhostServer.js:90:34)\n at Server.emit (node:events:517:28)\n at emitErrorNT (node:net:1844:8)\n at process.processTicksAndRejections (node:internal/process/task_queues:82:21)","hideStack":false},"msg":"(EADDRINUSE) Cannot start Ghost.","time":"2024-07-17T02:52:14.018Z","v":0}
{"name":"Log","hostname":"0739fe4731cc","pid":1,"level":50,"version":"5.87.2","req":{"meta":{"requestId":"fa70b1c1-9ee0-4ae5-a355-3fd09332ad14","userId":"1"},"url":"/members/?include=newsletters%2Clabels","method":"POST","originalUrl":"/ghost/api/admin/members/?include=newsletters%2Clabels","params":{},"headers":{"host":"libertyfusiondance.com","connection":"close","x-real-ip":"192.168.86.1","x-forwarded-for":"192.168.86.1","x-forwarded-host":"libertyfusiondance.com","x-forwarded-proto":"https","x-forwarded-ssl":"on","x-forwarded-port":"443","x-original-uri":"/ghost/api/admin/members/?include=newsletters%2Clabels","content-length":"983","user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0","accept":"application/json, text/javascript, */*; q=0.01","accept-language":"en-US,en;q=0.5","accept-encoding":"gzip, deflate, br, zstd","content-type":"application/json; charset=utf-8","x-ghost-version":"5.87","app-pragma":"no-cache","x-requested-with":"XMLHttpRequest","origin":"https://libertyfusiondance.com","referer":"https://libertyfusiondance.com/ghost/","sec-fetch-dest":"empty","sec-fetch-mode":"cors","sec-fetch-site":"same-origin","cookie":"**REDACTED**"},"query":{"include":"newsletters,labels"}},"res":{"_headers":{"x-powered-by":"Express","content-version":"v5.87","vary":"Accept-Version, Origin, Accept-Encoding","cache-control":"no-cache, private, no-store, must-revalidate, max-stale=0, post-check=0, pre-check=0","access-control-allow-origin":"https://libertyfusiondance.com","content-type":"application/json; charset=utf-8","content-length":"301","etag":"W/\"12d-pDBNIpCFCcLZY0S/HZ1Oi1xFEqQ\""},"statusCode":422,"responseTime":"17ms"},"err":{"id":"d1aeb990-43e7-11ef-a904-378ca81c69c6","domain":"https://libertyfusiondance.com","code":null,"name":"ValidationError","statusCode":422,"level":"normal","message":"Member already exists.","context":"\"Attempting to add member with existing email address\"","stack":"ValidationError: Member already exists.\n at MemberBREADService.add (/var/lib/ghost/versions/5.87.2/node_modules/@tryghost/members-api/lib/services/MemberBREADService.js:273:23)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n at async Object.query (/var/lib/ghost/versions/5.87.2/core/server/api/endpoints/members.js:118:28)\n at async getResponse (/var/lib/ghost/versions/5.87.2/node_modules/@tryghost/api-framework/lib/pipeline.js:259:34)\n at async ImplWrapper (/var/lib/ghost/versions/5.87.2/node_modules/@tryghost/api-framework/lib/pipeline.js:264:30)\n at async Http (/var/lib/ghost/versions/5.87.2/node_modules/@tryghost/api-framework/lib/http.js:70:28)","hideStack":false},"msg":"Member already exists.","time":"2024-07-17T02:54:00.620Z","v":0}
{"name":"Log","hostname":"0739fe4731cc","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.18.0.29:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.18.0.29:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.18.0.29:3306","time":"2024-07-17T03:02:53.311Z","v":0}
{"name":"Log","hostname":"0739fe4731cc","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.18.0.29:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.18.0.29:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.18.0.29:3306","time":"2024-07-17T03:02:54.666Z","v":0}
{"name":"Log","hostname":"0739fe4731cc","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.18.0.29:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.18.0.29:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.18.0.29:3306","time":"2024-07-17T03:02:56.181Z","v":0}
{"name":"Log","hostname":"0739fe4731cc","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.18.0.29:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.18.0.29:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.18.0.29:3306","time":"2024-07-17T03:09:33.000Z","v":0}
{"name":"Log","hostname":"0739fe4731cc","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.18.0.29:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.18.0.29:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.18.0.29:3306","time":"2024-07-17T03:09:34.455Z","v":0}
{"name":"Log","hostname":"0739fe4731cc","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.com","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.18.0.29:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.18.0.29:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.18.0.29:3306","time":"2024-07-17T03:09:35.969Z","v":0}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,8 @@
{"name":"Log","hostname":"82b230f29283","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.command","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.19.0.3:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.19.0.3:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.19.0.3:3306","time":"2024-07-17T01:37:11.092Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.command","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.19.0.3:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.19.0.3:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.19.0.3:3306","time":"2024-07-17T01:37:12.405Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.command","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.19.0.3:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.19.0.3:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.19.0.3:3306","time":"2024-07-17T01:37:13.754Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.command","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.19.0.3:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.19.0.3:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.19.0.3:3306","time":"2024-07-17T01:37:15.132Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.command","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.19.0.3:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.19.0.3:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.19.0.3:3306","time":"2024-07-17T01:37:16.965Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.command","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.19.0.3:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.19.0.3:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.19.0.3:3306","time":"2024-07-17T01:37:19.547Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.command","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.19.0.3:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.19.0.3:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.19.0.3:3306","time":"2024-07-17T01:37:23.816Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.command","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.19.0.3:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.19.0.3:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.19.0.3:3306","time":"2024-07-17T01:37:31.264Z","v":0}

View File

@ -0,0 +1,179 @@
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Ghost is running in production...","time":"2024-07-17T01:37:10.991Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Your site is now available on https://libertyfusiondance.command/","time":"2024-07-17T01:37:10.992Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Ctrl+C to shut down","time":"2024-07-17T01:37:10.993Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Ghost server started in 0.455s","time":"2024-07-17T01:37:10.993Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.command","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.19.0.3:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.19.0.3:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.19.0.3:3306","time":"2024-07-17T01:37:11.092Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":40,"version":"5.87.2","msg":"Ghost is shutting down","time":"2024-07-17T01:37:11.093Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":40,"version":"5.87.2","msg":"Ghost has shut down","time":"2024-07-17T01:37:11.093Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":40,"version":"5.87.2","msg":"Your site is now offline","time":"2024-07-17T01:37:11.094Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":40,"version":"5.87.2","msg":"Ghost was running for a few seconds","time":"2024-07-17T01:37:11.094Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Ghost is running in production...","time":"2024-07-17T01:37:12.299Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Your site is now available on https://libertyfusiondance.command/","time":"2024-07-17T01:37:12.300Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Ctrl+C to shut down","time":"2024-07-17T01:37:12.301Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Ghost server started in 0.449s","time":"2024-07-17T01:37:12.301Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.command","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.19.0.3:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.19.0.3:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.19.0.3:3306","time":"2024-07-17T01:37:12.405Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":40,"version":"5.87.2","msg":"Ghost is shutting down","time":"2024-07-17T01:37:12.405Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":40,"version":"5.87.2","msg":"Ghost has shut down","time":"2024-07-17T01:37:12.406Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":40,"version":"5.87.2","msg":"Your site is now offline","time":"2024-07-17T01:37:12.407Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":40,"version":"5.87.2","msg":"Ghost was running for a few seconds","time":"2024-07-17T01:37:12.407Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Ghost is running in production...","time":"2024-07-17T01:37:13.655Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Your site is now available on https://libertyfusiondance.command/","time":"2024-07-17T01:37:13.656Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Ctrl+C to shut down","time":"2024-07-17T01:37:13.656Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Ghost server started in 0.438s","time":"2024-07-17T01:37:13.657Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.command","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.19.0.3:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.19.0.3:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.19.0.3:3306","time":"2024-07-17T01:37:13.754Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":40,"version":"5.87.2","msg":"Ghost is shutting down","time":"2024-07-17T01:37:13.755Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":40,"version":"5.87.2","msg":"Ghost has shut down","time":"2024-07-17T01:37:13.756Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":40,"version":"5.87.2","msg":"Your site is now offline","time":"2024-07-17T01:37:13.756Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":40,"version":"5.87.2","msg":"Ghost was running for a few seconds","time":"2024-07-17T01:37:13.757Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Ghost is running in production...","time":"2024-07-17T01:37:15.030Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Your site is now available on https://libertyfusiondance.command/","time":"2024-07-17T01:37:15.031Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Ctrl+C to shut down","time":"2024-07-17T01:37:15.032Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Ghost server started in 0.44s","time":"2024-07-17T01:37:15.033Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.command","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.19.0.3:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.19.0.3:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.19.0.3:3306","time":"2024-07-17T01:37:15.133Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":40,"version":"5.87.2","msg":"Ghost is shutting down","time":"2024-07-17T01:37:15.133Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":40,"version":"5.87.2","msg":"Ghost has shut down","time":"2024-07-17T01:37:15.134Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":40,"version":"5.87.2","msg":"Your site is now offline","time":"2024-07-17T01:37:15.134Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":40,"version":"5.87.2","msg":"Ghost was running for a few seconds","time":"2024-07-17T01:37:15.135Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Ghost is running in production...","time":"2024-07-17T01:37:16.865Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Your site is now available on https://libertyfusiondance.command/","time":"2024-07-17T01:37:16.866Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Ctrl+C to shut down","time":"2024-07-17T01:37:16.866Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Ghost server started in 0.434s","time":"2024-07-17T01:37:16.867Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.command","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.19.0.3:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.19.0.3:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.19.0.3:3306","time":"2024-07-17T01:37:16.965Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":40,"version":"5.87.2","msg":"Ghost is shutting down","time":"2024-07-17T01:37:16.966Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":40,"version":"5.87.2","msg":"Ghost has shut down","time":"2024-07-17T01:37:16.966Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":40,"version":"5.87.2","msg":"Your site is now offline","time":"2024-07-17T01:37:16.967Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":40,"version":"5.87.2","msg":"Ghost was running for a few seconds","time":"2024-07-17T01:37:16.968Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Ghost is running in production...","time":"2024-07-17T01:37:19.445Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Your site is now available on https://libertyfusiondance.command/","time":"2024-07-17T01:37:19.447Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Ctrl+C to shut down","time":"2024-07-17T01:37:19.447Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Ghost server started in 0.439s","time":"2024-07-17T01:37:19.448Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.command","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.19.0.3:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.19.0.3:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.19.0.3:3306","time":"2024-07-17T01:37:19.547Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":40,"version":"5.87.2","msg":"Ghost is shutting down","time":"2024-07-17T01:37:19.548Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":40,"version":"5.87.2","msg":"Ghost has shut down","time":"2024-07-17T01:37:19.549Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":40,"version":"5.87.2","msg":"Your site is now offline","time":"2024-07-17T01:37:19.549Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":40,"version":"5.87.2","msg":"Ghost was running for a few seconds","time":"2024-07-17T01:37:19.550Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Ghost is running in production...","time":"2024-07-17T01:37:23.714Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Your site is now available on https://libertyfusiondance.command/","time":"2024-07-17T01:37:23.715Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Ctrl+C to shut down","time":"2024-07-17T01:37:23.715Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Ghost server started in 0.435s","time":"2024-07-17T01:37:23.716Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.command","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.19.0.3:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.19.0.3:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.19.0.3:3306","time":"2024-07-17T01:37:23.816Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":40,"version":"5.87.2","msg":"Ghost is shutting down","time":"2024-07-17T01:37:23.817Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":40,"version":"5.87.2","msg":"Ghost has shut down","time":"2024-07-17T01:37:23.818Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":40,"version":"5.87.2","msg":"Your site is now offline","time":"2024-07-17T01:37:23.818Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":40,"version":"5.87.2","msg":"Ghost was running for a few seconds","time":"2024-07-17T01:37:23.819Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Ghost is running in production...","time":"2024-07-17T01:37:31.159Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Your site is now available on https://libertyfusiondance.command/","time":"2024-07-17T01:37:31.160Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Ctrl+C to shut down","time":"2024-07-17T01:37:31.160Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Ghost server started in 0.459s","time":"2024-07-17T01:37:31.161Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":50,"version":"5.87.2","err":{"id":500,"domain":"https://libertyfusiondance.command","code":"ECONNREFUSED","name":"DatabaseError","statusCode":500,"level":"critical","message":"connect ECONNREFUSED 172.19.0.3:3306","help":"\"Unknown database error\"","stack":"Error: connect ECONNREFUSED 172.19.0.3:3306\n at /var/lib/ghost/versions/5.87.2/node_modules/knex-migrator/lib/database.js:57:19\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)","hideStack":false},"msg":"connect ECONNREFUSED 172.19.0.3:3306","time":"2024-07-17T01:37:31.264Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":40,"version":"5.87.2","msg":"Ghost is shutting down","time":"2024-07-17T01:37:31.265Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":40,"version":"5.87.2","msg":"Ghost has shut down","time":"2024-07-17T01:37:31.266Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":40,"version":"5.87.2","msg":"Your site is now offline","time":"2024-07-17T01:37:31.266Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":40,"version":"5.87.2","msg":"Ghost was running for a few seconds","time":"2024-07-17T01:37:31.267Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Ghost is running in production...","time":"2024-07-17T01:37:44.998Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Your site is now available on https://libertyfusiondance.command/","time":"2024-07-17T01:37:44.999Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Ctrl+C to shut down","time":"2024-07-17T01:37:45.000Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Ghost server started in 0.454s","time":"2024-07-17T01:37:45.000Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":40,"version":"5.87.2","msg":"Database state requires initialisation.","time":"2024-07-17T01:37:45.112Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Creating table: newsletters","time":"2024-07-17T01:37:46.059Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Creating table: posts","time":"2024-07-17T01:37:46.371Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Creating table: posts_meta","time":"2024-07-17T01:37:47.402Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Creating table: users","time":"2024-07-17T01:37:47.944Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Creating table: posts_authors","time":"2024-07-17T01:37:48.200Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Creating table: roles","time":"2024-07-17T01:37:48.932Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Creating table: roles_users","time":"2024-07-17T01:37:49.070Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Creating table: permissions","time":"2024-07-17T01:37:49.162Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Creating table: permissions_users","time":"2024-07-17T01:37:49.312Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Creating table: permissions_roles","time":"2024-07-17T01:37:49.400Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Creating table: settings","time":"2024-07-17T01:37:49.529Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Creating table: tags","time":"2024-07-17T01:37:49.695Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Creating table: posts_tags","time":"2024-07-17T01:37:49.884Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Creating table: invites","time":"2024-07-17T01:37:50.702Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Creating table: brute","time":"2024-07-17T01:37:50.957Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Creating table: sessions","time":"2024-07-17T01:37:51.076Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Creating table: integrations","time":"2024-07-17T01:37:51.263Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Creating table: webhooks","time":"2024-07-17T01:37:51.439Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Creating table: api_keys","time":"2024-07-17T01:37:52.098Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Creating table: mobiledoc_revisions","time":"2024-07-17T01:37:52.271Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Creating table: post_revisions","time":"2024-07-17T01:37:52.462Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Creating table: members","time":"2024-07-17T01:37:52.998Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Creating table: products","time":"2024-07-17T01:37:53.415Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Creating table: offers","time":"2024-07-17T01:37:53.601Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Creating table: benefits","time":"2024-07-17T01:37:54.263Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Creating table: products_benefits","time":"2024-07-17T01:37:54.462Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Creating table: members_products","time":"2024-07-17T01:37:55.247Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Creating table: posts_products","time":"2024-07-17T01:37:56.040Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Creating table: members_created_events","time":"2024-07-17T01:37:56.993Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Creating table: members_cancel_events","time":"2024-07-17T01:37:57.461Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Creating table: members_payment_events","time":"2024-07-17T01:37:57.812Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Creating table: members_login_events","time":"2024-07-17T01:37:58.206Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Creating table: members_email_change_events","time":"2024-07-17T01:37:58.680Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Creating table: members_status_events","time":"2024-07-17T01:37:59.074Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Creating table: members_product_events","time":"2024-07-17T01:37:59.497Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Creating table: members_paid_subscription_events","time":"2024-07-17T01:38:00.229Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Creating table: labels","time":"2024-07-17T01:38:00.554Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Creating table: members_labels","time":"2024-07-17T01:38:00.870Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Creating table: members_stripe_customers","time":"2024-07-17T01:38:01.639Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Creating table: subscriptions","time":"2024-07-17T01:38:02.411Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Creating table: members_stripe_customers_subscriptions","time":"2024-07-17T01:38:03.527Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Creating table: members_subscription_created_events","time":"2024-07-17T01:38:04.760Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Creating table: offer_redemptions","time":"2024-07-17T01:38:05.580Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Creating table: members_subscribe_events","time":"2024-07-17T01:38:06.657Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Creating table: donation_payment_events","time":"2024-07-17T01:38:07.680Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Creating table: stripe_products","time":"2024-07-17T01:38:08.194Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Creating table: stripe_prices","time":"2024-07-17T01:38:08.755Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Creating table: actions","time":"2024-07-17T01:38:09.370Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Creating table: emails","time":"2024-07-17T01:38:09.486Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Creating table: email_batches","time":"2024-07-17T01:38:10.015Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Creating table: email_recipients","time":"2024-07-17T01:38:10.509Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Creating table: email_recipient_failures","time":"2024-07-17T01:38:11.701Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Creating table: tokens","time":"2024-07-17T01:38:12.698Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Creating table: snippets","time":"2024-07-17T01:38:12.878Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Creating table: custom_theme_settings","time":"2024-07-17T01:38:13.045Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Creating table: members_newsletters","time":"2024-07-17T01:38:13.140Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Creating table: comments","time":"2024-07-17T01:38:13.934Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Creating table: comment_likes","time":"2024-07-17T01:38:15.018Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Creating table: comment_reports","time":"2024-07-17T01:38:15.811Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Creating table: jobs","time":"2024-07-17T01:38:16.682Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Creating table: redirects","time":"2024-07-17T01:38:16.856Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Creating table: members_click_events","time":"2024-07-17T01:38:17.621Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Creating table: members_feedback","time":"2024-07-17T01:38:18.401Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Creating table: suppressions","time":"2024-07-17T01:38:19.061Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Creating table: email_spam_complaint_events","time":"2024-07-17T01:38:19.644Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Creating table: mentions","time":"2024-07-17T01:38:20.590Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Creating table: milestones","time":"2024-07-17T01:38:20.795Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Creating table: temp_mail_events","time":"2024-07-17T01:38:20.997Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Creating table: collections","time":"2024-07-17T01:38:21.258Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Creating table: collections_posts","time":"2024-07-17T01:38:21.573Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Creating table: recommendations","time":"2024-07-17T01:38:22.554Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Creating table: recommendation_click_events","time":"2024-07-17T01:38:22.760Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Creating table: recommendation_subscribe_events","time":"2024-07-17T01:38:23.655Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Model: Collection","time":"2024-07-17T01:38:24.691Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Model: Product","time":"2024-07-17T01:38:24.696Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Model: Newsletter","time":"2024-07-17T01:38:24.702Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Model: Tag","time":"2024-07-17T01:38:24.707Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Model: Permission","time":"2024-07-17T01:38:24.711Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Model: Post","time":"2024-07-17T01:38:24.859Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Model: Integration","time":"2024-07-17T01:38:25.128Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Relation: Role to Permission","time":"2024-07-17T01:38:25.167Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Relation: Post to Tag","time":"2024-07-17T01:38:25.350Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Database is in a ready state.","time":"2024-07-17T01:38:25.621Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Ghost database ready in 41.077s","time":"2024-07-17T01:38:25.623Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":40,"version":"5.87.2","msg":"Missing mail.from config, falling back to a generated email address. Please update your config file and set a valid from address","time":"2024-07-17T01:38:25.873Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Adding offloaded job to the queue","time":"2024-07-17T01:38:27.395Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Scheduling job mentions-email-report at 58 54 * * * *. Next run on: Wed Jul 17 2024 01:54:58 GMT+0000 (Coordinated Universal Time)","time":"2024-07-17T01:38:27.406Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Ghost URL Service Ready in 43.01s","time":"2024-07-17T01:38:27.556Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Adding one-off job to queue with current length = 0 called 'members-migrations'","time":"2024-07-17T01:38:27.618Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Stripe not configured - skipping migrations","time":"2024-07-17T01:38:27.655Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Adding offloaded job to the queue","time":"2024-07-17T01:38:28.083Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Scheduling job clean-expired-comped at 32 23 5 * * *. Next run on: Wed Jul 17 2024 05:23:32 GMT+0000 (Coordinated Universal Time)","time":"2024-07-17T01:38:28.099Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Adding offloaded job to the queue","time":"2024-07-17T01:38:28.130Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Scheduling job clean-tokens at 28 3 13 * * *. Next run on: Wed Jul 17 2024 13:03:28 GMT+0000 (Coordinated Universal Time)","time":"2024-07-17T01:38:28.147Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Ghost booted in 43.771s","time":"2024-07-17T01:38:28.317Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Adding offloaded job to the queue","time":"2024-07-17T01:38:28.323Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Scheduling job update-check at 12 17 3 * * *. Next run on: Wed Jul 17 2024 03:17:12 GMT+0000 (Coordinated Universal Time)","time":"2024-07-17T01:38:28.328Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":30,"version":"5.87.2","msg":"Running milestone emails job on Fri Jul 19 2024 01:38:28 GMT+0000 (Coordinated Universal Time)","time":"2024-07-17T01:38:28.341Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":40,"version":"5.87.2","msg":"Ghost is shutting down","time":"2024-07-17T01:39:31.520Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":40,"version":"5.87.2","msg":"Ghost has shut down","time":"2024-07-17T01:39:31.522Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":40,"version":"5.87.2","msg":"Your site is now offline","time":"2024-07-17T01:39:31.522Z","v":0}
{"name":"Log","hostname":"82b230f29283","pid":1,"level":40,"version":"5.87.2","msg":"Ghost was running for 2 minutes","time":"2024-07-17T01:39:31.523Z","v":0}

View File

@ -0,0 +1 @@
const adminUrl=window.location.href.replace("auth-frame/","")+"api/admin",siteOrigin="https://libertyfusiondance.com";window.addEventListener("message",(async function(i){if(i.origin!==siteOrigin)return void console.warn("Ignored message to admin auth iframe because of mismatch in origin","expected",siteOrigin,"got",i.origin,"with data",i.data);let t=null;try{t=JSON.parse(i.data)}catch(i){console.error(i)}function n(n,e){i.source.postMessage(JSON.stringify({uid:t.uid,error:n,result:e}),siteOrigin)}if("getUser"===t.action)try{const i=await fetch(adminUrl+"/users/me/");n(null,await i.json())}catch(i){n(i,null)}if("hideComment"===t.action)try{const i=await fetch(adminUrl+"/comments/"+t.id+"/",{method:"PUT",body:JSON.stringify({comments:[{id:t.id,status:"hidden"}]}),headers:{"Content-Type":"application/json"}});n(null,await i.json())}catch(i){n(i,null)}if("showComment"===t.action)try{const i=await fetch(adminUrl+"/comments/"+t.id+"/",{method:"PUT",body:JSON.stringify({comments:[{id:t.id,status:"published"}]}),headers:{"Content-Type":"application/json"}});n(null,await i.json())}catch(i){n(i,null)}}));

View File

@ -0,0 +1,6 @@
<!DOCTYPE html>
<html>
<head>
<script src="admin-auth.min.js"></script>
</head>
</html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
!async function(){const t={},e=new Set,o=document.querySelector("[data-ghost-comments-counts-api]").dataset.ghostCommentsCountsApi,n=function(o){(o.querySelectorAll?.("[data-ghost-comment-count]")||[]).forEach((o=>{t[o.dataset.ghostCommentCount]||e.add(o.dataset.ghostCommentCount)}))},a=async function(){const n=Array.from(e);if(e.clear(),!n.length)return;const a=await fetch(`${o}?ids=${n.join(",")}`,{method:"GET",headers:{Accept:"application/json","Content-Type":"application/json"}});if(200!==a.status)return;const s=await a.json();for(const[e,o]of Object.entries(s))t[e]=o;!function(){for(const[e,o]of Object.entries(t))document.querySelectorAll(`[data-ghost-comment-count="${e}"]`).forEach((t=>{let e=t.dataset.ghostCommentCountEmpty;if(1===o&&(e=t.dataset.ghostCommentCountSingular?`${o} ${t.dataset.ghostCommentCountSingular}`:o),o>1&&(e=t.dataset.ghostCommentCountPlural?`${o} ${t.dataset.ghostCommentCountPlural}`:o),e)if("false"!==t.dataset.ghostCommentCountAutowrap){const o=document.createElement(t.dataset.ghostCommentCountTag);t.dataset.ghostCommentCountClassName&&o.classList.add(t.dataset.ghostCommentCountClassName),o.textContent=e,t.insertAdjacentElement("afterend",o)}else t.insertAdjacentText("afterend",e);t.remove()}))}()};new MutationObserver((t=>{t.forEach((t=>{t.addedNodes.forEach((t=>{n(t),function(t,e=100){let o}()}))}))})).observe(document.body,{subtree:!0,childList:!0}),n(document.body),a()}();

View File

@ -0,0 +1 @@
const STORAGE_KEY="ghost-history",TIMEOUT=864e5,LIMIT=15;!async function(){try{const e=window.localStorage,r=e.getItem(STORAGE_KEY),t=(new Date).getTime();let i=[];if(r)try{i=JSON.parse(r)}catch(e){console.warn("[Member Attribution] Error while parsing history",e)}const a=i.findIndex((e=>{if(!e.time||"number"!=typeof e.time)return!1;const r=t-e.time;return!(isNaN(e.time)||r>TIMEOUT)}));let n,o,s,c,h;a>0?i.splice(0,a):-1===a&&(i=[]);try{const e=new URL(window.location.href);if(n=e.searchParams.get("ref"),o=e.searchParams.get("source"),s=e.searchParams.get("utm_source"),c=e.searchParams.get("utm_medium"),h=n||o||s||null,!h&&e.hash&&e.hash.includes("#/portal")){const e=new URL(window.location.href.replace("/#/portal",""));n=e.searchParams.get("ref"),o=e.searchParams.get("source"),s=e.searchParams.get("utm_source"),c=e.searchParams.get("utm_medium"),h=n||o||s||null}}catch(e){console.error("[Member Attribution] Parsing referrer from querystring failed",e)}const l=c||null,u=window.document.referrer||null;try{const e=new URL(window.location.href),r=e.searchParams;r.get("attribution_id")&&r.get("attribution_type")&&(i.push({time:t,id:r.get("attribution_id"),type:r.get("attribution_type"),referrerSource:h,referrerMedium:l,referrerUrl:u}),r.delete("attribution_id"),r.delete("attribution_type"),e.search="?"+r.toString(),window.history.replaceState({},"",`${e.pathname}${e.search}${e.hash}`))}catch(e){console.error("[Member Attribution] Parsing attribution from querystring failed",e)}const m=window.location.pathname;0===i.length||i[i.length-1].path!==m?i.push({path:m,time:t,referrerSource:h,referrerMedium:l,referrerUrl:u}):i.length>0&&(i[i.length-1].time=t,h&&(i[i.length-1].referrerSource=h,i[i.length-1].referrerMedium=l),u&&(i[i.length-1].referrerUrl=u)),i.length>15&&(i=i.slice(-15)),e.setItem(STORAGE_KEY,JSON.stringify(i))}catch(e){console.error("[Member Attribution] Failed with error",e)}}();

View File

@ -0,0 +1,10 @@
routes:
collections:
/:
permalink: /{slug}/
template: index
taxonomies:
tag: /tag/{slug}/
author: /author/{slug}/

View File

@ -0,0 +1 @@
/var/lib/ghost/current/content/themes/casper

View File

@ -0,0 +1,22 @@
Copyright (c) 2013-2023 Ghost Foundation
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
files (the "Software"), to deal in the Software without
restriction, including without limitation the rights to use,
copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following
conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.

View File

@ -0,0 +1,69 @@
# Casper
The default theme for [Ghost](http://github.com/tryghost/ghost/). This is the latest development version of Casper! If you're just looking to download the latest release, head over to the [releases](https://github.com/TryGhost/Casper/releases) page.
&nbsp;
![screenshot-desktop](https://user-images.githubusercontent.com/1418797/183329195-8e8f2ee5-a473-4694-a813-a2575491209e.png)
&nbsp;
# First time using a Ghost theme?
Ghost uses a simple templating language called [Handlebars](http://handlebarsjs.com/) for its themes.
This theme has lots of code comments to help explain what's going on just by reading the code. Once you feel comfortable with how everything works, we also have full [theme API documentation](https://ghost.org/docs/themes/) which explains every possible Handlebars helper and template.
**The main files are:**
- `default.hbs` - The parent template file, which includes your global header/footer
- `index.hbs` - The main template to generate a list of posts, usually the home page
- `post.hbs` - The template used to render individual posts
- `page.hbs` - Used for individual pages
- `tag.hbs` - Used for tag archives, eg. "all posts tagged with `news`"
- `author.hbs` - Used for author archives, eg. "all posts written by Jamie"
One neat trick is that you can also create custom one-off templates by adding the slug of a page to a template file. For example:
- `page-about.hbs` - Custom template for an `/about/` page
- `tag-news.hbs` - Custom template for `/tag/news/` archive
- `author-ali.hbs` - Custom template for `/author/ali/` archive
# Development
Casper styles are compiled using Gulp/PostCSS to polyfill future CSS spec. You'll need [Node](https://nodejs.org/), [Yarn](https://yarnpkg.com/) and [Gulp](https://gulpjs.com) installed globally. After that, from the theme's root directory:
```bash
# install dependencies
yarn install
# run development server
yarn dev
```
Now you can edit `/assets/css/` files, which will be compiled to `/assets/built/` automatically.
The `zip` Gulp task packages the theme files into `dist/<theme-name>.zip`, which you can then upload to your site.
```bash
# create .zip file
yarn zip
```
# PostCSS Features Used
- Autoprefixer - Don't worry about writing browser prefixes of any kind, it's all done automatically with support for the latest 2 major versions of every browser.
- [Color Mod](https://github.com/jonathantneal/postcss-color-mod-function)
# SVG Icons
Casper uses inline SVG icons, included via Handlebars partials. You can find all icons inside `/partials/icons`. To use an icon just include the name of the relevant file, eg. To include the SVG icon in `/partials/icons/rss.hbs` - use `{{> "icons/rss"}}`.
You can add your own SVG icons in the same manner.
# Copyright & License
Copyright (c) 2013-2023 Ghost Foundation - Released under the [MIT license](LICENSE).

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,2 @@
a,abbr,acronym,address,applet,article,aside,audio,big,blockquote,body,canvas,caption,cite,code,dd,del,details,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,ul,var,video{border:0;font:inherit;font-size:100%;margin:0;padding:0;vertical-align:baseline}body{line-height:1}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:"";content:none}img{display:block;height:auto;max-width:100%}html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;box-sizing:border-box;font-family:sans-serif}*,:after,:before{box-sizing:inherit}a{background-color:transparent}a:active,a:hover{outline:0}b,strong{font-weight:700}dfn,em,i{font-style:italic}h1{font-size:2em;margin:.67em 0}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}mark{background-color:#fdffb6}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}kbd{background:#f6f8fa;border:1px solid rgba(124,139,154,.25);border-radius:6px;box-shadow:inset 0 -1px 0 rgba(124,139,154,.25);font-family:var(--font-mono);font-size:1.5rem;padding:3px 5px}@media (max-width:600px){kbd{font-size:1.3rem}}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{border:none;overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input:focus{outline:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}legend{border:0;padding:0}textarea{overflow:auto}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}html{-webkit-tap-highlight-color:rgba(0,0,0,0);font-size:62.5%}body{text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-moz-font-feature-settings:"liga" on;background:#fff;color:var(--color-darkgrey);font-family:var(--font-sans);font-size:1.6rem;font-style:normal;font-weight:400;letter-spacing:0;line-height:1.6em}::-moz-selection{background:#daf2fd;text-shadow:none}::selection{background:#daf2fd;text-shadow:none}hr{border:0;border-top:1px solid #f0f0f0;display:block;height:1px;margin:2.5em 0 3.5em;padding:0;position:relative;width:100%}audio,canvas,iframe,img,svg,video{vertical-align:middle}fieldset{border:0;margin:0;padding:0}textarea{resize:vertical}::not(.gh-content) blockquote,::not(.gh-content) dl,::not(.gh-content) ol,::not(.gh-content) p,::not(.gh-content) ul{margin:0 0 1.5em}ol,ul{padding-left:1.3em;padding-right:1.5em}ol ol,ol ul,ul ol,ul ul{margin:.5em 0}ol,ul{max-width:100%}li{line-height:1.6em;padding-left:.3em}li+li{margin-top:.5em}dt{color:#daf2fd;float:left;font-weight:500;margin:0 20px 0 0;text-align:right;width:120px}dd{margin:0 0 5px;text-align:left}blockquote{border-left:#daf2fd;margin:1.5em 0;padding:0 1.6em}blockquote small{display:inline-block;font-size:.9em;margin:.8em 0 .8em 1.5em;opacity:.8}blockquote small:before{content:"\2014 \00A0"}blockquote cite{font-weight:700}blockquote cite a{font-weight:400}a{color:#15171a;text-decoration:none}h1,h2,h3,h4,h5,h6{text-rendering:optimizeLegibility;font-weight:600;letter-spacing:-.01em;line-height:1.15;margin-top:0}h1{font-size:4.8rem;font-weight:700;letter-spacing:-.015em;margin:0 0 .5em}@media (max-width:600px){h1{font-size:2.8rem}}h2{font-size:2.8rem;font-weight:700;margin:1.5em 0 .5em}@media (max-width:600px){h2{font-size:2.3rem}}h3{font-size:2.4rem;font-weight:600;margin:1.5em 0 .5em}@media (max-width:600px){h3{font-size:1.7rem}}h4{font-size:2rem;margin:1.5em 0 .5em}@media (max-width:600px){h4{font-size:1.7rem}}h5{font-size:2rem}h5,h6{margin:1.5em 0 .5em}h6{font-size:1.8rem}
/*# sourceMappingURL=global.css.map */

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,467 @@
/* Reset
/* ---------------------------------------------------------- */
html,
body,
div,
span,
applet,
object,
iframe,
h1,
h2,
h3,
h4,
h5,
h6,
p,
blockquote,
pre,
a,
abbr,
acronym,
address,
big,
cite,
code,
del,
dfn,
em,
img,
ins,
kbd,
q,
s,
samp,
small,
strike,
strong,
sub,
sup,
tt,
var,
dl,
dt,
dd,
ol,
ul,
li,
fieldset,
form,
label,
legend,
table,
caption,
tbody,
tfoot,
thead,
tr,
th,
td,
article,
aside,
canvas,
details,
embed,
figure,
figcaption,
footer,
header,
hgroup,
menu,
nav,
output,
ruby,
section,
summary,
time,
mark,
audio,
video {
margin: 0;
padding: 0;
border: 0;
font: inherit;
font-size: 100%;
vertical-align: baseline;
}
body {
line-height: 1;
}
blockquote,
q {
quotes: none;
}
blockquote:before,
blockquote:after,
q:before,
q:after {
content: "";
content: none;
}
table {
border-spacing: 0;
border-collapse: collapse;
}
img {
display: block;
max-width: 100%;
height: auto;
}
html {
box-sizing: border-box;
font-family: sans-serif;
-ms-text-size-adjust: 100%;
-webkit-text-size-adjust: 100%;
}
*,
*:before,
*:after {
box-sizing: inherit;
}
a {
background-color: transparent;
}
a:active,
a:hover {
outline: 0;
}
b,
strong {
font-weight: bold;
}
i,
em,
dfn {
font-style: italic;
}
h1 {
margin: 0.67em 0;
font-size: 2em;
}
small {
font-size: 80%;
}
sub,
sup {
position: relative;
font-size: 75%;
line-height: 0;
vertical-align: baseline;
}
sup {
top: -0.5em;
}
sub {
bottom: -0.25em;
}
img {
border: 0;
}
svg:not(:root) {
overflow: hidden;
}
mark {
background-color: #fdffb6;
}
code,
kbd,
pre,
samp {
font-family: monospace, monospace;
font-size: 1em;
}
kbd {
padding: 3px 5px;
font-family: var(--font-mono);
font-size: 1.5rem;
background: #f6f8fa;
border: 1px solid rgba(124, 139, 154, 0.25);
border-radius: 6px;
box-shadow: inset 0 -1px 0 rgba(124, 139, 154, 0.25);
}
@media (max-width: 600px) {
kbd {
font-size: 1.3rem;
}
}
button,
input,
optgroup,
select,
textarea {
margin: 0; /* 3 */
color: inherit; /* 1 */
font: inherit; /* 2 */
}
button {
overflow: visible;
border: none;
}
button,
select {
text-transform: none;
}
button,
html input[type="button"],
/* 1 */
input[type="reset"],
input[type="submit"] {
cursor: pointer; /* 3 */
-webkit-appearance: button; /* 2 */
}
button[disabled],
html input[disabled] {
cursor: default;
}
button::-moz-focus-inner,
input::-moz-focus-inner {
padding: 0;
border: 0;
}
input {
line-height: normal;
}
input:focus {
outline: none;
}
input[type="checkbox"],
input[type="radio"] {
box-sizing: border-box; /* 1 */
padding: 0; /* 2 */
}
input[type="number"]::-webkit-inner-spin-button,
input[type="number"]::-webkit-outer-spin-button {
height: auto;
}
input[type="search"] {
box-sizing: content-box; /* 2 */
-webkit-appearance: textfield; /* 1 */
}
input[type="search"]::-webkit-search-cancel-button,
input[type="search"]::-webkit-search-decoration {
-webkit-appearance: none;
}
legend {
padding: 0; /* 2 */
border: 0; /* 1 */
}
textarea {
overflow: auto;
}
table {
border-spacing: 0;
border-collapse: collapse;
}
td,
th {
padding: 0;
}
/* ==========================================================================
Base styles: opinionated defaults
========================================================================== */
html {
font-size: 62.5%;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
body {
color: var(--color-darkgrey);
font-family: var(--font-sans);
font-size: 1.6rem;
line-height: 1.6em;
font-weight: 400;
font-style: normal;
letter-spacing: 0;
text-rendering: optimizeLegibility;
background: #fff;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
-moz-font-feature-settings: "liga" on;
}
::selection {
text-shadow: none;
background: #daf2fd;
}
hr {
position: relative;
display: block;
width: 100%;
margin: 2.5em 0 3.5em;
padding: 0;
height: 1px;
border: 0;
border-top: 1px solid #f0f0f0;
}
audio,
canvas,
iframe,
img,
svg,
video {
vertical-align: middle;
}
fieldset {
margin: 0;
padding: 0;
border: 0;
}
textarea {
resize: vertical;
}
::not(.gh-content) p,
::not(.gh-content) ul,
::not(.gh-content) ol,
::not(.gh-content) dl,
::not(.gh-content) blockquote {
margin: 0 0 1.5em 0;
}
ol,
ul {
padding-left: 1.3em;
padding-right: 1.5em;
}
ol ol,
ul ul,
ul ol,
ol ul {
margin: 0.5em 0;
}
ul,
ol {
max-width: 100%;
}
li {
padding-left: 0.3em;
line-height: 1.6em;
}
li + li {
margin-top: 0.5em;
}
dt {
float: left;
margin: 0 20px 0 0;
width: 120px;
color: #daf2fd;
font-weight: 500;
text-align: right;
}
dd {
margin: 0 0 5px 0;
text-align: left;
}
blockquote {
margin: 1.5em 0;
padding: 0 1.6em 0 1.6em;
border-left: #daf2fd;
}
blockquote small {
display: inline-block;
margin: 0.8em 0 0.8em 1.5em;
font-size: 0.9em;
opacity: 0.8;
}
/* Quotation marks */
blockquote small:before {
content: "\2014 \00A0";
}
blockquote cite {
font-weight: bold;
}
blockquote cite a {
font-weight: normal;
}
a {
color: #15171A;
text-decoration: none;
}
h1,
h2,
h3,
h4,
h5,
h6 {
margin-top: 0;
line-height: 1.15;
font-weight: 600;
text-rendering: optimizeLegibility;
letter-spacing: -0.01em;
}
h1 {
margin: 0 0 0.5em 0;
font-size: 4.8rem;
font-weight: 700;
letter-spacing: -0.015em;
}
@media (max-width: 600px) {
h1 {
font-size: 2.8rem;
}
}
h2 {
margin: 1.5em 0 0.5em 0;
font-size: 2.8rem;
font-weight: 700;
}
@media (max-width: 600px) {
h2 {
font-size: 2.3rem;
}
}
h3 {
margin: 1.5em 0 0.5em 0;
font-size: 2.4rem;
font-weight: 600;
}
@media (max-width: 600px) {
h3 {
font-size: 1.7rem;
}
}
h4 {
margin: 1.5em 0 0.5em 0;
font-size: 2rem;
}
@media (max-width: 600px) {
h4 {
font-size: 1.7rem;
}
}
h5 {
margin: 1.5em 0 0.5em 0;
font-size: 2rem;
}
h6 {
margin: 1.5em 0 0.5em 0;
font-size: 1.8rem;
}

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 547 B

View File

@ -0,0 +1 @@
<svg width="264" height="88" viewBox="0 0 264 88" xmlns="http://www.w3.org/2000/svg"><title>default-skin 2</title><g fill="none" fill-rule="evenodd"><g><path d="M67.002 59.5v3.768c-6.307.84-9.184 5.75-10.002 9.732 2.22-2.83 5.564-5.098 10.002-5.098V71.5L73 65.585 67.002 59.5z" id="Shape" fill="#fff"/><g fill="#fff"><path d="M13 29v-5h2v3h3v2h-5zM13 15h5v2h-3v3h-2v-5zM31 15v5h-2v-3h-3v-2h5zM31 29h-5v-2h3v-3h2v5z" id="Shape"/></g><g fill="#fff"><path d="M62 24v5h-2v-3h-3v-2h5zM62 20h-5v-2h3v-3h2v5zM70 20v-5h2v3h3v2h-5zM70 24h5v2h-3v3h-2v-5z"/></g><path d="M20.586 66l-5.656-5.656 1.414-1.414L22 64.586l5.656-5.656 1.414 1.414L23.414 66l5.656 5.656-1.414 1.414L22 67.414l-5.656 5.656-1.414-1.414L20.586 66z" fill="#fff"/><path d="M111.785 65.03L110 63.5l3-3.5h-10v-2h10l-3-3.5 1.785-1.468L117 59l-5.215 6.03z" fill="#fff"/><path d="M152.215 65.03L154 63.5l-3-3.5h10v-2h-10l3-3.5-1.785-1.468L147 59l5.215 6.03z" fill="#fff"/><g><path id="Rectangle-11" fill="#fff" d="M160.957 28.543l-3.25-3.25-1.413 1.414 3.25 3.25z"/><path d="M152.5 27c3.038 0 5.5-2.462 5.5-5.5s-2.462-5.5-5.5-5.5-5.5 2.462-5.5 5.5 2.462 5.5 5.5 5.5z" id="Oval-1" stroke="#fff" stroke-width="1.5"/><path fill="#fff" d="M150 21h5v1h-5z"/></g><g><path d="M116.957 28.543l-1.414 1.414-3.25-3.25 1.414-1.414 3.25 3.25z" fill="#fff"/><path d="M108.5 27c3.038 0 5.5-2.462 5.5-5.5s-2.462-5.5-5.5-5.5-5.5 2.462-5.5 5.5 2.462 5.5 5.5 5.5z" stroke="#fff" stroke-width="1.5"/><path fill="#fff" d="M106 21h5v1h-5z"/><path fill="#fff" d="M109.043 19.008l-.085 5-1-.017.085-5z"/></g></g></g></svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 866 B

View File

@ -0,0 +1,85 @@
(function () {
const mediaQuery = window.matchMedia('(max-width: 767px)');
const head = document.querySelector('.gh-head');
const menu = head.querySelector('.gh-head-menu');
const nav = menu.querySelector('.nav');
if (!nav) return;
const logo = document.querySelector('.gh-head-logo');
const navHTML = nav.innerHTML;
if (mediaQuery.matches) {
const items = nav.querySelectorAll('li');
items.forEach(function (item, index) {
item.style.transitionDelay = 0.03 * (index + 1) + 's';
});
}
var windowClickListener;
const makeDropdown = function () {
if (mediaQuery.matches) return;
const submenuItems = [];
while ((nav.offsetWidth + 64) > menu.offsetWidth) {
if (nav.lastElementChild) {
submenuItems.unshift(nav.lastElementChild);
nav.lastElementChild.remove();
} else {
return;
}
}
if (!submenuItems.length) {
document.body.classList.add('is-dropdown-loaded');
return;
}
const toggle = document.createElement('button');
toggle.setAttribute('class', 'nav-more-toggle');
toggle.setAttribute('aria-label', 'More');
toggle.innerHTML = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" fill="currentColor"><path d="M21.333 16c0-1.473 1.194-2.667 2.667-2.667v0c1.473 0 2.667 1.194 2.667 2.667v0c0 1.473-1.194 2.667-2.667 2.667v0c-1.473 0-2.667-1.194-2.667-2.667v0zM13.333 16c0-1.473 1.194-2.667 2.667-2.667v0c1.473 0 2.667 1.194 2.667 2.667v0c0 1.473-1.194 2.667-2.667 2.667v0c-1.473 0-2.667-1.194-2.667-2.667v0zM5.333 16c0-1.473 1.194-2.667 2.667-2.667v0c1.473 0 2.667 1.194 2.667 2.667v0c0 1.473-1.194 2.667-2.667 2.667v0c-1.473 0-2.667-1.194-2.667-2.667v0z"></path></svg>';
const wrapper = document.createElement('div');
wrapper.setAttribute('class', 'gh-dropdown');
if (submenuItems.length >= 10) {
document.body.classList.add('is-dropdown-mega');
wrapper.style.gridTemplateRows = 'repeat(' + Math.ceil(submenuItems.length / 2) + ', 1fr)';
} else {
document.body.classList.remove('is-dropdown-mega');
}
submenuItems.forEach(function (child) {
wrapper.appendChild(child);
});
toggle.appendChild(wrapper);
nav.appendChild(toggle);
document.body.classList.add('is-dropdown-loaded');
toggle.addEventListener('click', function () {
document.body.classList.toggle('is-dropdown-open');
});
windowClickListener = function (e) {
if (!toggle.contains(e.target) && document.body.classList.contains('is-dropdown-open')) {
document.body.classList.remove('is-dropdown-open');
}
};
window.addEventListener('click', windowClickListener);
}
imagesLoaded(head, function () {
makeDropdown();
});
window.addEventListener('resize', function () {
setTimeout(function () {
window.removeEventListener('click', windowClickListener);
nav.innerHTML = navHTML;
makeDropdown();
}, 1);
});
})();

View File

@ -0,0 +1,114 @@
/* eslint-env browser */
/**
* Infinite Scroll
* Used on all pages where there is a list of posts (homepage, tag index, etc).
*
* When the page is scrolled to 300px from the bottom, the next page of posts
* is fetched by following the the <link rel="next" href="..."> that is output
* by {{ghost_head}}.
*
* The individual post items are extracted from the fetched pages by looking for
* a wrapper element with the class "post-card". Any found elements are appended
* to the element with the class "post-feed" in the currently viewed page.
*/
(function (window, document) {
if (document.documentElement.classList.contains('no-infinite-scroll')) return;
// next link element
var nextElement = document.querySelector('link[rel=next]');
if (!nextElement) {
return;
}
// post feed element
var feedElement = document.querySelector('.post-feed');
if (!feedElement) {
return;
}
var buffer = 300;
var ticking = false;
var loading = false;
var lastScrollY = window.scrollY;
var lastWindowHeight = window.innerHeight;
var lastDocumentHeight = document.documentElement.scrollHeight;
function onPageLoad() {
if (this.status === 404) {
window.removeEventListener('scroll', onScroll);
window.removeEventListener('resize', onResize);
return;
}
// append contents
var postElements = this.response.querySelectorAll('article.post-card');
postElements.forEach(function (item) {
// document.importNode is important, without it the item's owner
// document will be different which can break resizing of
// `object-fit: cover` images in Safari
feedElement.appendChild(document.importNode(item, true));
});
// set next link
var resNextElement = this.response.querySelector('link[rel=next]');
if (resNextElement) {
nextElement.href = resNextElement.href;
} else {
window.removeEventListener('scroll', onScroll);
window.removeEventListener('resize', onResize);
}
// sync status
lastDocumentHeight = document.documentElement.scrollHeight;
ticking = false;
loading = false;
}
function onUpdate() {
// return if already loading
if (loading) {
return;
}
// return if not scroll to the bottom
if (lastScrollY + lastWindowHeight <= lastDocumentHeight - buffer) {
ticking = false;
return;
}
loading = true;
var xhr = new window.XMLHttpRequest();
xhr.responseType = 'document';
xhr.addEventListener('load', onPageLoad);
xhr.open('GET', nextElement.href);
xhr.send(null);
}
function requestTick() {
ticking || window.requestAnimationFrame(onUpdate);
ticking = true;
}
function onScroll() {
lastScrollY = window.scrollY;
requestTick();
}
function onResize() {
lastWindowHeight = window.innerHeight;
lastDocumentHeight = document.documentElement.scrollHeight;
requestTick();
}
window.addEventListener('scroll', onScroll, {passive: true});
window.addEventListener('resize', onResize);
requestTick();
})(window, document);

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,89 @@
/*jshint browser:true */
/*!
* FitVids 1.3
*
*
* Copyright 2017, Chris Coyier + Dave Rupert + Ghost Foundation
* This is an unofficial release, ported by John O'Nolan
* Credit to Thierry Koblentz - http://www.alistapart.com/articles/creating-intrinsic-ratios-for-video/
* Released under the MIT license
*
*/
;(function( $ ){
'use strict';
$.fn.fitVids = function( options ) {
var settings = {
customSelector: null,
ignore: null
};
if(!document.getElementById('fit-vids-style')) {
// appendStyles: https://github.com/toddmotto/fluidvids/blob/master/dist/fluidvids.js
var head = document.head || document.getElementsByTagName('head')[0];
var css = '.fluid-width-video-container{flex-grow: 1;width:100%;}.fluid-width-video-wrapper{width:100%;position:relative;padding:0;}.fluid-width-video-wrapper iframe,.fluid-width-video-wrapper object,.fluid-width-video-wrapper embed {position:absolute;top:0;left:0;width:100%;height:100%;}';
var div = document.createElement("div");
div.innerHTML = '<p>x</p><style id="fit-vids-style">' + css + '</style>';
head.appendChild(div.childNodes[1]);
}
if ( options ) {
$.extend( settings, options );
}
return this.each(function(){
var selectors = [
'iframe[src*="player.vimeo.com"]',
'iframe[src*="youtube.com"]',
'iframe[src*="youtube-nocookie.com"]',
'iframe[src*="kickstarter.com"][src*="video.html"]',
'object',
'embed'
];
if (settings.customSelector) {
selectors.push(settings.customSelector);
}
var ignoreList = '.fitvidsignore';
if(settings.ignore) {
ignoreList = ignoreList + ', ' + settings.ignore;
}
var $allVideos = $(this).find(selectors.join(','));
$allVideos = $allVideos.not('object object'); // SwfObj conflict patch
$allVideos = $allVideos.not(ignoreList); // Disable FitVids on this video.
$allVideos.each(function(){
var $this = $(this);
if($this.parents(ignoreList).length > 0) {
return; // Disable FitVids on this video.
}
if (this.tagName.toLowerCase() === 'embed' && $this.parent('object').length || $this.parent('.fluid-width-video-wrapper').length) { return; }
if ((!$this.css('height') && !$this.css('width')) && (isNaN($this.attr('height')) || isNaN($this.attr('width'))))
{
$this.attr('height', 9);
$this.attr('width', 16);
}
var height = ( this.tagName.toLowerCase() === 'object' || ($this.attr('height') && !isNaN(parseInt($this.attr('height'), 10))) ) ? parseInt($this.attr('height'), 10) : $this.height(),
width = !isNaN(parseInt($this.attr('width'), 10)) ? parseInt($this.attr('width'), 10) : $this.width(),
aspectRatio = height / width;
if(!$this.attr('name')){
var videoName = 'fitvid' + $.fn.fitVids._count;
$this.attr('name', videoName);
$.fn.fitVids._count++;
}
$this.wrap('<div class="fluid-width-video-container"><div class="fluid-width-video-wrapper"></div></div>').parent('.fluid-width-video-wrapper').css('padding-top', (aspectRatio * 100)+'%');
$this.removeAttr('height').removeAttr('width');
});
});
};
// Internal counter for unique video names.
$.fn.fitVids._count = 0;
// Works with either jQuery or Zepto
})( window.jQuery || window.Zepto );

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,109 @@
function lightbox(trigger) {
var onThumbnailsClick = function (e) {
e.preventDefault();
var items = [];
var index = 0;
var prevSibling = e.target.closest('.kg-card').previousElementSibling;
while (prevSibling && (prevSibling.classList.contains('kg-image-card') || prevSibling.classList.contains('kg-gallery-card'))) {
var prevItems = [];
prevSibling.querySelectorAll('img').forEach(function (item) {
prevItems.push({
src: item.getAttribute('src'),
msrc: item.getAttribute('src'),
w: item.getAttribute('width'),
h: item.getAttribute('height'),
el: item,
})
index += 1;
});
prevSibling = prevSibling.previousElementSibling;
items = prevItems.concat(items);
}
if (e.target.classList.contains('kg-image')) {
items.push({
src: e.target.getAttribute('src'),
msrc: e.target.getAttribute('src'),
w: e.target.getAttribute('width'),
h: e.target.getAttribute('height'),
el: e.target,
});
} else {
var reachedCurrentItem = false;
e.target.closest('.kg-gallery-card').querySelectorAll('img').forEach(function (item) {
items.push({
src: item.getAttribute('src'),
msrc: item.getAttribute('src'),
w: item.getAttribute('width'),
h: item.getAttribute('height'),
el: item,
});
if (!reachedCurrentItem && item !== e.target) {
index += 1;
} else {
reachedCurrentItem = true;
}
});
}
var nextSibling = e.target.closest('.kg-card').nextElementSibling;
while (nextSibling && (nextSibling.classList.contains('kg-image-card') || nextSibling.classList.contains('kg-gallery-card'))) {
nextSibling.querySelectorAll('img').forEach(function (item) {
items.push({
src: item.getAttribute('src'),
msrc: item.getAttribute('src'),
w: item.getAttribute('width'),
h: item.getAttribute('height'),
el: item,
})
});
nextSibling = nextSibling.nextElementSibling;
}
var pswpElement = document.querySelectorAll('.pswp')[0];
var options = {
bgOpacity: 0.9,
closeOnScroll: true,
fullscreenEl: false,
history: false,
index: index,
shareEl: false,
zoomEl: false,
getThumbBoundsFn: function(index) {
var thumbnail = items[index].el,
pageYScroll = window.pageYOffset || document.documentElement.scrollTop,
rect = thumbnail.getBoundingClientRect();
return {x:rect.left, y:rect.top + pageYScroll, w:rect.width};
}
}
var gallery = new PhotoSwipe(pswpElement, PhotoSwipeUI_Default, items, options);
gallery.init();
return false;
};
var triggers = document.querySelectorAll(trigger);
triggers.forEach(function (trig) {
trig.addEventListener('click', function (e) {
onThumbnailsClick(e);
});
});
}
(function () {
lightbox(
'.kg-image-card > .kg-image[width][height], .kg-gallery-image > img'
);
})();

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

View File

@ -0,0 +1,76 @@
{{!< default}}
{{!-- The tag above means - insert everything in this file into the {body} of the default.hbs template --}}
<main id="site-main" class="site-main outer">
<div class="inner posts">
<div class="post-feed">
{{#author}}
<section class="post-card post-card-large">
{{#if cover_image}}
<div class="post-card-image-link">
{{!-- This is a responsive image, it loads different sizes depending on device
https://medium.freecodecamp.org/a-guide-to-responsive-images-with-ready-to-use-templates-c400bd65c433 --}}
<img class="post-card-image"
srcset="{{img_url cover_image size="s"}} 300w,
{{img_url cover_image size="m"}} 600w,
{{img_url cover_image size="l"}} 1000w,
{{img_url cover_image size="xl"}} 2000w"
sizes="(max-width: 1000px) 400px, 800px"
src="{{img_url cover_image size="m"}}"
alt="{{title}}"
/>
</div>
{{/if}}
<div class="post-card-content">
<div class="post-card-content-link">
{{#if profile_image}}
<img class="author-profile-pic" src="{{profile_image}}" alt="{{name}}" />
{{/if}}
<header class="post-card-header">
<h2 class="post-card-title">{{name}}</h2>
</header>
{{#if bio}}
<div class="post-card-excerpt">{{bio}}</div>
{{/if}}
<footer class="author-profile-footer">
{{#if location}}
<div class="author-profile-location">{{location}}</div>
{{/if}}
<div class="author-profile-meta">
{{#if website}}
<a class="author-profile-social-link" href="{{website}}" target="_blank" rel="noopener">{{website}}</a>
{{/if}}
{{#if twitter}}
<a class="author-profile-social-link" href="{{twitter_url}}" target="_blank" rel="noopener">{{> "icons/twitter"}}</a>
{{/if}}
{{#if facebook}}
<a class="author-profile-social-link" href="{{facebook_url}}" target="_blank" rel="noopener">{{> "icons/facebook"}}</a>
{{/if}}
</div>
</footer>
</div>
</div>
</section>
{{/author}}
{{#foreach posts}}
{{!-- The tag below includes the markup for each post - partials/post-card.hbs --}}
{{> "post-card"}}
{{/foreach}}
</div>
{{pagination}}
</div>
</main>

View File

@ -0,0 +1,118 @@
<!DOCTYPE html>
<html lang="{{@site.locale}}"{{#match @custom.color_scheme "Dark"}} class="dark-mode"{{else match @custom.color_scheme "Auto"}} class="auto-color"{{/match}}>
<head>
{{!-- Basic meta - advanced meta is output with {ghost_head} below --}}
<title>{{meta_title}}</title>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="HandheldFriendly" content="True" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
{{!-- Preload scripts --}}
<link rel="preload" as="style" href="{{asset "built/screen.css"}}" />
<link rel="preload" as="script" href="{{asset "built/casper.js"}}" />
{{!-- Theme assets - use the {asset} helper to reference styles & scripts,
this will take care of caching and cache-busting automatically --}}
<link rel="stylesheet" type="text/css" href="{{asset "built/screen.css"}}" />
{{!-- This tag outputs all your advanced SEO meta, structured data, and other important settings,
it should always be the last tag before the closing head tag --}}
{{ghost_head}}
</head>
<body class="{{body_class}} is-head-{{#match @custom.navigation_layout "Logo on cover"}}left-logo{{else match @custom.navigation_layout "Logo in the middle"}}middle-logo{{else}}stacked{{/match}}{{#match @custom.title_font "=" "Elegant serif"}} has-serif-title{{/match}}{{#match @custom.body_font "=" "Modern sans-serif"}} has-sans-body{{/match}}{{#if @custom.show_publication_cover}} has-cover{{/if}}">
<div class="viewport">
<header id="gh-head" class="gh-head outer{{#match @custom.header_style "Hidden"}} is-header-hidden{{/match}}">
<div class="gh-head-inner inner">
<div class="gh-head-brand">
<a class="gh-head-logo{{#unless @site.logo}} no-image{{/unless}}" href="{{@site.url}}">
{{#if @site.logo}}
<img src="{{@site.logo}}" alt="{{@site.title}}">
{{else}}
{{@site.title}}
{{/if}}
</a>
{{!-- <button class="gh-search gh-icon-btn" aria-label="Search this site" data-ghost-search>{{> "icons/search"}}</button> --}}
<button class="gh-burger" aria-label="Main Menu"></button>
</div>
<nav class="gh-head-menu">
{{navigation}}
{{#unless @site.members_enabled}}
{{#match @custom.navigation_layout "Stacked"}}
{{!-- <button class="gh-search gh-icon-btn" aria-label="Search this site" data-ghost-search>{{> "icons/search"}}</button> --}}
{{/match}}
{{/unless}}
</nav>
<div class="gh-head-actions">
{{#unless @site.members_enabled}}
{{^match @custom.navigation_layout "Stacked"}}
{{!-- <button class="gh-search gh-icon-btn" aria-label="Search this site" data-ghost-search>{{> "icons/search"}}</button> --}}
{{/match}}
{{else}}
{{!-- <button class="gh-search gh-icon-btn" aria-label="Search this site" data-ghost-search>{{> "icons/search"}}</button> --}}
<div class="gh-head-members">
{{#unless @member}}
{{#unless @site.members_invite_only}}
<a class="gh-head-button" href="#/portal/signup" data-portal="signup">Subscribe</a>
{{else}}
{{/unless}}
{{else}}
<a class="gh-head-button" href="#/portal/account" data-portal="account">Account</a>
{{/unless}}
</div>
{{/unless}}
</div>
</div>
</header>
<div class="site-content">
{{!-- All other templates get inserted here, index.hbs, post.hbs, etc --}}
{{{body}}}
</div>
{{!-- The global footer at the very bottom of the screen --}}
<footer class="site-footer outer">
<div class="inner">
<section class="copyright"><a href="{{@site.url}}">{{@site.title}}</a> &copy; {{date format="YYYY"}}</section>
<nav class="site-footer-nav">
{{navigation type="secondary"}}
</nav>
{{!-- <div class="gh-powered-by"><a href="https://ghost.org/" target="_blank" rel="noopener">Powered by Ghost</a></div> --}}
</div>
</footer>
</div>
{{!-- /.viewport --}}
{{#is "post, page"}}
{{> "lightbox"}}
{{/is}}
{{!-- Scripts - handle member signups, responsive videos, infinite scroll, floating headers, and galleries --}}
<script
src="https://code.jquery.com/jquery-3.5.1.min.js"
integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0="
crossorigin="anonymous">
</script>
<script src="{{asset "built/casper.js"}}"></script>
<script>
$(document).ready(function () {
// Mobile Menu Trigger
$('.gh-burger').click(function () {
$('body').toggleClass('gh-head-open');
});
// FitVids - Makes video embeds responsive
$(".gh-content").fitVids();
});
</script>
{{!-- Ghost outputs required functional scripts with this tag - it should always be the last thing before the closing body tag --}}
{{ghost_foot}}
</body>
</html>

View File

@ -0,0 +1,37 @@
{{!< default}}
{{!--
There are two error files in this theme, one for 404s and one for all other errors.
This file is the former, and handles all 404 Page Not Found errors.
The 404 error is the most common error that a visitor might see, for example when
following a broken link
Keep this template as lightweight as you can!
--}}
<section class="outer error-content">
<div class="inner">
<section class="error-message">
<h1 class="error-code">{{statusCode}}</h1>
<p class="error-description">{{message}}</p>
<a class="error-link" href="{{@site.url}}">Go to the front page →</a>
</section>
</div>
</section>
{{!-- Given that people landing on this page didn't find what they
were looking for, let's give them some alternative stuff to read. --}}
<aside class="read-more-wrap outer">
<div class="read-more inner">
{{#get "posts" include="authors" limit="3" as |more_posts|}}
{{#if more_posts}}
{{#foreach more_posts}}
{{> "post-card"}}
{{/foreach}}
{{/if}}
{{/get}}
</div>
</aside>

View File

@ -0,0 +1,74 @@
{{!--
There are two error files in this theme, one for 404s and one for all other errors.
This file is the latter, and handles all 400/500 errors that might occur.
Because 500 errors in particular usually happen when a server is struggling, this
template is as simple as possible. No template dependencies, no JS, no API calls.
This is to prevent rendering the error-page itself compounding the issue causing
the error in the first place.
Keep this template as lightweight as you can!
--}}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<title>{{meta_title}}</title>
<meta name="HandheldFriendly" content="True" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="stylesheet" type="text/css" href="{{asset "built/screen.css"}}" />
</head>
<body>
<div class="site-wrapper">
<header class="site-header no-image">
<div class="site-nav-main outer">
<div class="inner">
<nav class="site-nav-center">
{{#if @site.logo}}
<a class="site-nav-logo" href="{{@site.url}}"><img src="{{img_url @site.logo size="xs"}}"
alt="{{@site.title}}" /></a>
{{else}}
<a class="site-nav-logo" href="{{@site.url}}">{{@site.title}}</a>
{{/if}}
</nav>
</div>
</div>
</header>
<main class="outer error-content">
<div class="inner">
<section class="error-message">
<h1 class="error-code">{{statusCode}}</h1>
<p class="error-description">{{message}}</p>
<a class="error-link" href="{{@site.url}}">Go to the front page →</a>
</section>
{{#if errorDetails}}
<section class="error-stack">
<h3>Theme errors</h3>
<ul class="error-stack-list">
{{#foreach errorDetails}}
<li>
<em class="error-stack-function">{{{rule}}}</em>
{{#foreach failures}}
<p><span class="error-stack-file">Ref: {{ref}}</span></p>
<p><span class="error-stack-file">Message: {{message}}</span></p>
{{/foreach}}
</li>
{{/foreach}}
</ul>
</section>
{{/if}}
</div>
</main>
</div>
</body>
</html>

View File

@ -0,0 +1,176 @@
const {series, watch, src, dest, parallel} = require('gulp');
const pump = require('pump');
const path = require('path');
const releaseUtils = require('@tryghost/release-utils');
const inquirer = require('inquirer');
// gulp plugins and utils
const livereload = require('gulp-livereload');
const postcss = require('gulp-postcss');
const zip = require('gulp-zip');
const concat = require('gulp-concat');
const uglify = require('gulp-uglify');
const beeper = require('beeper');
const fs = require('fs');
// postcss plugins
const autoprefixer = require('autoprefixer');
const colorFunction = require('postcss-color-mod-function');
const cssnano = require('cssnano');
const easyimport = require('postcss-easy-import');
const REPO = 'TryGhost/Casper';
const REPO_READONLY = 'TryGhost/Casper';
const CHANGELOG_PATH = path.join(process.cwd(), '.', 'changelog.md');
function serve(done) {
livereload.listen();
done();
}
const handleError = (done) => {
return function (err) {
if (err) {
beeper();
}
return done(err);
};
};
function hbs(done) {
pump([
src(['*.hbs', 'partials/**/*.hbs']),
livereload()
], handleError(done));
}
function css(done) {
pump([
src('assets/css/*.css', {sourcemaps: true}),
postcss([
easyimport,
colorFunction(),
autoprefixer(),
cssnano()
]),
dest('assets/built/', {sourcemaps: '.'}),
livereload()
], handleError(done));
}
function js(done) {
pump([
src([
// pull in lib files first so our own code can depend on it
'assets/js/lib/*.js',
'assets/js/*.js'
], {sourcemaps: true}),
concat('casper.js'),
uglify(),
dest('assets/built/', {sourcemaps: '.'}),
livereload()
], handleError(done));
}
function zipper(done) {
const filename = require('./package.json').name + '.zip';
pump([
src([
'**',
'!node_modules', '!node_modules/**',
'!dist', '!dist/**',
'!yarn-error.log',
'!yarn.lock',
'!gulpfile.js'
]),
zip(filename),
dest('dist/')
], handleError(done));
}
const cssWatcher = () => watch('assets/css/**', css);
const jsWatcher = () => watch('assets/js/**', js);
const hbsWatcher = () => watch(['*.hbs', 'partials/**/*.hbs'], hbs);
const watcher = parallel(cssWatcher, jsWatcher, hbsWatcher);
const build = series(css, js);
exports.build = build;
exports.zip = series(build, zipper);
exports.default = series(build, serve, watcher);
exports.release = async () => {
// @NOTE: https://yarnpkg.com/lang/en/docs/cli/version/
// require(./package.json) can run into caching issues, this re-reads from file everytime on release
let packageJSON = JSON.parse(fs.readFileSync('./package.json'));
const newVersion = packageJSON.version;
if (!newVersion || newVersion === '') {
console.log(`Invalid version: ${newVersion}`);
return;
}
console.log(`\nCreating release for ${newVersion}...`);
const githubToken = process.env.GST_TOKEN;
if (!githubToken) {
console.log('Please configure your environment with a GitHub token located in GST_TOKEN');
return;
}
try {
const result = await inquirer.prompt([{
type: 'input',
name: 'compatibleWithGhost',
message: 'Which version of Ghost is it compatible with?',
default: '5.0.0'
}]);
const compatibleWithGhost = result.compatibleWithGhost;
const releasesResponse = await releaseUtils.releases.get({
userAgent: 'Casper',
uri: `https://api.github.com/repos/${REPO_READONLY}/releases`
});
if (!releasesResponse || !releasesResponse) {
console.log('No releases found. Skipping...');
return;
}
let previousVersion = releasesResponse[0].tag_name || releasesResponse[0].name;
console.log(`Previous version: ${previousVersion}`);
const changelog = new releaseUtils.Changelog({
changelogPath: CHANGELOG_PATH,
folder: path.join(process.cwd(), '.')
});
changelog
.write({
githubRepoPath: `https://github.com/${REPO}`,
lastVersion: previousVersion
})
.sort()
.clean();
const newReleaseResponse = await releaseUtils.releases.create({
draft: true,
preRelease: false,
tagName: 'v' + newVersion,
releaseName: newVersion,
userAgent: 'Casper',
uri: `https://api.github.com/repos/${REPO}/releases`,
github: {
token: githubToken
},
content: [`**Compatible with Ghost ≥ ${compatibleWithGhost}**\n\n`],
changelogPath: CHANGELOG_PATH
});
console.log(`\nRelease draft generated: ${newReleaseResponse.releaseUrl}\n`);
} catch (err) {
console.error(err);
process.exit(1);
}
};

View File

@ -0,0 +1,54 @@
{{!< default}}
{{!-- The tag above means: insert everything in this file
into the {body} of the default.hbs template --}}
<div class="site-header-content outer{{#match @custom.header_style "Left aligned"}} left-aligned{{/match}}{{#unless @custom.show_publication_cover}}{{#match @custom.header_style "Hidden"}} no-content{{/match}}{{/unless}}">
{{#if @custom.show_publication_cover}}
{{#if @site.cover_image}}
{{!-- This is a responsive image, it loads different sizes depending on device
https://medium.freecodecamp.org/a-guide-to-responsive-images-with-ready-to-use-templates-c400bd65c433 --}}
<img class="site-header-cover"
srcset="{{img_url @site.cover_image size="s"}} 300w,
{{img_url @site.cover_image size="m"}} 600w,
{{img_url @site.cover_image size="l"}} 1000w,
{{img_url @site.cover_image size="xl"}} 2000w"
sizes="100vw"
src="{{img_url @site.cover_image size="xl"}}"
alt="{{@site.title}}"
/>
{{/if}}
{{/if}}
{{#match @custom.header_style "!=" "Hidden"}}
<div class="site-header-inner inner">
{{#match @custom.navigation_layout "Logo on cover"}}
{{#if @site.logo}}
<img class="site-logo" src="{{@site.logo}}" alt="{{@site.title}}">
{{else}}
<h1 class="site-title">{{@site.title}}</h1>
{{/if}}
{{/match}}
{{#if @site.description}}
<p class="site-description">{{@site.description}}</p>
{{/if}}
</div>
{{/match}}
</div>
{{!-- The main content area --}}
<main id="site-main" class="site-main outer">
<div class="inner posts">
<div class="post-feed">
{{#foreach posts}}
{{!-- The tag below includes the markup for each post - partials/post-card.hbs --}}
{{> "post-card"}}
{{/foreach}}
</div>
{{pagination}}
</div>
</main>

View File

@ -0,0 +1,179 @@
{
"name": "casper",
"description": "A clean, minimal default theme for the Ghost publishing platform",
"demo": "https://demo.ghost.io",
"version": "5.7.4",
"engines": {
"ghost": ">=5.0.0"
},
"license": "MIT",
"screenshots": {
"desktop": "assets/screenshot-desktop.jpg",
"mobile": "assets/screenshot-mobile.jpg"
},
"scripts": {
"dev": "gulp",
"zip": "gulp zip",
"test": "gscan .",
"test:ci": "gscan --fatal --verbose .",
"pretest": "gulp build",
"preship": "yarn test",
"ship": "STATUS=$(git status --porcelain); echo $STATUS; if [ -z \"$STATUS\" ]; then yarn version && git push --follow-tags; else echo \"Uncomitted changes found.\" && exit 1; fi",
"postship": "git fetch && gulp release"
},
"author": {
"name": "Ghost Foundation",
"email": "hello@ghost.org",
"url": "https://ghost.org/"
},
"gpm": {
"type": "theme",
"categories": [
"Minimal",
"Magazine"
]
},
"keywords": [
"ghost",
"theme",
"ghost-theme"
],
"repository": {
"type": "git",
"url": "https://github.com/TryGhost/Casper.git"
},
"bugs": "https://github.com/TryGhost/Casper/issues",
"contributors": "https://github.com/TryGhost/Casper/graphs/contributors",
"devDependencies": {
"@tryghost/release-utils": "0.8.1",
"autoprefixer": "10.4.7",
"beeper": "2.1.0",
"cssnano": "5.1.12",
"gscan": "4.36.1",
"gulp": "4.0.2",
"gulp-concat": "2.6.1",
"gulp-livereload": "4.0.2",
"gulp-postcss": "9.0.1",
"gulp-uglify": "3.0.2",
"gulp-zip": "5.1.0",
"inquirer": "8.2.4",
"postcss": "8.2.13",
"postcss-color-mod-function": "3.0.3",
"postcss-easy-import": "4.0.0",
"pump": "3.0.0"
},
"browserslist": [
"defaults"
],
"config": {
"posts_per_page": 25,
"image_sizes": {
"xxs": {
"width": 30
},
"xs": {
"width": 100
},
"s": {
"width": 300
},
"m": {
"width": 600
},
"l": {
"width": 1000
},
"xl": {
"width": 2000
}
},
"card_assets": true,
"custom": {
"navigation_layout": {
"type": "select",
"options": [
"Logo on cover",
"Logo in the middle",
"Stacked"
],
"default": "Logo on cover"
},
"title_font": {
"type": "select",
"options": [
"Modern sans-serif",
"Elegant serif"
],
"default": "Modern sans-serif"
},
"body_font": {
"type": "select",
"options": [
"Modern sans-serif",
"Elegant serif"
],
"default": "Elegant serif"
},
"show_publication_cover": {
"type": "boolean",
"default": true,
"group": "homepage"
},
"header_style": {
"type": "select",
"options": [
"Center aligned",
"Left aligned",
"Hidden"
],
"default": "Center aligned",
"group": "homepage"
},
"feed_layout": {
"type": "select",
"options": [
"Classic",
"Grid",
"List"
],
"default": "Classic",
"group": "homepage"
},
"color_scheme": {
"type": "select",
"options": [
"Light",
"Dark",
"Auto"
],
"default": "Light"
},
"post_image_style": {
"type": "select",
"options": [
"Wide",
"Full",
"Small",
"Hidden"
],
"default": "Wide",
"group": "post"
},
"email_signup_text": {
"type": "text",
"default": "Sign up for more like this.",
"group": "post"
},
"show_recent_posts_footer": {
"type": "boolean",
"default": true,
"group": "post"
}
}
},
"renovate": {
"extends": [
"@tryghost:theme"
]
}
}

View File

@ -0,0 +1,47 @@
{{!< default}}
{{!-- The tag above means: insert everything in this file
into the {body} tag of the default.hbs template --}}
{{#post}}
{{!-- Everything inside the #post block pulls data from the page --}}
<main id="site-main" class="site-main">
<article class="article {{post_class}}">
{{#match @page.show_title_and_feature_image}}
<header class="article-header gh-canvas">
<h1 class="article-title">{{title}}</h1>
{{#if feature_image}}
<figure class="article-image">
{{!-- This is a responsive image, it loads different sizes depending on device
https://medium.freecodecamp.org/a-guide-to-responsive-images-with-ready-to-use-templates-c400bd65c433 --}}
<img
srcset="{{img_url feature_image size="s"}} 300w,
{{img_url feature_image size="m"}} 600w,
{{img_url feature_image size="l"}} 1000w,
{{img_url feature_image size="xl"}} 2000w"
sizes="(min-width: 1400px) 1400px, 92vw"
src="{{img_url feature_image size="xl"}}"
alt="{{#if feature_image_alt}}{{feature_image_alt}}{{else}}{{title}}{{/if}}"
/>
{{#if feature_image_caption}}
<figcaption>{{feature_image_caption}}</figcaption>
{{/if}}
</figure>
{{/if}}
</header>
{{/match}}
<section class="gh-content gh-canvas">
{{content}}
</section>
</article>
</main>
{{/post}}

View File

@ -0,0 +1 @@
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"><path d="M3.513 18.998C4.749 15.504 8.082 13 12 13s7.251 2.504 8.487 5.998C18.47 21.442 15.417 23 12 23s-6.47-1.558-8.487-4.002zM12 12c2.21 0 4-2.79 4-5s-1.79-4-4-4-4 1.79-4 4 1.79 5 4 5z" fill="#FFF"/></g></svg>

After

Width:  |  Height:  |  Size: 308 B

View File

@ -0,0 +1 @@
<svg class="icon" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" fill="currentColor"><path d="M23.9981 11.9991C23.9981 5.37216 18.626 0 11.9991 0C5.37216 0 0 5.37216 0 11.9991C0 17.9882 4.38789 22.9522 10.1242 23.8524V15.4676H7.07758V11.9991H10.1242V9.35553C10.1242 6.34826 11.9156 4.68714 14.6564 4.68714C15.9692 4.68714 17.3424 4.92149 17.3424 4.92149V7.87439H15.8294C14.3388 7.87439 13.8739 8.79933 13.8739 9.74824V11.9991H17.2018L16.6698 15.4676H13.8739V23.8524C19.6103 22.9522 23.9981 17.9882 23.9981 11.9991Z"/></svg>

After

Width:  |  Height:  |  Size: 531 B

View File

@ -0,0 +1,3 @@
<svg width="16" height="17" viewBox="0 0 16 17" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M4.49365 4.58752C3.53115 6.03752 2.74365 7.70002 2.74365 9.25002C2.74365 10.6424 3.29678 11.9778 4.28134 12.9623C5.26591 13.9469 6.60127 14.5 7.99365 14.5C9.38604 14.5 10.7214 13.9469 11.706 12.9623C12.6905 11.9778 13.2437 10.6424 13.2437 9.25002C13.2437 6.00002 10.9937 3.50002 9.16865 1.68127L6.99365 6.25002L4.49365 4.58752Z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>

After

Width:  |  Height:  |  Size: 538 B

View File

@ -0,0 +1,11 @@
<svg version="1.1" id="loader-1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
y="0px" width="40px" height="40px" viewBox="0 0 40 40" enable-background="new 0 0 40 40" xml:space="preserve">
<path opacity="0.2" fill="#000" d="M20.201,5.169c-8.254,0-14.946,6.692-14.946,14.946c0,8.255,6.692,14.946,14.946,14.946
s14.946-6.691,14.946-14.946C35.146,11.861,28.455,5.169,20.201,5.169z M20.201,31.749c-6.425,0-11.634-5.208-11.634-11.634
c0-6.425,5.209-11.634,11.634-11.634c6.425,0,11.633,5.209,11.633,11.634C31.834,26.541,26.626,31.749,20.201,31.749z" />
<path fill="#000" d="M26.013,10.047l1.654-2.866c-2.198-1.272-4.743-2.012-7.466-2.012h0v3.312h0
C22.32,8.481,24.301,9.057,26.013,10.047z">
<animateTransform attributeType="xml" attributeName="transform" type="rotate" from="0 20 20" to="360 20 20"
dur="0.5s" repeatCount="indefinite" />
</path>
</svg>

After

Width:  |  Height:  |  Size: 923 B

View File

@ -0,0 +1,5 @@
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M16.25 6.875H3.75C3.40482 6.875 3.125 7.15482 3.125 7.5V16.25C3.125 16.5952 3.40482 16.875 3.75 16.875H16.25C16.5952 16.875 16.875 16.5952 16.875 16.25V7.5C16.875 7.15482 16.5952 6.875 16.25 6.875Z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M7.1875 6.875V4.0625C7.1875 3.31658 7.48382 2.60121 8.01126 2.07376C8.53871 1.54632 9.25408 1.25 10 1.25C10.7459 1.25 11.4613 1.54632 11.9887 2.07376C12.5162 2.60121 12.8125 3.31658 12.8125 4.0625V6.875" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M10 13.125C10.6904 13.125 11.25 12.5654 11.25 11.875C11.25 11.1846 10.6904 10.625 10 10.625C9.30964 10.625 8.75 11.1846 8.75 11.875C8.75 12.5654 9.30964 13.125 10 13.125Z" fill="currentColor"></path>
</svg>

After

Width:  |  Height:  |  Size: 932 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><circle cx="6.18" cy="17.82" r="2.18"/><path d="M4 4.44v2.83c7.03 0 12.73 5.7 12.73 12.73h2.83c0-8.59-6.97-15.56-15.56-15.56zm0 5.66v2.83c3.9 0 7.07 3.17 7.07 7.07h2.83c0-5.47-4.43-9.9-9.9-9.9z"/></svg>

After

Width:  |  Height:  |  Size: 263 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2" width="20" height="20"><path stroke-linecap="round" stroke-linejoin="round" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"></path></svg>

After

Width:  |  Height:  |  Size: 248 B

View File

@ -0,0 +1 @@
<svg class="icon" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" fill="currentColor"><path d="M23.954 4.569c-.885.389-1.83.654-2.825.775 1.014-.611 1.794-1.574 2.163-2.723-.951.555-2.005.959-3.127 1.184-.896-.959-2.173-1.559-3.591-1.559-2.717 0-4.92 2.203-4.92 4.917 0 .39.045.765.127 1.124C7.691 8.094 4.066 6.13 1.64 3.161c-.427.722-.666 1.561-.666 2.475 0 1.71.87 3.213 2.188 4.096-.807-.026-1.566-.248-2.228-.616v.061c0 2.385 1.693 4.374 3.946 4.827-.413.111-.849.171-1.296.171-.314 0-.615-.03-.916-.086.631 1.953 2.445 3.377 4.604 3.417-1.68 1.319-3.809 2.105-6.102 2.105-.39 0-.779-.023-1.17-.067 2.189 1.394 4.768 2.209 7.557 2.209 9.054 0 13.999-7.496 13.999-13.986 0-.209 0-.42-.015-.63.961-.689 1.8-1.56 2.46-2.548l-.047-.02z"/></svg>

After

Width:  |  Height:  |  Size: 752 B

View File

@ -0,0 +1,41 @@
<div class="pswp" tabindex="-1" role="dialog" aria-hidden="true">
<div class="pswp__bg"></div>
<div class="pswp__scroll-wrap">
<div class="pswp__container">
<div class="pswp__item"></div>
<div class="pswp__item"></div>
<div class="pswp__item"></div>
</div>
<div class="pswp__ui pswp__ui--hidden">
<div class="pswp__top-bar">
<div class="pswp__counter"></div>
<button class="pswp__button pswp__button--close" title="Close (Esc)"></button>
<button class="pswp__button pswp__button--share" title="Share"></button>
<button class="pswp__button pswp__button--fs" title="Toggle fullscreen"></button>
<button class="pswp__button pswp__button--zoom" title="Zoom in/out"></button>
<div class="pswp__preloader">
<div class="pswp__preloader__icn">
<div class="pswp__preloader__cut">
<div class="pswp__preloader__donut"></div>
</div>
</div>
</div>
</div>
<div class="pswp__share-modal pswp__share-modal--hidden pswp__single-tap">
<div class="pswp__share-tooltip"></div>
</div>
<button class="pswp__button pswp__button--arrow--left" title="Previous (arrow left)"></button>
<button class="pswp__button pswp__button--arrow--right" title="Next (arrow right)"></button>
<div class="pswp__caption">
<div class="pswp__caption__center"></div>
</div>
</div>
</div>
</div>

View File

@ -0,0 +1,78 @@
{{!-- This is a partial file used to generate a post "card"
which templates loop over to generate a list of posts. --}}
<article class="post-card {{post_class}}{{#match @custom.feed_layout "Classic"}}{{#is "home"}}{{#has index="0"}} post-card-large{{/has}}{{#has index="1,2"}} dynamic{{/has}}{{/is}}{{/match}}{{#match @custom.feed_layout "Grid"}} keep-ratio{{/match}}{{#match @custom.feed_layout "List"}}{{^is "tag, author"}} post-card-large{{/is}}{{/match}}{{#unless access}} post-access-{{visibility}}{{/unless}}">
{{#if feature_image}}
<a class="post-card-image-link" href="{{url}}">
{{!-- This is a responsive image, it loads different sizes depending on device
https://medium.freecodecamp.org/a-guide-to-responsive-images-with-ready-to-use-templates-c400bd65c433 --}}
<img class="post-card-image"
srcset="{{img_url feature_image size="s"}} 300w,
{{img_url feature_image size="m"}} 600w,
{{img_url feature_image size="l"}} 1000w,
{{img_url feature_image size="xl"}} 2000w"
sizes="(max-width: 1000px) 400px, 800px"
src="{{img_url feature_image size="m"}}"
alt="{{#if feature_image_alt}}{{feature_image_alt}}{{else}}{{title}}{{/if}}"
loading="lazy"
/>
{{#unless access}}
{{^has visibility="public"}}
<div class="post-card-access">
{{> "icons/lock"}}
{{#has visibility="members"}}
Members only
{{else}}
Paid-members only
{{/has}}
</div>
{{/has}}
{{/unless}}
</a>
{{/if}}
<div class="post-card-content">
<a class="post-card-content-link" href="{{url}}">
<header class="post-card-header">
<div class="post-card-tags">
{{#primary_tag}}
<span class="post-card-primary-tag">{{name}}</span>
{{/primary_tag}}
{{#if featured}}
<span class="post-card-featured">{{> "icons/fire"}} Featured</span>
{{/if}}
</div>
<h2 class="post-card-title">
{{#unless access}}
{{^has visibility="public"}}
{{#unless feature_image}}
{{> "icons/lock"}}
{{/unless}}
{{/has}}
{{/unless}}
{{title}}
</h2>
</header>
{{#if excerpt}}
<div class="post-card-excerpt">{{excerpt}}</div>
{{/if}}
</a>
<footer class="post-card-meta">
<time class="post-card-meta-date" datetime="{{date format="YYYY-MM-DD"}}">{{date}}</time>
{{#if reading_time}}
<span class="post-card-meta-length">{{reading_time}}</span>
{{/if}}
{{#if @site.comments_enabled}}
{{comment_count}}
{{/if}}
</footer>
</div>
</article>

View File

@ -0,0 +1,140 @@
{{!< default}}
{{!-- The tag above means: insert everything in this file
into the {body} tag of the default.hbs template --}}
{{#post}}
{{!-- Everything inside the #post block pulls data from the post --}}
<main id="site-main" class="site-main">
<article class="article {{post_class}} {{#match @custom.post_image_style "Full"}}image-full{{else match @custom.post_image_style "=" "Small"}}image-small{{/match}}">
<header class="article-header gh-canvas">
<div class="article-tag post-card-tags">
{{#primary_tag}}
<span class="post-card-primary-tag">
<a href="{{url}}">{{name}}</a>
</span>
{{/primary_tag}}
{{#if featured}}
<span class="post-card-featured">{{> "icons/fire"}} Featured</span>
{{/if}}
</div>
<h1 class="article-title">{{title}}</h1>
{{#if custom_excerpt}}
<p class="article-excerpt">{{custom_excerpt}}</p>
{{/if}}
<div class="article-byline">
<section class="article-byline-content">
<ul class="author-list instapaper_ignore">
{{#foreach authors}}
<li class="author-list-item">
{{#if profile_image}}
<a href="{{url}}" class="author-avatar" aria-label="Read more of {{name}}">
<img class="author-profile-image" src="{{img_url profile_image size="xs"}}" alt="{{name}}" />
</a>
{{else}}
<a href="{{url}}" class="author-avatar author-profile-image" aria-label="Read more of {{name}}">{{> "icons/avatar"}}</a>
{{/if}}
</li>
{{/foreach}}
</ul>
<div class="article-byline-meta">
<h4 class="author-name">{{authors}}</h4>
<div class="byline-meta-content">
<time class="byline-meta-date" datetime="{{date format="YYYY-MM-DD"}}">{{date}}</time>
{{#if reading_time}}
<span class="byline-reading-time"><span class="bull">&bull;</span> {{reading_time}}</span>
{{/if}}
</div>
</div>
</section>
</div>
{{#match @custom.post_image_style "!=" "Hidden"}}
{{#if feature_image}}
<figure class="article-image">
{{!-- This is a responsive image, it loads different sizes depending on device
https://medium.freecodecamp.org/a-guide-to-responsive-images-with-ready-to-use-templates-c400bd65c433 --}}
<img
srcset="{{img_url feature_image size="s"}} 300w,
{{img_url feature_image size="m"}} 600w,
{{img_url feature_image size="l"}} 1000w,
{{img_url feature_image size="xl"}} 2000w"
sizes="(min-width: 1400px) 1400px, 92vw"
src="{{img_url feature_image size="xl"}}"
alt="{{#if feature_image_alt}}{{feature_image_alt}}{{else}}{{title}}{{/if}}"
/>
{{#if feature_image_caption}}
<figcaption>{{feature_image_caption}}</figcaption>
{{/if}}
</figure>
{{/if}}
{{/match}}
</header>
<section class="gh-content gh-canvas">
{{content}}
</section>
{{#if comments}}
<section class="article-comments gh-canvas">
{{comments}}
</section>
{{/if}}
</article>
</main>
{{!-- A signup call to action is displayed here, unless viewed as a logged-in member --}}
{{#if @site.members_enabled}}
{{#unless @member}}
{{#unless @site.comments_enabled}}
{{#if access}}
<section class="footer-cta outer">
<div class="inner">
{{#if @custom.email_signup_text}}<h2 class="footer-cta-title">{{@custom.email_signup_text}}</h2>{{/if}}
<a class="footer-cta-button" href="#/portal" data-portal>
<div class="footer-cta-input">Enter your email</div>
<span>Subscribe</span>
</a>
</div>
</section>
{{/if}}
{{/unless}}
{{/unless}}
{{/if}}
{{!-- Read more links, just above the footer --}}
{{#if @custom.show_recent_posts_footer}}
{{!-- The {#get} helper below fetches some of the latest posts here
so that people have something else to read when they finish this one.
This query gets the latest 3 posts on the site, but adds a filter to
exclude the post we're currently on from being included. --}}
{{#get "posts" filter="id:-{{id}}" limit="3" as |more_posts|}}
{{#if more_posts}}
<aside class="read-more-wrap outer">
<div class="read-more inner">
{{#foreach more_posts}}
{{> "post-card"}}
{{/foreach}}
</div>
</aside>
{{/if}}
{{/get}}
{{/if}}
{{/post}}

View File

@ -0,0 +1,55 @@
{{!< default}}
{{!-- The tag above means - insert everything in this file into the {body} of the default.hbs template --}}
<main id="site-main" class="site-main outer">
<div class="inner posts">
<div class="post-feed">
{{#tag}}
<section class="post-card post-card-large">
{{#if feature_image}}
<div class="post-card-image-link">
{{!-- This is a responsive image, it loads different sizes depending on device
https://medium.freecodecamp.org/a-guide-to-responsive-images-with-ready-to-use-templates-c400bd65c433 --}}
<img class="post-card-image"
srcset="{{img_url feature_image size="s"}} 300w,
{{img_url feature_image size="m"}} 600w,
{{img_url feature_image size="l"}} 1000w,
{{img_url feature_image size="xl"}} 2000w"
sizes="(max-width: 1000px) 400px, 800px"
src="{{img_url feature_image size="m"}}"
alt="{{title}}"
/>
</div>
{{/if}}
<div class="post-card-content">
<div class="post-card-content-link">
<header class="post-card-header">
<h2 class="post-card-title">{{name}}</h2>
</header>
<div class="post-card-excerpt">
{{#if description}}
{{description}}
{{else}}
A collection of {{plural ../pagination.total empty='zero posts' singular='% post' plural='% posts'}}
{{/if}}
</div>
</div>
</div>
</section>
{{/tag}}
{{#foreach posts}}
{{!-- The tag below includes the markup for each post - partials/post-card.hbs --}}
{{> "post-card"}}
{{/foreach}}
</div>
{{pagination}}
</div>
</main>

View File

@ -0,0 +1 @@
/var/lib/ghost/current/content/themes/source

View File

@ -0,0 +1,41 @@
services:
ghost:
image: ghost:5
restart: always
ports:
- 2368:2368
expose:
- 2368
environment:
# see https://ghost.org/docs/config/#configuration-options
database__client: mysql
database__connection__host: ghost-fusiondance-db-1
database__connection__user: root
database__connection__password: ${DBPASS}
database__connection__database: ghost
VIRTUAL_HOST: "www.${DOMAIN}, ${DOMAIN}"
VIRTUAL_PORT: 2368
LETSENCRYPT_HOST: "${DOMAIN}, www.${DOMAIN}"
LETSENCRYPT_EMAIL: ${EMAIL}
# url: http://0.0.0.0:2368 #Dev
url: https://libertyfusiondance.com #Prod
# contrary to the default mentioned in the linked documentation, this image defaults to NODE_ENV=production (so development mode needs to be explicitly specified if desired)
# NODE_ENV: development
volumes:
- ./content:/var/lib/ghost/content
# - ./themes:/var/lib/ghost/current/content/themes:rw
db:
image: mysql:8.0
restart: always
environment:
MYSQL_DATABASE: ghost
MYSQL_ROOT_PASSWORD: ${DBPASS}
volumes:
- db:/var/lib/mysql
volumes:
db:
networks:
default:
name: nginx-proxy
external: true

View File

@ -0,0 +1,22 @@
Copyright (c) 2013-2023 Ghost Foundation
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
files (the "Software"), to deal in the Software without
restriction, including without limitation the rights to use,
copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following
conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.

View File

@ -0,0 +1,69 @@
# Casper
The default theme for [Ghost](http://github.com/tryghost/ghost/). This is the latest development version of Casper! If you're just looking to download the latest release, head over to the [releases](https://github.com/TryGhost/Casper/releases) page.
&nbsp;
![screenshot-desktop](https://user-images.githubusercontent.com/1418797/183329195-8e8f2ee5-a473-4694-a813-a2575491209e.png)
&nbsp;
# First time using a Ghost theme?
Ghost uses a simple templating language called [Handlebars](http://handlebarsjs.com/) for its themes.
This theme has lots of code comments to help explain what's going on just by reading the code. Once you feel comfortable with how everything works, we also have full [theme API documentation](https://ghost.org/docs/themes/) which explains every possible Handlebars helper and template.
**The main files are:**
- `default.hbs` - The parent template file, which includes your global header/footer
- `index.hbs` - The main template to generate a list of posts, usually the home page
- `post.hbs` - The template used to render individual posts
- `page.hbs` - Used for individual pages
- `tag.hbs` - Used for tag archives, eg. "all posts tagged with `news`"
- `author.hbs` - Used for author archives, eg. "all posts written by Jamie"
One neat trick is that you can also create custom one-off templates by adding the slug of a page to a template file. For example:
- `page-about.hbs` - Custom template for an `/about/` page
- `tag-news.hbs` - Custom template for `/tag/news/` archive
- `author-ali.hbs` - Custom template for `/author/ali/` archive
# Development
Casper styles are compiled using Gulp/PostCSS to polyfill future CSS spec. You'll need [Node](https://nodejs.org/), [Yarn](https://yarnpkg.com/) and [Gulp](https://gulpjs.com) installed globally. After that, from the theme's root directory:
```bash
# install dependencies
yarn install
# run development server
yarn dev
```
Now you can edit `/assets/css/` files, which will be compiled to `/assets/built/` automatically.
The `zip` Gulp task packages the theme files into `dist/<theme-name>.zip`, which you can then upload to your site.
```bash
# create .zip file
yarn zip
```
# PostCSS Features Used
- Autoprefixer - Don't worry about writing browser prefixes of any kind, it's all done automatically with support for the latest 2 major versions of every browser.
- [Color Mod](https://github.com/jonathantneal/postcss-color-mod-function)
# SVG Icons
Casper uses inline SVG icons, included via Handlebars partials. You can find all icons inside `/partials/icons`. To use an icon just include the name of the relevant file, eg. To include the SVG icon in `/partials/icons/rss.hbs` - use `{{> "icons/rss"}}`.
You can add your own SVG icons in the same manner.
# Copyright & License
Copyright (c) 2013-2023 Ghost Foundation - Released under the [MIT license](LICENSE).

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,2 @@
a,abbr,acronym,address,applet,article,aside,audio,big,blockquote,body,canvas,caption,cite,code,dd,del,details,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,ul,var,video{border:0;font:inherit;font-size:100%;margin:0;padding:0;vertical-align:baseline}body{line-height:1}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:"";content:none}img{display:block;height:auto;max-width:100%}html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;box-sizing:border-box;font-family:sans-serif}*,:after,:before{box-sizing:inherit}a{background-color:transparent}a:active,a:hover{outline:0}b,strong{font-weight:700}dfn,em,i{font-style:italic}h1{font-size:2em;margin:.67em 0}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}mark{background-color:#fdffb6}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}kbd{background:#f6f8fa;border:1px solid rgba(124,139,154,.25);border-radius:6px;box-shadow:inset 0 -1px 0 rgba(124,139,154,.25);font-family:var(--font-mono);font-size:1.5rem;padding:3px 5px}@media (max-width:600px){kbd{font-size:1.3rem}}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{border:none;overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input:focus{outline:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}legend{border:0;padding:0}textarea{overflow:auto}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}html{-webkit-tap-highlight-color:rgba(0,0,0,0);font-size:62.5%}body{text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-moz-font-feature-settings:"liga" on;background:#fff;color:var(--color-darkgrey);font-family:var(--font-sans);font-size:1.6rem;font-style:normal;font-weight:400;letter-spacing:0;line-height:1.6em}::-moz-selection{background:#daf2fd;text-shadow:none}::selection{background:#daf2fd;text-shadow:none}hr{border:0;border-top:1px solid #f0f0f0;display:block;height:1px;margin:2.5em 0 3.5em;padding:0;position:relative;width:100%}audio,canvas,iframe,img,svg,video{vertical-align:middle}fieldset{border:0;margin:0;padding:0}textarea{resize:vertical}::not(.gh-content) blockquote,::not(.gh-content) dl,::not(.gh-content) ol,::not(.gh-content) p,::not(.gh-content) ul{margin:0 0 1.5em}ol,ul{padding-left:1.3em;padding-right:1.5em}ol ol,ol ul,ul ol,ul ul{margin:.5em 0}ol,ul{max-width:100%}li{line-height:1.6em;padding-left:.3em}li+li{margin-top:.5em}dt{color:#daf2fd;float:left;font-weight:500;margin:0 20px 0 0;text-align:right;width:120px}dd{margin:0 0 5px;text-align:left}blockquote{border-left:#daf2fd;margin:1.5em 0;padding:0 1.6em}blockquote small{display:inline-block;font-size:.9em;margin:.8em 0 .8em 1.5em;opacity:.8}blockquote small:before{content:"\2014 \00A0"}blockquote cite{font-weight:700}blockquote cite a{font-weight:400}a{color:#15171a;text-decoration:none}h1,h2,h3,h4,h5,h6{text-rendering:optimizeLegibility;font-weight:600;letter-spacing:-.01em;line-height:1.15;margin-top:0}h1{font-size:4.8rem;font-weight:700;letter-spacing:-.015em;margin:0 0 .5em}@media (max-width:600px){h1{font-size:2.8rem}}h2{font-size:2.8rem;font-weight:700;margin:1.5em 0 .5em}@media (max-width:600px){h2{font-size:2.3rem}}h3{font-size:2.4rem;font-weight:600;margin:1.5em 0 .5em}@media (max-width:600px){h3{font-size:1.7rem}}h4{font-size:2rem;margin:1.5em 0 .5em}@media (max-width:600px){h4{font-size:1.7rem}}h5{font-size:2rem}h5,h6{margin:1.5em 0 .5em}h6{font-size:1.8rem}
/*# sourceMappingURL=global.css.map */

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,467 @@
/* Reset
/* ---------------------------------------------------------- */
html,
body,
div,
span,
applet,
object,
iframe,
h1,
h2,
h3,
h4,
h5,
h6,
p,
blockquote,
pre,
a,
abbr,
acronym,
address,
big,
cite,
code,
del,
dfn,
em,
img,
ins,
kbd,
q,
s,
samp,
small,
strike,
strong,
sub,
sup,
tt,
var,
dl,
dt,
dd,
ol,
ul,
li,
fieldset,
form,
label,
legend,
table,
caption,
tbody,
tfoot,
thead,
tr,
th,
td,
article,
aside,
canvas,
details,
embed,
figure,
figcaption,
footer,
header,
hgroup,
menu,
nav,
output,
ruby,
section,
summary,
time,
mark,
audio,
video {
margin: 0;
padding: 0;
border: 0;
font: inherit;
font-size: 100%;
vertical-align: baseline;
}
body {
line-height: 1;
}
blockquote,
q {
quotes: none;
}
blockquote:before,
blockquote:after,
q:before,
q:after {
content: "";
content: none;
}
table {
border-spacing: 0;
border-collapse: collapse;
}
img {
display: block;
max-width: 100%;
height: auto;
}
html {
box-sizing: border-box;
font-family: sans-serif;
-ms-text-size-adjust: 100%;
-webkit-text-size-adjust: 100%;
}
*,
*:before,
*:after {
box-sizing: inherit;
}
a {
background-color: transparent;
}
a:active,
a:hover {
outline: 0;
}
b,
strong {
font-weight: bold;
}
i,
em,
dfn {
font-style: italic;
}
h1 {
margin: 0.67em 0;
font-size: 2em;
}
small {
font-size: 80%;
}
sub,
sup {
position: relative;
font-size: 75%;
line-height: 0;
vertical-align: baseline;
}
sup {
top: -0.5em;
}
sub {
bottom: -0.25em;
}
img {
border: 0;
}
svg:not(:root) {
overflow: hidden;
}
mark {
background-color: #fdffb6;
}
code,
kbd,
pre,
samp {
font-family: monospace, monospace;
font-size: 1em;
}
kbd {
padding: 3px 5px;
font-family: var(--font-mono);
font-size: 1.5rem;
background: #f6f8fa;
border: 1px solid rgba(124, 139, 154, 0.25);
border-radius: 6px;
box-shadow: inset 0 -1px 0 rgba(124, 139, 154, 0.25);
}
@media (max-width: 600px) {
kbd {
font-size: 1.3rem;
}
}
button,
input,
optgroup,
select,
textarea {
margin: 0; /* 3 */
color: inherit; /* 1 */
font: inherit; /* 2 */
}
button {
overflow: visible;
border: none;
}
button,
select {
text-transform: none;
}
button,
html input[type="button"],
/* 1 */
input[type="reset"],
input[type="submit"] {
cursor: pointer; /* 3 */
-webkit-appearance: button; /* 2 */
}
button[disabled],
html input[disabled] {
cursor: default;
}
button::-moz-focus-inner,
input::-moz-focus-inner {
padding: 0;
border: 0;
}
input {
line-height: normal;
}
input:focus {
outline: none;
}
input[type="checkbox"],
input[type="radio"] {
box-sizing: border-box; /* 1 */
padding: 0; /* 2 */
}
input[type="number"]::-webkit-inner-spin-button,
input[type="number"]::-webkit-outer-spin-button {
height: auto;
}
input[type="search"] {
box-sizing: content-box; /* 2 */
-webkit-appearance: textfield; /* 1 */
}
input[type="search"]::-webkit-search-cancel-button,
input[type="search"]::-webkit-search-decoration {
-webkit-appearance: none;
}
legend {
padding: 0; /* 2 */
border: 0; /* 1 */
}
textarea {
overflow: auto;
}
table {
border-spacing: 0;
border-collapse: collapse;
}
td,
th {
padding: 0;
}
/* ==========================================================================
Base styles: opinionated defaults
========================================================================== */
html {
font-size: 62.5%;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
body {
color: var(--color-darkgrey);
font-family: var(--font-sans);
font-size: 1.6rem;
line-height: 1.6em;
font-weight: 400;
font-style: normal;
letter-spacing: 0;
text-rendering: optimizeLegibility;
background: #fff;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
-moz-font-feature-settings: "liga" on;
}
::selection {
text-shadow: none;
background: #daf2fd;
}
hr {
position: relative;
display: block;
width: 100%;
margin: 2.5em 0 3.5em;
padding: 0;
height: 1px;
border: 0;
border-top: 1px solid #f0f0f0;
}
audio,
canvas,
iframe,
img,
svg,
video {
vertical-align: middle;
}
fieldset {
margin: 0;
padding: 0;
border: 0;
}
textarea {
resize: vertical;
}
::not(.gh-content) p,
::not(.gh-content) ul,
::not(.gh-content) ol,
::not(.gh-content) dl,
::not(.gh-content) blockquote {
margin: 0 0 1.5em 0;
}
ol,
ul {
padding-left: 1.3em;
padding-right: 1.5em;
}
ol ol,
ul ul,
ul ol,
ol ul {
margin: 0.5em 0;
}
ul,
ol {
max-width: 100%;
}
li {
padding-left: 0.3em;
line-height: 1.6em;
}
li + li {
margin-top: 0.5em;
}
dt {
float: left;
margin: 0 20px 0 0;
width: 120px;
color: #daf2fd;
font-weight: 500;
text-align: right;
}
dd {
margin: 0 0 5px 0;
text-align: left;
}
blockquote {
margin: 1.5em 0;
padding: 0 1.6em 0 1.6em;
border-left: #daf2fd;
}
blockquote small {
display: inline-block;
margin: 0.8em 0 0.8em 1.5em;
font-size: 0.9em;
opacity: 0.8;
}
/* Quotation marks */
blockquote small:before {
content: "\2014 \00A0";
}
blockquote cite {
font-weight: bold;
}
blockquote cite a {
font-weight: normal;
}
a {
color: #15171A;
text-decoration: none;
}
h1,
h2,
h3,
h4,
h5,
h6 {
margin-top: 0;
line-height: 1.15;
font-weight: 600;
text-rendering: optimizeLegibility;
letter-spacing: -0.01em;
}
h1 {
margin: 0 0 0.5em 0;
font-size: 4.8rem;
font-weight: 700;
letter-spacing: -0.015em;
}
@media (max-width: 600px) {
h1 {
font-size: 2.8rem;
}
}
h2 {
margin: 1.5em 0 0.5em 0;
font-size: 2.8rem;
font-weight: 700;
}
@media (max-width: 600px) {
h2 {
font-size: 2.3rem;
}
}
h3 {
margin: 1.5em 0 0.5em 0;
font-size: 2.4rem;
font-weight: 600;
}
@media (max-width: 600px) {
h3 {
font-size: 1.7rem;
}
}
h4 {
margin: 1.5em 0 0.5em 0;
font-size: 2rem;
}
@media (max-width: 600px) {
h4 {
font-size: 1.7rem;
}
}
h5 {
margin: 1.5em 0 0.5em 0;
font-size: 2rem;
}
h6 {
margin: 1.5em 0 0.5em 0;
font-size: 1.8rem;
}

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 547 B

View File

@ -0,0 +1 @@
<svg width="264" height="88" viewBox="0 0 264 88" xmlns="http://www.w3.org/2000/svg"><title>default-skin 2</title><g fill="none" fill-rule="evenodd"><g><path d="M67.002 59.5v3.768c-6.307.84-9.184 5.75-10.002 9.732 2.22-2.83 5.564-5.098 10.002-5.098V71.5L73 65.585 67.002 59.5z" id="Shape" fill="#fff"/><g fill="#fff"><path d="M13 29v-5h2v3h3v2h-5zM13 15h5v2h-3v3h-2v-5zM31 15v5h-2v-3h-3v-2h5zM31 29h-5v-2h3v-3h2v5z" id="Shape"/></g><g fill="#fff"><path d="M62 24v5h-2v-3h-3v-2h5zM62 20h-5v-2h3v-3h2v5zM70 20v-5h2v3h3v2h-5zM70 24h5v2h-3v3h-2v-5z"/></g><path d="M20.586 66l-5.656-5.656 1.414-1.414L22 64.586l5.656-5.656 1.414 1.414L23.414 66l5.656 5.656-1.414 1.414L22 67.414l-5.656 5.656-1.414-1.414L20.586 66z" fill="#fff"/><path d="M111.785 65.03L110 63.5l3-3.5h-10v-2h10l-3-3.5 1.785-1.468L117 59l-5.215 6.03z" fill="#fff"/><path d="M152.215 65.03L154 63.5l-3-3.5h10v-2h-10l3-3.5-1.785-1.468L147 59l5.215 6.03z" fill="#fff"/><g><path id="Rectangle-11" fill="#fff" d="M160.957 28.543l-3.25-3.25-1.413 1.414 3.25 3.25z"/><path d="M152.5 27c3.038 0 5.5-2.462 5.5-5.5s-2.462-5.5-5.5-5.5-5.5 2.462-5.5 5.5 2.462 5.5 5.5 5.5z" id="Oval-1" stroke="#fff" stroke-width="1.5"/><path fill="#fff" d="M150 21h5v1h-5z"/></g><g><path d="M116.957 28.543l-1.414 1.414-3.25-3.25 1.414-1.414 3.25 3.25z" fill="#fff"/><path d="M108.5 27c3.038 0 5.5-2.462 5.5-5.5s-2.462-5.5-5.5-5.5-5.5 2.462-5.5 5.5 2.462 5.5 5.5 5.5z" stroke="#fff" stroke-width="1.5"/><path fill="#fff" d="M106 21h5v1h-5z"/><path fill="#fff" d="M109.043 19.008l-.085 5-1-.017.085-5z"/></g></g></g></svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 866 B

View File

@ -0,0 +1,85 @@
(function () {
const mediaQuery = window.matchMedia('(max-width: 767px)');
const head = document.querySelector('.gh-head');
const menu = head.querySelector('.gh-head-menu');
const nav = menu.querySelector('.nav');
if (!nav) return;
const logo = document.querySelector('.gh-head-logo');
const navHTML = nav.innerHTML;
if (mediaQuery.matches) {
const items = nav.querySelectorAll('li');
items.forEach(function (item, index) {
item.style.transitionDelay = 0.03 * (index + 1) + 's';
});
}
var windowClickListener;
const makeDropdown = function () {
if (mediaQuery.matches) return;
const submenuItems = [];
while ((nav.offsetWidth + 64) > menu.offsetWidth) {
if (nav.lastElementChild) {
submenuItems.unshift(nav.lastElementChild);
nav.lastElementChild.remove();
} else {
return;
}
}
if (!submenuItems.length) {
document.body.classList.add('is-dropdown-loaded');
return;
}
const toggle = document.createElement('button');
toggle.setAttribute('class', 'nav-more-toggle');
toggle.setAttribute('aria-label', 'More');
toggle.innerHTML = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" fill="currentColor"><path d="M21.333 16c0-1.473 1.194-2.667 2.667-2.667v0c1.473 0 2.667 1.194 2.667 2.667v0c0 1.473-1.194 2.667-2.667 2.667v0c-1.473 0-2.667-1.194-2.667-2.667v0zM13.333 16c0-1.473 1.194-2.667 2.667-2.667v0c1.473 0 2.667 1.194 2.667 2.667v0c0 1.473-1.194 2.667-2.667 2.667v0c-1.473 0-2.667-1.194-2.667-2.667v0zM5.333 16c0-1.473 1.194-2.667 2.667-2.667v0c1.473 0 2.667 1.194 2.667 2.667v0c0 1.473-1.194 2.667-2.667 2.667v0c-1.473 0-2.667-1.194-2.667-2.667v0z"></path></svg>';
const wrapper = document.createElement('div');
wrapper.setAttribute('class', 'gh-dropdown');
if (submenuItems.length >= 10) {
document.body.classList.add('is-dropdown-mega');
wrapper.style.gridTemplateRows = 'repeat(' + Math.ceil(submenuItems.length / 2) + ', 1fr)';
} else {
document.body.classList.remove('is-dropdown-mega');
}
submenuItems.forEach(function (child) {
wrapper.appendChild(child);
});
toggle.appendChild(wrapper);
nav.appendChild(toggle);
document.body.classList.add('is-dropdown-loaded');
toggle.addEventListener('click', function () {
document.body.classList.toggle('is-dropdown-open');
});
windowClickListener = function (e) {
if (!toggle.contains(e.target) && document.body.classList.contains('is-dropdown-open')) {
document.body.classList.remove('is-dropdown-open');
}
};
window.addEventListener('click', windowClickListener);
}
imagesLoaded(head, function () {
makeDropdown();
});
window.addEventListener('resize', function () {
setTimeout(function () {
window.removeEventListener('click', windowClickListener);
nav.innerHTML = navHTML;
makeDropdown();
}, 1);
});
})();

View File

@ -0,0 +1,114 @@
/* eslint-env browser */
/**
* Infinite Scroll
* Used on all pages where there is a list of posts (homepage, tag index, etc).
*
* When the page is scrolled to 300px from the bottom, the next page of posts
* is fetched by following the the <link rel="next" href="..."> that is output
* by {{ghost_head}}.
*
* The individual post items are extracted from the fetched pages by looking for
* a wrapper element with the class "post-card". Any found elements are appended
* to the element with the class "post-feed" in the currently viewed page.
*/
(function (window, document) {
if (document.documentElement.classList.contains('no-infinite-scroll')) return;
// next link element
var nextElement = document.querySelector('link[rel=next]');
if (!nextElement) {
return;
}
// post feed element
var feedElement = document.querySelector('.post-feed');
if (!feedElement) {
return;
}
var buffer = 300;
var ticking = false;
var loading = false;
var lastScrollY = window.scrollY;
var lastWindowHeight = window.innerHeight;
var lastDocumentHeight = document.documentElement.scrollHeight;
function onPageLoad() {
if (this.status === 404) {
window.removeEventListener('scroll', onScroll);
window.removeEventListener('resize', onResize);
return;
}
// append contents
var postElements = this.response.querySelectorAll('article.post-card');
postElements.forEach(function (item) {
// document.importNode is important, without it the item's owner
// document will be different which can break resizing of
// `object-fit: cover` images in Safari
feedElement.appendChild(document.importNode(item, true));
});
// set next link
var resNextElement = this.response.querySelector('link[rel=next]');
if (resNextElement) {
nextElement.href = resNextElement.href;
} else {
window.removeEventListener('scroll', onScroll);
window.removeEventListener('resize', onResize);
}
// sync status
lastDocumentHeight = document.documentElement.scrollHeight;
ticking = false;
loading = false;
}
function onUpdate() {
// return if already loading
if (loading) {
return;
}
// return if not scroll to the bottom
if (lastScrollY + lastWindowHeight <= lastDocumentHeight - buffer) {
ticking = false;
return;
}
loading = true;
var xhr = new window.XMLHttpRequest();
xhr.responseType = 'document';
xhr.addEventListener('load', onPageLoad);
xhr.open('GET', nextElement.href);
xhr.send(null);
}
function requestTick() {
ticking || window.requestAnimationFrame(onUpdate);
ticking = true;
}
function onScroll() {
lastScrollY = window.scrollY;
requestTick();
}
function onResize() {
lastWindowHeight = window.innerHeight;
lastDocumentHeight = document.documentElement.scrollHeight;
requestTick();
}
window.addEventListener('scroll', onScroll, {passive: true});
window.addEventListener('resize', onResize);
requestTick();
})(window, document);

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,89 @@
/*jshint browser:true */
/*!
* FitVids 1.3
*
*
* Copyright 2017, Chris Coyier + Dave Rupert + Ghost Foundation
* This is an unofficial release, ported by John O'Nolan
* Credit to Thierry Koblentz - http://www.alistapart.com/articles/creating-intrinsic-ratios-for-video/
* Released under the MIT license
*
*/
;(function( $ ){
'use strict';
$.fn.fitVids = function( options ) {
var settings = {
customSelector: null,
ignore: null
};
if(!document.getElementById('fit-vids-style')) {
// appendStyles: https://github.com/toddmotto/fluidvids/blob/master/dist/fluidvids.js
var head = document.head || document.getElementsByTagName('head')[0];
var css = '.fluid-width-video-container{flex-grow: 1;width:100%;}.fluid-width-video-wrapper{width:100%;position:relative;padding:0;}.fluid-width-video-wrapper iframe,.fluid-width-video-wrapper object,.fluid-width-video-wrapper embed {position:absolute;top:0;left:0;width:100%;height:100%;}';
var div = document.createElement("div");
div.innerHTML = '<p>x</p><style id="fit-vids-style">' + css + '</style>';
head.appendChild(div.childNodes[1]);
}
if ( options ) {
$.extend( settings, options );
}
return this.each(function(){
var selectors = [
'iframe[src*="player.vimeo.com"]',
'iframe[src*="youtube.com"]',
'iframe[src*="youtube-nocookie.com"]',
'iframe[src*="kickstarter.com"][src*="video.html"]',
'object',
'embed'
];
if (settings.customSelector) {
selectors.push(settings.customSelector);
}
var ignoreList = '.fitvidsignore';
if(settings.ignore) {
ignoreList = ignoreList + ', ' + settings.ignore;
}
var $allVideos = $(this).find(selectors.join(','));
$allVideos = $allVideos.not('object object'); // SwfObj conflict patch
$allVideos = $allVideos.not(ignoreList); // Disable FitVids on this video.
$allVideos.each(function(){
var $this = $(this);
if($this.parents(ignoreList).length > 0) {
return; // Disable FitVids on this video.
}
if (this.tagName.toLowerCase() === 'embed' && $this.parent('object').length || $this.parent('.fluid-width-video-wrapper').length) { return; }
if ((!$this.css('height') && !$this.css('width')) && (isNaN($this.attr('height')) || isNaN($this.attr('width'))))
{
$this.attr('height', 9);
$this.attr('width', 16);
}
var height = ( this.tagName.toLowerCase() === 'object' || ($this.attr('height') && !isNaN(parseInt($this.attr('height'), 10))) ) ? parseInt($this.attr('height'), 10) : $this.height(),
width = !isNaN(parseInt($this.attr('width'), 10)) ? parseInt($this.attr('width'), 10) : $this.width(),
aspectRatio = height / width;
if(!$this.attr('name')){
var videoName = 'fitvid' + $.fn.fitVids._count;
$this.attr('name', videoName);
$.fn.fitVids._count++;
}
$this.wrap('<div class="fluid-width-video-container"><div class="fluid-width-video-wrapper"></div></div>').parent('.fluid-width-video-wrapper').css('padding-top', (aspectRatio * 100)+'%');
$this.removeAttr('height').removeAttr('width');
});
});
};
// Internal counter for unique video names.
$.fn.fitVids._count = 0;
// Works with either jQuery or Zepto
})( window.jQuery || window.Zepto );

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,109 @@
function lightbox(trigger) {
var onThumbnailsClick = function (e) {
e.preventDefault();
var items = [];
var index = 0;
var prevSibling = e.target.closest('.kg-card').previousElementSibling;
while (prevSibling && (prevSibling.classList.contains('kg-image-card') || prevSibling.classList.contains('kg-gallery-card'))) {
var prevItems = [];
prevSibling.querySelectorAll('img').forEach(function (item) {
prevItems.push({
src: item.getAttribute('src'),
msrc: item.getAttribute('src'),
w: item.getAttribute('width'),
h: item.getAttribute('height'),
el: item,
})
index += 1;
});
prevSibling = prevSibling.previousElementSibling;
items = prevItems.concat(items);
}
if (e.target.classList.contains('kg-image')) {
items.push({
src: e.target.getAttribute('src'),
msrc: e.target.getAttribute('src'),
w: e.target.getAttribute('width'),
h: e.target.getAttribute('height'),
el: e.target,
});
} else {
var reachedCurrentItem = false;
e.target.closest('.kg-gallery-card').querySelectorAll('img').forEach(function (item) {
items.push({
src: item.getAttribute('src'),
msrc: item.getAttribute('src'),
w: item.getAttribute('width'),
h: item.getAttribute('height'),
el: item,
});
if (!reachedCurrentItem && item !== e.target) {
index += 1;
} else {
reachedCurrentItem = true;
}
});
}
var nextSibling = e.target.closest('.kg-card').nextElementSibling;
while (nextSibling && (nextSibling.classList.contains('kg-image-card') || nextSibling.classList.contains('kg-gallery-card'))) {
nextSibling.querySelectorAll('img').forEach(function (item) {
items.push({
src: item.getAttribute('src'),
msrc: item.getAttribute('src'),
w: item.getAttribute('width'),
h: item.getAttribute('height'),
el: item,
})
});
nextSibling = nextSibling.nextElementSibling;
}
var pswpElement = document.querySelectorAll('.pswp')[0];
var options = {
bgOpacity: 0.9,
closeOnScroll: true,
fullscreenEl: false,
history: false,
index: index,
shareEl: false,
zoomEl: false,
getThumbBoundsFn: function(index) {
var thumbnail = items[index].el,
pageYScroll = window.pageYOffset || document.documentElement.scrollTop,
rect = thumbnail.getBoundingClientRect();
return {x:rect.left, y:rect.top + pageYScroll, w:rect.width};
}
}
var gallery = new PhotoSwipe(pswpElement, PhotoSwipeUI_Default, items, options);
gallery.init();
return false;
};
var triggers = document.querySelectorAll(trigger);
triggers.forEach(function (trig) {
trig.addEventListener('click', function (e) {
onThumbnailsClick(e);
});
});
}
(function () {
lightbox(
'.kg-image-card > .kg-image[width][height], .kg-gallery-image > img'
);
})();

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

View File

@ -0,0 +1,76 @@
{{!< default}}
{{!-- The tag above means - insert everything in this file into the {body} of the default.hbs template --}}
<main id="site-main" class="site-main outer">
<div class="inner posts">
<div class="post-feed">
{{#author}}
<section class="post-card post-card-large">
{{#if cover_image}}
<div class="post-card-image-link">
{{!-- This is a responsive image, it loads different sizes depending on device
https://medium.freecodecamp.org/a-guide-to-responsive-images-with-ready-to-use-templates-c400bd65c433 --}}
<img class="post-card-image"
srcset="{{img_url cover_image size="s"}} 300w,
{{img_url cover_image size="m"}} 600w,
{{img_url cover_image size="l"}} 1000w,
{{img_url cover_image size="xl"}} 2000w"
sizes="(max-width: 1000px) 400px, 800px"
src="{{img_url cover_image size="m"}}"
alt="{{title}}"
/>
</div>
{{/if}}
<div class="post-card-content">
<div class="post-card-content-link">
{{#if profile_image}}
<img class="author-profile-pic" src="{{profile_image}}" alt="{{name}}" />
{{/if}}
<header class="post-card-header">
<h2 class="post-card-title">{{name}}</h2>
</header>
{{#if bio}}
<div class="post-card-excerpt">{{bio}}</div>
{{/if}}
<footer class="author-profile-footer">
{{#if location}}
<div class="author-profile-location">{{location}}</div>
{{/if}}
<div class="author-profile-meta">
{{#if website}}
<a class="author-profile-social-link" href="{{website}}" target="_blank" rel="noopener">{{website}}</a>
{{/if}}
{{#if twitter}}
<a class="author-profile-social-link" href="{{twitter_url}}" target="_blank" rel="noopener">{{> "icons/twitter"}}</a>
{{/if}}
{{#if facebook}}
<a class="author-profile-social-link" href="{{facebook_url}}" target="_blank" rel="noopener">{{> "icons/facebook"}}</a>
{{/if}}
</div>
</footer>
</div>
</div>
</section>
{{/author}}
{{#foreach posts}}
{{!-- The tag below includes the markup for each post - partials/post-card.hbs --}}
{{> "post-card"}}
{{/foreach}}
</div>
{{pagination}}
</div>
</main>

View File

@ -0,0 +1,120 @@
<!DOCTYPE html>
<html lang="{{@site.locale}}"{{#match @custom.color_scheme "Dark"}} class="dark-mode"{{else match @custom.color_scheme "Auto"}} class="auto-color"{{/match}}>
<head>
{{!-- Basic meta - advanced meta is output with {ghost_head} below --}}
<title>{{meta_title}}</title>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="HandheldFriendly" content="True" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
{{!-- Preload scripts --}}
<link rel="preload" as="style" href="{{asset "built/screen.css"}}" />
<link rel="preload" as="script" href="{{asset "built/casper.js"}}" />
{{!-- Theme assets - use the {asset} helper to reference styles & scripts,
this will take care of caching and cache-busting automatically --}}
<link rel="stylesheet" type="text/css" href="{{asset "built/screen.css"}}" />
{{!-- This tag outputs all your advanced SEO meta, structured data, and other important settings,
it should always be the last tag before the closing head tag --}}
{{ghost_head}}
</head>
<body class="{{body_class}} is-head-{{#match @custom.navigation_layout "Logo on cover"}}left-logo{{else match @custom.navigation_layout "Logo in the middle"}}middle-logo{{else}}stacked{{/match}}{{#match @custom.title_font "=" "Elegant serif"}} has-serif-title{{/match}}{{#match @custom.body_font "=" "Modern sans-serif"}} has-sans-body{{/match}}{{#if @custom.show_publication_cover}} has-cover{{/if}}">
<div class="viewport">
<header id="gh-head" class="gh-head outer{{#match @custom.header_style "Hidden"}} is-header-hidden{{/match}}">
<div class="gh-head-inner inner">
<div class="gh-head-brand">
<a class="gh-head-logo{{#unless @site.logo}} no-image{{/unless}}" href="{{@site.url}}">
{{#if @site.logo}}
<img src="{{@site.logo}}" alt="{{@site.title}}">
{{else}}
{{@site.title}}
{{/if}}
</a>
{{!-- <button class="gh-search gh-icon-btn" aria-label="Search this site" data-ghost-search>{{> "icons/search"}}</button> --}}
<button class="gh-burger" aria-label="Main Menu"></button>
</div>
<nav class="gh-head-menu">
{{navigation}}
{{#unless @site.members_enabled}}
{{#match @custom.navigation_layout "Stacked"}}
<button class="gh-search gh-icon-btn" aria-label="Search this site" data-ghost-search>{{> "icons/search"}}</button>
{{/match}}
{{/unless}}
</nav>
<div class="gh-head-actions">
{{#unless @site.members_enabled}}
{{^match @custom.navigation_layout "Stacked"}}
<button class="gh-search gh-icon-btn" aria-label="Search this site" data-ghost-search>{{> "icons/search"}}</button>
{{/match}}
{{else}}
<button class="gh-search gh-icon-btn" aria-label="Search this site" data-ghost-search>{{> "icons/search"}}</button>
<div class="gh-head-members">
{{#unless @member}}
{{#unless @site.members_invite_only}}
<a class="gh-head-link" href="#/portal/signin" data-portal="signin">Sign in</a>
<a class="gh-head-button" href="#/portal/signup" data-portal="signup">Subscribe</a>
{{else}}
<a class="gh-head-button" href="#/portal/signin" data-portal="signin">Sign in</a>
{{/unless}}
{{else}}
<a class="gh-head-button" href="#/portal/account" data-portal="account">Account</a>
{{/unless}}
</div>
{{/unless}}
</div>
</div>
</header>
<div class="site-content">
{{!-- All other templates get inserted here, index.hbs, post.hbs, etc --}}
{{{body}}}
</div>
{{!-- The global footer at the very bottom of the screen --}}
<footer class="site-footer outer">
<div class="inner">
<section class="copyright"><a href="{{@site.url}}">{{@site.title}}</a> &copy; {{date format="YYYY"}}</section>
<nav class="site-footer-nav">
{{navigation type="secondary"}}
</nav>
<div class="gh-powered-by"><a href="https://ghost.org/" target="_blank" rel="noopener">Powered by Ghost</a></div>
</div>
</footer>
</div>
{{!-- /.viewport --}}
{{#is "post, page"}}
{{> "lightbox"}}
{{/is}}
{{!-- Scripts - handle member signups, responsive videos, infinite scroll, floating headers, and galleries --}}
<script
src="https://code.jquery.com/jquery-3.5.1.min.js"
integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0="
crossorigin="anonymous">
</script>
<script src="{{asset "built/casper.js"}}"></script>
<script>
$(document).ready(function () {
// Mobile Menu Trigger
$('.gh-burger').click(function () {
$('body').toggleClass('gh-head-open');
});
// FitVids - Makes video embeds responsive
$(".gh-content").fitVids();
});
</script>
{{!-- Ghost outputs required functional scripts with this tag - it should always be the last thing before the closing body tag --}}
{{ghost_foot}}
</body>
</html>

View File

@ -0,0 +1,37 @@
{{!< default}}
{{!--
There are two error files in this theme, one for 404s and one for all other errors.
This file is the former, and handles all 404 Page Not Found errors.
The 404 error is the most common error that a visitor might see, for example when
following a broken link
Keep this template as lightweight as you can!
--}}
<section class="outer error-content">
<div class="inner">
<section class="error-message">
<h1 class="error-code">{{statusCode}}</h1>
<p class="error-description">{{message}}</p>
<a class="error-link" href="{{@site.url}}">Go to the front page →</a>
</section>
</div>
</section>
{{!-- Given that people landing on this page didn't find what they
were looking for, let's give them some alternative stuff to read. --}}
<aside class="read-more-wrap outer">
<div class="read-more inner">
{{#get "posts" include="authors" limit="3" as |more_posts|}}
{{#if more_posts}}
{{#foreach more_posts}}
{{> "post-card"}}
{{/foreach}}
{{/if}}
{{/get}}
</div>
</aside>

View File

@ -0,0 +1,74 @@
{{!--
There are two error files in this theme, one for 404s and one for all other errors.
This file is the latter, and handles all 400/500 errors that might occur.
Because 500 errors in particular usually happen when a server is struggling, this
template is as simple as possible. No template dependencies, no JS, no API calls.
This is to prevent rendering the error-page itself compounding the issue causing
the error in the first place.
Keep this template as lightweight as you can!
--}}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<title>{{meta_title}}</title>
<meta name="HandheldFriendly" content="True" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="stylesheet" type="text/css" href="{{asset "built/screen.css"}}" />
</head>
<body>
<div class="site-wrapper">
<header class="site-header no-image">
<div class="site-nav-main outer">
<div class="inner">
<nav class="site-nav-center">
{{#if @site.logo}}
<a class="site-nav-logo" href="{{@site.url}}"><img src="{{img_url @site.logo size="xs"}}"
alt="{{@site.title}}" /></a>
{{else}}
<a class="site-nav-logo" href="{{@site.url}}">{{@site.title}}</a>
{{/if}}
</nav>
</div>
</div>
</header>
<main class="outer error-content">
<div class="inner">
<section class="error-message">
<h1 class="error-code">{{statusCode}}</h1>
<p class="error-description">{{message}}</p>
<a class="error-link" href="{{@site.url}}">Go to the front page →</a>
</section>
{{#if errorDetails}}
<section class="error-stack">
<h3>Theme errors</h3>
<ul class="error-stack-list">
{{#foreach errorDetails}}
<li>
<em class="error-stack-function">{{{rule}}}</em>
{{#foreach failures}}
<p><span class="error-stack-file">Ref: {{ref}}</span></p>
<p><span class="error-stack-file">Message: {{message}}</span></p>
{{/foreach}}
</li>
{{/foreach}}
</ul>
</section>
{{/if}}
</div>
</main>
</div>
</body>
</html>

View File

@ -0,0 +1,176 @@
const {series, watch, src, dest, parallel} = require('gulp');
const pump = require('pump');
const path = require('path');
const releaseUtils = require('@tryghost/release-utils');
const inquirer = require('inquirer');
// gulp plugins and utils
const livereload = require('gulp-livereload');
const postcss = require('gulp-postcss');
const zip = require('gulp-zip');
const concat = require('gulp-concat');
const uglify = require('gulp-uglify');
const beeper = require('beeper');
const fs = require('fs');
// postcss plugins
const autoprefixer = require('autoprefixer');
const colorFunction = require('postcss-color-mod-function');
const cssnano = require('cssnano');
const easyimport = require('postcss-easy-import');
const REPO = 'TryGhost/Casper';
const REPO_READONLY = 'TryGhost/Casper';
const CHANGELOG_PATH = path.join(process.cwd(), '.', 'changelog.md');
function serve(done) {
livereload.listen();
done();
}
const handleError = (done) => {
return function (err) {
if (err) {
beeper();
}
return done(err);
};
};
function hbs(done) {
pump([
src(['*.hbs', 'partials/**/*.hbs']),
livereload()
], handleError(done));
}
function css(done) {
pump([
src('assets/css/*.css', {sourcemaps: true}),
postcss([
easyimport,
colorFunction(),
autoprefixer(),
cssnano()
]),
dest('assets/built/', {sourcemaps: '.'}),
livereload()
], handleError(done));
}
function js(done) {
pump([
src([
// pull in lib files first so our own code can depend on it
'assets/js/lib/*.js',
'assets/js/*.js'
], {sourcemaps: true}),
concat('casper.js'),
uglify(),
dest('assets/built/', {sourcemaps: '.'}),
livereload()
], handleError(done));
}
function zipper(done) {
const filename = require('./package.json').name + '.zip';
pump([
src([
'**',
'!node_modules', '!node_modules/**',
'!dist', '!dist/**',
'!yarn-error.log',
'!yarn.lock',
'!gulpfile.js'
]),
zip(filename),
dest('dist/')
], handleError(done));
}
const cssWatcher = () => watch('assets/css/**', css);
const jsWatcher = () => watch('assets/js/**', js);
const hbsWatcher = () => watch(['*.hbs', 'partials/**/*.hbs'], hbs);
const watcher = parallel(cssWatcher, jsWatcher, hbsWatcher);
const build = series(css, js);
exports.build = build;
exports.zip = series(build, zipper);
exports.default = series(build, serve, watcher);
exports.release = async () => {
// @NOTE: https://yarnpkg.com/lang/en/docs/cli/version/
// require(./package.json) can run into caching issues, this re-reads from file everytime on release
let packageJSON = JSON.parse(fs.readFileSync('./package.json'));
const newVersion = packageJSON.version;
if (!newVersion || newVersion === '') {
console.log(`Invalid version: ${newVersion}`);
return;
}
console.log(`\nCreating release for ${newVersion}...`);
const githubToken = process.env.GST_TOKEN;
if (!githubToken) {
console.log('Please configure your environment with a GitHub token located in GST_TOKEN');
return;
}
try {
const result = await inquirer.prompt([{
type: 'input',
name: 'compatibleWithGhost',
message: 'Which version of Ghost is it compatible with?',
default: '5.0.0'
}]);
const compatibleWithGhost = result.compatibleWithGhost;
const releasesResponse = await releaseUtils.releases.get({
userAgent: 'Casper',
uri: `https://api.github.com/repos/${REPO_READONLY}/releases`
});
if (!releasesResponse || !releasesResponse) {
console.log('No releases found. Skipping...');
return;
}
let previousVersion = releasesResponse[0].tag_name || releasesResponse[0].name;
console.log(`Previous version: ${previousVersion}`);
const changelog = new releaseUtils.Changelog({
changelogPath: CHANGELOG_PATH,
folder: path.join(process.cwd(), '.')
});
changelog
.write({
githubRepoPath: `https://github.com/${REPO}`,
lastVersion: previousVersion
})
.sort()
.clean();
const newReleaseResponse = await releaseUtils.releases.create({
draft: true,
preRelease: false,
tagName: 'v' + newVersion,
releaseName: newVersion,
userAgent: 'Casper',
uri: `https://api.github.com/repos/${REPO}/releases`,
github: {
token: githubToken
},
content: [`**Compatible with Ghost ≥ ${compatibleWithGhost}**\n\n`],
changelogPath: CHANGELOG_PATH
});
console.log(`\nRelease draft generated: ${newReleaseResponse.releaseUrl}\n`);
} catch (err) {
console.error(err);
process.exit(1);
}
};

View File

@ -0,0 +1,54 @@
{{!< default}}
{{!-- The tag above means: insert everything in this file
into the {body} of the default.hbs template --}}
<div class="site-header-content outer{{#match @custom.header_style "Left aligned"}} left-aligned{{/match}}{{#unless @custom.show_publication_cover}}{{#match @custom.header_style "Hidden"}} no-content{{/match}}{{/unless}}">
{{#if @custom.show_publication_cover}}
{{#if @site.cover_image}}
{{!-- This is a responsive image, it loads different sizes depending on device
https://medium.freecodecamp.org/a-guide-to-responsive-images-with-ready-to-use-templates-c400bd65c433 --}}
<img class="site-header-cover"
srcset="{{img_url @site.cover_image size="s"}} 300w,
{{img_url @site.cover_image size="m"}} 600w,
{{img_url @site.cover_image size="l"}} 1000w,
{{img_url @site.cover_image size="xl"}} 2000w"
sizes="100vw"
src="{{img_url @site.cover_image size="xl"}}"
alt="{{@site.title}}"
/>
{{/if}}
{{/if}}
{{#match @custom.header_style "!=" "Hidden"}}
<div class="site-header-inner inner">
{{#match @custom.navigation_layout "Logo on cover"}}
{{#if @site.logo}}
<img class="site-logo" src="{{@site.logo}}" alt="{{@site.title}}">
{{else}}
<h1 class="site-title">{{@site.title}}</h1>
{{/if}}
{{/match}}
{{#if @site.description}}
<p class="site-description">{{@site.description}}</p>
{{/if}}
</div>
{{/match}}
</div>
{{!-- The main content area --}}
<main id="site-main" class="site-main outer">
<div class="inner posts">
<div class="post-feed">
{{#foreach posts}}
{{!-- The tag below includes the markup for each post - partials/post-card.hbs --}}
{{> "post-card"}}
{{/foreach}}
</div>
{{pagination}}
</div>
</main>

View File

@ -0,0 +1,179 @@
{
"name": "casper",
"description": "A clean, minimal default theme for the Ghost publishing platform",
"demo": "https://demo.ghost.io",
"version": "5.7.4",
"engines": {
"ghost": ">=5.0.0"
},
"license": "MIT",
"screenshots": {
"desktop": "assets/screenshot-desktop.jpg",
"mobile": "assets/screenshot-mobile.jpg"
},
"scripts": {
"dev": "gulp",
"zip": "gulp zip",
"test": "gscan .",
"test:ci": "gscan --fatal --verbose .",
"pretest": "gulp build",
"preship": "yarn test",
"ship": "STATUS=$(git status --porcelain); echo $STATUS; if [ -z \"$STATUS\" ]; then yarn version && git push --follow-tags; else echo \"Uncomitted changes found.\" && exit 1; fi",
"postship": "git fetch && gulp release"
},
"author": {
"name": "Ghost Foundation",
"email": "hello@ghost.org",
"url": "https://ghost.org/"
},
"gpm": {
"type": "theme",
"categories": [
"Minimal",
"Magazine"
]
},
"keywords": [
"ghost",
"theme",
"ghost-theme"
],
"repository": {
"type": "git",
"url": "https://github.com/TryGhost/Casper.git"
},
"bugs": "https://github.com/TryGhost/Casper/issues",
"contributors": "https://github.com/TryGhost/Casper/graphs/contributors",
"devDependencies": {
"@tryghost/release-utils": "0.8.1",
"autoprefixer": "10.4.7",
"beeper": "2.1.0",
"cssnano": "5.1.12",
"gscan": "4.36.1",
"gulp": "4.0.2",
"gulp-concat": "2.6.1",
"gulp-livereload": "4.0.2",
"gulp-postcss": "9.0.1",
"gulp-uglify": "3.0.2",
"gulp-zip": "5.1.0",
"inquirer": "8.2.4",
"postcss": "8.2.13",
"postcss-color-mod-function": "3.0.3",
"postcss-easy-import": "4.0.0",
"pump": "3.0.0"
},
"browserslist": [
"defaults"
],
"config": {
"posts_per_page": 25,
"image_sizes": {
"xxs": {
"width": 30
},
"xs": {
"width": 100
},
"s": {
"width": 300
},
"m": {
"width": 600
},
"l": {
"width": 1000
},
"xl": {
"width": 2000
}
},
"card_assets": true,
"custom": {
"navigation_layout": {
"type": "select",
"options": [
"Logo on cover",
"Logo in the middle",
"Stacked"
],
"default": "Logo on cover"
},
"title_font": {
"type": "select",
"options": [
"Modern sans-serif",
"Elegant serif"
],
"default": "Modern sans-serif"
},
"body_font": {
"type": "select",
"options": [
"Modern sans-serif",
"Elegant serif"
],
"default": "Elegant serif"
},
"show_publication_cover": {
"type": "boolean",
"default": true,
"group": "homepage"
},
"header_style": {
"type": "select",
"options": [
"Center aligned",
"Left aligned",
"Hidden"
],
"default": "Center aligned",
"group": "homepage"
},
"feed_layout": {
"type": "select",
"options": [
"Classic",
"Grid",
"List"
],
"default": "Classic",
"group": "homepage"
},
"color_scheme": {
"type": "select",
"options": [
"Light",
"Dark",
"Auto"
],
"default": "Light"
},
"post_image_style": {
"type": "select",
"options": [
"Wide",
"Full",
"Small",
"Hidden"
],
"default": "Wide",
"group": "post"
},
"email_signup_text": {
"type": "text",
"default": "Sign up for more like this.",
"group": "post"
},
"show_recent_posts_footer": {
"type": "boolean",
"default": true,
"group": "post"
}
}
},
"renovate": {
"extends": [
"@tryghost:theme"
]
}
}

Some files were not shown because too many files have changed in this diff Show More