mirror of
https://github.com/coder/coder.git
synced 2026-06-02 20:48:20 +00:00
feat(.devcontainer): add cursor, filebrowser, windsurf and zed (#18608)
This commit is contained in:
committed by
GitHub
parent
c6e0ba12d3
commit
87d052ea93
@@ -9,7 +9,8 @@
|
||||
"ghcr.io/coder/devcontainer-features/code-server:1": {
|
||||
"auth": "none",
|
||||
"port": 13337
|
||||
}
|
||||
},
|
||||
"./filebrowser": {}
|
||||
},
|
||||
// SYS_PTRACE to enable go debugging
|
||||
"runArgs": [
|
||||
@@ -20,6 +21,34 @@
|
||||
"extensions": [
|
||||
"biomejs.biome"
|
||||
]
|
||||
},
|
||||
"coder": {
|
||||
"apps": [
|
||||
{
|
||||
"slug": "cursor",
|
||||
"displayName": "Cursor Desktop",
|
||||
"url": "cursor://coder.coder-remote/openDevContainer?owner=${localEnv:CODER_WORKSPACE_OWNER_NAME}&workspace=${localEnv:CODER_WORKSPACE_NAME}&agent=${localEnv:CODER_WORKSPACE_PARENT_AGENT_NAME}&url=${localEnv:CODER_URL}&token=$SESSION_TOKEN&devContainerName=${localEnv:CONTAINER_ID}&devContainerFolder=${containerWorkspaceFolder}",
|
||||
"external": true,
|
||||
"icon": "/icon/cursor.svg",
|
||||
"order": 1
|
||||
},
|
||||
{
|
||||
"slug": "windsurf",
|
||||
"displayName": "Windsurf Editor",
|
||||
"url": "windsurf://coder.coder-remote/openDevContainer?owner=${localEnv:CODER_WORKSPACE_OWNER_NAME}&workspace=${localEnv:CODER_WORKSPACE_NAME}&agent=${localEnv:CODER_WORKSPACE_PARENT_AGENT_NAME}&url=${localEnv:CODER_URL}&token=$SESSION_TOKEN&devContainerName=${localEnv:CONTAINER_ID}&devContainerFolder=${containerWorkspaceFolder}",
|
||||
"external": true,
|
||||
"icon": "/icon/windsurf.svg",
|
||||
"order": 4
|
||||
},
|
||||
{
|
||||
"slug": "zed",
|
||||
"displayName": "Zed Editor",
|
||||
"url": "zed://ssh/${localEnv:CODER_WORKSPACE_AGENT_NAME}.${localEnv:CODER_WORKSPACE_NAME}.${localEnv:CODER_WORKSPACE_OWNER_NAME}.coder/${containerWorkspaceFolder}",
|
||||
"external": true,
|
||||
"icon": "/icon/zed.svg",
|
||||
"order": 5
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"mounts": [
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
{
|
||||
"id": "filebrowser",
|
||||
"version": "0.0.1",
|
||||
"name": "File Browser",
|
||||
"description": "A web-based file browser for your development container",
|
||||
"options": {
|
||||
"port": {
|
||||
"type": "string",
|
||||
"default": "13339",
|
||||
"description": "The port to run filebrowser on"
|
||||
},
|
||||
// "folder": {
|
||||
// "type": "string",
|
||||
// "default": "${containerWorkspaceFolder}",
|
||||
// "description": "The root directory for filebrowser to serve"
|
||||
// },
|
||||
"auth": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"none",
|
||||
"password"
|
||||
],
|
||||
"default": "none",
|
||||
"description": "Authentication method (none or password)"
|
||||
}
|
||||
},
|
||||
"entrypoint": "/usr/local/bin/filebrowser-entrypoint",
|
||||
"dependsOn": {
|
||||
"ghcr.io/devcontainers/features/common-utils:2": {}
|
||||
},
|
||||
"customizations": {
|
||||
"coder": {
|
||||
"apps": [
|
||||
{
|
||||
"slug": "filebrowser",
|
||||
"displayName": "File Browser",
|
||||
"url": "http://localhost:${localEnv:FEATURE_FILEBROWSER_OPTION_PORT:13339}",
|
||||
"icon": "/icon/filebrowser.svg",
|
||||
"order": 3,
|
||||
"subdomain": true,
|
||||
"healthcheck": {
|
||||
"url": "http://localhost:${localEnv:FEATURE_FILEBROWSER_OPTION_PORT:13339}/health",
|
||||
"interval": 5,
|
||||
"threshold": 6
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
BOLD='\033[0;1m'
|
||||
|
||||
printf "%sInstalling filebrowser\n\n" "${BOLD}"
|
||||
|
||||
# Check if filebrowser is installed.
|
||||
if ! command -v filebrowser &>/dev/null; then
|
||||
curl -fsSL https://raw.githubusercontent.com/filebrowser/get/master/get.sh | bash
|
||||
fi
|
||||
|
||||
printf "🥳 Installation complete!\n\n"
|
||||
|
||||
# Create run script.
|
||||
cat >/usr/local/bin/filebrowser-entrypoint <<EOF
|
||||
#!/bin/bash
|
||||
|
||||
printf "🛠️ Configuring filebrowser\n\n"
|
||||
|
||||
AUTH="${AUTH}"
|
||||
PORT="${PORT}"
|
||||
FOLDER="$(pwd)"
|
||||
LOG_PATH=/tmp/filebrowser.log
|
||||
export FB_DATABASE="/tmp/filebrowser.db"
|
||||
|
||||
# Check if filebrowser db exists.
|
||||
if [[ ! -f "\${FB_DATABASE}" ]]; then
|
||||
filebrowser config init
|
||||
if [[ "\$AUTH" == "password" ]]; then
|
||||
filebrowser users add admin admin --perm.admin=true --viewMode=mosaic
|
||||
fi
|
||||
fi
|
||||
|
||||
# Configure filebrowser.
|
||||
if [[ "\$AUTH" == "none" ]]; then
|
||||
filebrowser config set --port="\${PORT}" --auth.method=noauth --root="\${FOLDER}"
|
||||
else
|
||||
filebrowser config set --port="\${PORT}" --auth.method=json --root="\${FOLDER}"
|
||||
fi
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
printf "👷 Starting filebrowser...\n\n"
|
||||
printf "📂 Serving \${FOLDER} at http://localhost:\${PORT}\n\n"
|
||||
|
||||
filebrowser >>\${LOG_PATH} 2>&1 &
|
||||
|
||||
printf "📝 Logs at \${LOG_PATH}\n\n"
|
||||
EOF
|
||||
|
||||
chmod +x /usr/local/bin/filebrowser-entrypoint
|
||||
|
||||
printf "✅ File Browser installed!\n\n"
|
||||
printf "🚀 Run 'filebrowser-entrypoint' to start the service\n\n"
|
||||
Reference in New Issue
Block a user