[release] v0.12.0

This commit is contained in:
Yann Stepienik 2023-11-08 12:37:20 +00:00
parent 253f95c186
commit 161b39521b
13 changed files with 173 additions and 1966 deletions

View File

@ -1,5 +1,5 @@
## Version 0.12.0
- New real time persisting andd optimized metrics monitoring system (RAM, CPU, Network, disk, requests, errors, etc...)
- New real time persisting and optimized metrics monitoring system (RAM, CPU, Network, disk, requests, errors, etc...)
- New Dashboard with graphs for metrics, including graphs in many screens such as home, routes and servapps
- New customizable alerts system based on metrics in real time, with included preset for anti-crypto mining and anti memory leak
- New events manager (improved logs with requests and advanced search)
@ -12,6 +12,7 @@
- Marketplace now fetch faster (removed the domain indirection to directly fetch from github)
- Integrated a new docker-less mode of functioning for networking
- Added a dangerous IP detector that stops sending HTTP response to IPs that are abusing various shields features
- Added CORS headers to openID endpoints
- Added a button in the servapp page to easily download the docker backup
- Added Button to force reset HTTPS cert in settings
- Added lazyloading to URL and Servapp pages images

View File

@ -21,7 +21,7 @@
"Name": "Jellyfin",
"Description": "Expose Jellyfin to the internet",
"UseHost": true,
"Host": "play.cosmos-cloud.io",
"Host": "play.xxxxxxxxxxxxx",
"UsePathPrefix": false,
"PathPrefix": "",
"Timeout": 14400000,
@ -50,7 +50,7 @@
"Name": "Documents Folder",
"Description": "Share my Documents",
"UseHost": true,
"Host": "documents.cosmos-cloud.io",
"Host": "documents.xxxxxxxxxxxxx",
"UsePathPrefix": false,
"PathPrefix": "",
"Timeout": 14400000,
@ -79,7 +79,7 @@
"Name": "Navidrome",
"Description": "Expose navidrome to the internet",
"UseHost": true,
"Host": "navidrome.cosmos-cloud.io",
"Host": "navidrome.xxxxxxxxxxxxx",
"UsePathPrefix": false,
"PathPrefix": "",
"Timeout": 0,
@ -108,7 +108,7 @@
"Name": "Plex",
"Description": "Expose Plex to the internet",
"UseHost": true,
"Host": "plex.cosmos-cloud.io",
"Host": "plex.xxxxxxxxxxxxx",
"UsePathPrefix": false,
"PathPrefix": "",
"Timeout": 0,
@ -137,7 +137,7 @@
"Name": "Radarr",
"Description": "Expose Radarr to the internet",
"UseHost": true,
"Host": "radarr.cosmos-cloud.io",
"Host": "radarr.xxxxxxxxxxxxx",
"UsePathPrefix": false,
"PathPrefix": "",
"Timeout": 30000,
@ -166,7 +166,7 @@
"Name": "Sonarr",
"Description": "Expose Sonarr to the internet",
"UseHost": true,
"Host": "sonarr.cosmos-cloud.io",
"Host": "sonarr.xxxxxxxxxxxxx",
"UsePathPrefix": false,
"PathPrefix": "",
"Timeout": 30000,
@ -195,7 +195,7 @@
"Name": "nzbget",
"Description": "Expose nzbget to the internet",
"UseHost": true,
"Host": "nzbget.cosmos-cloud.io",
"Host": "nzbget.xxxxxxxxxxxxx",
"UsePathPrefix": false,
"PathPrefix": "",
"Timeout": 999999999,
@ -224,7 +224,7 @@
"Name": "photoprism",
"Description": "Expose photoprism to the internet",
"UseHost": true,
"Host": "photoprism.cosmos-cloud.io",
"Host": "photoprism.xxxxxxxxxxxxx",
"UsePathPrefix": false,
"PathPrefix": "",
"Timeout": 45000,
@ -253,7 +253,7 @@
"Name": "Owncloud",
"Description": "Expose Owncloud to the internet",
"UseHost": true,
"Host": "owncloud.cosmos-cloud.io",
"Host": "owncloud.xxxxxxxxxxxxx",
"UsePathPrefix": false,
"PathPrefix": "",
"Timeout": 0,
@ -282,7 +282,7 @@
"Name": "Lidarr",
"Description": "Expose Lidarr to the internet",
"UseHost": true,
"Host": "lidarr.cosmos-cloud.io",
"Host": "lidarr.xxxxxxxxxxxxx",
"UsePathPrefix": false,
"PathPrefix": "",
"Timeout": 30000,
@ -309,9 +309,86 @@
}
]
},
"Hostname": "cosmos-cloud.io",
"Hostname": "xxxxxxxxxxxxx",
"SSLEmail": "myemail@gmail.com"
},
"MonitoringAlerts": {
"Anti Crypto-Miner": {
"Name": "Anti Crypto-Miner",
"Enabled": true,
"Period": "daily",
"TrackingMetric": "cosmos.system.docker.cpu.*",
"Condition": {
"Operator": "gt",
"Value": 80
},
"Actions": [
{
"Type": "notification",
"Target": ""
},
{
"Type": "email",
"Target": ""
},
{
"Type": "stop",
"Target": ""
}
],
"LastTriggered": "0001-01-01T00:00:00Z",
"Throttled": false,
"Severity": "warn"
},
"Anti Memory Leak": {
"Name": "Anti Memory Leak",
"Enabled": true,
"Period": "daily",
"TrackingMetric": "cosmos.system.docker.ram.*",
"Condition": {
"Percent": true,
"Operator": "gt",
"Value": 80
},
"Actions": [
{
"Type": "notification",
"Target": ""
},
{
"Type": "email",
"Target": ""
},
{
"Type": "stop",
"Target": ""
}
],
"LastTriggered": "0001-01-01T00:00:00Z",
"Throttled": false,
"Severity": "warn"
},
"Disk Full Notification": {
"Name": "Disk Full Notification",
"Enabled": true,
"Period": "latest",
"TrackingMetric": "cosmos.system.disk./",
"Condition": {
"Percent": true,
"Operator": "gt",
"Value": 95
},
"Actions": [
{
"Type": "notification",
"Target": ""
}
],
"LastTriggered": "0001-01-01T00:00:00Z",
"Throttled": true,
"Severity": "warn"
}
},
"EmailConfig": {
"Enabled": true,
"Host": "smtp.gmail.com",

File diff suppressed because one or more lines are too long

View File

@ -3,23 +3,29 @@ export const getStatus = () => {
return new Promise((resolve, reject) => {
resolve({
"data": {
"AVX": true,
"CPU": "amd64",
"HTTPSCertificateMode": "LETSENCRYPT",
"LetsEncryptErrors": [],
"MonitoringDisabled": false,
"backup_status": "",
"database": true,
"docker": true,
"domain": false,
"letsencrypt": false,
"needsRestart": false,
"newVersionAvailable": false,
"homepage": {
"Background": "",
"Background": "/cosmos/api/background/avif",
"Widgets": null,
"Expanded": false
},
"hostname": "yann-server.com",
"letsencrypt": false,
"needsRestart": false,
"newVersionAvailable": false,
"resources": {},
"theme": {
"PrimaryColor": "",
"PrimaryColor": "rgba(191, 100, 64, 1)",
"SecondaryColor": ""
},
"LetsEncryptErrors": [],
}
},
"status": "OK"
});

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

File diff suppressed because one or more lines are too long

View File

@ -116,6 +116,23 @@ function resetPassword(values) {
});
}
function getNotifs() {
return new Promise((resolve, reject) => {
resolve({"data":[{"ID":"654b0fccce74bf6f8c8ccc61","Title":"Container Update","Message":"Container Prowlarr updated to the latest version!","Icon":"","Link":"/cosmos-ui/servapps/containers/Prowlarr","Date":"2023-11-08T04:33:39.041Z","Level":"info","Read":false,"Recipient":"admin","Actions":null},{"ID":"654b0fccce74bf6f8c8ccc60","Title":"Container Update","Message":"Container Lidarr updated to the latest version!","Icon":"","Link":"/cosmos-ui/servapps/containers/Lidarr","Date":"2023-11-08T04:33:29.779Z","Level":"info","Read":false,"Recipient":"admin","Actions":null},{"ID":"654a589ff54b04d499103b19","Title":"Container Update","Message":"Container transmission updated to the latest version!","Icon":"","Link":"/cosmos-ui/servapps/containers/transmission","Date":"2023-11-07T15:31:56.385Z","Level":"info","Read":true,"Recipient":"admin","Actions":null},{"ID":"6547ff777b87120576934c61","Title":"Container Update","Message":"Container Jellyfin updated to the latest version!","Icon":"","Link":"/cosmos-ui/servapps/containers/Jellyfin","Date":"2023-11-05T20:47:04.658Z","Level":"info","Read":true,"Recipient":"admin","Actions":null},{"ID":"6547ff777b87120576934c60","Title":"Container Update","Message":"Container logs updated to the latest version!","Icon":"","Link":"/cosmos-ui/servapps/containers/logs","Date":"2023-11-05T20:46:56.503Z","Level":"info","Read":true,"Recipient":"admin","Actions":null}],"status":"OK"})
});
}
function readNotifs(notifs) {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve({
"status": "ok",
})},
2000
);
});
}
export {
list,
create,
@ -128,4 +145,6 @@ export {
check2FA,
reset2FA,
resetPassword,
getNotifs,
readNotifs
};

View File

@ -55,7 +55,7 @@ const EditSourcesModal = ({ onSave }) => {
const formik = useFormik({
initialValues: {
sources: (config && config.MarketConfig.Sources) ? config.MarketConfig.Sources : [],
sources: (config && config.MarketConfig && config.MarketConfig.Sources) ? config.MarketConfig.Sources : [],
},
enableReinitialize: true, // This will reinitialize the form when `config` changes
// validationSchema: AlertValidationSchema,

View File

@ -2,9 +2,16 @@ import React from 'react';
import { useCookies } from 'react-cookie';
import { logout } from '../api/authentication';
const isDemo = import.meta.env.MODE === 'demo';
function useClientInfos() {
const [cookies] = useCookies(['client-infos']);
if(isDemo) return {
nickname: "Demo",
role: "2"
};
let clientInfos = null;
try {
@ -19,7 +26,7 @@ function useClientInfos() {
console.error('Error parsing client-infos cookie:', error);
return {
nickname: "",
role: 2
role: "2"
};
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 15 KiB

View File

@ -46,6 +46,7 @@ Cosmos is a:
* **Authentication Server** 👦👩 With strong security, **multi-factor authentication** and multiple strategies (**OpenId**, forward headers, HTML)
* **Container manager** 🐋🔧 To easily manage your containers and their settings, keep them up to date as well as audit their security. Includes docker-compose support!
* **VPN** 🌐🔒 To securely access your applications from anywhere, without having to open ports on your router.
* **Monitoring** 📈📊 Fully persisting and real-time monitoring with customizable alerts and notifications, so you can be notified of any issue.
* **Identity Provider** 👦👩 To easily manage your users, **invite your friends and family** to your applications without awkardly sharing credentials. Let them request a password change with an email rather than having you unlock their account manually!
* **SmartShield technology** 🧠🛡 Automatically secure your applications without manual adjustments (see below for more details). Includes anti-bot and anti-DDOS strategies.
@ -65,10 +66,12 @@ And a **lot more planned features** are coming!
Cosmos has a few key differences with other alternatives such as YunoHost, Unraid, etc...
<p align="center">
<img src="./compare.png" />
<p align="center" style="color:grey">
<img src="./compare.png" /><br />
* Only containers created with their UI, with no customization, * No alerts
</p>
* **Security**: Cosmos has a unique strong focus on securing your application with exclusive features such as the smart-shield. It has 2FA, OpenID, anti-DDOS, and other security features built-in. It also has a strong focus on privacy, with the latest encryption methods and a strong focus on data protection. Unlike any other solutions, it assumes the software you run are not trustworthy, and protects you from them.
* **Power-user friendly**: Some of those alternatives can feel a bit "limiting" to someone who kows what they are doing. On the other hand, while Cosmos is designed to be easy to use, it is also powerful and flexible. It is designed to be used by both new and experienced users, and to integrate into your existing home server, the already existing applications you have, and the new ones you want to install. It can even be used from the terminal if you want to!
* **Flexible**: Unlike the alternatives, Cosmos is not exclusively focused around its app-store. Instead, it lets you freely install any application any way you want, and manage them from the UI, from Portainer, or from docker directly. Any of those applications will still be integrated into Cosmos and will also benefit from all the security features, Let's Encrypt, etc...