102 lines
1.9 KiB
Markdown
102 lines
1.9 KiB
Markdown
# Installing Codapi
|
|
|
|
Steps for Debian (11/12) or Ubuntu (20.04/22.04).
|
|
|
|
1. Install necessary packages (as root):
|
|
|
|
```sh
|
|
apt update && apt install -y ca-certificates curl docker.io make unzip
|
|
systemctl enable docker.service
|
|
systemctl restart docker.service
|
|
```
|
|
|
|
2. Create Codapi user (as root):
|
|
|
|
```sh
|
|
useradd --groups docker --shell /usr/bin/bash --create-home --home /opt/codapi codapi
|
|
```
|
|
|
|
3. Verify that Docker is working (as codapi):
|
|
|
|
```sh
|
|
docker run hello-world
|
|
```
|
|
|
|
4. Install Codapi (as codapi):
|
|
|
|
```sh
|
|
cd /opt/codapi
|
|
curl -L -o codapi.zip "https://api.github.com/repos/nalgeon/codapi/actions/artifacts/926428361/zip"
|
|
unzip -u codapi.zip
|
|
chmod +x build/codapi
|
|
rm -f codapi.zip
|
|
```
|
|
|
|
6. Build Docker images (as codapi):
|
|
|
|
```sh
|
|
cd /opt/codapi
|
|
make images
|
|
```
|
|
|
|
7. Verify that Codapi starts without errors (as codapi):
|
|
|
|
```sh
|
|
cd /opt/codapi
|
|
./build/codapi
|
|
```
|
|
|
|
Should print the `alpine` box and the `sh` command:
|
|
|
|
```
|
|
2023/09/16 15:18:05 codapi 20230915:691d224
|
|
2023/09/16 15:18:05 listening on port 1313...
|
|
2023/09/16 15:18:05 workers: 8
|
|
2023/09/16 15:18:05 boxes: [alpine]
|
|
2023/09/16 15:18:05 commands: [sh]
|
|
```
|
|
|
|
Stop it with Ctrl+C.
|
|
|
|
8. Configure Codapi as systemd service (as root):
|
|
|
|
```sh
|
|
mv /opt/codapi/codapi.service /etc/systemd/system/
|
|
chown root:root /etc/systemd/system/codapi.service
|
|
systemctl enable codapi.service
|
|
systemctl start codapi.service
|
|
```
|
|
|
|
Verify that the Codapi service is running:
|
|
|
|
```sh
|
|
systemctl status codapi.service
|
|
```
|
|
|
|
Should print `active (running)`:
|
|
|
|
```
|
|
codapi.service - Code playgrounds
|
|
Loaded: loaded (/etc/systemd/system/codapi.service; enabled; preset: enabled)
|
|
Active: active (running)
|
|
...
|
|
```
|
|
|
|
9. Verify that Codapi is working:
|
|
|
|
```sh
|
|
curl -H "content-type: application/json" -d '{ "sandbox": "sh", "command": "run", "files": {"": "echo hello" }}' http://localhost:1313/v1/exec
|
|
```
|
|
|
|
Should print `ok` = `true`:
|
|
|
|
```json
|
|
{
|
|
"id": "sh_run_dd27ed27",
|
|
"ok": true,
|
|
"duration": 650,
|
|
"stdout": "hello\n",
|
|
"stderr": ""
|
|
}
|
|
```
|