A modern implementation of Linode's original manager https://lmc.laboon.io
Go to file
2020-01-30 18:51:23 -05:00
dns Properly handle DNS slave zones 2020-01-30 18:48:19 -05:00
images Initial commit. Implemented OAuth, Linodes, volumes, and images 2020-01-10 00:24:59 -05:00
img Implemented plan upgrades 2020-01-22 21:01:47 -05:00
include Initial commit. Implemented OAuth, Linodes, volumes, and images 2020-01-10 00:24:59 -05:00
linodes Added duration to events. Backported a few API changes 2020-01-22 23:03:30 -05:00
logout Initial commit. Implemented OAuth, Linodes, volumes, and images 2020-01-10 00:24:59 -05:00
volumes Initial commit. Implemented OAuth, Linodes, volumes, and images 2020-01-10 00:24:59 -05:00
.gitignore Initial commit. Implemented OAuth, Linodes, volumes, and images 2020-01-10 00:24:59 -05:00
404.css Initial commit. Implemented OAuth, Linodes, volumes, and images 2020-01-10 00:24:59 -05:00
404.html Initial commit. Implemented OAuth, Linodes, volumes, and images 2020-01-10 00:24:59 -05:00
clientID.js.example Initial commit. Implemented OAuth, Linodes, volumes, and images 2020-01-10 00:24:59 -05:00
favicon.ico Initial commit. Implemented OAuth, Linodes, volumes, and images 2020-01-10 00:24:59 -05:00
global.css Added all DNS functionality 2020-01-18 17:50:00 -05:00
global.js Added duration to events. Backported a few API changes 2020-01-22 23:03:30 -05:00
index.html Initial commit. Implemented OAuth, Linodes, volumes, and images 2020-01-10 00:24:59 -05:00
LICENSE Initial commit. Implemented OAuth, Linodes, volumes, and images 2020-01-10 00:24:59 -05:00
login.css Initial commit. Implemented OAuth, Linodes, volumes, and images 2020-01-10 00:24:59 -05:00
login.js Initial commit. Implemented OAuth, Linodes, volumes, and images 2020-01-10 00:24:59 -05:00
README.md Updated README for DNS 2020-01-18 17:54:22 -05:00

Full disclosure: I am an employee of Linode, however this project is being developed independently in my own free time and is not associated in any way with Linode, LLC. Only publicly-available documentation and information is being used in the development of this project.

Linode Manager Classic

LMC is a modern recreation of Linode's original manager interface that many people know and love. It is implemented as a client-side browser app using just vanilla HTML5, CSS3, and JavaScript (no 3rd-party libraries or other external dependencies). It uses Linode's OAuth provider for authentication and interfaces with APIv4.

This app aims to be as faithful a recreation of the original manager as possible, making only minor adjustments to account for discrepancies between APIv4 and the original manager, to fix things which were blatantly broken in the original manager, or to add new functionality that was never present in the original manager. As an example, the original manager uses display groups for grouping Linodes together on the main page, however display groups are currently deprecated and will eventually be removed from APIv4, so instead LMC uses tags for this purpose (but this has the added advantage that you can apply multiple tags to a single Linode).

The canonical deployment of this app can be found at https://lmc.laboon.io, however it is also possible (and easy) to self-host your own copy (see instructions below).

Development Progress

This project is currently a work in progress. The following list provides a high-level overview which features have been implemented and which features are planned for the future:

  • OAuth Authentication/Login/Logout
  • Gravatar
  • Linodes (including the dashboard and all related subpages, but not including graphs)
  • Block Storage (Volumes)
  • Images
  • DNS
  • Graphs
  • StackScripts
  • NodeBalancers
  • Longview
  • Account Details
  • User Profile Settings
  • Support Tickets

Eventually I plan to also implement features which were never available in the original manager, including Object Storage, One-Click Apps, and LKE.

Reporting Issues

Before reporting an issue, please search the issue tracker to see if the issue has already reported. The canonical source of this repository is located at https://git.bradleylaboon.com/lb.laboon/lmc. Any forks on any other websites (including GitHub) are unofficial. The issue tracker located at that address should be used for all bug reports. In some cases, the root cause of an issue might be due to features which are currently missing from Linode's APIv4 (for example, APIv4 does not expose which physical host a given Linode instance is running on, so it is not possible to display this information like the original manager did). In these cases I may close the issue and redirect you upstream to Linode.

Contributing

The best way to contribute is by opening issues on the issue tracker. For simple fixes or adjustments I might accept a PR, but for the time being I would prefer to maintain this project as a solo effort. I may change my mind in the future.

Self-hosting

In order to self-host this application, you must first create your own OAuth client using your existing Linode account (instructions for doing this in Linode's new manager can be found here). When creating the OAuth client, use the URL where you will be hosting the app as the Callback URL. Then you can clone this repository into your webroot and copy the clientID.js.example file to clientID.js and fill in the empty string with your Client ID. You must ensure that Server Side Includes (SSI) is enabled in your web server. Optionally, you can configure your web server to use the 404.html file as a custom error document.