Once you've installed code-server, you can access it from an iPad.
Using the code-server progressive web app (PWA)
To use code-server on an iPad, we recommend installing the code-server
progressive web app (PWA):
- Open code-server in Safari.
- Click the Share icon.
- Click Add to Home Screen.
You can now open code-server from the Home screen, and when you do, you'll be
using the PWA. Running code-server as a PWA gets you more screen real estate and
access to top-level keyboard shortcuts since its running like a native app.
For example, you can use cmd+w to close an active file in the workbench. You
can add this to keybindings.json:
-
Open code-server
-
Go to Command Palette > Open Keyboard Shortcuts (JSON)
-
Add the following to keybindings.json
{
"key": "cmd+w",
"command": "workbench.action.closeActiveEditor"
}
-
Test the command by using cmd+w to close an active file.
Access code-server using Servediter
If you are unable to get the self-signed certificate working, or you do not have a domain
name to use, you can use Servediter for code-server.
Servediter for code-server is not officially supported by the code-server team!
To use Servediter:
- Download the app from the App Store.
- When prompted, provide your server information. If you are running a local
server or a Raspberry Pi connected via USB-C, you will input your settings
into Self Hosted Server.
Raspberry Pi USB-C network
We've heard of users having great success using code-server on an iPad connected
to a Raspberry Pi via USB-C (the Raspberry Pi provides both power and direct
network access). Setting this up requires you to turn on Network over USB-C
on the Raspberry Pi, then continuing with code-server as usual on the iPad.
For more information, see:
You may also find the following tips from Acker
Apple helpful:
Here are my keys to success. I bought a 4" touch screen with fan included that
attaches as a case to the Pi. I use the touch screen for anytime I have
connection issues, otherwise I turn off the Pi screen. I gave my Pi a network
name so I can easily connect at home on wifi or when on go with 1 usb-c cable
that supplys both power and network connectivity. Lastly, not all usb-c cables
are equal and not all will work so try different usb-c cables if you are going
mad (confirm over wifi first then move to cable).
Recommendations
Once you can access code-server on your iPad, you may find the following tips
and tricks helpful:
- Use multi-task mode to make code changes and see the browser at the same time
- This prevents the iOS background from dropping an app's state if you are
switching between code-server and browser (with both in full-screen)
- Be sure you are using the debug/terminal that is built into VS Code so that
you dont need another terminal app running
- This also prevents switching between full screen apps and losing your view
due to iOS' background app memory management
Known issues
- Getting self-signed certificates to work is an involved
process
- Keyboard issues:
- The keyboard disappear sometimes
#979
- Some expectations regarding shortcuts may not be met:
cmd + n opens new browser window instead of new file, and it's difficult
to set alternative as a workaround
- In general, expect to edit your keyboard shortcuts
- There's no escape key by default on the Magic Keyboard, so most users set
the globe key to be an escape key
- Trackpad scrolling does not work on iPadOS < 14.5
(#1455)
- Keyboard may lose focus in Safari / split view #4182
- Terminal text does not appear by default #3824
- Copy & paste in terminal does not work well with keyboard shortcuts #3491
ctrl+c does not stop a long-running process in the browser
Additionally, see issues in the code-server repo that are tagged with the os-ios
label
for more information.
Workaround for issue with ctrl+c not stopping a running process in the terminal
This's currently an issue with ctrl+c not stopping a running process in the
integrated terminal. We have filed an issue upstream and are tracking
here.
In the meantime, you can manually define a shortcut as a workaround:
-
Open the Command Palette
-
Look for Preferences: Open Keyboard Shortcuts (JSON)
-
Add the following snippet:
{
"key": "ctrl+c",
"command": "workbench.action.terminal.sendSequence",
"args": {
"text": "\u0003"
},
"when": "terminalFocus"
}
Source: StackOverflow
Access code-server with a self-signed certificate on an iPad
If you've installed code-server and are running it with a self-signed
certificate, you may see multiple
security warnings from Safari. To fix this, you'll need to install the
self-signed certificate generated by code-server as a profile on your device (you'll also need to do this to
enable WebSocket connections).
Certificate requirements
- We're assuming that you're using the self-signed certificate code-server
generates for you (if not, make sure that your certificate abides by the
guidelines issued by Apple).
- We've noticed that the certificate has to include
basicConstraints=CA:true.
- Your certificate must have a subject alt name that matches the hostname you'll
use to access code-server from the iPad. You can pass this name to code-server
so that it generates the certificate correctly using
--cert-host.
Sharing a self-signed certificate with an iPad
To share a self-signed certificate with an iPad:
-
Get the location of the certificate code-server generated; code-server prints
the certificate's location in its logs:
[2020-10-30T08:55:45.139Z] info - Using generated certificate and key for HTTPS: ~/.local/share/code-server/mymbp_local.crt
-
Send the certificate to the iPad, either by emailing it to yourself or using
Apple's Airdrop feature.
-
Open the *.crt file so that you're prompted to go into Settings to install.
-
Go to Settings > General > Profile, and select the profile. Tap Install.
-
Go to Settings > About > Certificate Trust Settings and enable
full trust for your certificate.
You should be able to access code-server without all of Safari's warnings now.
warning: Your iPad must access code-server via a domain name. It could be local
DNS like mymacbookpro.local, but it must be a domain name. Otherwise, Safari will
not allow WebSockets connections.