1
0
Fork 1
mirror of https://github.com/thatmattlove/hyperglass.git synced 2026-01-17 08:48:05 +00:00

add docs for new systemd change

This commit is contained in:
checktheroads 2021-01-16 13:41:22 -07:00
parent 440c5bf7c0
commit c9b87ea2ea
4 changed files with 57 additions and 13 deletions

View file

@ -33,6 +33,53 @@ However, at build time, there are some fairly memory-intensive tasks which _will
At **build**, hyperglass consumes approximately **196 MB** of storage. 194 MB of this is front-end dependencies, which are downloaded and installed when running a UI build. The other 2 MB is the hyperglass code itself. Once again, the minimum system requirements for most Linux distributions should be sufficient.
## systemd
More than likely, you'll want to run hyperglass as a background system service. [systemd](https://systemd.io/) is one of the most common ways of running services on Linux. To run hyperglass as a systemd service, create a file named `hyperglass.service` in your [installation directory](setup.mdx#installation-directory) and add following to it:
```ini
[Unit]
Description=hyperglass
After=network.target
Requires=redis-server
# Replace the above with Requires=redis for CentOS
[Service]
User=<user or root>
Group=<user or root>
ExecStart=<path to hyperglass> start
[Install]
WantedBy=multi-user.target
```
Replace `<user or root>` with whichever user you're running hyperglass as. For example, if you're running hyperglass as a non-root user, you probably used `pip3 install hyperglass` (without `sudo`) to install hyperglass, and you're probably using `~/hyperglass` as your installation directory. However, if you're running hyperglass as root, you probably used `sudo pip3 install hyperglass` to install hyperglass, and you're probably using `/etc/hyperglass` as your installation directory.
Systemd requires an absolute path for executables. This means you can't just put `hyperglass start` in the `ExecStart` field, it needs to be the full path. The easiest way to get this is to run `which hyperglass`, which will output the full path. It should look something like `/home/username/.local/bin/hyperglass` or `/usr/local/bin/hyperglass`.
After adding the file, run the following:
```bash
# Replace <systemd file> with the path to the systemd file you just created.
sudo ln -s <systemd file> /etc/systemd/system/hyperglass.service
# Tell systemd to re-look at its service files, since you just added one.
sudo systemctl daemon-reload
# Tell systemd to run hyperglass on system startup.
sudo systemctl enable hyperglass
# Start the hyperglass service.
sudo systemctl start hyperglass
# Check the status of the hyperglass service.
sudo systemctl status hyperglass
```
:::important Checking the status
The first time hyperglass starts up, it will run through a UI build process, which will take a little time. You may have to wait a couple of minutes in between each check on hyperglass's status.
:::
## Reverse Proxy
You'll want to run hyperglass behind a reverse proxy in production to serve the static files more efficiently and offload SSL. Any reverse proxy should work, but hyperglass has been specifically tested with [Caddy](https://caddyserver.com/) and [NGINX](https://www.nginx.com/). Sample configs for both can be found below.

View file

@ -44,18 +44,6 @@ You'll receive the following prompts:
hyperglass requires a directory on your system to store configuration files, the web UI, logos, etc. You may choose between the current user's home directory or `/etc`.
### Systemd Service
```shell-session
Do you want to generate a systemd service file? [y/N]:
```
hyperglass also includes a [systemd](https://systemd.io/) service file, which can be installed if you use systemd. If selected, a systemd service file will be generated and copied to the installation directory. Then, it will be symlinked to `/etc/systemd/system`. All you need to do to enable the service is run:
```shell-session
$ sudo systemctl enable hyperglass
```
## UI Build
After running the setup, the `build-ui` command needs to be run for the first time. This command creates the required file structure for the UI, initializes frontend dependencies, and generates favicons.
@ -80,3 +68,7 @@ hyperglass won't start without a `devices.yaml` file. See the [Adding Devices](a
```shell-session
$ hyperglass start
```
:::tip Production
Remember to check the [Production](production.mdx) section for instructions on how to run hyperglass in production. It includes instructions and examples for setting up a Reverse Proxy (such as NGINX or Caddy), and running hyperglass as a system service with systemd.
:::

View file

@ -45,6 +45,7 @@ The `web` subsection contains multiple subsections of its own, should you wish t
| `greeting` | Greeting Modal | <PageLink to="#greeting">➡️</PageLink> |
| `logo` | Logo & Favicons | <PageLink to="logo">➡️</PageLink> |
| `opengraph` | [OpenGraph](https://ogp.me/) | <PageLink to="#opengraph">➡️</PageLink> |
| `help_menu` | Help Menu | <PageLink to="#help_menu">➡️</PageLink> |
| `terms` | Terms & Conditions | <PageLink to="#terms">➡️</PageLink> |
| `text` | Text, title, & names | <PageLink to="text">➡️</PageLink> |
| `theme` | Colors & Fonts | <PageLink to="theme">➡️</PageLink> |

View file

@ -22,7 +22,7 @@ import styles from "./styles.module.css";
const highlightLinesRangeRegex = /{([\d,-]+)}/;
const getHighlightDirectiveRegex = (
languages = ["js", "jsBlock", "jsx", "python", "html"]
languages = ["js", "jsBlock", "jsx", "python", "html", "ini"]
) => {
// supported types of comments
const comments = {
@ -46,6 +46,7 @@ const getHighlightDirectiveRegex = (
start: "<!--",
end: "-->",
},
ini: { start: "#", end: "" },
};
// supported directives
const directives = [
@ -82,6 +83,8 @@ const highlightDirectiveRegex = (lang) => {
case "python":
case "py":
return getHighlightDirectiveRegex(["python"]);
case "ini":
return getHighlightDirectiveRegex(["ini"]);
default:
// all comment types
@ -94,6 +97,7 @@ export default ({ children, className: languageClassName, metastring }) => {
(typeof global !== "undefined" ? global : window).Prism = Prism;
require("prismjs/components/prism-shell-session");
require("prismjs/components/prism-nginx");
require("prismjs/components/prism-ini");
const {
siteConfig: {
themeConfig: { prism = {} },