{"id":17682999,"url":"https://github.com/akkadius/occulus","last_synced_at":"2025-03-12T15:31:16.147Z","repository":{"id":43348317,"uuid":"173694530","full_name":"Akkadius/Occulus","owner":"Akkadius","description":"A standalone web based administrator console for EverQuest Emulator servers","archived":true,"fork":false,"pushed_at":"2024-01-07T03:15:08.000Z","size":12062,"stargazers_count":23,"open_issues_count":0,"forks_count":8,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-08T13:46:29.253Z","etag":null,"topics":["admin","eqemu","everquest","launcher","linux","mysql","nodejs","occulus","panel","realtime","vuejs","web","websockets","windows"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Akkadius.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2019-03-04T07:23:31.000Z","updated_at":"2024-10-13T04:22:01.000Z","dependencies_parsed_at":"2024-01-07T04:22:04.528Z","dependency_job_id":"44b47f52-7571-4b7a-a03b-4a9c0ba97b8b","html_url":"https://github.com/Akkadius/Occulus","commit_stats":null,"previous_names":[],"tags_count":46,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Akkadius%2FOcculus","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Akkadius%2FOcculus/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Akkadius%2FOcculus/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Akkadius%2FOcculus/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Akkadius","download_url":"https://codeload.github.com/Akkadius/Occulus/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243242773,"owners_count":20259817,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["admin","eqemu","everquest","launcher","linux","mysql","nodejs","occulus","panel","realtime","vuejs","web","websockets","windows"],"created_at":"2024-10-24T09:44:03.733Z","updated_at":"2025-03-12T15:31:11.126Z","avatar_url":"https://github.com/Akkadius.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# Occulus | EQEmulator Web Admin Panel\n\n**Drone Build Status**\n\n[![Build Status](https://cloud.drone.io/api/badges/Akkadius/eqemu-web-admin/status.svg)](https://cloud.drone.io/Akkadius/eqemu-web-admin) \n\n\u003chr\u003e\n\n- [What is Occulus?](#what-is-occulus)\n- [Why Occulus?](#why-occulus)\n- [Using Occulus](#using-occulus)\n- [Features](#features)\n    + [Dashboard](#dashboard)\n    + [Start / Stop / Restart](#start--stop--restart)\n    + [Intelligent Dynamic Server Launcher](#intelligent-dynamic-server-launcher)\n    + [Quest Script Hot Reloading](#quest-script-hot-reloading)\n    + [Configuration](#configuration)\n    + [Manual Backups](#manual-backups)\n    + [Client File Exports](#client-file-exports)\n- [Requirements](#requirements)\n- [Installation](#installation)\n  * [Run the Web Interface](#run-the-web-interface)\n  * [Post Launch](#post-launch)\n- [Feature Requests](#feature-requests)\n- [Contributing](#contributing)\n- [Developing](#developing)\n\n\u003chr\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://nodejs.org/\"\u003e\n    \u003cimg\n      alt=\"Node.js\"\n      src=\"https://nodejs.org/static/images/logo-light.svg\"\n      width=\"400\"\n    /\u003e\n  \u003c/a\u003e\n    \u003ca href=\"https://vuejs.org\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e\u003cimg width=\"250\" src=\"https://vuejs.org/images/logo.png\" alt=\"Vue logo\"\u003e\n    \n\u003c/p\u003e\n\n\u003chr\u003e\n\n![image](https://user-images.githubusercontent.com/3319450/87236540-8c13f500-c3b0-11ea-87f6-756e60fa61ed.png)\n\n![image](https://user-images.githubusercontent.com/3319450/87236581-d39a8100-c3b0-11ea-94e3-6224330a8b4e.png)\n\n# What is Occulus?\n\nA web based administrator console for [EverQuest Emulator servers](https://github.com/EQEmu/Server)\n\n# Why Occulus?\n\nTo simplify administrative and development needs of operators\n\n# Using Occulus\n\nOcculus is open source, built to help others in the EverQuest Emulator community. If you use this admin panel, please remember to contribute back to the community in whichever  way that you can\n\n# Features\n\n### Dashboard\n\n* Statistics\n* Players Online\n* Server Process counts\n* System Info (CPU / Disk / Network)\n* Process Management (Server Start, Stop, Reboot)\n\n### Start / Stop / Restart\n\nStart, stop, restart your server with ease\n\n![image](https://user-images.githubusercontent.com/3319450/87236870-fb3f1880-c3b3-11ea-9702-5584cd75867c.png)\n\n### Intelligent Dynamic Server Launcher\n\nOnly boot as many zones as you need to be idle at a time (Default: 3) (Shown: 6)\n\nAs more zones become booted by players; the server launcher will spawn additional to keep the standby pool\n\n![image](https://user-images.githubusercontent.com/3319450/87236671-94206480-c3b1-11ea-89fb-4110270802f1.png)\n\n### Quest Script Hot Reloading\n\nInstantly reload zone quests, repop when quest files are changed, with configurable behaviors via server rules\n\n\u003cp align=\"center\"\u003e\u003ca href=\"https://vuejs.org\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e\u003cimg width=\"700\" src=\"https://user-images.githubusercontent.com/3319450/87236747-7e5f6f00-c3b2-11ea-84c0-0bfd8437e2a9.png\" alt=\"Vue logo\"\u003e\u003c/a\u003e\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\u003ca href=\"https://vuejs.org\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e\u003cimg width=\"700\" src=\"https://user-images.githubusercontent.com/3319450/87236754-891a0400-c3b2-11ea-84d6-c923af0b0727.png\" alt=\"Vue logo\"\u003e\u003c/a\u003e\u003c/p\u003e\n\n### Configuration\n\nEasily edit your server configuration\n\n![image](https://user-images.githubusercontent.com/3319450/87236778-dc8c5200-c3b2-11ea-8a9a-69c79731ec82.png)\n\n### Manual Backups\n\nManually backup your server assets with a click of a button\n\n![image](https://user-images.githubusercontent.com/3319450/87236781-f9288a00-c3b2-11ea-96d4-505f313f300b.png)\n\n### Client File Exports\n\nTired of constantly manually exporting new client text file changes? Give your players a direct link that exports fresh data and only refreshes once a minute to prevent constant re-exports\n\n![image](https://user-images.githubusercontent.com/3319450/87236783-fded3e00-c3b2-11ea-9fee-28c8f7be8938.png)\n\n# Requirements\n\n* Linux or Windows\n* An installation of the emulator server which runs server binaries out of the `bin` folder\n* Server code that has been kept up to date as there are backend API's that the admin panel relies on the function to the fullest\n\n# Installation\n\nAs of this writing the admin launcher is not included with the server installer, but there is plans for it to be. \n\nIn order to install this admin panel you'll need to download a **Windows** or **Linux** release from [Releases](https://github.com/Akkadius/eqemu-web-admin/releases)\n\n## Run the Web Interface\n\nWhen you have the binary installed to the `bin` directory, you can run the web server. You can optionally pass a port number to run it on a different port\n\nAn example of what this looks like:\n\n```\neqemu@f8905f80723c:~/server$ ./bin/eqemu-admin web\n[www] Listening on port 3000\n[database] MySQL Attempting to connect (default) | Host [mariadb:3306] Database [peq] User [eqemu]\n[Process Manager] Starting server launcher...\n[database] MySQL Connected (default) | Host [mariadb:3306] Database [peq] User [eqemu]\n[database] MySQL Attempting to connect (content) | Host [content-cdn.projecteq.net:16033] Database [peq_content] User [peq_server_tgc]\n[database] MySQL Connected (content) | Host [content-cdn.projecteq.net:16033] Database [peq_content] User [peq_server_tgc]\n[HRM] Starting HRM listener (Hot-Reload Module) v1.0\n[HRM] Watching scripts [/home/eqemu/server/quests]\n[HRM] Watching scripts [/home/eqemu/server/lua_modules]\n[HRM] Watching scripts [/home/eqemu/server/plugins]\n[EQEmuConfig] File change detected, reloading...\nGET /api/v1/server/process_counts 200 28.475 ms - 59\nGET /api/v1/world/clients 200 51.359 ms - 711026\nGET /api/v1/server/process_counts 200 31.330 ms - 59\nGET /api/v1/world/clients 200 53.814 ms - 710599\nGET /api/v1/server/sysinfo 200 46.122 ms - 6712\nGET /api/v1/server/sysinfo 200 51.343 ms - 6712\nGET /api/v1/server/sysinfo 200 47.942 ms - 6712\n```\n\nThat's it! You're ready to go! \n\nYou will need to start the admin panel using Microsoft Services for Windows or using a process manager for Linux. Instructions for making this more \"installable\" as a system service will come later (Or feel free to submit a PR)\n\n## Post Launch\n\nYour admin panel will initialize itself when first booted. It will create an admin password you can find in your **eqemu_config.json** that can be found in its own section of the config\n\nDifferent sections of the configuration will be intialize on first-use. For example the launcher configuration won't be present until you try to use the Start / Stop / Restart features of the admin panel\n\n```\neqemu@f8905f80723c:~/server$ cat eqemu_config.json | jq '.[\"web-admin\"]'\n{\n  \"application\": {\n    \"key\": \"\u003cauto-generated-key\u003e\",\n    \"admin\": {\n      \"password\": \"\u003cauto-generated-password\u003e\"\n    }\n  },\n  \"launcher\": {\n    \"minZoneProcesses\": 3,\n    \"runSharedMemory\": true,\n    \"runLoginserver\": false,\n    \"runQueryServ\": false,\n    \"isRunning\": true\n  },\n  \"serverCodePath\": \"/home/eqemu/code/\"\n}\n```\n\n# Feature Requests\n\nWant a feature that isn't already available? Open an issue with the title \"[Feature Request]\" and we will see about getting it added\n\n# Contributing\n\nIf you want to contribute to the admin panel, please submit **Pull Requests**\n\nOcculus is open source, built to help others in the EverQuest Emulator community. If you use this admin panel, please remember to contribute back to the community in whichever way that you can\n\n# Developing\n\nTo develop the admin panel, clone the repository in the base of your EQEmulator server\n\nThe project is a Vue SPA with a NodeJS backend; so you will need to have two watcher processes watching for file changes to see the changes locally\n\nMake sure you have [NodeJS](https://nodejs.org/en/download/) installed and install nodemon `npm install -g nodemon`\n\n## Create Watches\n\nFor the backend, at the base of the project run `npm run watch`\n\n```\neqemu@e155719debeb:~/server/eqemu-web-admin$ npm run watch\n\n\u003e eqemu-admin@2.0.13 watch /home/eqemu/server/eqemu-web-admin\n\u003e nodemon --ignore public/ --exec node ./app/bin/admin web\n\n[nodemon] 2.0.4\n[nodemon] to restart at any time, enter `rs`\n[nodemon] watching path(s): *.*\n[nodemon] watching extensions: js,mjs,json\n[nodemon] starting `node ./app/bin/admin web`\n[www] Listening on port 3000\n[database] MySQL Attempting to connect (default) | Host [mariadb:3306] Database [peq] User [eqemu]\n[database] MySQL Connected (default) | Host [mariadb:3306] Database [peq] User [eqemu]\n[HRM] Starting HRM listener (Hot-Reload Module) v1.0\n[HRM] Watching scripts [/home/eqemu/server/quests]\n[HRM] Watching scripts [/home/eqemu/server/lua_modules]\n[HRM] Watching scripts [/home/eqemu/server/plugins]\n```\n\nFor the frontend, you will run `npm run serve`\n\n```\neqemu@e155719debeb:~/server/eqemu-web-admin/frontend$ npm run serve                                                                                               \nDONE  Compiled successfully in 5744ms\n \nNo type errors found\nVersion: typescript 3.4.5\nTime: 3661ms\n\n  App running at:\n  - Local:   http://localhost:8080/\n\n  It seems you are running Vue CLI inside a container.\n  Access the dev server via http://localhost:\u003cyour container's external mapped port\u003e/\n\n  Note that the development build is not optimized.\n  To create a production build, run npm run build.\n```\n\n## Frontend Development Configuration\n\n**Note** For the frontend, you will need to make sure that you set `VUE_APP_BACKEND_BASE_URL` environment variable in a `.env` file at the base of the `frontend` folder, this will tell your web client what endpoint it needs to talk to for API calls\n\n`eqemu@e155719debeb:~/server/eqemu-web-admin/frontend$ cp .env.example .env`\n\nIn my case; I have my development environment living in a VM and I need to point my web client to where the backend lives\n\n```\nVUE_APP_BACKEND_BASE_URL=http://192.168.98.200:3000\n```\n\nThe VM is 192.168.98.200, usually if you have this running on the same machine, you would just use `localhost`\n\nIf you have are developing against a backend that is remote, you will need to make sure that you add your host / ip to the CORS config on the backend under `app.js` (temporarily)\n\nOther than these small considerations, you should be on your way to developing fairly quickly\n\n```\nvar cors = require('cors')\napp.use(\n  cors(\n    {\n      origin: [\n        'http://localhost:8080',\n        'http://192.168.98.200:8080',\n        'http://docker:8080',\n        'http://localhost:5000'\n      ],\n      exposedHeaders: ['Content-Disposition']\n    }\n  )\n);\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fakkadius%2Focculus","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fakkadius%2Focculus","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fakkadius%2Focculus/lists"}