diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index d88d947d962c5..06b6192b7cdb4 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -2,7 +2,6 @@ "name": "Development environments on your infrastructure", "image": "codercom/oss-dogfood:latest", "features": { - // See all possible options here https://github.com/devcontainers/features/tree/main/src/docker-in-docker "ghcr.io/devcontainers/features/docker-in-docker:2": { "moby": "false" }, @@ -10,7 +9,9 @@ "auth": "none", "port": 13337 }, - "./filebrowser": {} + "./filebrowser": { + "folder": "${containerWorkspaceFolder}" + } }, // SYS_PTRACE to enable go debugging "runArgs": ["--cap-add=SYS_PTRACE"], @@ -43,15 +44,39 @@ "external": true, "icon": "/icon/zed.svg", "order": 5 + }, + // Reproduce `code-server` app here from the code-server + // feature so that we can set the correct folder and order. + // Currently, the order cannot be specified via option because + // we parse it as a number whereas variable interpolation + // results in a string. Additionally we set health check which + // is not yet set in the feature. + { + "slug": "code-server", + "displayName": "code-server", + "url": "http://${localEnv:FEATURE_CODE_SERVER_OPTION_HOST:127.0.0.1}:${localEnv:FEATURE_CODE_SERVER_OPTION_PORT:8080}/?folder=${containerWorkspaceFolder}", + "openIn": "${localEnv:FEATURE_CODE_SERVER_OPTION_APPOPENIN:slim-window}", + "share": "${localEnv:FEATURE_CODE_SERVER_OPTION_APPSHARE:owner}", + "icon": "/icon/code.svg", + "group": "${localEnv:FEATURE_CODE_SERVER_OPTION_APPGROUP:Web Editors}", + "order": 3, + "healthCheck": { + "url": "http://${localEnv:FEATURE_CODE_SERVER_OPTION_HOST:127.0.0.1}:${localEnv:FEATURE_CODE_SERVER_OPTION_PORT:8080}/healthz", + "interval": 5, + "threshold": 2 + } } ] } }, "mounts": [ + // Add a volume for the Coder home directory to persist shell history, + // and speed up dotfiles init and/or personalization. + "source=coder-coder-devcontainer-home,target=/home/coder,type=volume", // Mount the entire home because conditional mounts are not supported. // See: https://github.com/devcontainers/spec/issues/132 "source=${localEnv:HOME},target=/mnt/home/coder,type=bind,readonly" ], - "postCreateCommand": "./.devcontainer/postCreateCommand.sh", - "postStartCommand": "sudo service docker start" + "postCreateCommand": ["./.devcontainer/scripts/post_create.sh"], + "postStartCommand": ["./.devcontainer/scripts/post_start.sh"] } diff --git a/.devcontainer/filebrowser/devcontainer-feature.json b/.devcontainer/filebrowser/devcontainer-feature.json index 3829139cf3143..c7a55a0d8a14e 100644 --- a/.devcontainer/filebrowser/devcontainer-feature.json +++ b/.devcontainer/filebrowser/devcontainer-feature.json @@ -9,19 +9,15 @@ "default": "13339", "description": "The port to run filebrowser on" }, - // "folder": { - // "type": "string", - // "default": "${containerWorkspaceFolder}", - // "description": "The root directory for filebrowser to serve" - // }, - "auth": { + "folder": { "type": "string", - "enum": [ - "none", - "password" - ], - "default": "none", - "description": "Authentication method (none or password)" + "default": "", + "description": "The root directory for filebrowser to serve" + }, + "baseUrl": { + "type": "string", + "default": "", + "description": "The base URL for filebrowser (e.g., /filebrowser)" } }, "entrypoint": "/usr/local/bin/filebrowser-entrypoint", @@ -41,7 +37,7 @@ "healthcheck": { "url": "http://localhost:${localEnv:FEATURE_FILEBROWSER_OPTION_PORT:13339}/health", "interval": 5, - "threshold": 6 + "threshold": 2 } } ] diff --git a/.devcontainer/filebrowser/install.sh b/.devcontainer/filebrowser/install.sh index 1f8390f63864c..48158a38cd782 100644 --- a/.devcontainer/filebrowser/install.sh +++ b/.devcontainer/filebrowser/install.sh @@ -11,38 +11,29 @@ 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. +# Create entrypoint. cat >/usr/local/bin/filebrowser-entrypoint <>\${LOG_PATH} 2>&1 + filebrowser users add admin "" --perm.admin=true --viewMode=mosaic >>\${LOG_PATH} 2>&1 fi -set -euo pipefail +filebrowser config set --baseurl=\${BASEURL} --port=\${PORT} --auth.method=noauth --root=\${FOLDER} >>\${LOG_PATH} 2>&1 printf "👷 Starting filebrowser...\n\n" + printf "📂 Serving \${FOLDER} at http://localhost:\${PORT}\n\n" filebrowser >>\${LOG_PATH} 2>&1 & @@ -52,5 +43,4 @@ EOF chmod +x /usr/local/bin/filebrowser-entrypoint -printf "✅ File Browser installed!\n\n" -printf "🚀 Run 'filebrowser-entrypoint' to start the service\n\n" +printf "🥳 Installation complete!\n\n" diff --git a/.devcontainer/postCreateCommand.sh b/.devcontainer/scripts/post_create.sh similarity index 100% rename from .devcontainer/postCreateCommand.sh rename to .devcontainer/scripts/post_create.sh diff --git a/.devcontainer/scripts/post_start.sh b/.devcontainer/scripts/post_start.sh new file mode 100755 index 0000000000000..c98674037d353 --- /dev/null +++ b/.devcontainer/scripts/post_start.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +# Start Docker service if not already running. +sudo service docker start pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy