From 87cc1efdce6d2a11b459115e2f8d0895cdda909a Mon Sep 17 00:00:00 2001 From: itdominator <1itdominator@gmail.com> Date: Thu, 27 Nov 2025 15:01:13 -0600 Subject: [PATCH] Updated Readmes; renamed servers to reference servers --- Docker/reference-servers/README.md | 2 + .../bashls/Dockerfile | 0 .../clangd/Dockerfile | 0 .../denols/Dockerfile | 0 .../dockerls/Dockerfile | 0 .../eslintls/Dockerfile | 0 .../gopls/Dockerfile | 0 .../gopls/docker_entrypoint.sh | 0 .../graphql-lsp/Dockerfile | 0 .../html/Dockerfile | 0 .../intelephense/Dockerfile | 0 .../jsonls/Dockerfile | 0 .../lemminx/Dockerfile | 0 .../omnisharp/Dockerfile | 0 .../powershell_es/Dockerfile | 0 .../prisma/Dockerfile | 0 .../pylsp/Dockerfile | 0 .../pyright/Dockerfile | 0 .../rust_analyzer/Dockerfile | 0 .../solargraph/Dockerfile | 0 .../sumneko_lua/Dockerfile | 0 .../svelteserver/Dockerfile | 0 .../tailwindcss/Dockerfile | 0 .../terraformls/Dockerfile | 0 .../tsserver/Dockerfile | 0 .../volar/Dockerfile | 0 .../vuels/Dockerfile | 0 .../yamlls/Dockerfile | 0 Docker/scripts/interactive-shell.sh | 2 +- Docker/servers/README.md | 67 ------------------- README.md | 20 +++++- 31 files changed, 22 insertions(+), 69 deletions(-) create mode 100644 Docker/reference-servers/README.md rename Docker/{servers => reference-servers}/bashls/Dockerfile (100%) rename Docker/{servers => reference-servers}/clangd/Dockerfile (100%) rename Docker/{servers => reference-servers}/denols/Dockerfile (100%) rename Docker/{servers => reference-servers}/dockerls/Dockerfile (100%) rename Docker/{servers => reference-servers}/eslintls/Dockerfile (100%) rename Docker/{servers => reference-servers}/gopls/Dockerfile (100%) rename Docker/{servers => reference-servers}/gopls/docker_entrypoint.sh (100%) rename Docker/{servers => reference-servers}/graphql-lsp/Dockerfile (100%) rename Docker/{servers => reference-servers}/html/Dockerfile (100%) rename Docker/{servers => reference-servers}/intelephense/Dockerfile (100%) rename Docker/{servers => reference-servers}/jsonls/Dockerfile (100%) rename Docker/{servers => reference-servers}/lemminx/Dockerfile (100%) rename Docker/{servers => reference-servers}/omnisharp/Dockerfile (100%) rename Docker/{servers => reference-servers}/powershell_es/Dockerfile (100%) rename Docker/{servers => reference-servers}/prisma/Dockerfile (100%) rename Docker/{servers => reference-servers}/pylsp/Dockerfile (100%) rename Docker/{servers => reference-servers}/pyright/Dockerfile (100%) rename Docker/{servers => reference-servers}/rust_analyzer/Dockerfile (100%) rename Docker/{servers => reference-servers}/solargraph/Dockerfile (100%) rename Docker/{servers => reference-servers}/sumneko_lua/Dockerfile (100%) rename Docker/{servers => reference-servers}/svelteserver/Dockerfile (100%) rename Docker/{servers => reference-servers}/tailwindcss/Dockerfile (100%) rename Docker/{servers => reference-servers}/terraformls/Dockerfile (100%) rename Docker/{servers => reference-servers}/tsserver/Dockerfile (100%) rename Docker/{servers => reference-servers}/volar/Dockerfile (100%) rename Docker/{servers => reference-servers}/vuels/Dockerfile (100%) rename Docker/{servers => reference-servers}/yamlls/Dockerfile (100%) delete mode 100644 Docker/servers/README.md diff --git a/Docker/reference-servers/README.md b/Docker/reference-servers/README.md new file mode 100644 index 0000000..7f1cb68 --- /dev/null +++ b/Docker/reference-servers/README.md @@ -0,0 +1,2 @@ +## Credit +Files here were copied from https://github.com/lspcontainers/dockerfiles/servers. \ No newline at end of file diff --git a/Docker/servers/bashls/Dockerfile b/Docker/reference-servers/bashls/Dockerfile similarity index 100% rename from Docker/servers/bashls/Dockerfile rename to Docker/reference-servers/bashls/Dockerfile diff --git a/Docker/servers/clangd/Dockerfile b/Docker/reference-servers/clangd/Dockerfile similarity index 100% rename from Docker/servers/clangd/Dockerfile rename to Docker/reference-servers/clangd/Dockerfile diff --git a/Docker/servers/denols/Dockerfile b/Docker/reference-servers/denols/Dockerfile similarity index 100% rename from Docker/servers/denols/Dockerfile rename to Docker/reference-servers/denols/Dockerfile diff --git a/Docker/servers/dockerls/Dockerfile b/Docker/reference-servers/dockerls/Dockerfile similarity index 100% rename from Docker/servers/dockerls/Dockerfile rename to Docker/reference-servers/dockerls/Dockerfile diff --git a/Docker/servers/eslintls/Dockerfile b/Docker/reference-servers/eslintls/Dockerfile similarity index 100% rename from Docker/servers/eslintls/Dockerfile rename to Docker/reference-servers/eslintls/Dockerfile diff --git a/Docker/servers/gopls/Dockerfile b/Docker/reference-servers/gopls/Dockerfile similarity index 100% rename from Docker/servers/gopls/Dockerfile rename to Docker/reference-servers/gopls/Dockerfile diff --git a/Docker/servers/gopls/docker_entrypoint.sh b/Docker/reference-servers/gopls/docker_entrypoint.sh similarity index 100% rename from Docker/servers/gopls/docker_entrypoint.sh rename to Docker/reference-servers/gopls/docker_entrypoint.sh diff --git a/Docker/servers/graphql-lsp/Dockerfile b/Docker/reference-servers/graphql-lsp/Dockerfile similarity index 100% rename from Docker/servers/graphql-lsp/Dockerfile rename to Docker/reference-servers/graphql-lsp/Dockerfile diff --git a/Docker/servers/html/Dockerfile b/Docker/reference-servers/html/Dockerfile similarity index 100% rename from Docker/servers/html/Dockerfile rename to Docker/reference-servers/html/Dockerfile diff --git a/Docker/servers/intelephense/Dockerfile b/Docker/reference-servers/intelephense/Dockerfile similarity index 100% rename from Docker/servers/intelephense/Dockerfile rename to Docker/reference-servers/intelephense/Dockerfile diff --git a/Docker/servers/jsonls/Dockerfile b/Docker/reference-servers/jsonls/Dockerfile similarity index 100% rename from Docker/servers/jsonls/Dockerfile rename to Docker/reference-servers/jsonls/Dockerfile diff --git a/Docker/servers/lemminx/Dockerfile b/Docker/reference-servers/lemminx/Dockerfile similarity index 100% rename from Docker/servers/lemminx/Dockerfile rename to Docker/reference-servers/lemminx/Dockerfile diff --git a/Docker/servers/omnisharp/Dockerfile b/Docker/reference-servers/omnisharp/Dockerfile similarity index 100% rename from Docker/servers/omnisharp/Dockerfile rename to Docker/reference-servers/omnisharp/Dockerfile diff --git a/Docker/servers/powershell_es/Dockerfile b/Docker/reference-servers/powershell_es/Dockerfile similarity index 100% rename from Docker/servers/powershell_es/Dockerfile rename to Docker/reference-servers/powershell_es/Dockerfile diff --git a/Docker/servers/prisma/Dockerfile b/Docker/reference-servers/prisma/Dockerfile similarity index 100% rename from Docker/servers/prisma/Dockerfile rename to Docker/reference-servers/prisma/Dockerfile diff --git a/Docker/servers/pylsp/Dockerfile b/Docker/reference-servers/pylsp/Dockerfile similarity index 100% rename from Docker/servers/pylsp/Dockerfile rename to Docker/reference-servers/pylsp/Dockerfile diff --git a/Docker/servers/pyright/Dockerfile b/Docker/reference-servers/pyright/Dockerfile similarity index 100% rename from Docker/servers/pyright/Dockerfile rename to Docker/reference-servers/pyright/Dockerfile diff --git a/Docker/servers/rust_analyzer/Dockerfile b/Docker/reference-servers/rust_analyzer/Dockerfile similarity index 100% rename from Docker/servers/rust_analyzer/Dockerfile rename to Docker/reference-servers/rust_analyzer/Dockerfile diff --git a/Docker/servers/solargraph/Dockerfile b/Docker/reference-servers/solargraph/Dockerfile similarity index 100% rename from Docker/servers/solargraph/Dockerfile rename to Docker/reference-servers/solargraph/Dockerfile diff --git a/Docker/servers/sumneko_lua/Dockerfile b/Docker/reference-servers/sumneko_lua/Dockerfile similarity index 100% rename from Docker/servers/sumneko_lua/Dockerfile rename to Docker/reference-servers/sumneko_lua/Dockerfile diff --git a/Docker/servers/svelteserver/Dockerfile b/Docker/reference-servers/svelteserver/Dockerfile similarity index 100% rename from Docker/servers/svelteserver/Dockerfile rename to Docker/reference-servers/svelteserver/Dockerfile diff --git a/Docker/servers/tailwindcss/Dockerfile b/Docker/reference-servers/tailwindcss/Dockerfile similarity index 100% rename from Docker/servers/tailwindcss/Dockerfile rename to Docker/reference-servers/tailwindcss/Dockerfile diff --git a/Docker/servers/terraformls/Dockerfile b/Docker/reference-servers/terraformls/Dockerfile similarity index 100% rename from Docker/servers/terraformls/Dockerfile rename to Docker/reference-servers/terraformls/Dockerfile diff --git a/Docker/servers/tsserver/Dockerfile b/Docker/reference-servers/tsserver/Dockerfile similarity index 100% rename from Docker/servers/tsserver/Dockerfile rename to Docker/reference-servers/tsserver/Dockerfile diff --git a/Docker/servers/volar/Dockerfile b/Docker/reference-servers/volar/Dockerfile similarity index 100% rename from Docker/servers/volar/Dockerfile rename to Docker/reference-servers/volar/Dockerfile diff --git a/Docker/servers/vuels/Dockerfile b/Docker/reference-servers/vuels/Dockerfile similarity index 100% rename from Docker/servers/vuels/Dockerfile rename to Docker/reference-servers/vuels/Dockerfile diff --git a/Docker/servers/yamlls/Dockerfile b/Docker/reference-servers/yamlls/Dockerfile similarity index 100% rename from Docker/servers/yamlls/Dockerfile rename to Docker/reference-servers/yamlls/Dockerfile diff --git a/Docker/scripts/interactive-shell.sh b/Docker/scripts/interactive-shell.sh index f576abb..b0efe7f 100755 --- a/Docker/scripts/interactive-shell.sh +++ b/Docker/scripts/interactive-shell.sh @@ -18,6 +18,6 @@ function main() { exit 1 fi - podman exec -it "${ID}" /bin/sh + podman exec -it "${ID}" /bin/bash } main $@; diff --git a/Docker/servers/README.md b/Docker/servers/README.md deleted file mode 100644 index 5f9f9af..0000000 --- a/Docker/servers/README.md +++ /dev/null @@ -1,67 +0,0 @@ -# LSP Dockerfiles - -**Dockerfiles for Language Server Protocol (LSP) servers** - Containerized language servers for use with IDEs. - -## Note: -Files under here were copied from https://github.com/lspcontainers/dockerfiles/servers. This README is modified from the repo as well. - -## What is this? - -This sub repository provides **production-ready Docker containers** for 25+ Language Server Protocol (LSP) servers. - -### **How it works:** -1. **Docker containers** provide isolated, reproducible LSP server environments -3. **Zero local installation** - no need to install language servers on your system - -Perfect for: -- **Consistent development environments** across teams and machines -- **Clean system** - no language server pollution on your host -- **Reproducible builds** with pinned package versions -- **Easy switching** between language server versions - -## Supported Language Servers - -| Language | Server | Container | Version | -|----------|--------|-----------|---------| -| **Bash** | bash-language-server | `servers/bash-language-server` | ![Version](https://img.shields.io/badge/version-5.6.0-blue) | -| **C/C++** | clangd | `servers/clangd-language-server` | ![Version](https://img.shields.io/badge/version-20.1.8-blue) | -| **C#** | omnisharp | `servers/omnisharp-language-server` | ![Version](https://img.shields.io/badge/version-1.39.12-blue) | -| **CSS/SCSS/Less** | vscode-css-languageserver | `servers/css-language-server` | ![Version](https://img.shields.io/badge/version-4.10.0-blue) | -| **Deno** | deno-lsp | `servers/deno-language-server` | ![Version](https://img.shields.io/badge/version-2.4.2-blue) | -| **Docker** | dockerfile-ls | `servers/docker-language-server` | ![Version](https://img.shields.io/badge/version-0.14.0-blue) | -| **ESLint** | eslint-languageserver | `servers/eslint-language-server` | ![Version](https://img.shields.io/badge/version-latest-blue) | -| **Go** | gopls | `servers/gopls` | ![Version](https://img.shields.io/badge/version-0.19.1-blue) | -| **GraphQL** | graphql-language-service | `servers/graphql-language-server` | ![Version](https://img.shields.io/badge/version-3.5.0-blue) | -| **HTML** | html-languageserver | `servers/html-language-server` | ![Version](https://img.shields.io/badge/version-1.4.0-blue) | -| **JavaScript/TypeScript** | typescript-language-server | `servers/typescript-language-server` | ![Version](https://img.shields.io/badge/version-4.3.4-blue) | -| **JSON** | vscode-json-languageserver | `servers/json-language-server` | ![Version](https://img.shields.io/badge/version-4.10.0-blue) | -| **Lua** | lua-language-server | `servers/lua-language-server` | ![Version](https://img.shields.io/badge/version-3.14.0-blue) | -| **PHP** | intelephense | `servers/php-language-server` | ![Version](https://img.shields.io/badge/version-1.14.4-blue) | -| **PowerShell** | powershell-es | `servers/powershell-language-server` | ![Version](https://img.shields.io/badge/version-4.3.0-blue) | -| **Prisma** | prisma-language-server | `servers/prisma-language-server` | ![Version](https://img.shields.io/badge/version-6.9.1-blue) | -| **Python** | pylsp | `servers/python-lsp-server` | ![Version](https://img.shields.io/badge/version-1.12.0-blue) | -| **Python** | pyright | `servers/pyright-language-server` | ![Version](https://img.shields.io/badge/version-1.1.377-blue) | -| **Ruby** | solargraph | `servers/ruby-language-server` | ![Version](https://img.shields.io/badge/version-0.55.1-blue) | -| **Rust** | rust-analyzer | `servers/rust-analyzer` | ![Version](https://img.shields.io/badge/version-1.88.0-blue) | -| **Svelte** | svelte-language-server | `servers/svelte-language-server` | ![Version](https://img.shields.io/badge/version-0.17.16-blue) | -| **Tailwind CSS** | tailwindcss-language-server | `servers/tailwindcss-language-server` | ![Version](https://img.shields.io/badge/version-0.14.25-blue) | -| **Terraform** | terraform-ls | `servers/terraform-ls` | ![Version](https://img.shields.io/badge/version-0.36.5-blue) | -| **Vue** | volar | `servers/volar-language-server` | ![Version](https://img.shields.io/badge/version-1.8.11-blue) | -| **Vue** | vuels (legacy) | `servers/vue-language-server` | ![Version](https://img.shields.io/badge/version-0.8.5-blue) | -| **XML** | lemminx | `servers/xml-language-server` | ![Version](https://img.shields.io/badge/version-0.27.0-blue) | -| **YAML** | yaml-language-server | `servers/yaml-language-server` | ![Version](https://img.shields.io/badge/version-1.18.0-blue) | - - -## Architecture & Design - -### **Reproducible Builds** -All containers use **pinned package versions** for complete reproducibility: -- **Base images**: Specific Alpine/Debian versions -- **System packages**: Exact apk/apt package versions -- **Language packages**: Pinned npm, gem, pip, go module versions - -### **Minimal & Secure** -- **Alpine Linux base** for minimal attack surface -- **Multi-stage builds** where applicable -- **Non-root users** for security -- **Distroless principles** - only essential components diff --git a/README.md b/README.md index ffc76e9..d8161eb 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,13 @@ # Newton LSP Server Bridge +## Credit +https://github.com/mkslanc/websockets-ls +https://github.com/lspcontainers/dockerfiles/servers + ## Overview -This script provides a WebSocket bridge to interface with multiple Language Servers through clients via a single WebSocket connection. +This repo provides a primary Dockerfile (with additional example standalone LSP Dockler files from `lspcontainers`) that packages a number of LSPs and tools into a container along with the src/ folder code. +The code under src/ comes from `websockets-ls` and has been cleaned up and formatted to my style/asthetics as well as modified server list. +The code creates a WebSocket bridge to interface with multiple Language Servers through clients via a single WebSocket connection. It supports various language servers concurrently and handles language-specific file extensions and initialization parameters. ## Features @@ -14,6 +20,7 @@ It supports various language servers concurrently and handles language-specific - Temporary file creation for `textDocument/didOpen` events. ## Usage +##### Setup 1: 1. Install Node.js. 2. Run 'npm install'. @@ -22,6 +29,17 @@ It supports various language servers concurrently and handles language-specific 5. Connect to the WebSocket server on `ws://localhost:9999/`. 6. Transmit LSP messages via the WebSocket connection. +##### Setup 2: + +1. Install Podman. +2. Create `opt/` folder in `Docker/` and add any additional programs there. +3. Configure the desired language servers in `src/defaultServers.js`. +3. Configure the start script at `Docker/scripts/start.sh` with abny additional env args or mount points. +4. Run from `Newton-LSP/` `Docker/build.sh` . +5. Run `Docker/scripts/start.sh` +6. Connect to the WebSocket server on `ws://localhost:9999/`. +7. Transmit LSP messages via the WebSocket connection. + ## Configuration Add or modify language server configurations in `languageServers.js`: