pojde

                   _     __
    ____  ____    (_)___/ /__
   / __ \/ __ \  / / __  / _ \
  / /_/ / /_/ / / / /_/ /  __/
 / .___/\____/_/ /\__,_/\___/
/_/         /___/

Headless Linux distribution for full-stack software development with web access for all components. Runs as a Docker container, virtual machine or even on bare metal. Develop from anywhere using any device with a browser!

🚀 Get started

🚧 This project is currently undergoing a rewrite. Check out pojde-ng for more information. 🚧

Overview

Services

Collaboration and Comfort

Data and Documentation

Shell

C/C++

Rust

Go

Java

Mono/.NET/C#/F# and PowerShell

Godot

GDScript language support in Theia is not yet working; trying to connect to the GDScript language server hangs in the “Connecting” state. Use the included Godot editor (see Desktop) or code-server instead.

Python

Octave

Ruby

JavaScript/TypeScript and Web Technologies

Zig

R

Databases

DevOps

SecOps

Themes

Desktop

Installation

Option 1: Docker

To install, run the following in your terminal (ZSH, Bash or PowerShell) and follow the instructions:

docker run --name pojde -v $HOME/Documents/pojde:/root/Documents:z -p 8022:22 -p 8000:8000 -p 8001:8001 -p 8002:8002 -p 8003:8003 -e HOME=/root -e USER=root -e DOCKER_HOST="unix:///opt/pojde/docker.sock" -e DISPLAY=":1" -v /var/run/docker.sock:/opt/pojde/docker.sock:z --dns 8.8.8.8 -d --privileged --restart always pojntfx/alpine-openrc:edge
docker exec -it pojde sh -c 'wget -O /tmp/install.sh https://raw.githubusercontent.com/pojntfx/pojde/master/update-pojde && sh /tmp/install.sh && sleep 10 && exit'

You can find the content of the container’s Documents folder in the Documents/pojde folder of your Docker host for easy data transfer.

For the next steps, continue to Usage.

Tested on:

Option 2: Native Installation On An Existing Alpine Linux Installation

To install, run the following as root and follow the instructions:

sh -c "$(wget -O - https://raw.githubusercontent.com/pojntfx/pojde/master/update-pojde)"

For the next steps, continue to Usage.

Tested on:

Option 3: Virtualized Installation With alpimager

  1. Copy packages.txt, repositories.txt and setup.sh to a local directory.
  2. Change usernames, passwords, SSH public keys etc. in setup.sh to your liking
  3. Get alpimager, install it and create the disk image by running alpimager -output pojde.qcow2 -debug. If there are issues with the nbd kernel module, run modprobe nbd on your Docker host.
  4. Increase the disk image size by running qemu-img resize pojde.qcow2 +20G
  5. Start the virtual machine by running qemu-system-x86_64 -m 4096 -accel kvm -nic user,hostfwd=tcp::8022-:22 -boot d -drive format=qcow2,file=pojde.qcow2; use -accel hvf or -accel hax on macOS, -accel kvm on Linux. We are using a user net device with port forwarding in this example, but if you are using Linux as your host os, it is also possible to set up a bridge to access the VM from a dedicated IP from your host network and then start it by running qemu-system-x86_64 -m 4096 -accel kvm -net nic -net bridge,br=br0 -boot d -drive format=qcow2,file=pojde.qcow2. If you do so, there is no need to use -p 8022 flag in the ssh commands below and you should replace localhost with the IP of the VM. Also, if you prefer not to use a graphical display, pass the -nographic flag to the startup commands above.
  6. Log into the machine and resize the file system by running ssh -p 8022 root@localhost resize2fs /dev/sda. If you’re running in a public cloud /dev/sda might be something else such as /dev/vda.
  7. Setup secure access by running ssh -L localhost:8000:localhost:8000 -L localhost:8001:localhost:8001 -L localhost:8002:localhost:8002 -L localhost:8003:localhost:8003 -L localhost:8004:localhost:8004 -p 8022 root@localhost. If you do not setup secure access like so, the might be issues with webviews in Theia.
  8. Continue to Usage

Tested on:

For Windows, please use the native installation on WSL2 (see the alpimager docs for why).

Usage

Trusting the Certificates

At the end of the installation script, the script asked you to click a link, which downloaded the root certificate to your device. You’ll now have to trust that SSL certificate. I created some videos on how to do that; please note that you don’t have to download the certificate as described in the videos, but instead have to use the root certificate you’ve downloaded earlier:

If you are using a iOS device, read the following article: Adding Trusted Root Certificates to iOS14. code-server/issues/979 might also be of use.

If you prefer to use another browser on Linux or require the certificate to be installed system-wide, check out How to add trusted CA certificate on CentOS/Fedora.

Note that Safari is not supported in Theia due to an issue with WebSockets and HTTP basic auth. To use Theia on Safari, open noVNC, add it to the homescreen and use Chromium in noVNC to browse to Theia; alternatively, you can use code-server.

Access

To access the services, use the passwords you’ve specified in setup.sh and the addresses below. The default username is pojntfx, the default password is mysvcpassword. If you don’t use SSH forwarding, didn’t install using Docker or are on the machine that runs the IDE, you’ll most likely want to replace localhost with the IP or domain of the machine that is running the IDE, i.e. myide.example.com or 192.168.178.23.

If you chose the Docker or virtualized installation options, you can also SSH into the container/virtual machine with ssh -p 8022 root@localhost.

If you are accessing the services on localhost and trust the SSL certificate, please note that HSTS will be enabled for localhost. To prevent having HSTS on localhost, you may want to access the services using localhost.localdomain or local.local instead.

Additionally, for code-server, some additional shortcuts for better cross-browser support have been added:

If you use Chrome, Edge or Brave, installing code-server as a PWA allows you to use shortcuts such as cmd + tab/ctrl + tab or cmd - w/ctrl - w directly.

Tested on:

Using a Domain

If you are using a domain, make sure to set the A and AAAA records correctly:

A dev.felix.pojtinger.com 141.72.248.134
AAAA dev.felix.pojtinger.com 2001:7c7:2121:8d00:da47:32ff:fec9:62a0
A *.webview.dev.felix.pojtinger.com 141.72.248.134
AAAA *.webview.dev.felix.pojtinger.com 2001:7c7:2121:8d00:da47:32ff:fec9:62a0

Updating

To update the IDE, run update-pojde in the terminal and follow the instructions.

License

pojde (c) 2021 Felix Pojtinger

SPDX-License-Identifier: AGPL-3.0