Compare commits

..

No commits in common. "master" and "4.14.1-ls167" have entirely different histories.

29 changed files with 1157 additions and 1520 deletions

0
.editorconfig Normal file → Executable file
View File

6
.github/CONTRIBUTING.md vendored Normal file → Executable file
View File

@ -6,7 +6,7 @@
* Read, and fill the Pull Request template * Read, and fill the Pull Request template
* If this is a fix for a typo (in code, documentation, or the README) please file an issue and let us sort it out. We do not need a PR * If this is a fix for a typo (in code, documentation, or the README) please file an issue and let us sort it out. We do not need a PR
* If the PR is addressing an existing issue include, closes #\<issue number>, in the body of the PR commit message * If the PR is addressing an existing issue include, closes #\<issue number>, in the body of the PR commit message
* If you want to discuss changes, you can also bring it up in [#dev-talk](https://discordapp.com/channels/354974912613449730/757585807061155840) in our [Discord server](https://linuxserver.io/discord) * If you want to discuss changes, you can also bring it up in [#dev-talk](https://discordapp.com/channels/354974912613449730/757585807061155840) in our [Discord server](https://discord.gg/YWrKVTn)
## Common files ## Common files
@ -105,10 +105,10 @@ docker build \
-t linuxserver/code-server:latest . -t linuxserver/code-server:latest .
``` ```
The ARM variants can be built on x86_64 hardware and vice versa using `lscr.io/linuxserver/qemu-static` The ARM variants can be built on x86_64 hardware using `multiarch/qemu-user-static`
```bash ```bash
docker run --rm --privileged lscr.io/linuxserver/qemu-static --reset docker run --rm --privileged multiarch/qemu-user-static:register --reset
``` ```
Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64`. Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64`.

0
.github/FUNDING.yml vendored Normal file → Executable file
View File

2
.github/ISSUE_TEMPLATE/config.yml vendored Normal file → Executable file
View File

@ -1,7 +1,7 @@
blank_issues_enabled: false blank_issues_enabled: false
contact_links: contact_links:
- name: Discord chat support - name: Discord chat support
url: https://linuxserver.io/discord url: https://discord.gg/YWrKVTn
about: Realtime support / chat with the community and the team. about: Realtime support / chat with the community and the team.
- name: Discourse discussion forum - name: Discourse discussion forum

4
.github/ISSUE_TEMPLATE/issue.bug.yml vendored Normal file → Executable file
View File

@ -67,10 +67,10 @@ body:
- type: textarea - type: textarea
attributes: attributes:
description: | description: |
Provide a full docker log, output of "docker logs code-server" Provide a full docker log, output of "docker logs linuxserver.io"
label: Container logs label: Container logs
placeholder: | placeholder: |
Output of `docker logs code-server` Output of `docker logs linuxserver.io`
render: bash render: bash
validations: validations:
required: true required: true

0
.github/ISSUE_TEMPLATE/issue.feature.yml vendored Normal file → Executable file
View File

3
.github/workflows/call_issue_pr_tracker.yml vendored Normal file → Executable file
View File

@ -8,9 +8,6 @@ on:
pull_request_review: pull_request_review:
types: [submitted,edited,dismissed] types: [submitted,edited,dismissed]
permissions:
contents: read
jobs: jobs:
manage-project: manage-project:
permissions: permissions:

3
.github/workflows/call_issues_cron.yml vendored Normal file → Executable file
View File

@ -4,9 +4,6 @@ on:
- cron: '31 1 * * *' - cron: '31 1 * * *'
workflow_dispatch: workflow_dispatch:
permissions:
contents: read
jobs: jobs:
stale: stale:
permissions: permissions:

View File

@ -3,42 +3,26 @@ name: External Trigger Main
on: on:
workflow_dispatch: workflow_dispatch:
permissions:
contents: read
jobs: jobs:
external-trigger-master: external-trigger-master:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v4.1.1 - uses: actions/checkout@v3.1.0
- name: External Trigger - name: External Trigger
if: github.ref == 'refs/heads/master' if: github.ref == 'refs/heads/master'
env:
SKIP_EXTERNAL_TRIGGER: ${{ vars.SKIP_EXTERNAL_TRIGGER }}
run: | run: |
printf "# External trigger for docker-code-server\n\n" >> $GITHUB_STEP_SUMMARY if [ -n "${{ secrets.PAUSE_EXTERNAL_TRIGGER_CODE_SERVER_MASTER }}" ]; then
if grep -q "^code-server_master_" <<< "${SKIP_EXTERNAL_TRIGGER}"; then echo "**** Github secret PAUSE_EXTERNAL_TRIGGER_CODE_SERVER_MASTER is set; skipping trigger. ****"
echo "> [!NOTE]" >> $GITHUB_STEP_SUMMARY echo "Github secret \`PAUSE_EXTERNAL_TRIGGER_CODE_SERVER_MASTER\` is set; skipping trigger." >> $GITHUB_STEP_SUMMARY
echo "> Github organizational variable \`SKIP_EXTERNAL_TRIGGER\` contains \`code-server_master_\`; will skip trigger if version matches." >> $GITHUB_STEP_SUMMARY
elif grep -q "^code-server_master" <<< "${SKIP_EXTERNAL_TRIGGER}"; then
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> Github organizational variable \`SKIP_EXTERNAL_TRIGGER\` contains \`code-server_master\`; skipping trigger." >> $GITHUB_STEP_SUMMARY
exit 0 exit 0
fi fi
echo "> [!NOTE]" >> $GITHUB_STEP_SUMMARY echo "**** External trigger running off of master branch. To disable this trigger, set a Github secret named \"PAUSE_EXTERNAL_TRIGGER_CODE_SERVER_MASTER\". ****"
echo "> External trigger running off of master branch. To disable this trigger, add \`code-server_master\` into the Github organizational variable \`SKIP_EXTERNAL_TRIGGER\`." >> $GITHUB_STEP_SUMMARY echo "External trigger running off of master branch. To disable this trigger, set a Github secret named \`PAUSE_EXTERNAL_TRIGGER_CODE_SERVER_MASTER\`" >> $GITHUB_STEP_SUMMARY
printf "\n## Retrieving external version\n\n" >> $GITHUB_STEP_SUMMARY echo "**** Retrieving external version ****"
EXT_RELEASE=$(curl -u ${{ secrets.CR_USER }}:${{ secrets.CR_PAT }} -sX GET https://api.github.com/repos/coder/code-server/releases/latest | jq -r '.tag_name' | sed 's|^v||') EXT_RELEASE=$(curl -u ${{ secrets.CR_USER }}:${{ secrets.CR_PAT }} -sX GET https://api.github.com/repos/coder/code-server/releases/latest | jq -r '.tag_name' | sed 's|^v||')
echo "Type is \`custom_version_command\`" >> $GITHUB_STEP_SUMMARY
if grep -q "^code-server_master_${EXT_RELEASE}" <<< "${SKIP_EXTERNAL_TRIGGER}"; then
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> Github organizational variable \`SKIP_EXTERNAL_TRIGGER\` matches current external release; skipping trigger." >> $GITHUB_STEP_SUMMARY
exit 0
fi
if [ -z "${EXT_RELEASE}" ] || [ "${EXT_RELEASE}" == "null" ]; then if [ -z "${EXT_RELEASE}" ] || [ "${EXT_RELEASE}" == "null" ]; then
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY echo "**** Can't retrieve external version, exiting ****"
echo "> Can't retrieve external version, exiting" >> $GITHUB_STEP_SUMMARY
FAILURE_REASON="Can't retrieve external version for code-server branch master" FAILURE_REASON="Can't retrieve external version for code-server branch master"
GHA_TRIGGER_URL="https://github.com/linuxserver/docker-code-server/actions/runs/${{ github.run_id }}" GHA_TRIGGER_URL="https://github.com/linuxserver/docker-code-server/actions/runs/${{ github.run_id }}"
curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 16711680, curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 16711680,
@ -46,9 +30,10 @@ jobs:
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }} "username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
exit 1 exit 1
fi fi
EXT_RELEASE_SANITIZED=$(echo ${EXT_RELEASE} | sed 's/[~,%@+;:/]//g') EXT_RELEASE=$(echo ${EXT_RELEASE} | sed 's/[~,%@+;:/]//g')
echo "Sanitized external version: \`${EXT_RELEASE_SANITIZED}\`" >> $GITHUB_STEP_SUMMARY echo "**** External version: ${EXT_RELEASE} ****"
echo "Retrieving last pushed version" >> $GITHUB_STEP_SUMMARY echo "External version: ${EXT_RELEASE}" >> $GITHUB_STEP_SUMMARY
echo "**** Retrieving last pushed version ****"
image="linuxserver/code-server" image="linuxserver/code-server"
tag="latest" tag="latest"
token=$(curl -sX GET \ token=$(curl -sX GET \
@ -56,33 +41,14 @@ jobs:
| jq -r '.token') | jq -r '.token')
multidigest=$(curl -s \ multidigest=$(curl -s \
--header "Accept: application/vnd.docker.distribution.manifest.v2+json" \ --header "Accept: application/vnd.docker.distribution.manifest.v2+json" \
--header "Accept: application/vnd.oci.image.index.v1+json" \
--header "Authorization: Bearer ${token}" \ --header "Authorization: Bearer ${token}" \
"https://ghcr.io/v2/${image}/manifests/${tag}") "https://ghcr.io/v2/${image}/manifests/${tag}" \
if jq -e '.layers // empty' <<< "${multidigest}" >/dev/null 2>&1; then | jq -r 'first(.manifests[].digest)')
# If there's a layer element it's a single-arch manifest so just get that digest digest=$(curl -s \
digest=$(jq -r '.config.digest' <<< "${multidigest}")
else
# Otherwise it's multi-arch or has manifest annotations
if jq -e '.manifests[]?.annotations // empty' <<< "${multidigest}" >/dev/null 2>&1; then
# Check for manifest annotations and delete if found
multidigest=$(jq 'del(.manifests[] | select(.annotations))' <<< "${multidigest}")
fi
if [[ $(jq '.manifests | length' <<< "${multidigest}") -gt 1 ]]; then
# If there's still more than one digest, it's multi-arch
multidigest=$(jq -r ".manifests[] | select(.platform.architecture == \"amd64\").digest?" <<< "${multidigest}")
else
# Otherwise it's single arch
multidigest=$(jq -r ".manifests[].digest?" <<< "${multidigest}")
fi
if digest=$(curl -s \
--header "Accept: application/vnd.docker.distribution.manifest.v2+json" \ --header "Accept: application/vnd.docker.distribution.manifest.v2+json" \
--header "Accept: application/vnd.oci.image.manifest.v1+json" \
--header "Authorization: Bearer ${token}" \ --header "Authorization: Bearer ${token}" \
"https://ghcr.io/v2/${image}/manifests/${multidigest}"); then "https://ghcr.io/v2/${image}/manifests/${multidigest}" \
digest=$(jq -r '.config.digest' <<< "${digest}"); | jq -r '.config.digest')
fi
fi
image_info=$(curl -sL \ image_info=$(curl -sL \
--header "Authorization: Bearer ${token}" \ --header "Authorization: Bearer ${token}" \
"https://ghcr.io/v2/${image}/blobs/${digest}") "https://ghcr.io/v2/${image}/blobs/${digest}")
@ -94,54 +60,45 @@ jobs:
IMAGE_RELEASE=$(echo ${image_info} | jq -r '.Labels.build_version' | awk '{print $3}') IMAGE_RELEASE=$(echo ${image_info} | jq -r '.Labels.build_version' | awk '{print $3}')
IMAGE_VERSION=$(echo ${IMAGE_RELEASE} | awk -F'-ls' '{print $1}') IMAGE_VERSION=$(echo ${IMAGE_RELEASE} | awk -F'-ls' '{print $1}')
if [ -z "${IMAGE_VERSION}" ]; then if [ -z "${IMAGE_VERSION}" ]; then
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY echo "**** Can't retrieve last pushed version, exiting ****"
echo "Can't retrieve last pushed version, exiting" >> $GITHUB_STEP_SUMMARY
FAILURE_REASON="Can't retrieve last pushed version for code-server tag latest" FAILURE_REASON="Can't retrieve last pushed version for code-server tag latest"
curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 16711680, curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 16711680,
"description": "**Trigger Failed** \n**Reason:** '"${FAILURE_REASON}"' \n"}], "description": "**Trigger Failed** \n**Reason:** '"${FAILURE_REASON}"' \n"}],
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }} "username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
exit 1 exit 1
fi fi
echo "Last pushed version: \`${IMAGE_VERSION}\`" >> $GITHUB_STEP_SUMMARY echo "**** Last pushed version: ${IMAGE_VERSION} ****"
if [ "${EXT_RELEASE_SANITIZED}" == "${IMAGE_VERSION}" ]; then echo "Last pushed version: ${IMAGE_VERSION}" >> $GITHUB_STEP_SUMMARY
echo "Sanitized version \`${EXT_RELEASE_SANITIZED}\` already pushed, exiting" >> $GITHUB_STEP_SUMMARY if [ "${EXT_RELEASE}" == "${IMAGE_VERSION}" ]; then
echo "**** Version ${EXT_RELEASE} already pushed, exiting ****"
echo "Version ${EXT_RELEASE} already pushed, exiting" >> $GITHUB_STEP_SUMMARY
exit 0 exit 0
elif [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-code-server/job/master/lastBuild/api/json | jq -r '.building') == "true" ]; then elif [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-code-server/job/master/lastBuild/api/json | jq -r '.building') == "true" ]; then
echo "New version \`${EXT_RELEASE}\` found; but there already seems to be an active build on Jenkins; exiting" >> $GITHUB_STEP_SUMMARY echo "**** New version ${EXT_RELEASE} found; but there already seems to be an active build on Jenkins; exiting ****"
echo "New version ${EXT_RELEASE} found; but there already seems to be an active build on Jenkins; exiting" >> $GITHUB_STEP_SUMMARY
exit 0 exit 0
else else
if [[ "${artifacts_found}" == "false" ]]; then echo "**** New version ${EXT_RELEASE} found; old version was ${IMAGE_VERSION}. Triggering new build ****"
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY echo "New version ${EXT_RELEASE} found; old version was ${IMAGE_VERSION}. Triggering new build" >> $GITHUB_STEP_SUMMARY
echo "> New version detected, but not all artifacts are published yet; skipping trigger" >> $GITHUB_STEP_SUMMARY
FAILURE_REASON="New version ${EXT_RELEASE} for code-server tag latest is detected, however not all artifacts are uploaded to upstream release yet. Will try again later."
curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 9802903,
"description": "**Trigger Failed** \n**Reason:** '"${FAILURE_REASON}"' \n"}],
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
else
printf "\n## Trigger new build\n\n" >> $GITHUB_STEP_SUMMARY
echo "New sanitized version \`${EXT_RELEASE_SANITIZED}\` found; old version was \`${IMAGE_VERSION}\`. Triggering new build" >> $GITHUB_STEP_SUMMARY
if [[ "${artifacts_found}" == "true" ]]; then
echo "All artifacts seem to be uploaded." >> $GITHUB_STEP_SUMMARY
fi
response=$(curl -iX POST \ response=$(curl -iX POST \
https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-code-server/job/master/buildWithParameters?PACKAGE_CHECK=false \ https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-code-server/job/master/buildWithParameters?PACKAGE_CHECK=false \
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} | grep -i location | sed "s|^[L|l]ocation: \(.*\)|\1|") --user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} | grep -i location | sed "s|^[L|l]ocation: \(.*\)|\1|")
echo "Jenkins [job queue url](${response%$'\r'})" >> $GITHUB_STEP_SUMMARY echo "**** Jenkins job queue url: ${response%$'\r'} ****"
echo "Sleeping 10 seconds until job starts" >> $GITHUB_STEP_SUMMARY echo "**** Sleeping 10 seconds until job starts ****"
sleep 10 sleep 10
buildurl=$(curl -s "${response%$'\r'}api/json" | jq -r '.executable.url') buildurl=$(curl -s "${response%$'\r'}api/json" | jq -r '.executable.url')
buildurl="${buildurl%$'\r'}" buildurl="${buildurl%$'\r'}"
echo "Jenkins job [build url](${buildurl})" >> $GITHUB_STEP_SUMMARY echo "**** Jenkins job build url: ${buildurl} ****"
echo "Attempting to change the Jenkins job description" >> $GITHUB_STEP_SUMMARY echo "Jenkins job build url: ${buildurl}" >> $GITHUB_STEP_SUMMARY
echo "**** Attempting to change the Jenkins job description ****"
curl -iX POST \ curl -iX POST \
"${buildurl}submitDescription" \ "${buildurl}submitDescription" \
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} \ --user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} \
--data-urlencode "description=GHA external trigger https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" \ --data-urlencode "description=GHA external trigger https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" \
--data-urlencode "Submit=Submit" --data-urlencode "Submit=Submit"
echo "**** Notifying Discord ****" echo "**** Notifying Discord ****"
TRIGGER_REASON="A version change was detected for code-server tag latest. Old version:${IMAGE_VERSION} New version:${EXT_RELEASE_SANITIZED}" TRIGGER_REASON="A version change was detected for code-server tag latest. Old version:${IMAGE_VERSION} New version:${EXT_RELEASE}"
curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 9802903, curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 9802903,
"description": "**Build Triggered** \n**Reason:** '"${TRIGGER_REASON}"' \n**Build URL:** '"${buildurl}display/redirect"' \n"}], "description": "**Build Triggered** \n**Reason:** '"${TRIGGER_REASON}"' \n**Build URL:** '"${buildurl}display/redirect"' \n"}],
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }} "username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
fi fi
fi

View File

@ -5,44 +5,41 @@ on:
- cron: '32 * * * *' - cron: '32 * * * *'
workflow_dispatch: workflow_dispatch:
permissions:
contents: read
jobs: jobs:
external-trigger-scheduler: external-trigger-scheduler:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v4.1.1 - uses: actions/checkout@v3.1.0
with: with:
fetch-depth: '0' fetch-depth: '0'
- name: External Trigger Scheduler - name: External Trigger Scheduler
run: | run: |
printf "# External trigger scheduler for docker-code-server\n\n" >> $GITHUB_STEP_SUMMARY echo "**** Branches found: ****"
printf "Found the branches:\n\n%s\n" "$(git for-each-ref --format='- %(refname:lstrip=3)' refs/remotes)" >> $GITHUB_STEP_SUMMARY git for-each-ref --format='%(refname:short)' refs/remotes
for br in $(git for-each-ref --format='%(refname:lstrip=3)' refs/remotes) for br in $(git for-each-ref --format='%(refname:short)' refs/remotes)
do do
if [[ "${br}" == "HEAD" ]]; then br=$(echo "$br" | sed 's|origin/||g')
printf "\nSkipping %s.\n" ${br} >> $GITHUB_STEP_SUMMARY echo "**** Evaluating branch ${br} ****"
continue
fi
printf "\n## Evaluating \`%s\`\n\n" ${br} >> $GITHUB_STEP_SUMMARY
ls_jenkins_vars=$(curl -sX GET https://raw.githubusercontent.com/linuxserver/docker-code-server/${br}/jenkins-vars.yml) ls_jenkins_vars=$(curl -sX GET https://raw.githubusercontent.com/linuxserver/docker-code-server/${br}/jenkins-vars.yml)
ls_branch=$(echo "${ls_jenkins_vars}" | yq -r '.ls_branch') ls_branch=$(echo "${ls_jenkins_vars}" | yq -r '.ls_branch')
ls_trigger=$(echo "${ls_jenkins_vars}" | yq -r '.external_type') ls_trigger=$(echo "${ls_jenkins_vars}" | yq -r '.external_type')
if [[ "${br}" == "${ls_branch}" ]] && [[ "${ls_trigger}" != "os" ]]; then if [[ "${br}" == "${ls_branch}" ]] && [[ "${ls_trigger}" != "os" ]]; then
echo "Branch appears to be live and trigger is not os; checking workflow." >> $GITHUB_STEP_SUMMARY echo "**** Branch ${br} appears to be live and trigger is not os; checking workflow. ****"
if curl -sfX GET https://raw.githubusercontent.com/linuxserver/docker-code-server/${br}/.github/workflows/external_trigger.yml > /dev/null 2>&1; then if curl -sfX GET https://raw.githubusercontent.com/linuxserver/docker-code-server/${br}/.github/workflows/external_trigger.yml > /dev/null 2>&1; then
echo "Triggering external trigger workflow for branch." >> $GITHUB_STEP_SUMMARY echo "**** Workflow exists. Triggering external trigger workflow for branch ${br} ****."
echo "Triggering external trigger workflow for branch ${br}" >> $GITHUB_STEP_SUMMARY
curl -iX POST \ curl -iX POST \
-H "Authorization: token ${{ secrets.CR_PAT }}" \ -H "Authorization: token ${{ secrets.CR_PAT }}" \
-H "Accept: application/vnd.github.v3+json" \ -H "Accept: application/vnd.github.v3+json" \
-d "{\"ref\":\"refs/heads/${br}\"}" \ -d "{\"ref\":\"refs/heads/${br}\"}" \
https://api.github.com/repos/linuxserver/docker-code-server/actions/workflows/external_trigger.yml/dispatches https://api.github.com/repos/linuxserver/docker-code-server/actions/workflows/external_trigger.yml/dispatches
else else
echo "Skipping branch due to no external trigger workflow present." >> $GITHUB_STEP_SUMMARY echo "**** Workflow doesn't exist; skipping trigger. ****"
echo "Skipping branch ${br} due to no external trigger workflow present." >> $GITHUB_STEP_SUMMARY
fi fi
else else
echo "Skipping branch due to being detected as dev branch or having no external version." >> $GITHUB_STEP_SUMMARY echo "**** ${br} is either a dev branch, or has no external version; skipping trigger. ****"
echo "Skipping branch ${br} due to being detected as dev branch or having no external version." >> $GITHUB_STEP_SUMMARY
fi fi
done done

6
.github/workflows/greetings.yml vendored Normal file → Executable file
View File

@ -2,14 +2,8 @@ name: Greetings
on: [pull_request_target, issues] on: [pull_request_target, issues]
permissions:
contents: read
jobs: jobs:
greeting: greeting:
permissions:
issues: write
pull-requests: write
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/first-interaction@v1 - uses: actions/first-interaction@v1

42
.github/workflows/package_trigger.yml vendored Normal file
View File

@ -0,0 +1,42 @@
name: Package Trigger Main
on:
workflow_dispatch:
jobs:
package-trigger-master:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3.1.0
- name: Package Trigger
if: github.ref == 'refs/heads/master'
run: |
if [ -n "${{ secrets.PAUSE_PACKAGE_TRIGGER_CODE_SERVER_MASTER }}" ]; then
echo "**** Github secret PAUSE_PACKAGE_TRIGGER_CODE_SERVER_MASTER is set; skipping trigger. ****"
echo "Github secret \`PAUSE_PACKAGE_TRIGGER_CODE_SERVER_MASTER\` is set; skipping trigger." >> $GITHUB_STEP_SUMMARY
exit 0
fi
if [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-code-server/job/master/lastBuild/api/json | jq -r '.building') == "true" ]; then
echo "**** There already seems to be an active build on Jenkins; skipping package trigger ****"
echo "There already seems to be an active build on Jenkins; skipping package trigger" >> $GITHUB_STEP_SUMMARY
exit 0
fi
echo "**** Package trigger running off of master branch. To disable, set a Github secret named \"PAUSE_PACKAGE_TRIGGER_CODE_SERVER_MASTER\". ****"
echo "Package trigger running off of master branch. To disable, set a Github secret named \`PAUSE_PACKAGE_TRIGGER_CODE_SERVER_MASTER\`" >> $GITHUB_STEP_SUMMARY
response=$(curl -iX POST \
https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-code-server/job/master/buildWithParameters?PACKAGE_CHECK=true \
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} | grep -i location | sed "s|^[L|l]ocation: \(.*\)|\1|")
echo "**** Jenkins job queue url: ${response%$'\r'} ****"
echo "**** Sleeping 10 seconds until job starts ****"
sleep 10
buildurl=$(curl -s "${response%$'\r'}api/json" | jq -r '.executable.url')
buildurl="${buildurl%$'\r'}"
echo "**** Jenkins job build url: ${buildurl} ****"
echo "Jenkins job build url: ${buildurl}" >> $GITHUB_STEP_SUMMARY
echo "**** Attempting to change the Jenkins job description ****"
curl -iX POST \
"${buildurl}submitDescription" \
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} \
--data-urlencode "description=GHA package trigger https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" \
--data-urlencode "Submit=Submit"

View File

@ -5,99 +5,46 @@ on:
- cron: '0 20 * * 6' - cron: '0 20 * * 6'
workflow_dispatch: workflow_dispatch:
permissions:
contents: read
jobs: jobs:
package-trigger-scheduler: package-trigger-scheduler:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v4.1.1 - uses: actions/checkout@v3.1.0
with: with:
fetch-depth: '0' fetch-depth: '0'
- name: Package Trigger Scheduler - name: Package Trigger Scheduler
env:
SKIP_PACKAGE_TRIGGER: ${{ vars.SKIP_PACKAGE_TRIGGER }}
run: | run: |
printf "# Package trigger scheduler for docker-code-server\n\n" >> $GITHUB_STEP_SUMMARY echo "**** Branches found: ****"
printf "Found the branches:\n\n%s\n" "$(git for-each-ref --format='- %(refname:lstrip=3)' refs/remotes)" >> $GITHUB_STEP_SUMMARY git for-each-ref --format='%(refname:short)' refs/remotes
for br in $(git for-each-ref --format='%(refname:lstrip=3)' refs/remotes) for br in $(git for-each-ref --format='%(refname:short)' refs/remotes)
do do
if [[ "${br}" == "HEAD" ]]; then br=$(echo "$br" | sed 's|origin/||g')
printf "\nSkipping %s.\n" ${br} >> $GITHUB_STEP_SUMMARY echo "**** Evaluating branch ${br} ****"
continue ls_branch=$(curl -sX GET https://raw.githubusercontent.com/linuxserver/docker-code-server/${br}/jenkins-vars.yml | yq -r '.ls_branch')
fi if [ "${br}" == "${ls_branch}" ]; then
printf "\n## Evaluating \`%s\`\n\n" ${br} >> $GITHUB_STEP_SUMMARY echo "**** Branch ${br} appears to be live; checking workflow. ****"
JENKINS_VARS=$(curl -sX GET https://raw.githubusercontent.com/linuxserver/docker-code-server/${br}/jenkins-vars.yml) if curl -sfX GET https://raw.githubusercontent.com/linuxserver/docker-code-server/${br}/.github/workflows/package_trigger.yml > /dev/null 2>&1; then
if ! curl -sfX GET https://raw.githubusercontent.com/linuxserver/docker-code-server/${br}/Jenkinsfile >/dev/null 2>&1; then echo "**** Workflow exists. Triggering package trigger workflow for branch ${br}. ****"
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY echo "Triggering package trigger workflow for branch ${br}" >> $GITHUB_STEP_SUMMARY
echo "> No Jenkinsfile found. Branch is either deprecated or is an early dev branch." >> $GITHUB_STEP_SUMMARY
skipped_branches="${skipped_branches}${br} "
elif [[ "${br}" == $(yq -r '.ls_branch' <<< "${JENKINS_VARS}") ]]; then
echo "Branch appears to be live; checking workflow." >> $GITHUB_STEP_SUMMARY
README_VARS=$(curl -sX GET https://raw.githubusercontent.com/linuxserver/docker-code-server/${br}/readme-vars.yml)
if [[ $(yq -r '.project_deprecation_status' <<< "${README_VARS}") == "true" ]]; then
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> Branch appears to be deprecated; skipping trigger." >> $GITHUB_STEP_SUMMARY
skipped_branches="${skipped_branches}${br} "
elif [[ $(yq -r '.skip_package_check' <<< "${JENKINS_VARS}") == "true" ]]; then
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> Skipping branch ${br} due to \`skip_package_check\` being set in \`jenkins-vars.yml\`." >> $GITHUB_STEP_SUMMARY
skipped_branches="${skipped_branches}${br} "
elif grep -q "^code-server_${br}" <<< "${SKIP_PACKAGE_TRIGGER}"; then
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> Github organizational variable \`SKIP_PACKAGE_TRIGGER\` contains \`code-server_${br}\`; skipping trigger." >> $GITHUB_STEP_SUMMARY
skipped_branches="${skipped_branches}${br} "
elif [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-code-server/job/${br}/lastBuild/api/json | jq -r '.building' 2>/dev/null) == "true" ]; then
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> There already seems to be an active build on Jenkins; skipping package trigger for ${br}" >> $GITHUB_STEP_SUMMARY
skipped_branches="${skipped_branches}${br} "
else
echo "> [!NOTE]" >> $GITHUB_STEP_SUMMARY
echo "> Triggering package trigger for branch ${br}" >> $GITHUB_STEP_SUMMARY
printf "> To disable, add \`code-server_%s\` into the Github organizational variable \`SKIP_PACKAGE_TRIGGER\`.\n\n" "${br}" >> $GITHUB_STEP_SUMMARY
triggered_branches="${triggered_branches}${br} " triggered_branches="${triggered_branches}${br} "
response=$(curl -iX POST \ curl -iX POST \
https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-code-server/job/${br}/buildWithParameters?PACKAGE_CHECK=true \ -H "Authorization: token ${{ secrets.CR_PAT }}" \
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} | grep -i location | sed "s|^[L|l]ocation: \(.*\)|\1|") -H "Accept: application/vnd.github.v3+json" \
if [[ -z "${response}" ]]; then -d "{\"ref\":\"refs/heads/${br}\"}" \
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY https://api.github.com/repos/linuxserver/docker-code-server/actions/workflows/package_trigger.yml/dispatches
echo "> Jenkins build could not be triggered. Skipping branch." sleep 30
continue else
fi echo "**** Workflow doesn't exist; skipping trigger. ****"
echo "Jenkins [job queue url](${response%$'\r'})" >> $GITHUB_STEP_SUMMARY echo "Skipping branch ${br} due to no package trigger workflow present." >> $GITHUB_STEP_SUMMARY
echo "Sleeping 10 seconds until job starts" >> $GITHUB_STEP_SUMMARY
sleep 10
buildurl=$(curl -s "${response%$'\r'}api/json" | jq -r '.executable.url')
buildurl="${buildurl%$'\r'}"
echo "Jenkins job [build url](${buildurl})" >> $GITHUB_STEP_SUMMARY
echo "Attempting to change the Jenkins job description" >> $GITHUB_STEP_SUMMARY
if ! curl -ifX POST \
"${buildurl}submitDescription" \
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} \
--data-urlencode "description=GHA package trigger https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" \
--data-urlencode "Submit=Submit"; then
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> Unable to change the Jenkins job description."
fi
sleep 20
fi fi
else else
echo "**** ${br} appears to be a dev branch; skipping trigger. ****"
echo "Skipping branch ${br} due to being detected as dev branch." >> $GITHUB_STEP_SUMMARY echo "Skipping branch ${br} due to being detected as dev branch." >> $GITHUB_STEP_SUMMARY
fi fi
done done
if [[ -n "${triggered_branches}" ]] || [[ -n "${skipped_branches}" ]]; then
if [[ -n "${triggered_branches}" ]]; then
NOTIFY_BRANCHES="**Triggered:** ${triggered_branches} \n"
NOTIFY_BUILD_URL="**Build URL:** https://ci.linuxserver.io/blue/organizations/jenkins/Docker-Pipeline-Builders%2Fdocker-code-server/activity/ \n"
echo "**** Package check build(s) triggered for branch(es): ${triggered_branches} ****" echo "**** Package check build(s) triggered for branch(es): ${triggered_branches} ****"
fi
if [[ -n "${skipped_branches}" ]]; then
NOTIFY_BRANCHES="${NOTIFY_BRANCHES}**Skipped:** ${skipped_branches} \n"
fi
echo "**** Notifying Discord ****" echo "**** Notifying Discord ****"
curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 9802903, curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 9802903,
"description": "**Package Check Build(s) for code-server** \n'"${NOTIFY_BRANCHES}"''"${NOTIFY_BUILD_URL}"'"}], "description": "**Package Check Build(s) Triggered for code-server** \n**Branch(es):** '"${triggered_branches}"' \n**Build URL:** '"https://ci.linuxserver.io/blue/organizations/jenkins/Docker-Pipeline-Builders%2Fdocker-code-server/activity/"' \n"}],
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }} "username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
fi

2
.github/workflows/permissions.yml vendored Normal file → Executable file
View File

@ -5,8 +5,6 @@ on:
- '**/run' - '**/run'
- '**/finish' - '**/finish'
- '**/check' - '**/check'
- 'root/migrations/*'
jobs: jobs:
permission_check: permission_check:
uses: linuxserver/github-workflows/.github/workflows/init-svc-executable-permissions.yml@v1 uses: linuxserver/github-workflows/.github/workflows/init-svc-executable-permissions.yml@v1

View File

@ -1,6 +1,4 @@
# syntax=docker/dockerfile:1 FROM ghcr.io/linuxserver/baseimage-ubuntu:jammy
FROM ghcr.io/linuxserver/baseimage-ubuntu:noble
# set version label # set version label
ARG BUILD_DATE ARG BUILD_DATE
@ -18,9 +16,11 @@ RUN \
apt-get update && \ apt-get update && \
apt-get install -y \ apt-get install -y \
git \ git \
jq \
libatomic1 \ libatomic1 \
nano \ nano \
net-tools \ net-tools \
netcat \
sudo && \ sudo && \
echo "**** install code-server ****" && \ echo "**** install code-server ****" && \
if [ -z ${CODE_RELEASE+x} ]; then \ if [ -z ${CODE_RELEASE+x} ]; then \
@ -33,7 +33,6 @@ RUN \
"https://github.com/coder/code-server/releases/download/v${CODE_RELEASE}/code-server-${CODE_RELEASE}-linux-amd64.tar.gz" && \ "https://github.com/coder/code-server/releases/download/v${CODE_RELEASE}/code-server-${CODE_RELEASE}-linux-amd64.tar.gz" && \
tar xf /tmp/code-server.tar.gz -C \ tar xf /tmp/code-server.tar.gz -C \
/app/code-server --strip-components=1 && \ /app/code-server --strip-components=1 && \
printf "Linuxserver.io version: ${VERSION}\nBuild-date: ${BUILD_DATE}" > /build_version && \
echo "**** clean up ****" && \ echo "**** clean up ****" && \
apt-get clean && \ apt-get clean && \
rm -rf \ rm -rf \

View File

@ -1,6 +1,4 @@
# syntax=docker/dockerfile:1 FROM ghcr.io/linuxserver/baseimage-ubuntu:arm64v8-jammy
FROM ghcr.io/linuxserver/baseimage-ubuntu:arm64v8-noble
# set version label # set version label
ARG BUILD_DATE ARG BUILD_DATE
@ -18,9 +16,11 @@ RUN \
apt-get update && \ apt-get update && \
apt-get install -y \ apt-get install -y \
git \ git \
jq \
libatomic1 \ libatomic1 \
nano \ nano \
net-tools \ net-tools \
netcat \
sudo && \ sudo && \
echo "**** install code-server ****" && \ echo "**** install code-server ****" && \
if [ -z ${CODE_RELEASE+x} ]; then \ if [ -z ${CODE_RELEASE+x} ]; then \
@ -33,7 +33,6 @@ RUN \
"https://github.com/coder/code-server/releases/download/v${CODE_RELEASE}/code-server-${CODE_RELEASE}-linux-arm64.tar.gz" && \ "https://github.com/coder/code-server/releases/download/v${CODE_RELEASE}/code-server-${CODE_RELEASE}-linux-arm64.tar.gz" && \
tar xf /tmp/code-server.tar.gz -C \ tar xf /tmp/code-server.tar.gz -C \
/app/code-server --strip-components=1 && \ /app/code-server --strip-components=1 && \
printf "Linuxserver.io version: ${VERSION}\nBuild-date: ${BUILD_DATE}" > /build_version && \
echo "**** clean up ****" && \ echo "**** clean up ****" && \
apt-get clean && \ apt-get clean && \
rm -rf \ rm -rf \

715
Jenkinsfile vendored

File diff suppressed because it is too large Load Diff

0
LICENSE Normal file → Executable file
View File

185
README.md
View File

@ -1,10 +1,12 @@
<!-- DO NOT EDIT THIS FILE MANUALLY --> <!-- DO NOT EDIT THIS FILE MANUALLY -->
<!-- Please read https://github.com/linuxserver/docker-code-server/blob/master/.github/CONTRIBUTING.md --> <!-- Please read the https://github.com/linuxserver/docker-code-server/blob/master/.github/CONTRIBUTING.md -->
[![linuxserver.io](https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/linuxserver_medium.png)](https://linuxserver.io) [![linuxserver.io](https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/linuxserver_medium.png)](https://linuxserver.io)
[![Blog](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=Blog)](https://blog.linuxserver.io "all the things you can do with our containers including How-To guides, opinions and much more!") [![Blog](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=Blog)](https://blog.linuxserver.io "all the things you can do with our containers including How-To guides, opinions and much more!")
[![Discord](https://img.shields.io/discord/354974912613449730.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=Discord&logo=discord)](https://linuxserver.io/discord "realtime support / chat with the community and the team.") [![Discord](https://img.shields.io/discord/354974912613449730.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=Discord&logo=discord)](https://discord.gg/YWrKVTn "realtime support / chat with the community and the team.")
[![Discourse](https://img.shields.io/discourse/https/discourse.linuxserver.io/topics.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&logo=discourse)](https://discourse.linuxserver.io "post on our community forum.") [![Discourse](https://img.shields.io/discourse/https/discourse.linuxserver.io/topics.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&logo=discourse)](https://discourse.linuxserver.io "post on our community forum.")
[![Fleet](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=Fleet)](https://fleet.linuxserver.io "an online web interface which displays all of our maintained images.")
[![GitHub](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=GitHub&logo=github)](https://github.com/linuxserver "view the source for all of our repositories.") [![GitHub](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=GitHub&logo=github)](https://github.com/linuxserver "view the source for all of our repositories.")
[![Open Collective](https://img.shields.io/opencollective/all/linuxserver.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=Supporters&logo=open%20collective)](https://opencollective.com/linuxserver "please consider helping us by either donating or contributing to our budget") [![Open Collective](https://img.shields.io/opencollective/all/linuxserver.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=Supporters&logo=open%20collective)](https://opencollective.com/linuxserver "please consider helping us by either donating or contributing to our budget")
@ -19,14 +21,15 @@ The [LinuxServer.io](https://linuxserver.io) team brings you another container r
Find us at: Find us at:
* [Blog](https://blog.linuxserver.io) - all the things you can do with our containers including How-To guides, opinions and much more! * [Blog](https://blog.linuxserver.io) - all the things you can do with our containers including How-To guides, opinions and much more!
* [Discord](https://linuxserver.io/discord) - realtime support / chat with the community and the team. * [Discord](https://discord.gg/YWrKVTn) - realtime support / chat with the community and the team.
* [Discourse](https://discourse.linuxserver.io) - post on our community forum. * [Discourse](https://discourse.linuxserver.io) - post on our community forum.
* [Fleet](https://fleet.linuxserver.io) - an online web interface which displays all of our maintained images.
* [GitHub](https://github.com/linuxserver) - view the source for all of our repositories. * [GitHub](https://github.com/linuxserver) - view the source for all of our repositories.
* [Open Collective](https://opencollective.com/linuxserver) - please consider helping us by either donating or contributing to our budget * [Open Collective](https://opencollective.com/linuxserver) - please consider helping us by either donating or contributing to our budget
# [linuxserver/code-server](https://github.com/linuxserver/docker-code-server) # [linuxserver/code-server](https://github.com/linuxserver/docker-code-server)
[![Scarf.io pulls](https://scarf.sh/installs-badge/linuxserver-ci/linuxserver%2Fcode-server?color=94398d&label-color=555555&logo-color=ffffff&style=for-the-badge&package-type=docker)](https://scarf.sh) [![Scarf.io pulls](https://scarf.sh/installs-badge/linuxserver-ci/linuxserver%2Fcode-server?color=94398d&label-color=555555&logo-color=ffffff&style=for-the-badge&package-type=docker)](https://scarf.sh/gateway/linuxserver-ci/docker/linuxserver%2Fcode-server)
[![GitHub Stars](https://img.shields.io/github/stars/linuxserver/docker-code-server.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&logo=github)](https://github.com/linuxserver/docker-code-server) [![GitHub Stars](https://img.shields.io/github/stars/linuxserver/docker-code-server.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&logo=github)](https://github.com/linuxserver/docker-code-server)
[![GitHub Release](https://img.shields.io/github/release/linuxserver/docker-code-server.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&logo=github)](https://github.com/linuxserver/docker-code-server/releases) [![GitHub Release](https://img.shields.io/github/release/linuxserver/docker-code-server.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&logo=github)](https://github.com/linuxserver/docker-code-server/releases)
[![GitHub Package Repository](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=GitHub%20Package&logo=github)](https://github.com/linuxserver/docker-code-server/packages) [![GitHub Package Repository](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=GitHub%20Package&logo=github)](https://github.com/linuxserver/docker-code-server/packages)
@ -49,7 +52,7 @@ Find us at:
## Supported Architectures ## Supported Architectures
We utilise the docker manifest for multi-platform awareness. More information is available from docker [here](https://distribution.github.io/distribution/spec/manifest-v2-2/#manifest-list) and our announcement [here](https://blog.linuxserver.io/2019/02/21/the-lsio-pipeline-project/). We utilise the docker manifest for multi-platform awareness. More information is available from docker [here](https://github.com/docker/distribution/blob/master/docs/spec/manifest-v2-2.md#manifest-list) and our announcement [here](https://blog.linuxserver.io/2019/02/21/the-lsio-pipeline-project/).
Simply pulling `lscr.io/linuxserver/code-server:latest` should retrieve the correct image for your arch, but you can also pull specific arch images via tags. Simply pulling `lscr.io/linuxserver/code-server:latest` should retrieve the correct image for your arch, but you can also pull specific arch images via tags.
@ -59,6 +62,7 @@ The architectures supported by this image are:
| :----: | :----: | ---- | | :----: | :----: | ---- |
| x86-64 | ✅ | amd64-\<version tag\> | | x86-64 | ✅ | amd64-\<version tag\> |
| arm64 | ✅ | arm64v8-\<version tag\> | | arm64 | ✅ | arm64v8-\<version tag\> |
| armhf | ❌ | |
## Application Setup ## Application Setup
@ -75,34 +79,15 @@ git config --global user.email "email address"
How to create the [hashed password](https://github.com/cdr/code-server/blob/master/docs/FAQ.md#can-i-store-my-password-hashed). How to create the [hashed password](https://github.com/cdr/code-server/blob/master/docs/FAQ.md#can-i-store-my-password-hashed).
## Read-Only Operation
This image can be run with a read-only container filesystem. For details please [read the docs](https://docs.linuxserver.io/misc/read-only/).
### Caveats
* `/tmp` must be mounted to tmpfs
* `sudo` will not be available
## Non-Root Operation
This image can be run with a non-root user. For details please [read the docs](https://docs.linuxserver.io/misc/non-root/).
### Caveats
* `sudo` will not be available
## Usage ## Usage
To help you get started creating a container from this image you can either use docker-compose or the docker cli. Here are some example snippets to help you get started creating a container.
>[!NOTE]
>Unless a parameter is flaged as 'optional', it is *mandatory* and a value must be provided.
### docker-compose (recommended, [click here for more info](https://docs.linuxserver.io/general/docker-compose)) ### docker-compose (recommended, [click here for more info](https://docs.linuxserver.io/general/docker-compose))
```yaml ```yaml
--- ---
version: "2.1"
services: services:
code-server: code-server:
image: lscr.io/linuxserver/code-server:latest image: lscr.io/linuxserver/code-server:latest
@ -117,9 +102,8 @@ services:
- SUDO_PASSWORD_HASH= #optional - SUDO_PASSWORD_HASH= #optional
- PROXY_DOMAIN=code-server.my.domain #optional - PROXY_DOMAIN=code-server.my.domain #optional
- DEFAULT_WORKSPACE=/config/workspace #optional - DEFAULT_WORKSPACE=/config/workspace #optional
- PWA_APPNAME=code-server #optional
volumes: volumes:
- /path/to/code-server/config:/config - /path/to/appdata/config:/config
ports: ports:
- 8443:8443 - 8443:8443
restart: unless-stopped restart: unless-stopped
@ -139,20 +123,20 @@ docker run -d \
-e SUDO_PASSWORD_HASH= `#optional` \ -e SUDO_PASSWORD_HASH= `#optional` \
-e PROXY_DOMAIN=code-server.my.domain `#optional` \ -e PROXY_DOMAIN=code-server.my.domain `#optional` \
-e DEFAULT_WORKSPACE=/config/workspace `#optional` \ -e DEFAULT_WORKSPACE=/config/workspace `#optional` \
-e PWA_APPNAME=code-server `#optional` \
-p 8443:8443 \ -p 8443:8443 \
-v /path/to/code-server/config:/config \ -v /path/to/appdata/config:/config \
--restart unless-stopped \ --restart unless-stopped \
lscr.io/linuxserver/code-server:latest lscr.io/linuxserver/code-server:latest
``` ```
## Parameters ## Parameters
Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate `<external>:<internal>` respectively. For example, `-p 8080:80` would expose port `80` from inside the container to be accessible from the host's IP on port `8080` outside the container. Container images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate `<external>:<internal>` respectively. For example, `-p 8080:80` would expose port `80` from inside the container to be accessible from the host's IP on port `8080` outside the container.
| Parameter | Function | | Parameter | Function |
| :----: | --- | | :----: | --- |
| `-p 8443:8443` | web gui | | `-p 8443` | web gui |
| `-e PUID=1000` | for UserID - see below for explanation | | `-e PUID=1000` | for UserID - see below for explanation |
| `-e PGID=1000` | for GroupID - see below for explanation | | `-e PGID=1000` | for GroupID - see below for explanation |
| `-e TZ=Etc/UTC` | specify a timezone to use, see this [list](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List). | | `-e TZ=Etc/UTC` | specify a timezone to use, see this [list](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List). |
@ -160,12 +144,9 @@ Containers are configured using parameters passed at runtime (such as those abov
| `-e HASHED_PASSWORD=` | Optional web gui password, overrides `PASSWORD`, instructions on how to create it is below. | | `-e HASHED_PASSWORD=` | Optional web gui password, overrides `PASSWORD`, instructions on how to create it is below. |
| `-e SUDO_PASSWORD=password` | If this optional variable is set, user will have sudo access in the code-server terminal with the specified password. | | `-e SUDO_PASSWORD=password` | If this optional variable is set, user will have sudo access in the code-server terminal with the specified password. |
| `-e SUDO_PASSWORD_HASH=` | Optionally set sudo password via hash (takes priority over `SUDO_PASSWORD` var). Format is `$type$salt$hashed`. | | `-e SUDO_PASSWORD_HASH=` | Optionally set sudo password via hash (takes priority over `SUDO_PASSWORD` var). Format is `$type$salt$hashed`. |
| `-e PROXY_DOMAIN=code-server.my.domain` | If this optional variable is set, this domain will be proxied for subdomain proxying. See [Documentation](https://github.com/coder/code-server/blob/main/docs/guide.md#using-a-subdomain) | | `-e PROXY_DOMAIN=code-server.my.domain` | If this optional variable is set, this domain will be proxied for subdomain proxying. See [Documentation](https://github.com/cdr/code-server/blob/master/docs/FAQ.md#sub-domains) |
| `-e DEFAULT_WORKSPACE=/config/workspace` | If this optional variable is set, code-server will open this directory by default | | `-e DEFAULT_WORKSPACE=/config/workspace` | If this optional variable is set, code-server will open this directory by default |
| `-e PWA_APPNAME=code-server` | If this optional variable is set, the PWA app will the specified name. |
| `-v /config` | Contains all relevant configuration files. | | `-v /config` | Contains all relevant configuration files. |
| `--read-only=true` | Run container with a read-only filesystem. Please [read the docs](https://docs.linuxserver.io/misc/read-only/). |
| `--user=1000:1000` | Run container with a non-root user. Please [read the docs](https://docs.linuxserver.io/misc/non-root/). |
## Environment variables from files (Docker secrets) ## Environment variables from files (Docker secrets)
@ -174,10 +155,10 @@ You can set any environment variable from a file by using a special prepend `FIL
As an example: As an example:
```bash ```bash
-e FILE__MYVAR=/run/secrets/mysecretvariable -e FILE__PASSWORD=/run/secrets/mysecretpassword
``` ```
Will set the environment variable `MYVAR` based on the contents of the `/run/secrets/mysecretvariable` file. Will set the environment variable `PASSWORD` based on the contents of the `/run/secrets/mysecretpassword` file.
## Umask for running applications ## Umask for running applications
@ -186,20 +167,15 @@ Keep in mind umask is not chmod it subtracts from permissions based on it's valu
## User / Group Identifiers ## User / Group Identifiers
When using volumes (`-v` flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user `PUID` and group `PGID`. When using volumes (`-v` flags) permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user `PUID` and group `PGID`.
Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.
In this instance `PUID=1000` and `PGID=1000`, to find yours use `id your_user` as below: In this instance `PUID=1000` and `PGID=1000`, to find yours use `id user` as below:
```bash ```bash
id your_user $ id username
``` uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
Example output:
```text
uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)
``` ```
## Docker Mods ## Docker Mods
@ -210,101 +186,53 @@ We publish various [Docker Mods](https://github.com/linuxserver/docker-mods) to
## Support Info ## Support Info
* Shell access whilst the container is running: * Shell access whilst the container is running: `docker exec -it code-server /bin/bash`
* To monitor the logs of the container in realtime: `docker logs -f code-server`
```bash * container version number
docker exec -it code-server /bin/bash * `docker inspect -f '{{ index .Config.Labels "build_version" }}' code-server`
``` * image version number
* `docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/code-server:latest`
* To monitor the logs of the container in realtime:
```bash
docker logs -f code-server
```
* Container version number:
```bash
docker inspect -f '{{ index .Config.Labels "build_version" }}' code-server
```
* Image version number:
```bash
docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/code-server:latest
```
## Updating Info ## Updating Info
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the [Application Setup](#application-setup) section above to see if it is recommended for the image. Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (ie. nextcloud, plex), we do not recommend or support updating apps inside the container. Please consult the [Application Setup](#application-setup) section above to see if it is recommended for the image.
Below are the instructions for updating containers: Below are the instructions for updating containers:
### Via Docker Compose ### Via Docker Compose
* Update images: * Update all images: `docker-compose pull`
* All images: * or update a single image: `docker-compose pull code-server`
* Let compose update all containers as necessary: `docker-compose up -d`
```bash * or update a single container: `docker-compose up -d code-server`
docker-compose pull * You can also remove the old dangling images: `docker image prune`
```
* Single image:
```bash
docker-compose pull code-server
```
* Update containers:
* All containers:
```bash
docker-compose up -d
```
* Single container:
```bash
docker-compose up -d code-server
```
* You can also remove the old dangling images:
```bash
docker image prune
```
### Via Docker Run ### Via Docker Run
* Update the image: * Update the image: `docker pull lscr.io/linuxserver/code-server:latest`
* Stop the running container: `docker stop code-server`
```bash * Delete the container: `docker rm code-server`
docker pull lscr.io/linuxserver/code-server:latest
```
* Stop the running container:
```bash
docker stop code-server
```
* Delete the container:
```bash
docker rm code-server
```
* Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your `/config` folder and settings will be preserved) * Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your `/config` folder and settings will be preserved)
* You can also remove the old dangling images: * You can also remove the old dangling images: `docker image prune`
### Via Watchtower auto-updater (only use if you don't remember the original parameters)
* Pull the latest image at its tag and replace it with the same env variables in one run:
```bash ```bash
docker image prune docker run --rm \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower \
--run-once code-server
``` ```
* You can also remove the old dangling images: `docker image prune`
**Note:** We do not endorse the use of Watchtower as a solution to automated updates of existing Docker containers. In fact we generally discourage automated updates. However, this is a useful tool for one-time manual updates of containers where you have forgotten the original parameters. In the long term, we highly recommend using [Docker Compose](https://docs.linuxserver.io/general/docker-compose).
### Image Update Notifications - Diun (Docker Image Update Notifier) ### Image Update Notifications - Diun (Docker Image Update Notifier)
>[!TIP] * We recommend [Diun](https://crazymax.dev/diun/) for update notifications. Other tools that automatically update containers unattended are not recommended or supported.
>We recommend [Diun](https://crazymax.dev/diun/) for update notifications. Other tools that automatically update containers unattended are not recommended or supported.
## Building locally ## Building locally
@ -319,21 +247,16 @@ docker build \
-t lscr.io/linuxserver/code-server:latest . -t lscr.io/linuxserver/code-server:latest .
``` ```
The ARM variants can be built on x86_64 hardware and vice versa using `lscr.io/linuxserver/qemu-static` The ARM variants can be built on x86_64 hardware using `multiarch/qemu-user-static`
```bash ```bash
docker run --rm --privileged lscr.io/linuxserver/qemu-static --reset docker run --rm --privileged multiarch/qemu-user-static:register --reset
``` ```
Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64`. Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64`.
## Versions ## Versions
* **10.08.25:** - Let server listen on both ipv4 and ipv6.
* **03.06.25:** - Allow setting PWA name using env var `PWA_APPNAME`.
* **13.10.24:** - Only chown config folder when change to ownership or new install is detected.
* **09.10.24:** - Manage permissions in /config/.ssh according to file type
* **19.08.24:** - Rebase to Ubuntu Noble.
* **01.07.23:** - Deprecate armhf. As announced [here](https://www.linuxserver.io/blog/a-farewell-to-arm-hf) * **01.07.23:** - Deprecate armhf. As announced [here](https://www.linuxserver.io/blog/a-farewell-to-arm-hf)
* **05.10.22:** - Install recommended deps to maintain parity with the older images. * **05.10.22:** - Install recommended deps to maintain parity with the older images.
* **29.09.22:** - Rebase to jammy, switch to s6v3. Fix chown logic to skip `/config/workspace` contents. * **29.09.22:** - Rebase to jammy, switch to s6v3. Fix chown logic to skip `/config/workspace` contents.

View File

@ -22,6 +22,6 @@ repo_vars:
- CI_PORT='8443' - CI_PORT='8443'
- CI_SSL='false' - CI_SSL='false'
- CI_DELAY='120' - CI_DELAY='120'
- CI_DOCKERENV='' - CI_DOCKERENV='TZ=US/Pacific'
- CI_AUTH='' - CI_AUTH='user:password'
- CI_WEBPATH='' - CI_WEBPATH=''

View File

@ -1,471 +1,580 @@
NAME VERSION TYPE NAME VERSION TYPE
@babel/runtime 7.27.6 npm 1to2 1.0.0 npm
@coder/logger 3.0.1 npm @babel/runtime 7.20.7 npm
@epic-web/invariant 1.0.0 npm @coder/logger 3.0.0 npm
@microsoft/1ds-core-js 3.2.13 npm @google-cloud/common 3.10.0 npm
@microsoft/1ds-post-js 3.2.13 npm @google-cloud/logging 9.9.0 npm
@microsoft/applicationinsights-core-js 2.8.15 npm @google-cloud/paginator 3.0.7 npm
@microsoft/applicationinsights-shims 2.0.2 npm @google-cloud/projectify 2.1.1 npm
@microsoft/dynamicproto-js 1.1.9 npm @google-cloud/promisify 2.0.4 npm
@grpc/grpc-js 1.6.12 npm
@grpc/proto-loader 0.6.13 npm
@grpc/proto-loader 0.7.7 npm
@mapbox/node-pre-gyp 1.0.10 npm
@microsoft/1ds-core-js 3.2.3 npm
@microsoft/1ds-post-js 3.2.3 npm
@microsoft/applicationinsights-core-js 2.8.4 npm
@microsoft/applicationinsights-shims 2.0.1 npm
@microsoft/dynamicproto-js 1.1.6 npm
@parcel/watcher 2.1.0 npm
@phc/format 1.0.0 npm @phc/format 1.0.0 npm
@tootallnate/once 3.0.0 npm @protobufjs/aspromise 1.1.2 npm
@tootallnate/quickjs-emscripten 0.23.0 npm @protobufjs/base64 1.1.2 npm
@vscode/deviceid 0.1.1 npm @protobufjs/codegen 2.0.4 npm
@vscode/iconv-lite-umd 0.7.1 npm @protobufjs/eventemitter 1.1.0 npm
@vscode/proxy-agent 0.36.0 npm @protobufjs/fetch 1.1.0 npm
@vscode/ripgrep 1.15.14 npm @protobufjs/float 1.0.2 npm
@vscode/spdlog 0.15.4 npm @protobufjs/inquire 1.1.0 npm
@vscode/tree-sitter-wasm 0.3.0 npm @protobufjs/path 1.1.2 npm
@protobufjs/pool 1.1.0 npm
@protobufjs/utf8 1.1.0 npm
@tootallnate/once 1.1.2 npm
@tootallnate/once 2.0.0 npm
@types/long 4.0.2 npm
@types/node 16.18.18 npm
@vscode/iconv-lite-umd 0.7.0 npm
@vscode/proxy-agent 0.13.2 npm
@vscode/ripgrep 1.15.3 npm
@vscode/spdlog 0.13.10 npm
@vscode/vscode-languagedetection 1.0.21 npm @vscode/vscode-languagedetection 1.0.21 npm
@vscode/watcher 2.5.1-vscode npm abbrev 1.1.1 npm
@vscode/windows-process-tree 0.6.2 npm abort-controller 3.0.0 npm
@vscode/windows-registry 1.1.2 npm accepts 1.3.7 npm
@xterm/addon-clipboard 0.3.0-beta.91 npm acorn 8.8.2 npm
@xterm/addon-image 0.10.0-beta.91 npm acorn-walk 8.2.0 npm
@xterm/addon-ligatures 0.11.0-beta.91 npm adduser 3.118ubuntu5 deb
@xterm/addon-progress 0.3.0-beta.91 npm agent-base 4.2.0 npm
@xterm/addon-search 0.17.0-beta.91 npm agent-base 4.3.0 npm
@xterm/addon-serialize 0.15.0-beta.91 npm agent-base 6.0.2 npm
@xterm/addon-unicode11 0.10.0-beta.91 npm agent-base 7.1.0 npm
@xterm/addon-webgl 0.20.0-beta.101 npm ansi-regex 2.1.1 npm
@xterm/headless 6.1.0-beta.91 npm ansi-regex 5.0.1 npm
@xterm/xterm 6.1.0-beta.108 npm ansi-styles 4.3.0 npm
ConPTY Interface Library 1.23.251008001 binary (+1 duplicate) aproba 1.2.0 npm
Console Window and PTY Host (Open Source) 1.23.251008001 binary (+1 duplicate) aproba 2.0.0 npm
accepts 2.0.0 npm apt 2.4.9 deb
adduser 3.137ubuntu1 deb apt-utils 2.4.9 deb
agent-base 7.1.1 npm are-we-there-yet 1.1.7 npm
agent-base 7.1.3 npm (+3 duplicates) are-we-there-yet 2.0.0 npm
apt 2.8.3 deb argon2 0.30.3 npm
apt-utils 2.8.3 deb
argon2 0.44.0 npm
argparse 2.0.1 npm argparse 2.0.1 npm
array-flatten 2.1.1 npm
arrify 2.0.1 npm
ast-types 0.13.4 npm ast-types 0.13.4 npm
base-files 13ubuntu10.3 deb balanced-match 1.0.2 npm
base-passwd 3.6.3build1 deb base-files 12ubuntu4.3 deb
base-passwd 3.5.52build1 deb
base64-js 1.5.1 npm base64-js 1.5.1 npm
bash 5.2.21-2ubuntu4 deb bash 5.1-6ubuntu1 deb
basic-ftp 5.0.5 npm basic-ftp 5.0.3 npm
bat 1.0.0 npm bat 1.0.0 npm
beep-boop 1.2.3 npm beep-boop 1.2.3 npm
bignumber.js 9.1.1 npm
bindings 1.5.0 npm bindings 1.5.0 npm
bl 4.1.0 npm bl 4.1.0 npm
body-parser 2.2.2 npm body-parser 1.19.0 npm
braces 3.0.3 npm brace-expansion 1.1.11 npm
bsdutils 1:2.39.3-9ubuntu6.4 deb braces 3.0.2 npm
bsdutils 1:2.37.2-4ubuntu3 deb
buffer 5.7.1 npm buffer 5.7.1 npm
buffer-alloc 1.2.0 npm buffer-alloc 1.2.0 npm
buffer-alloc-unsafe 1.1.0 npm buffer-alloc-unsafe 1.1.0 npm
buffer-crc32 0.2.13 npm buffer-crc32 0.2.13 npm
buffer-equal-constant-time 1.0.1 npm
buffer-fill 1.0.0 npm buffer-fill 1.0.0 npm
builtin-notebook-renderers 1.0.0 npm builtin-notebook-renderers 1.0.0 npm
bytes 3.1.2 npm bytes 3.0.0 npm
ca-certificates 20240203 deb bytes 3.1.0 npm
call-bind-apply-helpers 1.0.2 npm ca-certificates 20230311ubuntu0.22.04.1 deb
call-bound 1.0.4 npm call-bind 1.0.2 npm
catatonit 0.1.7-1 deb
charenc 0.0.2 npm charenc 0.0.2 npm
chownr 1.1.4 npm chownr 1.1.4 npm
chownr 2.0.0 npm
cliui 7.0.4 npm
cliui 8.0.1 npm
clojure 1.0.0 npm clojure 1.0.0 npm
code-server 1.108.2 npm code-point-at 1.1.0 npm
code-server 4.108.2 npm code-server 4.14.1 npm
coffeescript 1.0.0 npm coffeescript 1.0.0 npm
commander 8.3.0 npm color-convert 2.0.1 npm
color-name 1.1.4 npm
color-support 1.1.3 npm
compressible 2.0.18 npm compressible 2.0.18 npm
compression 1.8.1 npm compression 1.7.4 npm
concat-map 0.0.1 npm
configuration-editing 1.0.0 npm configuration-editing 1.0.0 npm
content-disposition 1.0.0 npm console-control-strings 1.1.0 npm
content-type 1.0.5 npm content-disposition 0.5.3 npm
cookie 0.7.2 npm (+1 duplicate) content-type 1.0.4 npm
cookie-parser 1.4.7 npm cookie 0.4.0 npm
cookie-parser 1.4.5 npm
cookie-signature 1.0.6 npm cookie-signature 1.0.6 npm
cookie-signature 1.2.2 npm core-util-is 1.0.2 npm
coreutils 9.4-3ubuntu6.1 deb coreutils 8.32-4.1ubuntu1 deb
cpp 1.0.0 npm cpp 1.0.0 npm
cron 3.0pl1-184ubuntu2 deb
cron-daemon-common 3.0pl1-184ubuntu2 deb
cross-env 10.1.0 npm
cross-spawn 7.0.6 npm
crypt 0.0.2 npm crypt 0.0.2 npm
csharp 1.0.0 npm csharp 1.0.0 npm
css 1.0.0 npm css 1.0.0 npm
css-language-features 1.0.0 npm css-language-features 1.0.0 npm
curl 8.5.0-2ubuntu10.6 deb curl 7.81.0-1ubuntu1.10 deb
dart 1.0.0 npm dart 1.0.0 npm
dash 0.5.12-6ubuntu5 deb dash 0.5.11+git20210903+057cd650a4ed-3build1 deb
data-uri-to-buffer 6.0.2 npm data-uri-to-buffer 5.0.1 npm
debconf 1.5.86ubuntu1 deb debconf 1.5.79ubuntu1 deb
debianutils 5.17build1 deb debianutils 5.5-1ubuntu2 deb
debug 2.6.9 npm debug 2.6.9 npm
debug 3.1.0 npm
debug 4.1.1 npm
debug 4.3.1 npm
debug 4.3.4 npm debug 4.3.4 npm
debug 4.4.3 npm
debug-auto-launch 1.0.0 npm debug-auto-launch 1.0.0 npm
debug-server-ready 1.0.0 npm debug-server-ready 1.0.0 npm
decompress-response 6.0.0 npm decompress-response 6.0.0 npm
deep-extend 0.6.0 npm deep-extend 0.6.0 npm
degenerator 5.0.1 npm deep-is 0.1.4 npm
depd 2.0.0 npm degenerator 4.0.2 npm
detect-libc 2.0.4 npm delegates 1.0.0 npm
depd 1.1.2 npm
destroy 1.0.4 npm
detect-libc 2.0.1 npm
diff 1.0.0 npm diff 1.0.0 npm
diffutils 1:3.10-1build1 deb diffutils 1:3.8-0ubuntu2 deb
dirmngr 2.4.4-2ubuntu17.4 deb dirmngr 2.2.27-3ubuntu2.1 deb
docker 1.0.0 npm docker 1.0.0 npm
dotenv 1.0.0 npm dot-prop 6.0.1 npm
dpkg 1.22.6ubuntu6.5 deb dpkg 1.21.1ubuntu2.2 deb
dunder-proto 1.0.1 npm duplexify 4.1.2 npm
e2fsprogs 1.47.0-2.4~exp1ubuntu4.1 deb e2fsprogs 1.46.5-2ubuntu1.1 deb
ecdsa-sig-formatter 1.0.11 npm
ee-first 1.1.1 npm ee-first 1.1.1 npm
emmet 1.0.0 npm emmet 1.0.0 npm
encodeurl 2.0.0 npm emoji-regex 8.0.0 npm
encodeurl 1.0.2 npm
end-of-stream 1.4.4 npm end-of-stream 1.4.4 npm
ent 2.2.0 npm
env-paths 2.2.1 npm env-paths 2.2.1 npm
es-define-property 1.0.1 npm es6-promise 4.2.4 npm
es-errors 1.3.0 npm es6-promisify 5.0.0 npm
es-object-atoms 1.1.1 npm es6-promisify 6.1.1 npm
es6-promisify 7.0.0 npm escalade 3.1.1 npm
escape-html 1.0.3 npm escape-html 1.0.3 npm
escodegen 2.1.0 npm escodegen 1.14.3 npm
esprima 4.0.1 npm esprima 4.0.1 npm
estraverse 5.3.0 npm estraverse 4.3.0 npm
esutils 2.0.3 npm esutils 2.0.3 npm
etag 1.8.1 npm etag 1.8.1 npm
event-target-shim 5.0.1 npm
eventemitter3 4.0.7 npm eventemitter3 4.0.7 npm
eventid 2.0.1 npm
expand-template 2.0.3 npm expand-template 2.0.3 npm
express 5.2.0 npm express 5.0.0-alpha.8 npm
extend 3.0.2 npm
extension-editing 1.0.0 npm extension-editing 1.0.0 npm
fast-levenshtein 2.0.6 npm
fast-text-encoding 1.0.6 npm
fd-slicer 1.1.0 npm fd-slicer 1.1.0 npm
file-uri-to-path 1.0.0 npm file-uri-to-path 1.0.0 npm
fill-range 7.1.1 npm fill-range 7.0.1 npm
finalhandler 2.1.0 npm finalhandler 1.1.2 npm
findutils 4.9.0-5build1 deb findutils 4.8.0-1ubuntu3 deb
follow-redirects 1.15.9 npm follow-redirects 1.14.8 npm
forwarded 0.2.0 npm forwarded 0.1.2 npm
fresh 2.0.0 npm fresh 0.5.2 npm
fs-constants 1.0.0 npm fs-constants 1.0.0 npm
fs-extra 11.2.0 npm fs-extra 8.1.0 npm
fs-minipass 2.1.0 npm
fs.realpath 1.0.0 npm
fsharp 1.0.0 npm fsharp 1.0.0 npm
function-bind 1.1.2 npm function-bind 1.1.1 npm
gcc-14-base 14.2.0-4ubuntu2~24.04 deb gauge 2.7.4 npm
get-intrinsic 1.3.0 npm gauge 3.0.2 npm
get-proto 1.0.1 npm gaxios 4.3.3 npm
get-uri 6.0.4 npm gcc-12-base 12.1.0-2ubuntu1~22.04 deb
gcp-metadata 4.3.1 npm
get-caller-file 2.0.5 npm
get-intrinsic 1.1.1 npm
get-uri 6.0.1 npm
git 1.0.0 npm git 1.0.0 npm
git 1:2.43.0-1ubuntu7.3 deb git 1:2.34.1-1ubuntu1.9 deb
git-base 1.0.0 npm git-base 1.0.0 npm
git-man 1:2.43.0-1ubuntu7.3 deb git-man 1:2.34.1-1ubuntu1.9 deb
github 0.0.1 npm github 0.0.1 npm
github-authentication 0.0.2 npm github-authentication 0.0.2 npm
github-from-package 0.0.0 npm github-from-package 0.0.0 npm
gnupg 2.4.4-2ubuntu17.4 deb glob 7.2.3 npm
gnupg-l10n 2.4.4-2ubuntu17.4 deb gnupg 2.2.27-3ubuntu2.1 deb
gnupg-utils 2.4.4-2ubuntu17.4 deb gnupg-l10n 2.2.27-3ubuntu2.1 deb
gnupg-utils 2.2.27-3ubuntu2.1 deb
go 1.0.0 npm go 1.0.0 npm
gopd 1.2.0 npm google-auth-library 7.14.1 npm
gpg 2.4.4-2ubuntu17.4 deb google-gax 2.30.5 npm
gpg-agent 2.4.4-2ubuntu17.4 deb google-p12-pem 3.1.4 npm
gpg-wks-client 2.4.4-2ubuntu17.4 deb gpg 2.2.27-3ubuntu2.1 deb
gpgconf 2.4.4-2ubuntu17.4 deb gpg-agent 2.2.27-3ubuntu2.1 deb
gpgsm 2.4.4-2ubuntu17.4 deb gpg-wks-client 2.2.27-3ubuntu2.1 deb
gpgv 2.4.4-2ubuntu17.4 deb gpg-wks-server 2.2.27-3ubuntu2.1 deb
graceful-fs 4.2.11 npm gpgconf 2.2.27-3ubuntu2.1 deb
grep 3.11-4build1 deb gpgsm 2.2.27-3ubuntu2.1 deb
gpgv 2.2.27-3ubuntu2.1 deb
graceful-fs 4.2.8 npm
grep 3.7-1build1 deb
groovy 1.0.0 npm groovy 1.0.0 npm
grunt 1.0.0 npm grunt 1.0.0 npm
gtoken 5.3.2 npm
gulp 1.0.0 npm gulp 1.0.0 npm
gzip 1.12-1ubuntu3.1 deb gzip 1.10-4ubuntu4.1 deb
handlebars 1.0.0 npm handlebars 1.0.0 npm
has-symbols 1.1.0 npm has 1.0.3 npm
hasown 2.0.2 npm has-symbols 1.0.2 npm
has-unicode 2.0.1 npm
hlsl 1.0.0 npm hlsl 1.0.0 npm
hostname 3.23+nmu2ubuntu2 deb hostname 3.23ubuntu2 deb
html 1.0.0 npm html 1.0.0 npm
html-language-features 1.0.0 npm html-language-features 1.0.0 npm
http-errors 2.0.1 npm http-errors 1.7.2 npm
http-errors 1.7.3 npm
http-proxy 1.18.1 npm http-proxy 1.18.1 npm
http-proxy-agent 2.1.0 npm
http-proxy-agent 4.0.1 npm
http-proxy-agent 5.0.0 npm
http-proxy-agent 7.0.0 npm http-proxy-agent 7.0.0 npm
http-proxy-agent 7.0.2 npm
httpolyglot 0.1.2 npm httpolyglot 0.1.2 npm
https-proxy-agent 7.0.2 npm https-proxy-agent 2.2.4 npm
https-proxy-agent 7.0.6 npm (+1 duplicate) https-proxy-agent 5.0.0 npm
i18next 25.3.0 npm https-proxy-agent 5.0.1 npm
iconv-lite 0.7.2 npm https-proxy-agent 7.0.0 npm
i18next 22.5.1 npm
iconv-lite 0.4.24 npm
ieee754 1.2.1 npm ieee754 1.2.1 npm
inherits 2.0.4 npm (+1 duplicate) inflight 1.0.6 npm
inherits 2.0.3 npm
inherits 2.0.4 npm
ini 1.0.0 npm ini 1.0.0 npm
ini 1.3.8 npm ini 1.3.8 npm
init-system-helpers 1.66ubuntu1 deb init-system-helpers 1.62 deb
ip-address 9.0.5 npm (+1 duplicate) ip 1.1.5 npm
ip 2.0.0 npm
ipaddr.js 1.9.1 npm ipaddr.js 1.9.1 npm
ipynb 1.0.0 npm ipynb 1.0.0 npm
is-buffer 1.1.6 npm is-buffer 1.1.6 npm
is-extglob 2.1.1 npm is-extglob 2.1.1 npm
is-fullwidth-code-point 1.0.0 npm
is-fullwidth-code-point 3.0.0 npm
is-glob 4.0.3 npm is-glob 4.0.3 npm
is-number 7.0.0 npm is-number 7.0.0 npm
is-promise 4.0.0 npm is-obj 2.0.0 npm
is-stream 2.0.1 npm
is-stream-ended 0.1.4 npm
isarray 1.0.0 npm
isexe 2.0.0 npm isexe 2.0.0 npm
jake 1.0.0 npm jake 1.0.0 npm
java 1.0.0 npm java 1.0.0 npm
javascript 1.0.0 npm javascript 1.0.0 npm
jq 1.7.1-3ubuntu0.24.04.1 deb jq 1.6-2.1ubuntu3 deb
js-base64 3.7.7 npm js-debug 1.78.0 npm
js-debug 1.105.0 npm js-debug-companion 1.0.18 npm
js-debug-companion 1.1.3 npm js-yaml 4.1.0 npm
js-yaml 4.1.1 npm jschardet 3.0.0 npm
jsbn 1.1.0 npm (+1 duplicate)
jschardet 3.1.4 npm
json 1.0.0 npm json 1.0.0 npm
json-bigint 1.0.0 npm
json-language-features 1.0.0 npm json-language-features 1.0.0 npm
jsonfile 6.1.0 npm jsonfile 4.0.0 npm
julia 1.0.0 npm julia 1.0.0 npm
just-performance 4.3.0 npm just-performance 4.3.0 npm
katex 0.16.22 npm jwa 2.0.0 npm
kerberos 2.1.1 npm jws 4.0.0 npm
keyboxd 2.4.4-2ubuntu17.4 deb keytar 7.9.0 npm
krb5-locales 1.20.1-6ubuntu2.6 deb
latex 1.0.0 npm latex 1.0.0 npm
less 1.0.0 npm less 1.0.0 npm
less 590-2ubuntu2.1 deb less 590-1ubuntu0.22.04.1 deb
libacl1 2.3.2-1build1.1 deb levn 0.3.0 npm
libapparmor1 4.0.1really4.0.1-0ubuntu0.24.04.5 deb libacl1 2.3.1-1 deb
libapt-pkg6.0t64 2.8.3 deb libapt-pkg6.0 2.4.9 deb
libassuan0 2.5.6-1build1 deb libassuan0 2.5.5-1build1 deb
libatomic1 14.2.0-4ubuntu2~24.04 deb libatomic1 12.1.0-2ubuntu1~22.04 deb
libattr1 1:2.5.2-1build1.1 deb libattr1 1:2.5.1-1build1 deb
libaudit-common 1:3.1.2-2.1build1.1 deb libaudit-common 1:3.0.7-1build1 deb
libaudit1 1:3.1.2-2.1build1.1 deb libaudit1 1:3.0.7-1build1 deb
libblkid1 2.39.3-9ubuntu6.4 deb libblkid1 2.37.2-4ubuntu3 deb
libbrotli1 1.1.0-2build2 deb libbrotli1 1.0.9-2build6 deb
libbsd0 0.12.1-1build1.1 deb libbsd0 0.11.5-1 deb
libbz2-1.0 1.0.8-5.1build0.1 deb libbz2-1.0 1.0.8-5build1 deb
libc-bin 2.39-0ubuntu8.6 deb libc-bin 2.35-0ubuntu3.1 deb
libc6 2.39-0ubuntu8.6 deb libc6 2.35-0ubuntu3.1 deb
libcap-ng0 0.8.4-2build2 deb libcap-ng0 0.7.9-2.2build3 deb
libcap2 1:2.66-5ubuntu2.2 deb libcap2 1:2.44-1ubuntu0.22.04.1 deb
libcbor0.10 0.10.2-1.2ubuntu2 deb libcbor0.8 0.8.0-2ubuntu1 deb
libcom-err2 1.47.0-2.4~exp1ubuntu4.1 deb libcom-err2 1.46.5-2ubuntu1.1 deb
libcrypt1 1:4.4.36-4build1 deb libcrypt1 1:4.4.27-1 deb
libcurl3t64-gnutls 8.5.0-2ubuntu10.6 deb libcurl3-gnutls 7.81.0-1ubuntu1.10 deb
libcurl4t64 8.5.0-2ubuntu10.6 deb libcurl4 7.81.0-1ubuntu1.10 deb
libdb5.3t64 5.3.28+dfsg2-7 deb libdb5.3 5.3.28+dfsg1-0.8ubuntu3 deb
libdebconfclient0 0.271ubuntu3 deb libdebconfclient0 0.261ubuntu1 deb
libedit2 3.1-20230828-1build1 deb libedit2 3.1-20210910-1build1 deb
liberror-perl 0.17029-2 deb liberror-perl 0.17029-1 deb
libexpat1 2.6.1-2ubuntu0.3 deb libexpat1 2.4.7-1ubuntu0.2 deb
libext2fs2t64 1.47.0-2.4~exp1ubuntu4.1 deb libext2fs2 1.46.5-2ubuntu1.1 deb
libffi8 3.4.6-1build1 deb libffi8 3.4.2-4 deb
libfido2-1 1.14.0-1build3 deb libfido2-1 1.10.0-1 deb
libgcc-s1 14.2.0-4ubuntu2~24.04 deb libgcc-s1 12.1.0-2ubuntu1~22.04 deb
libgcrypt20 1.10.3-2build1 deb libgcrypt20 1.9.4-3ubuntu3 deb
libgdbm-compat4t64 1.23-5.1build1 deb libgdbm-compat4 1.23-1 deb
libgdbm6t64 1.23-5.1build1 deb libgdbm6 1.23-1 deb
libgmp10 2:6.3.0+dfsg-2ubuntu6.1 deb libgmp10 2:6.2.1+dfsg-3ubuntu1 deb
libgnutls30t64 3.8.3-1.1ubuntu3.4 deb libgnutls30 3.7.3-4ubuntu1.2 deb
libgpg-error0 1.47-3build2.1 deb libgpg-error0 1.43-3 deb
libgssapi-krb5-2 1.20.1-6ubuntu2.6 deb libgssapi-krb5-2 1.19.2-2ubuntu0.2 deb
libhogweed6t64 3.9.1-2.2build1.1 deb libhogweed6 3.7.3-1build2 deb
libidn2-0 2.3.7-2build1.1 deb libidn2-0 2.3.2-2build1 deb
libjq1 1.7.1-3ubuntu0.24.04.1 deb libjq1 1.6-2.1ubuntu3 deb
libk5crypto3 1.20.1-6ubuntu2.6 deb libk5crypto3 1.19.2-2ubuntu0.2 deb
libkeyutils1 1.6.3-3build1 deb libkeyutils1 1.6.1-2ubuntu3 deb
libkrb5-3 1.20.1-6ubuntu2.6 deb libkrb5-3 1.19.2-2ubuntu0.2 deb
libkrb5support0 1.20.1-6ubuntu2.6 deb libkrb5support0 1.19.2-2ubuntu0.2 deb
libksba8 1.6.6-1build1 deb libksba8 1.6.0-2ubuntu0.2 deb
libldap-common 2.6.7+dfsg-1~exp1ubuntu8.2 deb libldap-2.5-0 2.5.14+dfsg-0ubuntu0.22.04.2 deb
libldap2 2.6.7+dfsg-1~exp1ubuntu8.2 deb libldap-common 2.5.14+dfsg-0ubuntu0.22.04.2 deb
liblz4-1 1.9.4-1build1.1 deb liblz4-1 1.9.3-2build2 deb
liblzma5 5.6.1+really5.4.5-1ubuntu0.2 deb liblzma5 5.2.5-2ubuntu1 deb
libmd0 1.1.0-2build1.1 deb libmd0 1.0.4-1build1 deb
libmount1 2.39.3-9ubuntu6.4 deb libmount1 2.37.2-4ubuntu3 deb
libncursesw6 6.4+20240113-1ubuntu2 deb libncurses6 6.3-2ubuntu0.1 deb
libnettle8t64 3.9.1-2.2build1.1 deb libncursesw6 6.3-2ubuntu0.1 deb
libnghttp2-14 1.59.0-1ubuntu0.2 deb libnettle8 3.7.3-1build2 deb
libnpth0t64 1.6-3.1build1 deb libnghttp2-14 1.43.0-1build3 deb
libonig5 6.9.9-1build1 deb libnpth0 1.6-3build2 deb
libp11-kit0 0.25.3-4ubuntu2.1 deb libnsl2 1.3.0-2build2 deb
libpam-modules 1.5.3-5ubuntu5.5 deb libonig5 6.9.7.1-2build1 deb
libpam-modules-bin 1.5.3-5ubuntu5.5 deb libp11-kit0 0.24.0-6build1 deb
libpam-runtime 1.5.3-5ubuntu5.5 deb libpam-modules 1.4.0-11ubuntu2.3 deb
libpam0g 1.5.3-5ubuntu5.5 deb libpam-modules-bin 1.4.0-11ubuntu2.3 deb
libpcre2-8-0 10.42-4ubuntu2.1 deb libpam-runtime 1.4.0-11ubuntu2.3 deb
libperl5.38t64 5.38.2-3.2ubuntu0.2 deb libpam0g 1.4.0-11ubuntu2.3 deb
libproc2-0 2:4.0.4-4ubuntu3.2 deb libpcre2-8-0 10.39-3ubuntu0.1 deb
libpsl5t64 0.21.2-1.1build1 deb libpcre3 2:8.39-13ubuntu0.22.04.1 deb
libreadline8t64 8.2-4build1 deb libperl5.34 5.34.0-3ubuntu1.2 deb
librtmp1 2.4+20151223.gitfa8646d.1-2build7 deb libprocps8 2:3.3.17-6ubuntu2 deb
libsasl2-2 2.1.28+dfsg1-5ubuntu3.1 deb libpsl5 0.21.0-1.2build2 deb
libsasl2-modules 2.1.28+dfsg1-5ubuntu3.1 deb libreadline8 8.1.2-1 deb
libsasl2-modules-db 2.1.28+dfsg1-5ubuntu3.1 deb librtmp1 2.4+20151223.gitfa8646d.1-2build4 deb
libseccomp2 2.5.5-1ubuntu3.1 deb libsasl2-2 2.1.27+dfsg2-3ubuntu1.2 deb
libselinux1 3.5-2ubuntu2.1 deb libsasl2-modules 2.1.27+dfsg2-3ubuntu1.2 deb
libsemanage-common 3.5-1build5 deb libsasl2-modules-db 2.1.27+dfsg2-3ubuntu1.2 deb
libsemanage2 3.5-1build5 deb libseccomp2 2.5.3-2ubuntu2 deb
libsepol2 3.5-2build1 deb libselinux1 3.3-1build2 deb
libsmartcols1 2.39.3-9ubuntu6.4 deb libsemanage-common 3.3-1build2 deb
libsqlite3-0 3.45.1-1ubuntu2.5 deb libsemanage2 3.3-1build2 deb
libss2 1.47.0-2.4~exp1ubuntu4.1 deb libsepol2 3.3-1build1 deb
libssh-4 0.10.6-2ubuntu0.2 deb libsmartcols1 2.37.2-4ubuntu3 deb
libssl3t64 3.0.13-0ubuntu3.6 deb libsqlite3-0 3.37.2-2ubuntu0.1 deb
libstdc++6 14.2.0-4ubuntu2~24.04 deb libss2 1.46.5-2ubuntu1.1 deb
libsystemd0 255.4-1ubuntu8.12 deb libssh-4 0.9.6-2ubuntu0.22.04.1 deb
libtasn1-6 4.19.0-3ubuntu0.24.04.2 deb libssl3 3.0.2-0ubuntu1.10 deb
libtinfo6 6.4+20240113-1ubuntu2 deb libstdc++6 12.1.0-2ubuntu1~22.04 deb
libudev1 255.4-1ubuntu8.12 deb libsystemd0 249.11-0ubuntu3.9 deb
libunistring5 1.1-2build1.1 deb libtasn1-6 4.18.0-4build1 deb
libuuid1 2.39.3-9ubuntu6.4 deb libtinfo6 6.3-2ubuntu0.1 deb
libx11-6 2:1.8.7-1build1 deb libtirpc-common 1.3.2-2ubuntu0.1 deb
libx11-data 2:1.8.7-1build1 deb libtirpc3 1.3.2-2ubuntu0.1 deb
libxau6 1:1.0.9-1build6 deb libudev1 249.11-0ubuntu3.9 deb
libxcb1 1.15-1ubuntu2 deb libunistring2 1.0-1 deb
libxdmcp6 1:1.1.3-0ubuntu6 deb libuuid1 2.37.2-4ubuntu3 deb
libxext6 2:1.3.4-1build2 deb libx11-6 2:1.7.5-1ubuntu0.2 deb
libxmuu1 2:1.1.3-3build2 deb libx11-data 2:1.7.5-1ubuntu0.2 deb
libxxhash0 0.8.2-2build1 deb libxau6 1:1.0.9-1build5 deb
libzstd1 1.5.5+dfsg2-2build1.1 deb libxcb1 1.14-3ubuntu3 deb
libxdmcp6 1:1.1.3-0ubuntu5 deb
libxext6 2:1.3.4-1build1 deb
libxmuu1 2:1.1.3-3 deb
libxxhash0 0.8.1-1 deb
libzstd1 1.4.8+dfsg-3build1 deb
limiter 2.1.0 npm limiter 2.1.0 npm
locales 2.39-0ubuntu8.6 deb locales 2.35-0ubuntu3.1 deb
lodash.camelcase 4.3.0 npm
log 1.0.0 npm log 1.0.0 npm
login 1:4.13+dfsg1-4ubuntu3.2 deb login 1:4.8.1-2ubuntu2.1 deb
logsave 1.47.0-2.4~exp1ubuntu4.1 deb logsave 1.46.5-2ubuntu1.1 deb
long 4.0.0 npm
long 5.2.3 npm
lru-cache 6.0.0 npm lru-cache 6.0.0 npm
lru-cache 7.18.3 npm lru-cache 7.18.3 npm
lsb-base 11.1.0ubuntu4 deb
lua 1.0.0 npm lua 1.0.0 npm
make 1.0.0 npm make 1.0.0 npm
make-dir 3.1.0 npm
markdown 1.0.0 npm markdown 1.0.0 npm
markdown-language-features 1.0.0 npm markdown-language-features 1.0.0 npm
markdown-math 1.0.0 npm markdown-math 1.0.0 npm
math-intrinsics 1.1.0 npm mawk 1.3.4.20200120-3 deb
mawk 1.3.4.20240123-1build1 deb
md5 2.3.0 npm md5 2.3.0 npm
media-preview 1.0.0 npm media-preview 1.0.0 npm
media-typer 1.1.0 npm media-typer 0.3.0 npm
merge-conflict 1.0.0 npm merge-conflict 1.0.0 npm
merge-descriptors 2.0.0 npm merge-descriptors 1.0.1 npm
mermaid-chat-features 1.0.0 npm methods 1.1.2 npm
micromatch 4.0.8 npm micromatch 4.0.5 npm
microsoft-authentication 0.0.1 npm microsoft-authentication 0.0.1 npm
mime-db 1.54.0 npm mime 1.6.0 npm
mime-types 3.0.1 npm mime-db 1.47.0 npm
mime-types 2.1.30 npm
mimic-response 3.1.0 npm mimic-response 3.1.0 npm
minimist 1.2.8 npm minimatch 3.1.2 npm
minimist 1.2.6 npm
minipass 3.1.3 npm
minizlib 2.1.2 npm
mkdirp 0.5.6 npm
mkdirp 1.0.4 npm mkdirp 1.0.4 npm
mkdirp-classic 0.5.3 npm mkdirp-classic 0.5.3 npm
mount 2.39.3-9ubuntu6.4 deb mount 2.37.2-4ubuntu3 deb
ms 2.0.0 npm ms 2.0.0 npm
ms 2.1.1 npm
ms 2.1.2 npm ms 2.1.2 npm
ms 2.1.3 npm nan 2.17.0 npm
nano 7.2-2ubuntu0.1 deb nano 6.2-1 deb
napi-build-utils 1.0.2 npm napi-build-utils 1.0.2 npm
native-watchdog 1.4.2 npm native-watchdog 1.4.2 npm
ncurses-base 6.4+20240113-1ubuntu2 deb ncurses-base 6.3-2ubuntu0.1 deb
ncurses-bin 6.4+20240113-1ubuntu2 deb ncurses-bin 6.3-2ubuntu0.1 deb
negotiator 0.6.4 npm negotiator 0.6.2 npm
negotiator 1.0.0 npm net-tools 1.60+git20181103.0eebece-1ubuntu5 deb
net-tools 2.10-0.1ubuntu4.4 deb netbase 6.3 deb
netbase 6.4 deb netcat 1.218-4ubuntu1 deb
netcat-openbsd 1.226-1ubuntu2 deb netcat-openbsd 1.218-4ubuntu1 deb
netmask 2.0.2 npm netmask 2.0.2 npm
node 22.21.1 binary node 16.20.0 binary
node-abi 3.8.0 npm node-abi 3.8.0 npm
node-addon-api 7.1.0 npm node-addon-api 3.2.1 npm
node-addon-api 8.5.0 npm node-addon-api 4.3.0 npm
node-gyp-build 4.8.4 npm node-addon-api 5.0.0 npm
node-pty 1.1.0-beta43 npm node-fetch 2.6.7 npm
node-forge 1.3.1 npm
node-forge-flash 0.0.0 npm
node-gyp-build 4.3.0 npm
node-pty 0.11.0-beta32 npm
nopt 5.0.0 npm
npm 1.0.1 npm npm 1.0.1 npm
object-inspect 1.13.4 npm npmlog 4.1.2 npm
npmlog 5.0.1 npm
number-is-nan 1.0.1 npm
nw-pre-gyp-module-test 0.0.1 npm
object-assign 4.1.1 npm
object-hash 3.0.0 npm
object-inspect 1.10.2 npm
objective-c 1.0.0 npm objective-c 1.0.0 npm
on-finished 2.4.1 npm on-finished 2.3.0 npm
on-headers 1.1.0 npm on-headers 1.0.2 npm
once 1.4.0 npm (+1 duplicate) once 1.4.0 npm
openssh-client 1:9.6p1-3ubuntu13.14 deb openssh-client 1:8.9p1-3ubuntu0.1 deb
openssl 3.0.13-0ubuntu3.6 deb openssl 3.0.2-0ubuntu1.10 deb
opentype.js 0.8.0 npm optionator 0.8.3 npm
os-tmpdir 1.0.2 npm os-tmpdir 1.0.2 npm
pac-proxy-agent 7.2.0 npm pac-proxy-agent 6.0.3 npm
pac-resolver 7.0.1 npm pac-resolver 6.0.1 npm
parseurl 1.3.3 npm parseurl 1.3.3 npm
passwd 1:4.13+dfsg1-4ubuntu3.2 deb passwd 1:4.8.1-2ubuntu2.1 deb
patch 2.7.6-7build3 deb patch 2.7.6-7build2 deb
path-key 3.1.1 npm path-is-absolute 1.0.1 npm
path-to-regexp 8.3.0 npm path-to-regexp 0.1.7 npm
pem 1.14.8 npm pem 1.14.4 npm
pend 1.2.0 npm pend 1.2.0 npm
perl 1.0.0 npm perl 1.0.0 npm
perl 5.38.2-3.2ubuntu0.2 deb perl 5.34.0-3ubuntu1.2 deb
perl-base 5.38.2-3.2ubuntu0.2 deb perl-base 5.34.0-3ubuntu1.2 deb
perl-modules-5.38 5.38.2-3.2ubuntu0.2 deb perl-modules-5.34 5.34.0-3ubuntu1.2 deb
php 1.0.0 npm php 1.0.0 npm
php-language-features 1.0.0 npm php-language-features 1.0.0 npm
picomatch 2.3.1 npm picomatch 2.3.1 npm
pinentry-curses 1.2.1-3ubuntu5 deb pinentry-curses 1.1.1-1build2 deb
powershell 1.0.0 npm powershell 1.0.0 npm
prebuild-install 7.1.2 npm prebuild-install 7.0.1 npm
procps 2:4.0.4-4ubuntu3.2 deb prelude-ls 1.1.2 npm
prompt 1.0.0 npm process-nextick-args 2.0.1 npm
proxy-addr 2.0.7 npm procps 2:3.3.17-6ubuntu2 deb
proxy-agent 6.5.0 npm proto3-json-serializer 0.1.9 npm
proxy-from-env 1.1.0 npm (+1 duplicate) protobufjs 6.11.3 npm
publicsuffix 20231001.0357-0.1 deb protobufjs 7.2.3 npm
proxy-addr 2.0.6 npm
proxy-agent 6.2.1 npm
proxy-from-env 1.1.0 npm
publicsuffix 20211207.1025-1 deb
pug 1.0.0 npm pug 1.0.0 npm
pump 3.0.0 npm pump 3.0.0 npm
pumpify 2.0.1 npm
python 1.0.0 npm python 1.0.0 npm
qs 6.14.1 npm qs 6.11.0 npm
qs 6.7.0 npm
r 1.0.0 npm r 1.0.0 npm
range-parser 1.2.1 npm range-parser 1.2.1 npm
raw-body 3.0.2 npm raw-body 2.4.0 npm
razor 1.0.0 npm razor 1.0.0 npm
rc 1.2.8 npm rc 1.2.8 npm
readable-stream 2.3.7 npm
readable-stream 3.6.0 npm readable-stream 3.6.0 npm
readline-common 8.2-4build1 deb readline-common 8.1.2-1 deb
references-view 1.0.0 npm references-view 1.0.0 npm
regenerator-runtime 0.13.11 npm
require-directory 2.1.1 npm
requires-port 1.0.0 npm requires-port 1.0.0 npm
restructuredtext 1.0.0 npm restructuredtext 1.0.0 npm
rotating-file-stream 3.2.5 npm retry-request 4.2.2 npm
router 2.2.0 npm rimraf 3.0.2 npm
rotating-file-stream 3.1.0 npm
router 2.0.0-alpha.1 npm
ruby 1.0.0 npm ruby 1.0.0 npm
rust 1.0.0 npm rust 1.0.0 npm
safe-buffer 5.2.1 npm (+1 duplicate) safe-buffer 5.1.2 npm
safe-buffer 5.2.1 npm
safe-compare 1.1.4 npm safe-compare 1.1.4 npm
safer-buffer 2.1.2 npm safer-buffer 2.1.2 npm
scss 1.0.0 npm scss 1.0.0 npm
search-result 1.0.0 npm search-result 1.0.0 npm
sed 4.9-2build1 deb sed 4.8-1ubuntu2 deb
semver 7.5.4 npm semver 6.3.0 npm
semver 7.7.1 npm semver 7.3.5 npm
send 1.2.0 npm semver 7.3.8 npm
sensible-utils 0.0.22 deb send 0.17.1 npm
serve-static 2.2.0 npm sensible-utils 0.0.17 deb
setprototypeof 1.2.0 npm serve-static 1.14.1 npm
set-blocking 2.0.0 npm
setprototypeof 1.1.0 npm
setprototypeof 1.1.1 npm
shaderlab 1.0.0 npm shaderlab 1.0.0 npm
shebang-command 2.0.0 npm
shebang-regex 3.0.0 npm
shellscript 1.0.0 npm shellscript 1.0.0 npm
side-channel 1.1.0 npm side-channel 1.0.4 npm
side-channel-list 1.0.0 npm signal-exit 3.0.6 npm
side-channel-map 1.0.1 npm signal-exit 3.0.7 npm
side-channel-weakmap 1.0.2 npm
simple-browser 1.0.0 npm simple-browser 1.0.0 npm
simple-concat 1.0.1 npm simple-concat 1.0.1 npm
simple-get 4.0.1 npm simple-get 4.0.1 npm
smart-buffer 4.2.0 npm (+1 duplicate) smart-buffer 4.1.0 npm
socks 2.8.3 npm smart-buffer 4.2.0 npm
socks 2.8.4 npm socks 2.6.1 npm
socks-proxy-agent 8.0.4 npm socks 2.7.1 npm
socks-proxy-agent 8.0.5 npm socks-proxy-agent 5.0.0 npm
socks-proxy-agent 8.0.1 npm
source-map 0.6.1 npm source-map 0.6.1 npm
sprintf-js 1.1.3 npm (+1 duplicate)
sql 1.0.0 npm sql 1.0.0 npm
statuses 2.0.2 npm statuses 1.5.0 npm
stream-events 1.0.5 npm
stream-shift 1.0.1 npm
string-width 1.0.2 npm
string-width 4.2.2 npm
string-width 4.2.3 npm
string_decoder 1.1.1 npm
string_decoder 1.3.0 npm string_decoder 1.3.0 npm
strip-ansi 3.0.1 npm
strip-ansi 6.0.1 npm
strip-json-comments 2.0.1 npm strip-json-comments 2.0.1 npm
sudo 1.9.15p5-3ubuntu5.24.04.1 deb stubs 3.0.0 npm
sudo 1.9.9-1ubuntu2.4 deb
swift 1.0.0 npm swift 1.0.0 npm
systemd-standalone-sysusers 255.4-1ubuntu8.12 deb sysvinit-utils 3.01-1ubuntu1 deb
sysvinit-utils 3.08-6ubuntu3 deb tar 1.34+dfsg-1ubuntu0.1.22.04.1 deb
tar 1.35+dfsg-3build1 deb tar 6.1.11 npm
tar-fs 2.1.4 npm tar-fs 2.1.1 npm
tar-stream 2.2.0 npm tar-stream 2.2.0 npm
tas-client 0.3.1 npm tas-client-umd 0.1.8 npm
terminal-suggest 1.0.1 npm teeny-request 7.2.0 npm
theme-abyss 1.0.0 npm theme-abyss 1.0.0 npm
theme-defaults 1.0.0 npm theme-defaults 1.0.0 npm
theme-kimbie-dark 1.0.0 npm theme-kimbie-dark 1.0.0 npm
@ -476,46 +585,65 @@ theme-red 1.0.0 np
theme-solarized-dark 1.0.0 npm theme-solarized-dark 1.0.0 npm
theme-solarized-light 1.0.0 npm theme-solarized-light 1.0.0 npm
theme-tomorrow-night-blue 1.0.0 npm theme-tomorrow-night-blue 1.0.0 npm
tiny-inflate 1.0.3 npm
to-regex-range 5.0.1 npm to-regex-range 5.0.1 npm
toidentifier 1.0.1 npm toidentifier 1.0.0 npm
tslib 2.8.1 npm (+1 duplicate) tr46 0.0.3 npm
tslib 2.3.1 npm
tunnel-agent 0.6.0 npm tunnel-agent 0.6.0 npm
tunnel-forwarding 1.0.0 npm type-check 0.3.2 npm
type-is 2.0.1 npm type-is 1.6.18 npm
typescript 1.0.0 npm typescript 1.0.0 npm
typescript 5.8.3 npm typescript 5.1.3 npm
typescript 5.9.3 npm
typescript-language-features 1.0.0 npm typescript-language-features 1.0.0 npm
tzdata 2025b-0ubuntu0.24.04.1 deb tzdata 2023c-0ubuntu0.22.04.2 deb
ubuntu-keyring 2023.11.28.1 deb ubuntu-keyring 2021.03.26 deb
undici 7.9.0 npm universalify 0.1.2 npm
universalify 2.0.1 npm
unminimize 0.2.1 deb
unpipe 1.0.0 npm unpipe 1.0.0 npm
usrmerge 25ubuntu2 deb
util-deprecate 1.0.2 npm util-deprecate 1.0.2 npm
util-linux 2.39.3-9ubuntu6.4 deb util-linux 2.37.2-4ubuntu3 deb
uuid 9.0.1 npm utils-merge 1.0.1 npm
uuid 8.3.2 npm
vary 1.1.2 npm vary 1.1.2 npm
vb 1.0.0 npm vb 1.0.0 npm
vm2 3.9.19 npm
vscode-css-languageserver 1.0.0 npm vscode-css-languageserver 1.0.0 npm
vscode-extensions 0.0.1 npm vscode-extensions 0.0.1 npm
vscode-html-languageserver 1.0.0 npm vscode-html-languageserver 1.0.0 npm
vscode-js-profile-table 1.0.10 npm vscode-js-profile-table 1.0.3 npm
vscode-json-languageserver 1.3.4 npm vscode-json-languageserver 1.3.4 npm
vscode-markdown-languageserver 0.4.0-alpha.2 npm
vscode-oniguruma 1.7.0 npm vscode-oniguruma 1.7.0 npm
vscode-regexpp 3.1.0 npm vscode-regexpp 3.1.0 npm
vscode-textmate 9.3.0 npm vscode-reh 1.79.2 npm
vscode-textmate 9.0.0 npm
vscode-theme-seti 1.0.0 npm vscode-theme-seti 1.0.0 npm
webidl-conversions 3.0.1 npm
whatwg-url 5.0.0 npm
which 2.0.2 npm which 2.0.2 npm
wrappy 1.0.2 npm (+1 duplicate) wide-align 1.1.5 npm
ws 8.18.0 npm word-wrap 1.2.3 npm
xauth 1:1.1.2-1build1 deb wrap-ansi 7.0.0 npm
wrappy 1.0.2 npm
ws 8.13.0 npm
xauth 1:1.1-1build2 deb
xdg-basedir 4.0.0 npm xdg-basedir 4.0.0 npm
xml 1.0.0 npm xml 1.0.0 npm
xterm 5.2.0-beta.49 npm
xterm-addon-canvas 0.4.0-beta.14 npm
xterm-addon-image 0.4.0 npm
xterm-addon-search 0.12.0-beta.5 npm
xterm-addon-serialize 0.10.0-beta.2 npm
xterm-addon-unicode11 0.5.0 npm
xterm-addon-webgl 0.15.0-beta.15 npm
xterm-headless 5.2.0-beta.49 npm
y18n 5.0.8 npm
yallist 4.0.0 npm yallist 4.0.0 npm
yaml 1.0.0 npm yaml 1.0.0 npm
yargs 16.2.0 npm
yargs 17.7.2 npm
yargs-parser 20.2.9 npm
yargs-parser 21.1.1 npm
yauzl 2.10.0 npm yauzl 2.10.0 npm
yauzl 3.1.1 npm
yazl 2.4.3 npm yazl 2.4.3 npm
zlib1g 1:1.3.dfsg-3.1ubuntu2.1 deb zlib1g 1:1.2.11.dfsg-2ubuntu9.2 deb

View File

@ -4,29 +4,28 @@
project_name: code-server project_name: code-server
project_url: "https://coder.com" project_url: "https://coder.com"
project_logo: "https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/code-server-banner.png" project_logo: "https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/code-server-banner.png"
project_blurb: | project_blurb: "[{{ project_name|capitalize }}]({{ project_url }}) is VS Code running on a remote server, accessible through the browser.\n- Code on your Chromebook, tablet, and laptop with a consistent dev environment.\n- If you have a Windows or Mac workstation, more easily develop for Linux.\n- Take advantage of large cloud servers to speed up tests, compilations, downloads, and more.\n- Preserve battery life when you're on the go.\n- All intensive computation runs on your server.\n- You're no longer running excess instances of Chrome."
[{{ project_name|capitalize }}]({{ project_url }}) is VS Code running on a remote server, accessible through the browser.
- Code on your Chromebook, tablet, and laptop with a consistent dev environment.
- If you have a Windows or Mac workstation, more easily develop for Linux.
- Take advantage of large cloud servers to speed up tests, compilations, downloads, and more.
- Preserve battery life when you're on the go.
- All intensive computation runs on your server.
- You're no longer running excess instances of Chrome.
project_lsio_github_repo_url: "https://github.com/linuxserver/docker-{{ project_name }}" project_lsio_github_repo_url: "https://github.com/linuxserver/docker-{{ project_name }}"
project_categories: "Programming"
# supported architectures # supported architectures
available_architectures: available_architectures:
- {arch: "{{ arch_x86_64 }}", tag: "amd64-latest"} - {arch: "{{ arch_x86_64 }}", tag: "amd64-latest"}
- {arch: "{{ arch_arm64 }}", tag: "arm64v8-latest"} - {arch: "{{ arch_arm64 }}", tag: "arm64v8-latest"}
# development version
development_versions: false
development_versions_items:
- {tag: "latest", desc: "Stable releases"}
# container parameters # container parameters
common_param_env_vars_enabled: true common_param_env_vars_enabled: true
param_container_name: "{{ project_name }}" param_container_name: "{{ project_name }}"
param_usage_include_vols: true param_usage_include_vols: true
param_volumes: param_volumes:
- {vol_path: "/config", vol_host_path: "/path/to/{{ project_name }}/config", desc: "Contains all relevant configuration files."} - {vol_path: "/config", vol_host_path: "/path/to/appdata/config", desc: "Contains all relevant configuration files."}
param_usage_include_ports: true param_usage_include_ports: true
param_ports: param_ports:
- {external_port: "8443", internal_port: "8443", port_desc: "web gui"} - {external_port: "8443", internal_port: "8443", port_desc: "web gui"}
param_usage_include_env: true
param_env_vars:
- {env_var: "TZ", env_value: "Europe/London", desc: "Specify a timezone to use EG Europe/London"}
# optional container parameters # optional container parameters
opt_param_usage_include_env: true opt_param_usage_include_env: true
opt_param_env_vars: opt_param_env_vars:
@ -34,16 +33,10 @@ opt_param_env_vars:
- {env_var: "HASHED_PASSWORD", env_value: "", desc: "Optional web gui password, overrides `PASSWORD`, instructions on how to create it is below."} - {env_var: "HASHED_PASSWORD", env_value: "", desc: "Optional web gui password, overrides `PASSWORD`, instructions on how to create it is below."}
- {env_var: "SUDO_PASSWORD", env_value: "password", desc: "If this optional variable is set, user will have sudo access in the code-server terminal with the specified password."} - {env_var: "SUDO_PASSWORD", env_value: "password", desc: "If this optional variable is set, user will have sudo access in the code-server terminal with the specified password."}
- {env_var: "SUDO_PASSWORD_HASH", env_value: "", desc: "Optionally set sudo password via hash (takes priority over `SUDO_PASSWORD` var). Format is `$type$salt$hashed`."} - {env_var: "SUDO_PASSWORD_HASH", env_value: "", desc: "Optionally set sudo password via hash (takes priority over `SUDO_PASSWORD` var). Format is `$type$salt$hashed`."}
- {env_var: "PROXY_DOMAIN", env_value: "code-server.my.domain", desc: "If this optional variable is set, this domain will be proxied for subdomain proxying. See [Documentation](https://github.com/coder/code-server/blob/main/docs/guide.md#using-a-subdomain)"} - {env_var: "PROXY_DOMAIN", env_value: "code-server.my.domain", desc: "If this optional variable is set, this domain will be proxied for subdomain proxying. See [Documentation](https://github.com/cdr/code-server/blob/master/docs/FAQ.md#sub-domains)"}
- {env_var: "DEFAULT_WORKSPACE", env_value: "/config/workspace", desc: "If this optional variable is set, code-server will open this directory by default"} - {env_var: "DEFAULT_WORKSPACE", env_value: "/config/workspace", desc: "If this optional variable is set, code-server will open this directory by default"}
- {env_var: "PWA_APPNAME", env_value: "code-server", desc: "If this optional variable is set, the PWA app will the specified name."} optional_block_1: false
readonly_supported: true optional_block_1_items: ""
readonly_message: |
* `/tmp` must be mounted to tmpfs
* `sudo` will not be available
nonroot_supported: true
nonroot_message: |
* `sudo` will not be available
# application setup block # application setup block
app_setup_block_enabled: true app_setup_block_enabled: true
app_setup_block: | app_setup_block: |
@ -59,54 +52,8 @@ app_setup_block: |
### Hashed code-server password ### Hashed code-server password
How to create the [hashed password](https://github.com/cdr/code-server/blob/master/docs/FAQ.md#can-i-store-my-password-hashed). How to create the [hashed password](https://github.com/cdr/code-server/blob/master/docs/FAQ.md#can-i-store-my-password-hashed).
# init diagram
init_diagram: |
"code-server:latest": {
docker-mods
base {
fix-attr +\nlegacy cont-init
}
docker-mods -> base
legacy-services
custom services
init-services -> legacy-services
init-services -> custom services
custom services -> legacy-services
legacy-services -> ci-service-check
init-migrations -> init-adduser
init-config -> init-code-server
init-os-end -> init-config
init-code-server -> init-config-end
init-config -> init-config-end
init-crontab-config -> init-config-end
init-config -> init-crontab-config
init-mods-end -> init-custom-files
init-adduser -> init-device-perms
base -> init-envfile
base -> init-migrations
init-config-end -> init-mods
init-mods-package-install -> init-mods-end
init-mods -> init-mods-package-install
init-adduser -> init-os-end
init-device-perms -> init-os-end
init-envfile -> init-os-end
init-custom-files -> init-services
init-services -> svc-code-server
svc-code-server -> legacy-services
init-services -> svc-cron
svc-cron -> legacy-services
}
Base Images: {
"baseimage-ubuntu:noble"
}
"code-server:latest" <- Base Images
# changelog # changelog
changelogs: changelogs:
- {date: "10.08.25:", desc: "Let server listen on both ipv4 and ipv6."}
- {date: "03.06.25:", desc: "Allow setting PWA name using env var `PWA_APPNAME`."}
- {date: "13.10.24:", desc: "Only chown config folder when change to ownership or new install is detected."}
- {date: "09.10.24:", desc: "Manage permissions in /config/.ssh according to file type"}
- {date: "19.08.24:", desc: "Rebase to Ubuntu Noble."}
- {date: "01.07.23:", desc: "Deprecate armhf. As announced [here](https://www.linuxserver.io/blog/a-farewell-to-arm-hf)"} - {date: "01.07.23:", desc: "Deprecate armhf. As announced [here](https://www.linuxserver.io/blog/a-farewell-to-arm-hf)"}
- {date: "05.10.22:", desc: "Install recommended deps to maintain parity with the older images."} - {date: "05.10.22:", desc: "Install recommended deps to maintain parity with the older images."}
- {date: "29.09.22:", desc: "Rebase to jammy, switch to s6v3. Fix chown logic to skip `/config/workspace` contents."} - {date: "29.09.22:", desc: "Rebase to jammy, switch to s6v3. Fix chown logic to skip `/config/workspace` contents."}

View File

@ -1,46 +1,31 @@
#!/usr/bin/with-contenv bash #!/usr/bin/with-contenv bash
# shellcheck shell=bash
mkdir -p /config/{extensions,data,workspace,.ssh} mkdir -p /config/{extensions,data,workspace,.ssh}
if [[ -z ${LSIO_NON_ROOT_USER} ]] && [[ -z ${LSIO_READ_ONLY_FS} ]]; then if [ -n "${SUDO_PASSWORD}" ] || [ -n "${SUDO_PASSWORD_HASH}" ]; then
if [[ -n "${SUDO_PASSWORD}" ]] || [[ -n "${SUDO_PASSWORD_HASH}" ]]; then
echo "setting up sudo access" echo "setting up sudo access"
if ! grep -q 'abc' /etc/sudoers; then if ! grep -q 'abc' /etc/sudoers; then
echo "adding abc to sudoers" echo "adding abc to sudoers"
echo "abc ALL=(ALL:ALL) ALL" >> /etc/sudoers echo "abc ALL=(ALL:ALL) ALL" >> /etc/sudoers
fi fi
if [[ -n "${SUDO_PASSWORD_HASH}" ]]; then if [ -n "${SUDO_PASSWORD_HASH}" ]; then
echo "setting sudo password using sudo password hash" echo "setting sudo password using sudo password hash"
sed -i "s|^abc:\!:|abc:${SUDO_PASSWORD_HASH}:|" /etc/shadow sed -i "s|^abc:\!:|abc:${SUDO_PASSWORD_HASH}:|" /etc/shadow
else else
echo "setting sudo password using SUDO_PASSWORD env var" echo "setting sudo password using SUDO_PASSWORD env var"
echo -e "${SUDO_PASSWORD}\n${SUDO_PASSWORD}" | passwd abc echo -e "${SUDO_PASSWORD}\n${SUDO_PASSWORD}" | passwd abc
fi fi
fi
fi fi
if [[ ! -f /config/.bashrc ]]; then [[ ! -f /config/.bashrc ]] && \
cp /root/.bashrc /config/.bashrc cp /root/.bashrc /config/.bashrc
fi [[ ! -f /config/.profile ]] && \
if [[ ! -f /config/.profile ]]; then
cp /root/.profile /config/.profile cp /root/.profile /config/.profile
fi
if [[ -z ${LSIO_NON_ROOT_USER} ]]; then # fix permissions (ignore contents of /config/workspace)
# fix permissions (ignore contents of workspace) find /config -path /config/workspace -prune -o -exec chown abc:abc {} +
PUID=${PUID:-911} chown abc:abc /config/workspace
if [[ ! "$(stat -c %u /config/.profile)" == "${PUID}" ]]; then chmod 700 /config/.ssh
echo "Change in ownership or new install detected, please be patient while we chown existing files" if [ -n "$(ls -A /config/.ssh)" ]; then
echo "This could take some time" chmod 600 /config/.ssh/*
find /config -path "/config/workspace" -prune -o -exec lsiown abc:abc {} +
lsiown abc:abc /config/workspace
fi
chmod 700 /config/.ssh
if [[ -n "$(ls -A /config/.ssh)" ]]; then
find /config/.ssh/ -type d -exec chmod 700 '{}' \;
find /config/.ssh/ -type f -exec chmod 600 '{}' \;
find /config/.ssh/ -type f -iname '*.pub' -exec chmod 644 '{}' \;
fi
fi fi

View File

@ -1,25 +1,19 @@
#!/usr/bin/with-contenv bash #!/usr/bin/with-contenv bash
# shellcheck shell=bash
if [[ -n "${PASSWORD}" ]] || [[ -n "${HASHED_PASSWORD}" ]]; then if [ -n "${PASSWORD}" ] || [ -n "${HASHED_PASSWORD}" ]; then
AUTH="password" AUTH="password"
else else
AUTH="none" AUTH="none"
echo "starting with no password" echo "starting with no password"
fi fi
if [[ -z ${PROXY_DOMAIN+x} ]]; then if [ -z ${PROXY_DOMAIN+x} ]; then
PROXY_DOMAIN_ARG="" PROXY_DOMAIN_ARG=""
else else
PROXY_DOMAIN_ARG="--proxy-domain=${PROXY_DOMAIN}" PROXY_DOMAIN_ARG="--proxy-domain=${PROXY_DOMAIN}"
fi fi
if [[ -z ${PWA_APPNAME} ]]; then exec \
PWA_APPNAME="code-server"
fi
if [[ -z ${LSIO_NON_ROOT_USER} ]]; then
exec \
s6-notifyoncheck -d -n 300 -w 1000 -c "nc -z 127.0.0.1 8443" \ s6-notifyoncheck -d -n 300 -w 1000 -c "nc -z 127.0.0.1 8443" \
s6-setuidgid abc \ s6-setuidgid abc \
/app/code-server/bin/code-server \ /app/code-server/bin/code-server \
@ -28,19 +22,5 @@ if [[ -z ${LSIO_NON_ROOT_USER} ]]; then
--extensions-dir /config/extensions \ --extensions-dir /config/extensions \
--disable-telemetry \ --disable-telemetry \
--auth "${AUTH}" \ --auth "${AUTH}" \
--app-name "${PWA_APPNAME}" \
"${PROXY_DOMAIN_ARG}" \ "${PROXY_DOMAIN_ARG}" \
"${DEFAULT_WORKSPACE:-/config/workspace}" "${DEFAULT_WORKSPACE:-/config/workspace}"
else
exec \
s6-notifyoncheck -d -n 300 -w 1000 -c "nc -z 127.0.0.1 8443" \
/app/code-server/bin/code-server \
--bind-addr "[::]:8443" \
--user-data-dir /config/data \
--extensions-dir /config/extensions \
--disable-telemetry \
--auth "${AUTH}" \
--app-name "${PWA_APPNAME}" \
"${PROXY_DOMAIN_ARG}" \
"${DEFAULT_WORKSPACE:-/config/workspace}"
fi

View File

@ -3,7 +3,7 @@
_install=(/app/code-server/bin/code-server "--extensions-dir" "/config/extensions" "--install-extension") _install=(/app/code-server/bin/code-server "--extensions-dir" "/config/extensions" "--install-extension")
if [[ "$(whoami)" == "abc" ]]; then if [ "$(whoami)" == "abc" ]; then
"${_install[@]}" "$@" "${_install[@]}" "$@"
else else
s6-setuidgid abc "${_install[@]}" "$@" s6-setuidgid abc "${_install[@]}" "$@"