A production-ready, containerized Integrated Development Environment (IDE) accessible via any web browser. Designed to standardize tooling across devices and provide seamless access to NAS-hosted projects.
This repository defines a Development-as-Code environment. Instead of manually installing compilers and tools on every new laptop or tablet, this setup deploys a fully configured VS Code Server instance inside a Docker container.
It bridges the gap between local comfort and remote power, allowing for:
- Consistency: The exact same GCC version and Python libraries, everywhere.
- Portability: Code from an iPad, a low-power laptop, or a library computer.
- Centralization: All source code and data remain securely stored on the NAS, never synced to temporary devices.
| Component | Technology | Description |
|---|---|---|
| Core IDE | code-server | VS Code running on a remote server, accessible via HTTP. |
| Container | Docker | Isolates the dev environment from the host OS. |
| Languages | Python 3, C++ | Pre-installed compilers (GCC/G++) and interpreters. |
| Version Control | Git | Integrated terminal access for full Git workflows. |
| Storage | Bind Mounts | Direct access to the host's physical project directories. |
The container automatically provisions the following tools on startup:
- Python 3.x +
pip - Build Essentials:
make,gcc,g++,gdb - Git for version control
- Sudo privileges for package management (
apt)
- A server or NAS running Docker Engine & Docker Compose.
- (Optional) Tailscale for secure remote access without port forwarding.
Clone the repository to your host machine:
git clone [https://github.com/kimzam30/RemoteDevSetupWithNAS.git](https://github.com/kimzam30/RemoteDevSetupWithNAS.git)
cd RemoteDevSetupWithNASCreate the environment file. This is critical for security and permissions.
cp .env.example .envOpen .env and configure your settings:
# User Permissions (Run 'id' on host to find these)
PUID=1000
PGID=1000
# Security
PASSWORD=secure_dev_password
# Host Paths
PROJECTS_ROOT=/home/kimzam30/projects # Where your actual code lives
Spin up the environment:
docker-compose up -dThis environment is designed to be accessed via Tailscale, a private mesh VPN. This allows you to connect securely from anywhere (coffee shop, hotel, etc.) without opening ports on your router.
- Host Side: Ensure Tailscale is running on your NAS/Server.
- Tip: Run
tailscale ipon your host to find its private IP (starts with100.x.x.x).
- Tip: Run
- Client Side: Install the Tailscale app on your remote device (iPad, Laptop, Phone).
- Access: Open your browser and navigate to:
(Example:
http://<YOUR-TAILSCALE-IP>:8443http://100.86.212.92:8443)
Security Note: Because we bind the service to
0.0.0.0in Docker, it is technically accessible on your local network too. Using Tailscale ensures you can access it safely even when you are miles away.
- Access: Navigate to http://:8443 in your browser.
- Login: Enter the password defined in your .env file.
Develop:
-
Your project files are available in the /home/coder/project directory.
-
Open the integrated terminal (Ctrl+`) to run python or g++ commands.
Extensions install directly from the Open VSX Registry.
- Python: Search for "Python" and install the Microsoft extension.
- C++: Search for "C/C++" (IntelliSense).
Note: Extensions and user settings are persisted in the config/ folder on your host, so they survive container restarts.
RemoteDevSetupWithNAS/
├── config/
│ └── code-server/ # Persistent data (Extensions, User Settings)
├── .env.example # Configuration template
├── .gitignore # Security rules
└── docker-compose.yaml # Container definition
This is a personal development environment, but forks and suggestions are welcome.
- Fork the Project
- Create your Feature Branch (git checkout -b feature/NewTool)
- Commit your Changes (git commit -m 'Add Golang support')
- Push to the Branch (git push origin feature/NewTool)
- Open a Pull Request
maintained by kimzam