2022-09-29 15:47:57 +02:00
< p align = "right" >
< img src = "http://forthebadge.com/images/badges/built-with-love.svg" >
< img src = "http://forthebadge.com/images/badges/for-you.svg" >
< / p >
< p align = "center" >
2022-11-14 19:44:48 +01:00
< a href = "https://gitea.ocram85.com/CodeServer/arkanum/" >
2022-09-29 15:47:57 +02:00
< img
2022-11-14 19:44:48 +01:00
src="/CodeServer/arkanum/raw/branch/master/assets/social-logo.png"
2022-09-29 15:47:57 +02:00
alt="Container"
>
< / a >
< / p >
< h1 align = "center" >
2022-11-19 18:36:02 +01:00
🧙 Arkanum ✨ 🌌 ☄️ 💥
2022-09-29 15:47:57 +02:00
< / h1 >
< p align = "center" >
2022-11-22 16:27:14 +01:00
Code-Server container optimized for daily use.
2022-09-29 15:47:57 +02:00
< / p >
< p align = "center" >
2022-11-22 16:27:14 +01:00
< a href = "https://ci.ocram85.com/CodeServer/arkanum" >
2022-11-14 19:44:48 +01:00
< img src = "https://ci.ocram85.com/api/badges/CodeServer/arkanum/status.svg" alt = "Master Branch Build Status" >
2022-09-29 15:47:57 +02:00
< / a >
< / p >
2022-11-22 16:27:14 +01:00
## 🤖 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
2022-09-29 15:47:57 +02:00
2022-11-22 16:27:14 +01:00
## :book: Content
2022-11-09 15:31:07 +01:00
### 🚀 Starship prompt
2022-11-22 11:55:50 +01:00
The [Starship ](starship.rs ) prompt is added and enabled as default. Default config uses Emojis and FiraCode icons.
2022-11-09 15:31:07 +01:00
### 🔱 git config
2022-11-22 11:55:50 +01:00
Adds default git system config file with:
2022-11-09 15:31:07 +01:00
2022-11-22 11:55:50 +01:00
- code-server as default editor.
- disabled `aurocrlf` .
2022-11-09 15:31:07 +01:00
- enabled plain credential store for remote.
2022-11-22 11:55:50 +01:00
- added git log helper `lg1` + `lg2` .
- enabled bash completion for git command in integrated bash terminal.
2022-11-22 16:27:14 +01:00
2022-11-09 15:31:07 +01:00
> 💡 See [gitconfig-system](./gitconfig-system) for details.
2022-11-17 09:55:16 +01:00
### 🧙 Added `arkanum` helper script
2022-11-09 15:31:07 +01:00
2022-11-17 09:55:16 +01:00
Added `arkanum` to help installing common runtime in container.
2022-11-09 15:31:07 +01:00
This helps reducing the image size.
```
2022-11-17 09:55:16 +01:00
🧙 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.
2022-11-19 18:36:02 +01:00
gitea Installs gitea tools like the changelog generator.
2022-11-17 09:55:16 +01:00
golang Installs golang 1.19.3.
nodejs Installs latest NodeJs LTS version.
powershell Installs latest PowerShell LTS version.
2022-11-22 11:55:50 +01:00
--disable-motd Disables hint in new bash terminal.
2022-11-22 13:25:09 +01:00
--install-extensions Installs predefined recommended extensions.
2022-11-17 09:55:16 +01:00
--reset-codesetting Sets VS Code user setting with basic (Fira Code).
2022-11-22 11:55:50 +01:00
-h Prints this help message.
2022-11-17 09:55:16 +01:00
Example 1: arkanum dotnet
Example 2: arkanum golang nodejs
Example 3: arkanum --disable-motd
2022-11-09 15:31:07 +01:00
```
2022-11-22 11:55:50 +01:00
### 📝 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
2022-11-22 16:27:14 +01:00
- Set FiraCode as default font in editor.
2022-11-22 11:55:50 +01:00
- Tries to use alternate font names for FiraCode if its locally available.
2022-11-22 16:27:14 +01:00
- Sets FiraCode mono variant in terminal to enable icons used by starship prompt.
2022-11-22 11:55:50 +01:00
- Enables font ligatures
- Enables *auto save* and *format on save* .
- Disables auto update for extension.
2022-11-22 16:27:14 +01:00
- Disables VSCode telemetry
2022-11-22 11:55:50 +01:00
- 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 )
2022-11-09 15:31:07 +01:00
2022-11-22 16:27:14 +01:00
## 💣 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
```
2022-11-09 15:31:07 +01:00
## 💳 Credits
2022-11-21 20:00:59 +01:00
Akranum is based on the following projects and wouldn't be possible without:
2022-11-09 15:31:07 +01:00
2022-11-22 11:55:50 +01:00
- [microsoft/vscode ](https://github.com/microsoft/vscode ) - Visual Studio Code, OSS. `[MIT]`
2022-11-21 20:00:59 +01:00
- [coder/code-server ](https://github.com/coder/code-server ) - VSCode on a remote server, accessible through the browser. `[MIT]`
2022-11-22 11:55:50 +01:00
- [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 ).
2022-11-10 08:14:28 +01:00
2022-11-21 20:00:59 +01:00
## ⚖️ License (AGPLv3)
![AGPL ](https://www.gnu.org/graphics/agplv3-155x51.png )
2022-11-22 11:55:50 +01:00
```
2022-11-21 20:00:59 +01:00
Arkanum - Code-Server container optimized for daily use.
Copyright (C) 2022 "OCram85 < me @ ocram85 . com > "
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 < https: / / www . gnu . org / licenses / > .
2022-11-22 11:55:50 +01:00
```