stale-issue-message:'We are clearing up our old issues and your ticket has been open for 6 months with no activity. Remove stale label or comment or this will be closed in 7 days.'
stale-pr-message:'We are clearing up our old Pull Requests and yours has been open for 6 months with no activity. Remove stale label or comment or this will be closed in 7 days.'
close-issue-message:'This issue was closed because it has been stalled for 7 days with no activity.'
close-pr-message:'This PR was closed because it has been stalled for 7 days with no activity.'
# (Recommended) Option 2. Run in background using PM2
# (Recommended) Option 2. Run in background using PM2
# Install PM2 if you don't have it: npm install pm2 -g
# Install PM2 if you don't have it:
npm install pm2 -g && pm2 install pm2-logrotate
# Start Server
pm2 start server/server.js --name uptime-kuma
pm2 start server/server.js --name uptime-kuma
# If you want to see the current console output
pm2 monit
```
```
Browse to http://localhost:3001 after starting.
Browse to http://localhost:3001 after starting.
@ -115,7 +121,7 @@ Telegram Notification Sample:
## Motivation
## Motivation
* I was looking for a self-hosted monitoring tool like "Uptime Robot", but it is hard to find a suitable one. One of the close ones is statping. Unfortunately, it is not stable and unmaintained.
* I was looking for a self-hosted monitoring tool like "Uptime Robot", but it is hard to find a suitable one. One of the close ones is statping. Unfortunately, it is not stable and no longer maintained.
* Want to build a fancy UI.
* Want to build a fancy UI.
* Learn Vue 3 and vite.js.
* Learn Vue 3 and vite.js.
* Show the power of Bootstrap 5.
* Show the power of Bootstrap 5.
@ -144,4 +150,4 @@ If you want to translate Uptime Kuma into your language, please read: https://gi
If you want to modify Uptime Kuma, this guideline may be useful for you: https://github.com/louislam/uptime-kuma/blob/master/CONTRIBUTING.md
If you want to modify Uptime Kuma, this guideline may be useful for you: https://github.com/louislam/uptime-kuma/blob/master/CONTRIBUTING.md
English proofreading is needed too because my grammar is not that great, sadly. Feel free to correct my grammar in this README, source code, or wiki.
Unfortunately, English proofreading is needed too because my grammar is not that great. Feel free to correct my grammar in this README, source code, or wiki.
<divclass="my-1 update-link"><ahref="https://github.com/louislam/uptime-kuma/releases"target="_blank"rel="noopener">{{$t("Check Update On GitHub")}}</a></div>
<divclass="my-3 update-link"><ahref="https://github.com/louislam/uptime-kuma/releases"target="_blank"rel="noopener">{{$t("Check Update On GitHub")}}</a></div>
retryCheckEverySecond:"Versuche alle {0} Sekunden",
retryCheckEverySecond:"Alle {0} Sekunden neu versuchen",
"Import Backup":"Backup importieren",
"Import Backup":"Backup importieren",
"Export Backup":"Backup exportieren",
"Export Backup":"Backup exportieren",
"Avg. Ping":"Durchschn. Ping",
"Avg. Ping":"Durchschn. Ping",
@ -179,6 +179,7 @@ export default {
"Edit Status Page":"Bearbeite Status-Seite",
"Edit Status Page":"Bearbeite Status-Seite",
"Go to Dashboard":"Gehe zum Dashboard",
"Go to Dashboard":"Gehe zum Dashboard",
"Status Page":"Status-Seite",
"Status Page":"Status-Seite",
"Status Pages":"Status-Seite",
telegram:"Telegram",
telegram:"Telegram",
webhook:"Webhook",
webhook:"Webhook",
smtp:"E-Mail (SMTP)",
smtp:"E-Mail (SMTP)",
@ -214,8 +215,8 @@ export default {
chatIDNotFound:"Chat-ID wurde nicht gefunden: bitte sende zuerst eine Nachricht an diesen Bot",
chatIDNotFound:"Chat-ID wurde nicht gefunden: bitte sende zuerst eine Nachricht an diesen Bot",
"Post URL":"Post URL",
"Post URL":"Post URL",
"Content Type":"Content Type",
"Content Type":"Content Type",
webhookJsonDesc:"{0} ist gut für alle modernen HTTP-Serversowie Express.js",
webhookJsonDesc:"{0} ist gut für alle modernen HTTP-Server, wie z.B. Express.js, geeignet",
webhookFormDataDesc:"{multipart} ist gut für PHP. Die JSON muss mit {decodeFunction} geparst werden",
webhookFormDataDesc:"{multipart} ist gut für PHP. Das JSON muss mit {decodeFunction} verarbeitet werden",
secureOptionNone:"Keine / STARTTLS (25, 587)",
secureOptionNone:"Keine / STARTTLS (25, 587)",
secureOptionTLS:"TLS (465)",
secureOptionTLS:"TLS (465)",
"Ignore TLS Error":"TLS-Fehler ignorieren",
"Ignore TLS Error":"TLS-Fehler ignorieren",
@ -279,7 +280,7 @@ export default {
wayToGetLineChannelToken:"Rufe zuerst {0} auf, erstelle dann einen Provider und Channel (Messaging API). Als nächstes kannst du den Channel access token und die User ID aus den oben genannten Menüpunkten abrufen.",
wayToGetLineChannelToken:"Rufe zuerst {0} auf, erstelle dann einen Provider und Channel (Messaging API). Als nächstes kannst du den Channel access token und die User ID aus den oben genannten Menüpunkten abrufen.",
"Icon URL":"Icon URL",
"Icon URL":"Icon URL",
aboutIconURL:"Du kannst einen Link zu einem Bild in 'Icon URL' übergeben um das Standardprofilbild zu überschreiben. Wird nicht verwendet, wenn ein Icon Emoji gesetzt ist.",
aboutIconURL:"Du kannst einen Link zu einem Bild in 'Icon URL' übergeben um das Standardprofilbild zu überschreiben. Wird nicht verwendet, wenn ein Icon Emoji gesetzt ist.",
aboutMattermostChannelName:"Du kannst den Standardkanal, auf dem der Webhook postet überschreiben, indem der Kanalnamen in das Feld 'Channel Name' eingeben wird. Dies muss in den Mattermost Webhook-Einstellungen aktiviert werden. Ex: #other-channel",
aboutMattermostChannelName:"Du kannst den Standardkanal, auf dem der Webhook gesendet wird überschreiben, indem der Kanalnamen in das Feld 'Channel Name' eingeben wird. Dies muss in den Mattermost Webhook-Einstellungen aktiviert werden. Ex: #other-channel",
matrix:"Matrix",
matrix:"Matrix",
promosmsTypeEco:"SMS ECO - billig, aber langsam und oft überladen. Auf polnische Empfänger beschränkt.",
promosmsTypeEco:"SMS ECO - billig, aber langsam und oft überladen. Auf polnische Empfänger beschränkt.",
promosmsTypeFlash:"SMS FLASH - Die Nachricht wird automatisch auf dem Empfängergerät angezeigt. Auf polnische Empfänger beschränkt.",
promosmsTypeFlash:"SMS FLASH - Die Nachricht wird automatisch auf dem Empfängergerät angezeigt. Auf polnische Empfänger beschränkt.",
"Please input title and content":"Please input title and content",
"Please input title and content":"Please input title and content",
Created:"Created",
"Created":"Created",
"Last Updated":"Last Updated",
"Last Updated":"Last Updated",
Unpin:"Unpin",
"Unpin":"Unpin",
"Switch to Light Theme":"Switch to Light Theme",
"Switch to Light Theme":"Switch to Light Theme",
"Switch to Dark Theme":"Switch to Dark Theme",
"Switch to Dark Theme":"Switch to Dark Theme",
"Show Tags":"Show Tags",
"Show Tags":"Show Tags",
"Hide Tags":"Hide Tags",
"Hide Tags":"Hide Tags",
Description:"Description",
"Description":"Description",
"No monitors available.":"No monitors available.",
"No monitors available.":"No monitors available.",
"Add one":"Add one",
"Add one":"Add one",
"No Monitors":"No Monitors",
"No Monitors":"No Monitors",
"Untitled Group":"Untitled Group",
"Untitled Group":"Untitled Group",
Services:"Services",
"Services":"Services",
Discard:"Discard",
"Discard":"Discard",
Cancel:"Cancel",
"Cancel":"Cancel",
"Powered by":"Powered by",
"Powered by":"Powered by",
shrinkDatabaseDescription:"Trigger database VACUUM for SQLite. If your database is created after 1.10.0, AUTO_VACUUM is already enabled and this action is not needed.",
shrinkDatabaseDescription:"Trigger database VACUUM for SQLite. If your database is created after 1.10.0, AUTO_VACUUM is already enabled and this action is not needed.",
serwersms:"SerwerSMS.pl",
serwersms:"SerwerSMS.pl",
@ -351,7 +353,7 @@ export default {
serwersmsAPIPassword:"API Password",
serwersmsAPIPassword:"API Password",
serwersmsPhoneNumber:"Phone number",
serwersmsPhoneNumber:"Phone number",
serwersmsSenderName:"SMS Sender Name (registered via customer portal)",
serwersmsSenderName:"SMS Sender Name (registered via customer portal)",
"stackfield":"Stackfield",
stackfield:"Stackfield",
smtpDkimSettings:"DKIM Settings",
smtpDkimSettings:"DKIM Settings",
smtpDkimDesc:"Please refer to the Nodemailer DKIM {0} for usage.",
smtpDkimDesc:"Please refer to the Nodemailer DKIM {0} for usage.",
documentation:"documentation",
documentation:"documentation",
@ -361,4 +363,12 @@ export default {
smtpDkimHashAlgo:"Hash Algorithm (Optional)",
smtpDkimHashAlgo:"Hash Algorithm (Optional)",
smtpDkimheaderFieldNames:"Header Keys to sign (Optional)",
smtpDkimheaderFieldNames:"Header Keys to sign (Optional)",
smtpDkimskipFields:"Header Keys not to sign (Optional)",
smtpDkimskipFields:"Header Keys not to sign (Optional)",
gorush:"Gorush",
alerta:"Alerta",
alertaApiEndpoint:"API Endpoint",
alertaEnvironment:"Environment",
alertaApiKey:"API Key",
alertaAlertState:"Alert State",
alertaRecoverState:"Recover State",
deleteStatusPageMsg:"Are you sure want to delete this status page?",
GoogleChat:"Google Chat (preko platforme Google Workspace)",
shrinkDatabaseDescription:"Pokreni VACUUM operaciju za SQLite. Ako je baza podataka kreirana nakon inačice 1.10.0, AUTO_VACUUM opcija već je uključena te ova akcija nije nužna.",
serwersms:"SerwerSMS.pl",
serwersmsAPIUser:"API korisničko ime (uključujući webapi_ prefiks)",
serwersmsAPIPassword:"API lozinka",
serwersmsPhoneNumber:"Broj telefona",
serwersmsSenderName:"Ime SMS pošiljatelja (registrirano preko korisničkog portala)",
stackfield:"Stackfield",
smtpDkimSettings:"DKIM postavke",
smtpDkimDesc:"Za više informacija, postoji Nodemailer DKIM {0}.",
documentation:"dokumentacija",
smtpDkimDomain:"Domena",
smtpDkimKeySelector:"Odabir ključa",
smtpDkimPrivateKey:"Privatni ključ",
smtpDkimHashAlgo:"Hash algoritam (neobavezno)",
smtpDkimheaderFieldNames:"Ključevi zaglavlja za potpis (neobavezno)",
smtpDkimskipFields:"Ključevi zaglavlja koji se neće potpisati (neobavezno)",
gorush:"Gorush",
alerta:"Alerta",
alertaApiEndpoint:"Krajnja točka API-ja (Endpoint)",
alertaEnvironment:"Okruženje (Environment)",
alertaApiKey:"API ključ",
alertaAlertState:"Stanje upozorenja",
alertaRecoverState:"Stanje oporavka",
deleteStatusPageMsg:"Sigurno želite obrisati ovu statusnu stranicu?",
shrinkDatabaseDescription:"Включает VACUUM для базы данных SQLite. Если ваша база данных была создана на версии 1.10.0 и более, AUTO_VACUUM уже включен и это действие не требуется.",
shrinkDatabaseDescription:"Включает VACUUM для базы данных SQLite. Если ваша база данных была создана на версии 1.10.0 и более, AUTO_VACUUM уже включен и это действие не требуется.",
deleteStatusPageMsg:"Вы действительно хотите удалить эту страницу статуса сервисов?",
Style:"Стиль",
info:"ИНФО",
warning:"ВНИМАНИЕ",
danger:"ОШИБКА",
primary:"ОСНОВНОЙ",
light:"СВЕТЛЫЙ",
dark:"ТЕМНЫЙ",
"New Status Page":"Новый мониторинг",
"Show update if available":"Показывать доступные обновления",
"Also check beta release":"Проверять обновления для бета версий",
"Add New Status Page":"Добавить страницу мониторинга",
clearEventsMsg:"Are you sure want to delete all events for this monitor?",
clearHeartbeatsMsg:"Are you sure want to delete all heartbeats for this monitor?",
confirmClearStatisticsMsg:"Are you sure want to delete ALL statistics?",
"Clear Data":"Clear Data",
Events:"Events",
Heartbeats:"Heartbeats",
"Auto Get":"Auto Get",
enableDefaultNotificationDescription:"For every new monitor this notification will be enabled by default. You can still disable the notification separately for each monitor.",
"Default enabled":"Default enabled",
"Also apply to existing monitors":"Also apply to existing monitors",
Export:"Export",
Import:"Import",
backupDescription:"You can backup all monitors and all notifications into a JSON file.",
backupDescription2:"PS: History and event data is not included.",
backupDescription3:"Sensitive data such as notification tokens is included in the export file, please keep it carefully.",
alertNoFile:"Please select a file to import.",
alertWrongFileType:"Please select a JSON file.",
twoFAVerifyLabel:"Please type in your token to verify that 2FA is working",
tokenValidSettingsMsg:"Token is valid! You can now save the 2FA settings.",
confirmEnableTwoFAMsg:"Are you sure you want to enable 2FA?",
confirmDisableTwoFAMsg:"Are you sure you want to disable 2FA?",
"Apply on all existing monitors":"Apply on all existing monitors",
importHandleDescription:"Choose 'Skip existing' if you want to skip every monitor or notification with the same name. 'Overwrite' will delete every existing monitor and notification.",
confirmImportMsg:"Are you sure to import the backup? Please make sure you've selected the right import option.",