I've been developing RoqueOS, a web desktop that connects to a self-hosted Docker backend. The idea is to have one interface for everything: terminal, file manager, Docker apps, remote access, VS Code, all accessible from any browser.
Try it now: https://roqueos.com.br
Server Mode (install guide + one-liner): https://roqueos.com.br/server
What Server Mode offers:
- Docker App Store with 150+ apps (one-click install)
- Linux terminal with isolated Ubuntu containers per user
- VS Code in the browser with full filesystem access
- File manager with Google Drive, SMB, and NFS support
- Remote Desktop via RDP and VNC
- Remote browser running on the server (Playwright)
- Cloudflare Tunnels integration
- Built-in AI chat assistant
There's also a standalone mode (no server needed) with basic apps like calculator, notes, paint, code editor, screen recorder, etc. You can try it at https://roqueos.com.br without installing anything.
Stack: Vue 3 + Quasar (frontend), NestJS + TypeScript + SQLite + Docker (backend). Supports 10 languages. Available on the Microsoft Store too.
I've been building this solo since revisiting a prototype I made back in 2009. Would love honest feedback on what works, what doesn't, and what's missing.
Docker Hub: https://hub.docker.com/r/roqueribeiro1988/roqueos-server

Top comments (3)
This is a really ambitious project, especially as a solo dev. The feature list is wild — 150+ Docker apps, VS Code in browser, RDP/VNC, file manager with cloud integrations... that's a lot of surface area to maintain.
Couple of questions:
How are you handling auth/security for the remote access bits? Exposing a web terminal + file manager to the internet sounds scary without solid auth.
What made you pick NestJS over something lighter like Fastify or even plain Express? For a project like this I'd expect the backend to be pretty I/O heavy with all the Docker and filesystem operations.
The Cloudflare Tunnels integration is a nice touch btw — that's usually the most annoying part of self-hosting, getting the networking right without exposing ports.
Going to try the standalone mode tonight. Been looking for something like this for my homelab.
Wow! I'm very happy to read your comment! Thank you very much for the questions! Answering your questions, today I am making a key exchange flow between the installed server and the front, that is, an Api key + Api Secret, and I have refresh token to maintain communication and prevent the front from calling using the original key and secret. And the second question was because the backend project started to get big and I needed to make a separation of responsibility and use of strong typing to ensure stability, I had started with fastify and ended up migrating when everything started to increase! I'm in the app approval queue in the Apple and Google stores and the experience will be even more fluid! I'm open to feedback to improve! I also made a support material in the installation if you want to customize the server-side features. Once again, thank you very much for the comment
roqueos.com.br/install
I remembered an important point, if you want to use local-ip:27021 you can configure a VPN on the same network where you installed the RoqueOS Server and you don't need to expose the domain on cloudflare to access RoqueOS outside the home, just start the VPN of your home on your phone and access the RoqueOS frontend.