Code Server (Vs code online)
-
@murgero I just did:
cloudron login -> success
docker login -> success
sudo cloudron install --image mitchellurgero/org.urgero.codeserver:latest ->
No CloudronManifest.json found
Same thing happens if I use other version numbers. -
@will you need to clone the git repo and run the command from that checkout directory
-
-
@murgero
I followed this:
git clone https://github.com/mitchellurgero/cloudron-vscode
cd cloudron-vscode
cloudron login
cloudron buildOptional
cloudron install
I got to cloudron build and got this error:
Error in CloudronManifest.json: Unknown property (not in schema) @ /privateBeats Head against wall
-
@will Very close! Just remove this line https://github.com/mitchellurgero/cloudron-vscode/blob/master/CloudronManifest.json#L26
-
@girish Was that option removed in an update?
-
I've got this ready for #unstable with just a few tweaks needed. There's an upstream issue that prevents installing marketplace items from the in app marketplace (licensing really) that I'll try to document over the coming days how to work with. cc: @girish https://git.cloudron.io/doodlemania2/vs-code
Hat tip to @murgero for the bulk of the hard work! -
@doodlemania2 Do you have a link to the upstream issue?
-
@doodlemania2 What I like most about how I packaged it was that I pre-bundled different Open Source languages, GO, PowerShell, NodeJS, PHP, etc - this can be a very versatile project if it's packaged correctly.
-
@murgero - i agree - and it really isn't "hard" to add new extensions, you just have to do it manually and by grabbing alternatively licensed ones, not using the store.
-
@girish it's more a "feature" than an issue: https://github.com/cdr/code-server/blob/master/doc/FAQ.md#differences-compared-to-vs-code
-
Also Check out Theia.
-
Is the version up on GitLab stable? I’m tempted to run this.
Anything I should know?
-
@atrilahiji No that version is not stable nor secure - I can send you a private repo with a more secure, working model. PM when you have a few minutes.
-
The non-snoopy de-branded version may also be of interest:
-
@marcusquinn ah that one is pretty nice. One thing I didn’t like was the lack of WSL2 support
-
I got this app working in a beta stage - PM me if anyone wants to test it with me.
Feature set includes:
- PowerShell
- .NET Core (.NET Full will be available in the future as MS releases installers for it.)
- PHP
- NodeJS
- bash / ssh support
- TCP Proxy Support
-
@murgero my instance https://git.cloudron.io/doodlemania2/vs-code semi sorta works but I'm sure yours is much better. Feel free to grab anything from it if it is of use to you!
-
@murgero sounds awesome, I'd love to test it out! Not sure which repo would be in more working order.
-
@thetomester13 I have a private repo for testing (because there is so much security involved in making this stable) so if you would like access, shoot me a message here or pick a method of contact from my website https://urgero.org
-
@murgero This will be updated later this afternoon and put into a public repo for all to try.
-
-
Here it is: https://github.com/mitchellurgero/cloudron-vscode-package
Just clone the repo, then install:
cloudron install --image=mitchellurgero/org.urgero.vslamp:latest
-
@girish - Anyway to get this as unstable in the store? I have most of the code ready at this point and need some testers. code-server is no longer included in the repo so it downloads during compilation.
The only thing it needs is tests - I'm not sure what you would test before a build but if you can put me in the right direction I'd love to get this on the store ASAP.
-
@murgero I'm running it and have used it a few times already - works great!
-
@murgero I had an issue where it was preventing backups but didn’t bother to diagnose it much. I’ll give it another shot and report back
-
@atrilahiji If you run the backup cleaner command (see the backup page in the cloudron admin panel) it runs fine after that - though I have backups disabled on my code-server app as I constantly reinstall it for testing different features
-
@dswd Is this vs code online ? There are some attempts at https://forum.cloudron.io/topic/1709/code-server-vs-code-online/ but yours looks quite complete as well. I will move this discussion there if they are the same.
As for appstore submission, currently only only we are able to do it. We changed our model to one where where we pretty much maintain all the app packages. If you have a docker image, then others can clone your repo and then install using
cloudron install --image <image>
. -
@girish Yes, its based on code server
-
@girish Should I move the code back to my repo or should it stay on the cloudron git, or do you want to take over maintenance to make it an official app? How do you do this normally?
-
Does this have any sort of auth built in? Might be worth looking into the proxyAuth addon.
-
I have packaged a new app: A Visual Studio Code version that runs in the browser.
Here is the code: https://git.cloudron.io/dswd/vscode-app
The app works and already runs on my instance, but there are no tests yet.
I would like to submit the app to the appstore (for others to test and use) but currently I have a problem with the docker repository. Apparently I can only submit apps that are hosted on the Cloudron repo but I don't know how to push there.
-
The posts appear out of order, sorry about that
For some reason, NodeBB has no way to merge two topics together... Oh well.
@dswd said in Code Server (Vs code online):
@girish Should I move the code back to my repo or should it stay on the cloudron git, or do you want to take over maintenance to make it an official app? How do you do this normally?
It can stay on Cloudron git. I will have a look once I have some time and move/fork it into the cloudron namespace. I will then give you maintainer status in that repo, so you can push directly. Only limitation is that you have to let us know whenever you want to push a new release to appstore. We hope to get this part automated in our CI/CD at some point (though, we are not working on this right now, so no ETA yet).
-
I'd like to point out I have a build of this running as well with a bunch of IDEs and SDKs added.
@dswd - would we be able to merge our projects together so there is not 2 vastly different builds floating about?
-
@atrilahiji said in Code Server (Vs code online):
Does this have any sort of auth built in? Might be worth looking into the proxyAuth addon.
Yes code server comes with a simple passwort auth. You can disable it and roll your own if you want to. It is not super helpful to integrate it with Cloudron LDAP as all users share one IDE but you can have a single password if you want to.
I will have a look into optional proxyAuth, however.
-
@murgero said in Code Server (Vs code online):
@dswd - would we be able to merge our projects together so there is not 2 vastly different builds floating about?
I am sorry, I was not aware of your app since it was not on the app store. Otherwise I would have used it and maybe sent a PR.
We should compare our approaches and select the best parts of each. Where is your code located? -
Mine is here: https://github.com/mitchellurgero/cloudron-vscode-package
I plan to move it to Cloudron's GitLab once they approve it for testing.
-
@atrilahiji
I added optional proxyAuth to the image. If SSO is enabled, the password in the vscode app is disabled. -
@murgero
I checked your image. It seems to install lots of packages that are not needed for code server (e.g. Apache and PHP). Also it adds some plugins that I don't think are required (sendmail, mysql and redis).
I suggest using my image as base because it seems more minimal. Can you test it and check if there is any functionality missing that I could add? -
@dswd I can respect the opinion, but I use the addons mentioned as well as the adding different IDEs/SDKs (PS, PHP, Go, Rust, R-Lang, etc etc etc ) as users can't install linux packages on an app once it's installed. I also have build-tools to compile code, and I don't think apache is still there (I ended up choosing to use code-servers built-in proxy instead. So if apache is still being installed I will probably remove it in the future. Sendmail is used for testing and sending email from compiled apps, redis is kept for apps that would require it, and mysql (and other DBs) are thrown in because compiled apps may need a test DB to connect to.
It's kinda bloated when you first look at it, but users cannot modify what linux packages are installed and they cannot modify what cloudron addons are installed once code-server is installed.
That said, yes, technically speaking code-server doesn't need all this, but it's barely an IDE without the ability to actually use the code you write in it. So I included all the popular ones.
Minimal in this case I don't believe works. Sure yours takes up less space but my package includes more features. In this case, I think keeping our apps separated for now is the best course of action.
This is not to say I don't like what you did. There is something to be said about a minimal-first approach to building an app. I think - let's keep building our packages separate and we can talk to @girish / @nebulon about how to add both (potentially) to the app store. Maybe just labeled differently so the admins can choose how they like to build.
And if we do go that route I would like to work together to make the login process the same on both apps - to help make it seamless to the end-users.
What do you think? I am also open to suggestions.
Edit: I hope none of this comes off as negative towards your package. That is not my intent. It's clear you and I both have a want/need/passion for code-server to be on the store. I am just genuinely excited to have this conversation with someone other than myself.
-
@murgero
I can see your point. You are providing those dependencies to users just in case they need them (and because you need them). I agree, not being able to install packages is kind of a problem. However, a lot of software (e.g. nodejs, rust and php) can be installed into the user space.
I decided against putting in more dependencies because I don't want to monitor so many dependencies for security issues and push new releases every other day.
I too think it would be best to keep the versions separate as you require those dependencies.
Oh and no, your comment does not come off as negative (hope mine doesn't either). We just have different approaches. -
@murgero
I think I found a way to get around the read-only root and install additional software. I added a script that will fetch and install a minimal Linux and chroot into it:chroot-alpine
.
Inside it you can install additional software as you like. You can also use the same method to run Ubuntu instead of Alpine Linux but that will use much more storage. -
The other option here is to use something like Sysbox to enable DockerInDocker (DinD) type functionality, which can then separate and isolate the addon services needed for dev/test in a nested way, keeping the app lean.
-
@robi Do you have any experience with docker-in-docker on Cloudron?
-
I think we should collaborate on a minimal base docker image that only contains the installation of code-server, and then design a solution to allow adding dev dependencies on top of it as required by each end-user.
Say, first lift all the code-server-specific improvements from murgero's image into dswd's image and publish it at
cloudron/code-server-base
. Then murgero's image starts withFROM cloudron/code-server-base
and adds their unique dev dependencies and publishes it separately. The key will be improve the image build, installation, and updating process to be as smooth as the usual app install process. (The cli is great for cloudron development, but kinda cumbersome for ongoing maintenance.)Based on the way code-server is designed I doubt it could ever be a multi-user app. There is some discussion on code-server multi-tenancy on Setting up code-server for multi-tenancy #792. In summary, it doesn't seem viable and the discussion quickly shifts towards how to set up and manage a container-per-user design, which is an area that I think Cloudron could add a lot of value.
Perhaps both of these problems could be solved by creating a custom app that uses the cloudron api to expose an easier way to spin up code-server apps for users on demand, using the images designated by the admin.
code-server is a good use-case for proxyAuth. I think it would be neat if we could forward some path to a port inside the container to allow users to hit a dev web server running inside.
-
@infogulch
My current code already uses proxyAuth and adds TCP and UDP ports for dev that you can freely assign.
Please tell me what you think is missing and I will add it. -
@infogulch said in Code Server (Vs code online):
I think it would be neat if we could forward some path to a port inside the container to allow users to hit a dev web server running inside.
code-server natively supports this already, just simply logging in and then browsing to
https://fqdn-of-app/proxy/portNumber
example:https://vscode.example.com/proxy/8080
would put you on port 8080 inside the app. So if you had an app or something running on that port, it's http data would be displayed like normal. -
@murgero said in Code Server (Vs code online):
code-server natively supports this already ...
https://fqdn-of-app/proxy/portNumber
Oh neat, I'm glad they landed on that, that's a good solution. Perhaps a proxyAuth implementation should exclude the proxy path with something like
"proxyAuth": { "path": "!/proxy" }
.Perhaps this is a bit to early to worry about, but at some point we might consider restricting the app proxy's access to cloudron cookies with domain or path parameters.
-
-
@murgero @dswd what are the extra packages that are pre-installed? If it's not too big, maybe we can compromise and just install it all in one. It's more important to be useful to more number people than be minimal (of course, everything has a limit..).
I wonder if the right approach here is something like JupyterHub. What that project does is to have a "workspace manager" with a login screen. When logged in, it spins up a new "notebook docker container" for each user. This way the user can install whatever packages they want in that docker image. See https://github.com/jupyterhub/jupyterhub . I guess in our case if the size is limiting, maybe we should write a VsCodeHub which when logged in, spins off a vs code container for each user. This makes the app properly multi-user.
-
My package includes a ton of extra packages to cover the most popular programming and scripting choices. (Some are actually already in the Cloudron base image, which I use.)
- GOLANG
- PHP7.4 (PHP8.0 will be included soon!)
- Python
- PowerShell
- DotNet Core (C#, VB.NET, etc) (.NET Full will be included soon as well since full supports Linux now I believe)
- R
- R-lang
- NodeJS (Updated to latest)
I am probably missing a couple but I wanted to make sure a lot of the popular stuff was covered here.
-
Hey everyone! I just did want to ask about the current progress on this package. Is there already a roadmap for an official release in the app store? Or is this still under heavy development?
-
@chilipp Currently still under development. You're more than welcome to test it out if you would like!
-
@murgero I will! Thanks
-
@murgero thanks a lot for your work! Works like a charm
I have some suggestions for improvement. Would you prefer discussion on Github via Issues and PRs or here in this forum?
-
@chilipp I think issues on github make more sense (at least until it becomes a proper cloudron package)
-
-
@enabl-ist was curious if this is related to "code server", but it seems to be something newly done without any relations to the existing project.
https://github.com/cdr/code-server/discussions/4267
similar discussion in the "openvscode" project https://github.com/gitpod-io/openvscode-server/discussions/99
-
@fbartels indeed it looks like two different projects, with (kind of) the same goal... What I read is that the gitpod version is more simplified in features. I haven't had time to test it myself, just wanted to let the community know of this similar project.
-
Microsoft has joined the game as well https://code.visualstudio.com/blogs/2021/10/20/vscode-dev