Self-hosted code streaming

This article will present how to self-host a code streaming server that is independant from the code editor that you use. You won’t get a two-way pair-programming solution, only streaming.

The solution relies on Pair-ls – Editor-agnostic remote pair p…


This content originally appeared on DEV Community 👩‍💻👨‍💻 and was authored by Sébastien NOBILI

This article will present how to self-host a code streaming server that is independant from the code editor that you use. You won't get a two-way pair-programming solution, only streaming.

The solution relies on Pair-ls - Editor-agnostic remote pair programming. It will involve 4 elements:

  • a Pair-ls relay server,
  • a Nginx reverse proxy to make the relay server accessible from the Web
  • a Pair-ls LSP server (started automatically by your editor) that will stream code to the relay server
  • a code editor (of you choice!)

Configure the server

Pair-ls service

Download and install pair-ls binary:

$ wget https://github.com/stevearc/pair-ls/releases/download/v0.1.1/pair-ls-linux64 -O /usr/local/bin/pair-ls
$ chmod +x /usr/local/bin/pair-ls

To have it started by the system, create a Systemd unit file named /etc/systemd/system/pair-ls.service:

[Unit]
Description=Pair-ls Code Streaming

[Service]
User=nobody
Environment="XDG_CONFIG_HOME=/tmp"
Environment="XDG_CACHE_HOME=/tmp"
ExecStart=pair-ls -config /dev/null -logfile /tmp/pair-ls.log -loglevel 10 relay -port 8888

[Install]
WantedBy=multi-user.target

Reload Systemd config and start the service:

systemctl daemon-reload
systemctl enable pair-ls.service
systemctl start pair-ls.service

Nginx reverse proxy

Create a Nginx config file named /etc/nginx/sites-available/pair-ls. Paste this contents and adjust the server FQDN:

server {
    listen    443 ssl;

    # Your serveur FQDN
    server_name  your.domain.tld;

    # There will be no static files to serve, so we don't need a root folder
    root /dev/null;
    server_tokens off;

    # The SSL-related stuff
    ssl_certificate      /path/to/cert.pem;
    ssl_certificate_key  /path/to/private.key;

    # The logs
    access_log  /var/log/nginx/access.log;
    error_log   /var/log/nginx/error.log;

    # Pass all traffic to the pair-ls daemon listening on port 8888
    location / {
        proxy_pass http://localhost:8888;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
    }
}

Enable the Nginx host and reload the config:

$ ln -s /etc/nginx/sites-available/pair-ls /etc/nginx/sites-enabled/pair-ls
$ systemctl reload nginx.service

Your code streaming relay is ready. Go to https://your.domain.tld/ to watch the stream.

Configure the editor

Install the editor plugin :

Configure the plugin to start the pair-ls with the following arguments:

lsp -forward wss://your.domain.tld

You can now start your code streaming session through the plugin command Pair and stop through PairStop.

If you don't use VSCode or NeoVim, you can configure your editor to run Pair-ls as a LSP server and connect to it. You'll probably find how to do so in your editor documentation.

Final thoughts

The solution presented here has no access-control at all. That means that anyone knowing the relay server URL will be able to watch your code streaming session.

There are ways to secure this:

  • Pair-ls relay server can be configured to prompt for a password on its Web frontend
  • Pair-ls LSP server can be configured to be accessed through a token-secured WebRTC connection


This content originally appeared on DEV Community 👩‍💻👨‍💻 and was authored by Sébastien NOBILI


Print Share Comment Cite Upload Translate Updates
APA

Sébastien NOBILI | Sciencx (2022-12-15T16:09:30+00:00) Self-hosted code streaming. Retrieved from https://www.scien.cx/2022/12/15/self-hosted-code-streaming/

MLA
" » Self-hosted code streaming." Sébastien NOBILI | Sciencx - Thursday December 15, 2022, https://www.scien.cx/2022/12/15/self-hosted-code-streaming/
HARVARD
Sébastien NOBILI | Sciencx Thursday December 15, 2022 » Self-hosted code streaming., viewed ,<https://www.scien.cx/2022/12/15/self-hosted-code-streaming/>
VANCOUVER
Sébastien NOBILI | Sciencx - » Self-hosted code streaming. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2022/12/15/self-hosted-code-streaming/
CHICAGO
" » Self-hosted code streaming." Sébastien NOBILI | Sciencx - Accessed . https://www.scien.cx/2022/12/15/self-hosted-code-streaming/
IEEE
" » Self-hosted code streaming." Sébastien NOBILI | Sciencx [Online]. Available: https://www.scien.cx/2022/12/15/self-hosted-code-streaming/. [Accessed: ]
rf:citation
» Self-hosted code streaming | Sébastien NOBILI | Sciencx | https://www.scien.cx/2022/12/15/self-hosted-code-streaming/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.