Self-Hosting
LiveCodes is a client-side app. It can be easily self-hosted on any static file server or CDN.
All core functionalities (e.g. editors, compilers, formatters, code execution, etc) run in the browser. However, some minor features require external services (e.g. sharing short URLs, broadcast, etc). If you also want to self-host these services, you can use the docker setup.
Guide
The built app can be obtained using any of the following methods:
Download a Release
Download the app from the releases, extract the folder and add it to your website.
Build from Source
Fork the GitHub repo and clone it. You may wish to use the included setup to deploy to GitHub Pages:
git clone https://github.com/{your-username}/livecodes
cd livecodes
npm install
npm build # build the app to "build" directory
npm run serve # locally serve to http://localhost:8080
# deploy
npm run deploy # build and deploy to GitHub Pages
# for development
npm start # start local development with code watch, rebuild and live-reload
Git Integration
Fork the GitHub repo and use one of the hosting services that integrate with GitHub to allow automatic deploys on code push (e.g. Cloudflare Pages, Netlify, Firebase, Vercel, etc.). When prompted, the build command is npm run build
and the build output directory is build
.
Docker Setup
In addition to the static app provided by the previous methods, the included docker setup provides alternative implementations for server-side features available in the hosted app, e.g. automatic HTTPS, Open Graph meta tags, oEmbed, custom headers, short-URL share, broadcast server, separate origin sandbox to run code, custom 404 page, etc.
docker-compose up -d
By default, the app is served at https://livecodes.localhost.
For customization and detailed guide, see docker setup docs.
Custom Build
By default, when building the app, it is expected to be hosted on the root of the domain/subdomain (e.g. https://my-website.com
or https://playground.my-website.com
). The documentation is also hosted in the /docs/
directory (e.g. https://my-website.com/docs/
).
If you wish to host the app in a subdirectory (e.g. https://my-username.github.io/playground/
), the base URL of the app needs to be supplied by the environment variable BASE_URL
during build.
Example:
npx cross-env BASE_URL="/playground/" npm run build
If you do not want to build documentations and instead direct all documentation links to https://livecodes.io/docs/, use the following command:
npx cross-env DOCS_BASE_URL=null npm run build:app
Services
Some of the services used by the app are not supported on static self-hosted deploys and are either replaced by other compatible services (e.g. the share service uses dpaste for short URLs, which are deleted after 365 days) or require you to provide an alternative service (e.g. Firebase configuration for authentication).
You may wish to use the included docker setup to self-host these services.
LiveCodes sponsors (Bronze sponsors and above) get access to a hosted docker setup with managed services.
Examples
Static App on GitHub Pages
This is an example of a self-hosted deployment, that was deployed to GitHub Pages using the built-in setup:
https://live-codes.github.io/livecodes/
Docker Setup on VPS
This is an example of a self-hosted deployment, that was deployed to a VPS using the included docker setup:
SDK Usage
The SDK can still be used with the self-hosted app by providing the appUrl
embed option.
import { createPlayground } from 'livecodes';
const options = {
appUrl: 'https://playground.my-website.com',
template: 'react',
// other embed options
};
createPlayground('#container', options);