updated README and minor fixes

This commit is contained in:
lllllllillllllillll 2024-03-20 13:19:56 -07:00
parent 6a352281ab
commit 66f273e22e
7 changed files with 43 additions and 31 deletions

View file

@ -9,6 +9,7 @@
* Updated database models. * Updated database models.
* Persistent Database. * Persistent Database.
* Install cards displayed on dashboard. * Install cards displayed on dashboard.
* Updated docker compose to include HTTPS Env.
## v0.40 (Feb 26th 2024) - HTMX rewrite ## v0.40 (Feb 26th 2024) - HTMX rewrite
* Pages rewritten to use HTMX. * Pages rewritten to use HTMX.

View file

@ -1,31 +1,27 @@
# DweebUI <h3 align="center"><img width="150" src="https://raw.githubusercontent.com/lllllllillllllillll/DweebUI/main/public/images/logo.png"></h3>
DweebUI is a web interface for managing Docker, with a zero-config dashboard for controlling and monitoring your containers. <h4 align="center">DweebUI Beta v0.50 ( :fire: Experimental :fire: )</h4>
<h3 align="center">Free and Open-Source WebUI For Managing Your Containers.</h3>
Alpha v0.50 ( :fire: Experimental :fire: )
<p align="center">
[:warning: DweebUI is a management interface and should not be directly exposed to the internet :warning:](https://github.com/lllllllillllllillll/DweebUI/wiki/Exposing-DweebUI-to-the-Internet) <a href="#"><img src="https://img.shields.io/github/stars/lllllllillllllillll/DweebUI?style=flat"/></a>
<a href="https://github.com/lllllllillllllillll"><img src="https://img.shields.io/github/commit-activity/y/lllllllillllllillll/DweebUI"/></a>
<a href="#"><img src="https://img.shields.io/docker/pulls/lllllllillllllillll/dweebui"/></a>
<a href="#"><img src="https://img.shields.io/github/languages/top/lllllllillllllillll/DweebUI"/></a>
<a href="#"><img src="https://img.shields.io/github/license/lllllllillllllillll/DweebUI"/></a>
<a href="https://www.reddit.com/r/dweebui"><img src="https://img.shields.io/badge/reddit-orange"/></a>
<a href="https://www.buymeacoffee.com/lllllllillllllillll"><img src="https://img.shields.io/badge/-buy_me_a%C2%A0coffee-gray?logo=buy-me-a-coffee"/></a>
</p>
[![GitHub Stars](https://img.shields.io/github/stars/lllllllillllllillll/DweebUI)](https://github.com/lllllllillllllillll)
[![GitHub Activity](https://img.shields.io/github/commit-activity/y/lllllllillllllillll/DweebUI)](https://github.com/lllllllillllllillll)
[![Docker Pulls](https://img.shields.io/docker/pulls/lllllllillllllillll/dweebui)](https://hub.docker.com/repository/docker/lllllllillllllillll/dweebui)
[![GitHub License](https://img.shields.io/github/license/lllllllillllllillll/DweebUI)](https://github.com/lllllllillllllillll/DweebUI/blob/main/LICENSE)
[![Coffee](https://img.shields.io/badge/-buy_me_a%C2%A0coffee-gray?logo=buy-me-a-coffee)](https://www.buymeacoffee.com/lllllllillllllillll)
* I started this as a personal project to get more familiar with Javascript and Node.js. <h3 align="center"><img width="800" style="border-radius:5px;" alt="screenshot" src="https://raw.githubusercontent.com/lllllllillllllillll/DweebUI/main/screenshots/dashboard1.png"></h3>
* I'm open to any contributions, but you may want to wait until I reach v1.0 first. <br/>
## About
* I started this as a personal project to get more familiar with Javascript and Node.js. There may be some rough edges and spaghetti code .
* I'm open to any contributions but you may want to wait until I reach v1.0 first.
* Please post issues and discussions so I know what bugs and features to focus on. * Please post issues and discussions so I know what bugs and features to focus on.
* DweebUI is a management interface and should not be directly exposed to the internet
<a href="https://raw.githubusercontent.com/lllllllillllllillll/DweebUI/main/screenshots/dashboard1.png"><img src="https://raw.githubusercontent.com/lllllllillllllillll/DweebUI/main/screenshots/dashboard1.png" width="25%"/></a>
<a href="https://raw.githubusercontent.com/lllllllillllllillll/DweebUI/main/screenshots/dashboard2.png"><img src="https://raw.githubusercontent.com/lllllllillllllillll/DweebUI/main/screenshots/dashboard2.png" width="25%"/></a>
<a href="https://raw.githubusercontent.com/lllllllillllllillll/DweebUI/main/screenshots/apps.png"><img src="https://raw.githubusercontent.com/lllllllillllllillll/DweebUI/main/screenshots/apps.png" width="25%"/></a>
<a href="https://raw.githubusercontent.com/lllllllillllllillll/DweebUI/main/screenshots/images.png"><img src="https://raw.githubusercontent.com/lllllllillllllillll/DweebUI/main/screenshots/images.png" width="25%"/></a>
<a href="https://raw.githubusercontent.com/lllllllillllllillll/DweebUI/main/screenshots/register.png"><img src="https://raw.githubusercontent.com/lllllllillllllillll/DweebUI/main/screenshots/register.png" width="25%"/></a>
<a href="https://raw.githubusercontent.com/lllllllillllllillll/DweebUI/main/screenshots/login.png"><img src="https://raw.githubusercontent.com/lllllllillllllillll/DweebUI/main/screenshots/login.png" width="25%"/></a>
<a href="https://raw.githubusercontent.com/lllllllillllllillll/DweebUI/main/screenshots/syslogs.png"><img src="https://raw.githubusercontent.com/lllllllillllllillll/DweebUI/main/screenshots/syslogs.png" width="25%"/></a>
<a href="https://raw.githubusercontent.com/lllllllillllllillll/DweebUI/main/screenshots/volumes.png"><img src="https://raw.githubusercontent.com/lllllllillllllillll/DweebUI/main/screenshots/volumes.png" width="25%"/></a>
## Features ## Features
* [x] Dashboard provides server metrics, container metrics, and container controls, on a single page. * [x] Dashboard provides server metrics, container metrics, and container controls, on a single page.
@ -57,6 +53,7 @@ services:
environment: environment:
PORT: 8000 PORT: 8000
SECRET: MrWiskers SECRET: MrWiskers
HTTPS: false
restart: unless-stopped restart: unless-stopped
ports: ports:
- 8000:8000 - 8000:8000

View file

@ -78,13 +78,24 @@ async function containerInfo (containerName) {
} catch { } catch {
// no exposed ports // no exposed ports
} }
let external = 0;
let internal = 0;
try {
external = ports_list[0].external;
internal = ports_list[0].internal;
} catch {
// no exposed ports
}
let details = { let details = {
name: containerName, name: containerName,
image: image, image: image,
service: image[image.length - 1].split(':')[0], service: image[image.length - 1].split(':')[0],
state: info.State.Status, state: info.State.Status,
external_port: ports_list[0]?.external || 0, external_port: external,
internal_port: ports_list[0]?.internal || 0, internal_port: internal,
ports: ports_list, ports: ports_list,
link: 'localhost', link: 'localhost',
} }
@ -122,6 +133,8 @@ async function createCard (details) {
card = card.replace(/AppIcon/g, details.service); card = card.replace(/AppIcon/g, details.service);
card = card.replace(/AppState/g, state); card = card.replace(/AppState/g, state);
card = card.replace(/StateColor/g, state_color); card = card.replace(/StateColor/g, state_color);
card = card.replace(/ExternalPort/g, details.external_port);
card = card.replace(/InternalPort/g, details.internal_port);
card = card.replace(/ChartName/g, details.name.replace(/-/g, '')); card = card.replace(/ChartName/g, details.name.replace(/-/g, ''));
card = card.replace(/AppNameState/g, `${details.name}State`); card = card.replace(/AppNameState/g, `${details.name}State`);
card = card.replace(/data-trigger=""/, trigger); card = card.replace(/data-trigger=""/, trigger);

View file

@ -6,6 +6,7 @@ services:
environment: environment:
PORT: 8000 PORT: 8000
SECRET: MrWiskers SECRET: MrWiskers
HTTPS: false
restart: unless-stopped restart: unless-stopped
ports: ports:
- 8000:8000 - 8000:8000

View file

@ -18,8 +18,8 @@ const sessionMiddleware = session({
resave: false, resave: false,
saveUninitialized: false, saveUninitialized: false,
cookie:{ cookie:{
secure:false, // Only set to true if you are using HTTPS. secure: process.env.HTTPS || false, // Only set to true if you are using HTTPS.
httpOnly:false, // Only set to true if you are using HTTPS. httpOnly: process.env.HTTPS || false, // Only set to true if you are using HTTPS.
maxAge:3600000 * 8 // Session max age in milliseconds. 3600000 = 1 hour. maxAge:3600000 * 8 // Session max age in milliseconds. 3600000 = 1 hour.
} }
}); });

View file

@ -21,7 +21,7 @@
<body > <body >
<div class="page"> <div class="page">
<!-- Navbar --> <!-- Navbar -->
<%- include('/partials/navbar.html') %> <%- include('partials/navbar.html') %>
<div class="page-wrapper"> <div class="page-wrapper">
<!-- Page header --> <!-- Page header -->
<div class="page-header d-print-none"> <div class="page-header d-print-none">
@ -41,7 +41,7 @@
<div class="card"> <div class="card">
<div class="row g-0"> <div class="row g-0">
<%- include('/partials/sidebar.html') %> <%- include('partials/sidebar.html') %>
<div class="col d-flex flex-column"> <div class="col d-flex flex-column">
<div class="card-body"> <div class="card-body">
@ -120,7 +120,7 @@
</div> </div>
</div> </div>
</div> </div>
<%- include('/partials/footer.html') %> <%- include('partials/footer.html') %>
</div> </div>
</div> </div>
<!-- Libs JS --> <!-- Libs JS -->

View file

@ -5,7 +5,7 @@
<img width="100px" src="https://raw.githubusercontent.com/lllllllillllllillll/DweebUI-Icons/main/AppIcon.png" onerror="this.onerror=null;this.src='https://raw.githubusercontent.com/lllllllillllllillll/DweebUI-Icons/main/docker.png';"></img> <img width="100px" src="https://raw.githubusercontent.com/lllllllillllllillll/DweebUI-Icons/main/AppIcon.png" onerror="this.onerror=null;this.src='https://raw.githubusercontent.com/lllllllillllllillll/DweebUI-Icons/main/docker.png';"></img>
</div> </div>
<div class="d-flex align-items-center"> <div class="d-flex align-items-center">
<div class="subheader text-yellow">0:0</div> <div class="subheader text-yellow">ExternalPort:InternalPort</div>
<div class="ms-auto lh-1"> <div class="ms-auto lh-1">
<div class="card-actions btn-actions"> <div class="card-actions btn-actions">
<div class="card-actions btn-actions"> <div class="card-actions btn-actions">