Container

🧙 Arkanum ✨ 🌌 ☄️ 💥

Code-Server container optimized for daily use.

Master Branch Build Status

## 🤖 Quickstart ### ⚡ Get the image You can download the image from the gitea embedded container registry: `gitea.ocram85.com/codeserver/arkanum` with these tags: - `latest` - Is based on the lasted master banch commit. - `next` - Is a test build based on the pull request - `1`, `0.1`, `0.1.0` - tag based version. See [packages page](https://gitea.ocram85.com/CodeServer/-/packages/container/arkanum/latest) for available tags. ### Docker Swarm Stack This example shows how to run arkanum as additional swarm stack. This examples requires - an already running docker swarm cluster - a running traefik instance handling the http and https routes - also configured to watch for services in the `traefik-public` overlay network. > 💡 NOTE: For advanced config with available environment variables see [linuxserver/docker-code-server](https://github.com/linuxserver/docker-code-server) help. ```yaml version: "3.8" services: arkanum: image: gitea.ocram85.com/codeserver/arkanum:0.0.1 environment: - PUID=1000 - PGID=1000 - TZ=Europe/Berlin - PASSWORD=foo #optional #- HASHED_PASSWORD= #optional - SUDO_PASSWORD=foobar #optional #- SUDO_PASSWORD_HASH= #optional #- PROXY_DOMAIN=code-server.my.domain #optional - DEFAULT_WORKSPACE=/config/workspace deploy: replicas: 1 labels: - "traefik.enable=true" - "traefik.docker.network=traefik-public" - "traefik.http.routers.arkanum.rule=Host(`vscode.mydomain.com`)" - "traefik.http.routers.arkanum.tls.certresolver=myresolver" - "traefik.http.services.arkanum-srv.loadbalancer.server.port=8443" volumes: # store workspace and use config in volume. - codedata:/config # no need to expose the port. traefik acts as reverse proxy and handles the https access. #ports: # - 8443:8443 restart: unless-stopped networks: - arkanum-sphere - traefik-public volumes: codedata: networks: arkanum-sphere: traefik-public: external: true ``` ### Docker-Compose ### Docker CLI ## :book: Content ### 🚀 Starship prompt The [Starship](starship.rs) prompt is added and enabled as default. Default config uses Emojis and FiraCode icons. ### 🔱 git config Adds default git system config file with: - code-server as default editor. - disabled `aurocrlf`. - enabled plain credential store for remote. - added git log helper `lg1` + `lg2`. - enabled bash completion for git command in integrated bash terminal. > 💡 See [gitconfig-system](./gitconfig-system) for details. ### 🧙 Added `arkanum` helper script Added `arkanum` to help installing common runtime in container. This helps reducing the image size. ``` 🧙 arkanum ✨🌌☄️💥 is used to install optional runtimes for developing in a code-server container environment. Syntax: arkanum RUNTIME ... RUNTIME [dotnet|golang|nodejs|powershell] dotnet Installs latest LTS dotnet core sdk + runtime. gitea Installs gitea tools like the changelog generator. golang Installs golang 1.19.3. nodejs Installs latest NodeJs LTS version. powershell Installs latest PowerShell LTS version. --disable-motd Disables hint in new bash terminal. --install-extensions Installs predefined recommended extensions. --reset-codesetting Sets VS Code user setting with basic (Fira Code). -h Prints this help message. Example 1: arkanum dotnet Example 2: arkanum golang nodejs Example 3: arkanum --disable-motd ``` ### 📝 Fira Code (NerdFont patched) Added FiraCode as default font in editor and integrated terminal. The font files are embedded and can be used without local installation. ### VSCode default settings If your start the container or log in the first time, a default config file is deployed. This user setting defines the following stuff: - Use compact menu bar to avoid users with multiple menu bars. - Use *One Dark Pro Darker* theme - Use *vscode-icons* icon set - Set FiraCode as default font in editor. - Tries to use alternate font names for FiraCode if its locally available. - Sets FiraCode mono variant in terminal to enable icons used by starship prompt. - Enables font ligatures - Enables *auto save* and *format on save*. - Disables auto update for extension. - Disables VSCode telemetry - Disable confirm message for sync branches. Additionally we install these extensions on container startup: - [One Dark Pro](https://open-vsx.org/extension/zhuangtongfa/material-theme) theme - [vscode-icons](https://open-vsx.org/extension/vscode-icons-team/vscode-icons) icon set - [Gitlens](https://open-vsx.org/extension/eamodio/gitlens) ## 💣 Know Issues ### Default extensions installation timing error If the automatic installation of the default extension fails, you can always retry he installation with the following command: ```bash # restart the installation arkanum --install-extensions # Optional: reset the vscode user setting arkanum --reset-codesetting # Reload with command F1 + Developer: Reload Window ``` ## 💳 Credits Akranum is based on the following projects and wouldn't be possible without: - [microsoft/vscode](https://github.com/microsoft/vscode) - Visual Studio Code, OSS. `[MIT]` - [coder/code-server](https://github.com/coder/code-server) - VSCode on a remote server, accessible through the browser. `[MIT]` - [linuxserver/docker-code-server](https://github.com/linuxserver/docker-code-server) - docker image based for *coder/code-server*. `[GPL-3.0]` - A huge thanks to tuanpham for sharing his [code-server font patch](https://github.com/tuanpham-dev/code-server-font-patch). ## ⚖️ License (AGPLv3) ![AGPL](https://www.gnu.org/graphics/agplv3-155x51.png) ``` Arkanum - Code-Server container optimized for daily use. Copyright (C) 2022 "OCram85 " This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . ```