fixed docker file

This commit is contained in:
Raj Nandan Sharma
2024-11-13 10:33:29 +05:30
parent c57f75d1ea
commit c992ec22ca
26 changed files with 179 additions and 2807 deletions
+2 -2
View File
@@ -18,7 +18,7 @@ config/static/*
!config/static/.kener
db/*
!db/.kener
src/lib/server/data/*
!src/lib/server/data/.kener
database/*
!database/.kener
src/lib/server/config/monitors.yaml
src/lib/server/config/site.yaml
+41 -36
View File
@@ -1,10 +1,29 @@
# Stage 1: Base image
FROM lsiobase/alpine:3.18 AS build
# Stage 1: Build stage
FROM node:18-alpine AS builder
WORKDIR /app
# Copy package files first for better caching
COPY package*.json ./
# Install dependencies
RUN npm install
# Copy project files
COPY . .
# Build the application
RUN npm run build
# Stage 2: Run stage
FROM lsiobase/alpine:3.18
# Set timezone and user
ENV TZ=Etc/GMT
ENV PUID=911
ENV PGID=911
ENV TZ=Etc/GMT \
PUID=911 \
PGID=911 \
NODE_ENV=production \
PORT=3000
# Install Node.js and npm
RUN echo "**** install build packages ****" && \
@@ -20,48 +39,34 @@ RUN echo "**** install build packages ****" && \
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && \
echo $TZ > /etc/timezone
# Set working directory
WORKDIR /app
# Copy built files from builder stage
COPY --from=builder /app/build ./build
COPY --from=builder /app/package*.json ./
COPY --from=builder /app/main.js ./
COPY --from=builder /app/build.js ./
COPY --from=builder /app/src ./src
COPY --from=builder /app/static ./static
COPY --from=builder /app/database ./database
COPY --from=builder /app/config ./config
COPY --from=builder /app/node_modules ./node_modules
COPY --from=builder /app/.env ./.env
# Install production dependencies only
# Copy package files first for better caching
COPY package*.json ./
# Install dependencies
RUN npm install
# Copy project files
COPY . .
# Create database directory
# Create and configure database directory
RUN mkdir -p /app/database && \
chown -R $PUID:$PGID /app/database && \
chmod -R 755 /app/database
# Set production environment
ENV NODE_ENV=production \
PORT=3000 \
TZ=Etc/GMT \
PUID=911 \
PGID=911
# Copy database contents if they exist
# Declare volume for persistence
VOLUME /app/database
# Build application
RUN node build.js && \
npm run build
RUN npm install -g vite-node
# Use PORT env variable
# Expose port
EXPOSE $PORT
# Print PORT env variable
RUN echo "PORT: $PORT"
# Set startup command
CMD ["sh", "-c", "vite-node src/lib/server/startup.js & node main.js & wait"]
CMD ["sh", "-c", "node build.js && (node src/lib/server/startup.js & node main.js & wait)"]
+1
View File
@@ -0,0 +1 @@
database folder
-527
View File
@@ -1,527 +0,0 @@
{
"1731391680": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731391920": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731391980": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731392040": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731392100": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731392160": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731392220": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731392280": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731392340": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731392400": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731392460": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731392520": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731392580": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731392640": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731392700": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731392760": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731392820": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731392880": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731392940": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731393000": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731393060": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731393120": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731393180": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731393240": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731393300": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731393360": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731393420": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731393480": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731393540": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731393600": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731393660": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731393720": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731393780": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731393840": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731393900": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731393960": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731394020": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731394080": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731394140": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731422160": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731422220": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731422280": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731422340": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731422400": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731422460": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731422520": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731422580": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731422640": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731422700": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731422760": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731423600": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731423660": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731423720": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731423780": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731423840": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731423900": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731423960": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731424020": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731424080": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731424140": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731424200": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731424440": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731424500": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731424560": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731424620": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731424680": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731424740": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731424800": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731424860": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731424920": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731424980": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731425040": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731425100": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731425160": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731425220": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731425280": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731425340": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731425400": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731425460": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731425520": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731425580": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731425640": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731425700": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731425760": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731425820": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731425880": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731425940": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731426000": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731426060": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731426120": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731426180": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731426240": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731426300": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731426360": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731426420": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731426480": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731426540": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731426600": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731426660": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731426720": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731426780": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731426840": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731426900": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731426960": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
},
"1731427020": {
"status": "UP",
"latency": 0,
"type": "defaultStatus"
}
}
File diff suppressed because one or more lines are too long
-867
View File
@@ -1,867 +0,0 @@
{
"1731379920": {
"status": "UP",
"latency": 285,
"type": "realtime"
},
"1731379980": {
"status": "UP",
"latency": 292,
"type": "realtime"
},
"1731380040": {
"status": "UP",
"latency": 318,
"type": "realtime"
},
"1731380100": {
"status": "UP",
"latency": 182,
"type": "realtime"
},
"1731380160": {
"status": "UP",
"latency": 172,
"type": "realtime"
},
"1731380220": {
"status": "UP",
"latency": 174,
"type": "realtime"
},
"1731380280": {
"status": "UP",
"latency": 186,
"type": "realtime"
},
"1731380340": {
"status": "UP",
"latency": 187,
"type": "realtime"
},
"1731381300": {
"status": "UP",
"latency": 468,
"type": "realtime"
},
"1731381360": {
"status": "UP",
"latency": 197,
"type": "realtime"
},
"1731382260": {
"status": "UP",
"latency": 389,
"type": "realtime"
},
"1731382320": {
"status": "UP",
"latency": 357,
"type": "realtime"
},
"1731383160": {
"status": "UP",
"latency": 661,
"type": "realtime"
},
"1731383220": {
"status": "UP",
"latency": 257,
"type": "realtime"
},
"1731383280": {
"status": "UP",
"latency": 948,
"type": "realtime"
},
"1731383340": {
"status": "UP",
"latency": 204,
"type": "realtime"
},
"1731383700": {
"status": "UP",
"latency": 550,
"type": "realtime"
},
"1731383760": {
"status": "UP",
"latency": 262,
"type": "realtime"
},
"1731384720": {
"status": "UP",
"latency": 873,
"type": "realtime"
},
"1731384780": {
"status": "UP",
"latency": 479,
"type": "realtime"
},
"1731384840": {
"status": "UP",
"latency": 398,
"type": "realtime"
},
"1731384900": {
"status": "UP",
"latency": 321,
"type": "realtime"
},
"1731384960": {
"status": "UP",
"latency": 170,
"type": "realtime"
},
"1731385020": {
"status": "UP",
"latency": 178,
"type": "realtime"
},
"1731385080": {
"status": "UP",
"latency": 189,
"type": "realtime"
},
"1731385140": {
"status": "UP",
"latency": 175,
"type": "realtime"
},
"1731385200": {
"status": "UP",
"latency": 190,
"type": "realtime"
},
"1731385260": {
"status": "UP",
"latency": 335,
"type": "realtime"
},
"1731385320": {
"status": "UP",
"latency": 697,
"type": "realtime"
},
"1731385440": {
"status": "UP",
"latency": 1998,
"type": "realtime"
},
"1731385560": {
"status": "UP",
"latency": 637,
"type": "realtime"
},
"1731385620": {
"status": "UP",
"latency": 652,
"type": "realtime"
},
"1731385680": {
"status": "UP",
"latency": 669,
"type": "realtime"
},
"1731385740": {
"status": "UP",
"latency": 694,
"type": "realtime"
},
"1731385800": {
"status": "UP",
"latency": 654,
"type": "realtime"
},
"1731385860": {
"status": "UP",
"latency": 620,
"type": "realtime"
},
"1731385920": {
"status": "UP",
"latency": 693,
"type": "realtime"
},
"1731385980": {
"status": "UP",
"latency": 524,
"type": "realtime"
},
"1731386040": {
"status": "UP",
"latency": 1840,
"type": "realtime"
},
"1731386100": {
"status": "UP",
"latency": 669,
"type": "realtime"
},
"1731386160": {
"status": "UP",
"latency": 646,
"type": "realtime"
},
"1731386220": {
"status": "UP",
"latency": 1486,
"type": "realtime"
},
"1731386280": {
"status": "UP",
"latency": 1003,
"type": "realtime"
},
"1731386340": {
"status": "UP",
"latency": 612,
"type": "realtime"
},
"1731386400": {
"status": "UP",
"latency": 720,
"type": "realtime"
},
"1731386460": {
"status": "UP",
"latency": 392,
"type": "realtime"
},
"1731386520": {
"status": "UP",
"latency": 400,
"type": "realtime"
},
"1731386580": {
"status": "UP",
"latency": 365,
"type": "realtime"
},
"1731386640": {
"status": "UP",
"latency": 372,
"type": "realtime"
},
"1731386700": {
"status": "UP",
"latency": 431,
"type": "realtime"
},
"1731386760": {
"status": "UP",
"latency": 429,
"type": "realtime"
},
"1731386880": {
"status": "UP",
"latency": 400,
"type": "realtime"
},
"1731386940": {
"status": "UP",
"latency": 397,
"type": "realtime"
},
"1731389640": {
"status": "UP",
"latency": 687,
"type": "realtime"
},
"1731389700": {
"status": "UP",
"latency": 1072,
"type": "realtime"
},
"1731390480": {
"status": "UP",
"latency": 477,
"type": "realtime"
},
"1731390540": {
"status": "UP",
"latency": 446,
"type": "realtime"
},
"1731390720": {
"status": "UP",
"latency": 534,
"type": "realtime"
},
"1731390780": {
"status": "UP",
"latency": 565,
"type": "realtime"
},
"1731390900": {
"status": "UP",
"latency": 449,
"type": "realtime"
},
"1731390960": {
"status": "UP",
"latency": 562,
"type": "realtime"
},
"1731391020": {
"status": "UP",
"latency": 1385,
"type": "realtime"
},
"1731391080": {
"status": "UP",
"latency": 371,
"type": "realtime"
},
"1731391140": {
"status": "UP",
"latency": 414,
"type": "realtime"
},
"1731391200": {
"status": "UP",
"latency": 420,
"type": "realtime"
},
"1731391260": {
"status": "UP",
"latency": 433,
"type": "realtime"
},
"1731391320": {
"status": "UP",
"latency": 447,
"type": "realtime"
},
"1731391380": {
"status": "UP",
"latency": 386,
"type": "realtime"
},
"1731391680": {
"status": "UP",
"latency": 523,
"type": "realtime"
},
"1731391920": {
"status": "UP",
"latency": 538,
"type": "realtime"
},
"1731391980": {
"status": "UP",
"latency": 545,
"type": "realtime"
},
"1731392040": {
"status": "UP",
"latency": 566,
"type": "realtime"
},
"1731392100": {
"status": "UP",
"latency": 564,
"type": "realtime"
},
"1731392160": {
"status": "UP",
"latency": 551,
"type": "realtime"
},
"1731392220": {
"status": "UP",
"latency": 758,
"type": "realtime"
},
"1731392280": {
"status": "UP",
"latency": 562,
"type": "realtime"
},
"1731392340": {
"status": "UP",
"latency": 579,
"type": "realtime"
},
"1731392400": {
"status": "UP",
"latency": 529,
"type": "realtime"
},
"1731392460": {
"status": "UP",
"latency": 401,
"type": "realtime"
},
"1731392520": {
"status": "UP",
"latency": 378,
"type": "realtime"
},
"1731392580": {
"status": "UP",
"latency": 398,
"type": "realtime"
},
"1731392640": {
"status": "UP",
"latency": 395,
"type": "realtime"
},
"1731392700": {
"status": "UP",
"latency": 556,
"type": "realtime"
},
"1731392760": {
"status": "UP",
"latency": 407,
"type": "realtime"
},
"1731392820": {
"status": "UP",
"latency": 439,
"type": "realtime"
},
"1731392880": {
"status": "UP",
"latency": 448,
"type": "realtime"
},
"1731392940": {
"status": "UP",
"latency": 439,
"type": "realtime"
},
"1731393000": {
"status": "UP",
"latency": 415,
"type": "realtime"
},
"1731393060": {
"status": "UP",
"latency": 481,
"type": "realtime"
},
"1731393120": {
"status": "UP",
"latency": 535,
"type": "realtime"
},
"1731393180": {
"status": "UP",
"latency": 591,
"type": "realtime"
},
"1731393240": {
"status": "UP",
"latency": 572,
"type": "realtime"
},
"1731393300": {
"status": "UP",
"latency": 632,
"type": "realtime"
},
"1731393360": {
"status": "UP",
"latency": 533,
"type": "realtime"
},
"1731393420": {
"status": "UP",
"latency": 706,
"type": "realtime"
},
"1731393480": {
"status": "UP",
"latency": 558,
"type": "realtime"
},
"1731393540": {
"status": "UP",
"latency": 553,
"type": "realtime"
},
"1731393600": {
"status": "UP",
"latency": 523,
"type": "realtime"
},
"1731393660": {
"status": "UP",
"latency": 606,
"type": "realtime"
},
"1731393720": {
"status": "UP",
"latency": 566,
"type": "realtime"
},
"1731393780": {
"status": "UP",
"latency": 554,
"type": "realtime"
},
"1731393840": {
"status": "UP",
"latency": 593,
"type": "realtime"
},
"1731393900": {
"status": "UP",
"latency": 619,
"type": "realtime"
},
"1731393960": {
"status": "UP",
"latency": 594,
"type": "realtime"
},
"1731394020": {
"status": "UP",
"latency": 412,
"type": "realtime"
},
"1731394080": {
"status": "UP",
"latency": 439,
"type": "realtime"
},
"1731394140": {
"status": "UP",
"latency": 426,
"type": "realtime"
},
"1731422160": {
"status": "UP",
"latency": 287,
"type": "realtime"
},
"1731422220": {
"status": "UP",
"latency": 368,
"type": "realtime"
},
"1731422280": {
"status": "UP",
"latency": 306,
"type": "realtime"
},
"1731422340": {
"status": "UP",
"latency": 339,
"type": "realtime"
},
"1731422400": {
"status": "UP",
"latency": 402,
"type": "realtime"
},
"1731422460": {
"status": "UP",
"latency": 338,
"type": "realtime"
},
"1731422520": {
"status": "UP",
"latency": 688,
"type": "realtime"
},
"1731422580": {
"status": "UP",
"latency": 454,
"type": "realtime"
},
"1731422640": {
"status": "UP",
"latency": 371,
"type": "realtime"
},
"1731422700": {
"status": "UP",
"latency": 319,
"type": "realtime"
},
"1731422760": {
"status": "UP",
"latency": 599,
"type": "realtime"
},
"1731423600": {
"status": "UP",
"latency": 578,
"type": "realtime"
},
"1731423660": {
"status": "UP",
"latency": 220,
"type": "realtime"
},
"1731423720": {
"status": "UP",
"latency": 207,
"type": "realtime"
},
"1731423780": {
"status": "UP",
"latency": 312,
"type": "realtime"
},
"1731423840": {
"status": "UP",
"latency": 344,
"type": "realtime"
},
"1731423900": {
"status": "UP",
"latency": 328,
"type": "realtime"
},
"1731423960": {
"status": "UP",
"latency": 362,
"type": "realtime"
},
"1731424020": {
"status": "UP",
"latency": 308,
"type": "realtime"
},
"1731424080": {
"status": "UP",
"latency": 348,
"type": "realtime"
},
"1731424140": {
"status": "UP",
"latency": 318,
"type": "realtime"
},
"1731424200": {
"status": "UP",
"latency": 401,
"type": "realtime"
},
"1731424440": {
"status": "UP",
"latency": 335,
"type": "realtime"
},
"1731424500": {
"status": "UP",
"latency": 407,
"type": "realtime"
},
"1731424560": {
"status": "UP",
"latency": 231,
"type": "realtime"
},
"1731424620": {
"status": "UP",
"latency": 290,
"type": "realtime"
},
"1731424680": {
"status": "UP",
"latency": 357,
"type": "realtime"
},
"1731424740": {
"status": "UP",
"latency": 400,
"type": "realtime"
},
"1731424800": {
"status": "UP",
"latency": 313,
"type": "realtime"
},
"1731424860": {
"status": "UP",
"latency": 325,
"type": "realtime"
},
"1731424920": {
"status": "UP",
"latency": 183,
"type": "realtime"
},
"1731424980": {
"status": "UP",
"latency": 227,
"type": "realtime"
},
"1731425040": {
"status": "UP",
"latency": 179,
"type": "realtime"
},
"1731425100": {
"status": "UP",
"latency": 219,
"type": "realtime"
},
"1731425160": {
"status": "UP",
"latency": 279,
"type": "realtime"
},
"1731425220": {
"status": "UP",
"latency": 200,
"type": "realtime"
},
"1731425280": {
"status": "UP",
"latency": 197,
"type": "realtime"
},
"1731425340": {
"status": "UP",
"latency": 216,
"type": "realtime"
},
"1731425400": {
"status": "UP",
"latency": 198,
"type": "realtime"
},
"1731425460": {
"status": "UP",
"latency": 211,
"type": "realtime"
},
"1731425520": {
"status": "UP",
"latency": 198,
"type": "realtime"
},
"1731425580": {
"status": "UP",
"latency": 200,
"type": "realtime"
},
"1731425640": {
"status": "UP",
"latency": 214,
"type": "realtime"
},
"1731425700": {
"status": "UP",
"latency": 232,
"type": "realtime"
},
"1731425760": {
"status": "UP",
"latency": 230,
"type": "realtime"
},
"1731425820": {
"status": "UP",
"latency": 194,
"type": "realtime"
},
"1731425880": {
"status": "UP",
"latency": 206,
"type": "realtime"
},
"1731425940": {
"status": "UP",
"latency": 194,
"type": "realtime"
},
"1731426000": {
"status": "UP",
"latency": 196,
"type": "realtime"
},
"1731426060": {
"status": "UP",
"latency": 194,
"type": "realtime"
},
"1731426120": {
"status": "UP",
"latency": 204,
"type": "realtime"
},
"1731426180": {
"status": "UP",
"latency": 491,
"type": "realtime"
},
"1731426240": {
"status": "UP",
"latency": 332,
"type": "realtime"
},
"1731426300": {
"status": "UP",
"latency": 310,
"type": "realtime"
},
"1731426360": {
"status": "UP",
"latency": 304,
"type": "realtime"
},
"1731426420": {
"status": "UP",
"latency": 362,
"type": "realtime"
},
"1731426480": {
"status": "UP",
"latency": 1229,
"type": "realtime"
},
"1731426540": {
"status": "UP",
"latency": 211,
"type": "realtime"
},
"1731426600": {
"status": "UP",
"latency": 179,
"type": "realtime"
},
"1731426660": {
"status": "UP",
"latency": 208,
"type": "realtime"
},
"1731426720": {
"status": "UP",
"latency": 217,
"type": "realtime"
},
"1731426780": {
"status": "UP",
"latency": 218,
"type": "realtime"
},
"1731426840": {
"status": "UP",
"latency": 196,
"type": "realtime"
},
"1731426900": {
"status": "UP",
"latency": 229,
"type": "realtime"
},
"1731426960": {
"status": "UP",
"latency": 258,
"type": "realtime"
},
"1731427020": {
"status": "UP",
"latency": 203,
"type": "realtime"
}
}
File diff suppressed because one or more lines are too long
-54
View File
@@ -1,54 +0,0 @@
[
{
"name": "OkBookmarksX",
"description": "Stop forgetting about your bookmarks <a href=\"https://okbookmarks.com/\" class=\"font-medium underline underline-offset-4\" target=\"_blank\">https://okbookmarks.com/</a>",
"tag": "okbookmarks",
"image": "https://okbookmarks.com/app/mybookmark.png",
"api": {
"method": "GET",
"url": "https://okbookmarks.com/",
"eval": "(function (statusCode, responseTime, responseData) {\n\tlet statusCodeShort = Math.floor(statusCode/100);\n if(statusCode == 429 || (statusCodeShort >=2 && statusCodeShort <= 3)) {\n return {\n\t\t\tstatus: 'UP',\n\t\t\tlatency: responseTime,\n }\n } \n\treturn {\n\t\tstatus: 'DOWN',\n\t\tlatency: responseTime,\n\t}\n})",
"timeout": 10000
},
"folderName": "okbookmarksx",
"dayDegradedMinimumCount": 1,
"dayDownMinimumCount": 1,
"includeDegradedInDowntime": false,
"path0Day": "./database/okbookmarksx.0day.utc.json",
"path90Day": "./database/okbookmarksx.90day.utc.json",
"hasAPI": true
},
{
"name": "Google Search",
"description": "Search the world's information, including webpages, images, videos and more. <a href=\"https://www.google.com/webhp\" class=\"font-medium underline underline-offset-4\" target=\"_blank\">https://www.google.com/webhp</a>",
"tag": "google-search",
"image": "/google.png",
"api": {
"method": "GET",
"url": "https://www.google.com/webhp",
"eval": "(function (statusCode, responseTime, responseData) {\n\tlet statusCodeShort = Math.floor(statusCode/100);\n if(statusCode == 429 || (statusCodeShort >=2 && statusCodeShort <= 3)) {\n return {\n\t\t\tstatus: 'UP',\n\t\t\tlatency: responseTime,\n }\n } \n\treturn {\n\t\tstatus: 'DOWN',\n\t\tlatency: responseTime,\n\t}\n})",
"timeout": 10000
},
"folderName": "google-search",
"dayDegradedMinimumCount": 1,
"dayDownMinimumCount": 1,
"includeDegradedInDowntime": false,
"path0Day": "./database/google-search.0day.utc.json",
"path90Day": "./database/google-search.90day.utc.json",
"hasAPI": true
},
{
"name": "Earth",
"description": "Our blue planet",
"tag": "earth",
"defaultStatus": "UP",
"image": "/earth.png",
"folderName": "earth",
"dayDegradedMinimumCount": 1,
"dayDownMinimumCount": 1,
"includeDegradedInDowntime": false,
"path0Day": "./database/earth.0day.utc.json",
"path90Day": "./database/earth.90day.utc.json",
"hasAPI": false
}
]
-82
View File
@@ -1,82 +0,0 @@
{
"1731342480": {
"status": "UP",
"latency": 164,
"type": "realtime"
},
"1731342540": {
"status": "UP",
"latency": 568,
"type": "realtime"
},
"1731342600": {
"status": "UP",
"latency": 171,
"type": "realtime"
},
"1731342660": {
"status": "UP",
"latency": 320,
"type": "realtime"
},
"1731342720": {
"status": "UP",
"latency": 391,
"type": "realtime"
},
"1731342780": {
"status": "UP",
"latency": 174,
"type": "realtime"
},
"1731342840": {
"status": "UP",
"latency": 200,
"type": "realtime"
},
"1731342900": {
"status": "UP",
"latency": 254,
"type": "realtime"
},
"1731342960": {
"status": "UP",
"latency": 185,
"type": "realtime"
},
"1731343020": {
"status": "UP",
"latency": 203,
"type": "realtime"
},
"1731343080": {
"status": "UP",
"latency": 162,
"type": "realtime"
},
"1731343140": {
"status": "UP",
"latency": 165,
"type": "realtime"
},
"1731343200": {
"status": "UP",
"latency": 154,
"type": "realtime"
},
"1731343260": {
"status": "UP",
"latency": 145,
"type": "realtime"
},
"1731343320": {
"status": "UP",
"latency": 159,
"type": "realtime"
},
"1731343380": {
"status": "UP",
"latency": 161,
"type": "realtime"
}
}
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -30,7 +30,7 @@
"build": "vite build",
"preview": "vite preview",
"preschedule": "node build.js",
"schedule": "vite-node src/lib/server/startup.js",
"schedule": "node src/lib/server/startup.js",
"development": "vite dev",
"dev": "npm-run-all --parallel schedule development",
"prettify": "prettier --write ."
+3 -1
View File
@@ -92,7 +92,9 @@
{/if}
{#if monitor.image}
<img
src={monitor.image}
src={monitor.image.startsWith("/")
? base + monitor.image
: monitor.image}
class="absolute left-0 top-1 inline h-5 w-5"
alt=""
srcset=""
+1 -1
View File
@@ -174,7 +174,7 @@
<div class="scroll-m-20 pr-5 text-xl font-medium tracking-tight">
{#if monitor.image}
<img
src={monitor.image}
src={monitor.image.startsWith("/") ? base + monitor.image : monitor.image}
class="absolute left-6 top-6 inline h-5 w-5"
alt={monitor.name}
srcset=""
+9 -2
View File
@@ -13,7 +13,12 @@
<div class="container flex h-14 items-center">
<a href={data.site.home ? data.site.home : base} class="mr-6 flex items-center space-x-2">
{#if data.site.logo}
<img src={data.site.logo} class="h-8" alt={data.site.title} srcset="" />
<img
src={data.site.logo.startsWith("/") ? base + data.site.logo : data.site.logo}
class="h-8"
alt={data.site.title}
srcset=""
/>
{/if}
{#if data.site.siteName}
<span class="hidden text-[15px] font-bold md:inline-block lg:text-base">
@@ -33,7 +38,9 @@
>
{#if navItem.iconURL}
<img
src={navItem.iconURL}
src={navItem.iconURL.startsWith("/")
? base + navItem.iconURL
: navItem.iconURL}
class="mr-1.5 inline h-4"
alt={navItem.name}
/>
+2 -2
View File
@@ -1,6 +1,6 @@
// @ts-nocheck
import { ENV } from "$lib/server/constants.js";
import { IsStringURLSafe } from "$lib/server/tool.js";
import { ENV } from "./constants.js";
import { IsStringURLSafe } from "./tool.js";
import dotenv from "dotenv";
dotenv.config();
import fs from "fs-extra";
+3 -8
View File
@@ -2,18 +2,13 @@
import axios from "axios";
import ping from "ping";
import fs from "fs-extra";
import { UP, DOWN, DEGRADED } from "$lib/server/constants.js";
import { UP, DOWN, DEGRADED } from "./constants.js";
import {
GetNowTimestampUTC,
GetMinuteStartNowTimestampUTC,
GetMinuteStartTimestampUTC
} from "$lib/server/tool.js";
import {
GetIncidents,
GetEndTimeFromBody,
GetStartTimeFromBody,
CloseIssue
} from "$lib/server/github.js";
} from "./tool.js";
import { GetIncidents, GetEndTimeFromBody, GetStartTimeFromBody, CloseIssue } from "./github.js";
import Randomstring from "randomstring";
import Queue from "queue";
import dotenv from "dotenv";
+94
View File
@@ -0,0 +1,94 @@
[
{
"name": "Google Search",
"description": "Search the world's <span class=\"text-red-500\">information</span>, including webpages, images, videos and more.",
"tag": "google-search",
"image": "/google.png",
"api": {
"method": "GET",
"url": "https://www.google.com/webhp",
"hideURLForGet": true,
"eval": "(function (statusCode, responseTime, responseData) {\n\tlet statusCodeShort = Math.floor(statusCode/100);\n if(statusCode == 429 || (statusCodeShort >=2 && statusCodeShort <= 3)) {\n return {\n\t\t\tstatus: 'UP',\n\t\t\tlatency: responseTime,\n }\n } \n\treturn {\n\t\tstatus: 'DOWN',\n\t\tlatency: responseTime,\n\t}\n})",
"timeout": 10000
},
"folderName": "google-search",
"dayDegradedMinimumCount": 1,
"dayDownMinimumCount": 1,
"includeDegradedInDowntime": false,
"path0Day": "/Users/rajnandan1/Code/kener/db/google-search.0day.utc.json",
"path90Day": "/Users/rajnandan1/Code/kener/db/google-search.90day.utc.json",
"hasAPI": true
},
{
"name": "Svelte Website",
"description": "Cybernetically enhanced web apps <a href=\"https://svelte.dev/\" class=\"font-medium underline underline-offset-4\" target=\"_blank\">https://svelte.dev/</a>",
"tag": "svelte-website",
"api": {
"method": "GET",
"url": "https://svelte.dev/",
"eval": "(function (statusCode, responseTime, responseData) {\n\tlet statusCodeShort = Math.floor(statusCode/100);\n if(statusCode == 429 || (statusCodeShort >=2 && statusCodeShort <= 3)) {\n return {\n\t\t\tstatus: 'UP',\n\t\t\tlatency: responseTime,\n }\n } \n\treturn {\n\t\tstatus: 'DOWN',\n\t\tlatency: responseTime,\n\t}\n})",
"timeout": 10000
},
"image": "/svelte.svg",
"folderName": "svelte-website",
"dayDegradedMinimumCount": 1,
"dayDownMinimumCount": 1,
"includeDegradedInDowntime": false,
"path0Day": "/Users/rajnandan1/Code/kener/db/svelte-website.0day.utc.json",
"path90Day": "/Users/rajnandan1/Code/kener/db/svelte-website.90day.utc.json",
"hasAPI": true
},
{
"name": "Earth",
"description": "Our blue planet",
"tag": "earth",
"defaultStatus": "UP",
"image": "/earth.png",
"cron": "*/2 * * * *",
"folderName": "earth",
"dayDegradedMinimumCount": 1,
"dayDownMinimumCount": 1,
"includeDegradedInDowntime": false,
"path0Day": "/Users/rajnandan1/Code/kener/db/earth.0day.utc.json",
"path90Day": "/Users/rajnandan1/Code/kener/db/earth.90day.utc.json",
"hasAPI": false
},
{
"name": "Frogment",
"description": "A free openAPI spec editor and linter that breaks down your spec into fragments to make editing easier and more intuitive. Visit https://www.frogment.com <a href=\"https://www.frogment.com\" class=\"font-medium underline underline-offset-4\" target=\"_blank\">https://www.frogment.com</a>",
"tag": "frogment",
"image": "/frogment.png",
"api": {
"method": "GET",
"url": "https://www.frogment.com",
"eval": "(function (statusCode, responseTime, responseData) {\n\tlet statusCodeShort = Math.floor(statusCode/100);\n if(statusCode == 429 || (statusCodeShort >=2 && statusCodeShort <= 3)) {\n return {\n\t\t\tstatus: 'UP',\n\t\t\tlatency: responseTime,\n }\n } \n\treturn {\n\t\tstatus: 'DOWN',\n\t\tlatency: responseTime,\n\t}\n})",
"timeout": 10000
},
"folderName": "frogment",
"dayDegradedMinimumCount": 1,
"dayDownMinimumCount": 1,
"includeDegradedInDowntime": false,
"path0Day": "/Users/rajnandan1/Code/kener/db/frogment.0day.utc.json",
"path90Day": "/Users/rajnandan1/Code/kener/db/frogment.90day.utc.json",
"hasAPI": true
},
{
"name": "OkBookmarks",
"description": "Stop forgetting about your bookmarks <a href=\"https://okbookmarks.com/\" class=\"font-medium underline underline-offset-4\" target=\"_blank\">https://okbookmarks.com/</a>",
"tag": "okbookmarks",
"image": "https://okbookmarks.com/app/mybookmark.png",
"api": {
"method": "GET",
"url": "https://okbookmarks.com/",
"eval": "(function (statusCode, responseTime, responseData) {\n\tlet statusCodeShort = Math.floor(statusCode/100);\n if(statusCode == 429 || (statusCodeShort >=2 && statusCodeShort <= 3)) {\n return {\n\t\t\tstatus: 'UP',\n\t\t\tlatency: responseTime,\n }\n } \n\treturn {\n\t\tstatus: 'DOWN',\n\t\tlatency: responseTime,\n\t}\n})",
"timeout": 10000
},
"folderName": "okbookmarks",
"dayDegradedMinimumCount": 1,
"dayDownMinimumCount": 1,
"includeDegradedInDowntime": false,
"path0Day": "/Users/rajnandan1/Code/kener/db/okbookmarks.0day.utc.json",
"path90Day": "/Users/rajnandan1/Code/kener/db/okbookmarks.90day.utc.json",
"hasAPI": true
}
]
@@ -7,7 +7,7 @@
"github": {
"owner": "rajnandan1",
"repo": "kener",
"incidentSince": 720
"incidentSince": 48
},
"metaTags": {
"description": "Kener: Open-source modern looking Node.js status page tool, designed to make service monitoring and incident handling a breeze. It offers a sleek and user-friendly interface that simplifies tracking service outages and improves how we communicate during incidents. And the best part? Kener integrates seamlessly with GitHub, making incident management a team effort—making it easier for us to track and fix issues together in a collaborative and friendly environment.",
+1 -1
View File
@@ -1,6 +1,6 @@
// @ts-nocheck
import axios from "axios";
import { GetMinuteStartNowTimestampUTC } from "$lib/server/tool.js";
import { GetMinuteStartNowTimestampUTC } from "./tool.js";
import { marked } from "marked";
import { fileURLToPath } from "url";
import { dirname } from "path";
+2 -2
View File
@@ -1,7 +1,7 @@
// @ts-nocheck
import fs from "fs-extra";
import { GetMinuteStartNowTimestampUTC, BeginningOfDay } from "$lib/server/tool.js";
import { StatusObj, ParseUptime } from "$lib/helpers.js";
import { GetMinuteStartNowTimestampUTC, BeginningOfDay } from "./tool.js";
import { StatusObj, ParseUptime } from "../helpers.js";
function getDayMessage(type, numOfMinute) {
if (numOfMinute > 59) {
+5 -7
View File
@@ -12,15 +12,13 @@ import path from "path";
import yaml from "js-yaml";
import { Cron } from "croner";
import { API_TIMEOUT } from "$lib/server/constants.js";
import siteDataRaw from "$lib/server/config/site.yaml?raw";
import monitorDataRaw from "$lib/server/config/monitors.yaml?raw";
import { API_TIMEOUT } from "./constants.js";
import { IsValidURL, IsValidHTTPMethod, ValidateIpAddress } from "$lib/server/tool.js";
import { GetAllGHLabels, CreateGHLabel } from "$lib/server/github.js";
import { Minuter } from "$lib/server/cron-minute.js";
import { IsValidURL, IsValidHTTPMethod, ValidateIpAddress } from "./tool.js";
import { GetAllGHLabels, CreateGHLabel } from "./github.js";
import { Minuter } from "./cron-minute.js";
import axios from "axios";
import { Ninety } from "$lib/server/ninety.js";
import { Ninety } from "./ninety.js";
let monitors = [];
let site = {};
const envSecrets = [];
+5 -2
View File
@@ -3,7 +3,10 @@ import fs from "fs-extra";
import path from "path";
// Load the JSON data from the file system
const monitorsDataPath = path.join(process.cwd(), "database", "monitors.json");
const monitorsData = fs.readJSONSync(monitorsDataPath, "utf8");
let monitorsData = {};
try {
const monitorsDataPath = path.join(process.cwd(), "database", "monitors.json");
monitorsData = fs.readJSONSync(monitorsDataPath, "utf8");
} catch (error) {}
// Create a readonly store
export const monitorsStore = readable(monitorsData, () => {});
+5 -2
View File
@@ -3,7 +3,10 @@ import fs from "fs-extra";
import path from "path";
// Load the JSON data from the file system
const siteDataPath = path.join(process.cwd(), "database", "site.json");
const siteData = fs.readJSONSync(siteDataPath, "utf8");
let siteData = {};
try {
const siteDataPath = path.join(process.cwd(), "database", "site.json");
siteData = fs.readJSONSync(siteDataPath, "utf8");
} catch (error) {}
// Create a readonly store
export const siteStore = readable(siteData, () => {});
+3 -3
View File
@@ -1,14 +1,14 @@
// @ts-nocheck
import fs from "fs-extra";
import { monitorsStore } from "$lib/server/stores/monitors";
import { monitorsStore } from "./stores/monitors";
import { get } from "svelte/store";
import { ParseUptime } from "$lib/helpers.js";
import {
GetMinuteStartNowTimestampUTC,
GetNowTimestampUTC,
GetMinuteStartTimestampUTC
} from "$lib/server/tool.js";
import { GetStartTimeFromBody, GetEndTimeFromBody } from "$lib/server/github.js";
} from "./tool.js";
import { GetStartTimeFromBody, GetEndTimeFromBody } from "./github.js";
import Randomstring from "randomstring";
const API_TOKEN = process.env.API_TOKEN;
const API_IP = process.env.API_IP;