2022-09-29 15:47:57 +02:00
< p align = "center" >
2024-05-22 10:07:32 +02:00
< a href = "https://gitea.ocram85.com/arkanum/arkanum/" >
2022-09-29 15:47:57 +02:00
< img
2024-05-22 10:07:32 +02:00
src="https://gitea.ocram85.com/arkanum/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-25 09:56:03 +01:00
... is a Code-Server container optimized for daily use.
2022-09-29 15:47:57 +02:00
< / p >
< p align = "center" >
2024-05-22 10:07:32 +02:00
< a href = "https://ci.ocram85.com/arkanum/arkanum" >
< img src = "https://ci.ocram85.com/api/badges/arkanum/arkanum/status.svg" alt = "Master Branch Build Status" >
2022-09-29 15:47:57 +02:00
< / a >
2024-08-01 10:46:28 +02:00
< a href = "https://matrix.to/ #/#arkanum:matrix .org" rel = "noopener" target = "_blank" >
< img src = "https://matrix.to/img/matrix-badge.svg" alt = "Chat on Matrix" >
< / a >
< img alt = "Matrix" src = "https://img.shields.io/matrix/arkanum%3Amatrix.org" >
2022-09-29 15:47:57 +02:00
< / p >
2022-11-25 09:56:03 +01:00
## 🤖 Quickstart
### 1. ⚡ Get the image 📦
2024-05-22 10:07:32 +02:00
You can download the image from the gitea embedded container registry: `gitea.ocram85.com/arkanum/arkanum` with these tags:
2022-11-25 09:56:03 +01:00
- `latest` - Is based on the lasted master branch commit.
- `next` - Is a test build based on the pull request
2023-09-13 08:13:30 +02:00
- `1` , `0.1` , `0.1.0` , `1.0.0` - tag based version.
2023-01-04 16:17:42 +01:00
2024-05-22 10:07:32 +02:00
> **💡 NOTE: See the [packages page](https://gitea.ocram85.com/arkanum/-/packages/container/arkanum/latest) for latest version and all other available tags.**
2022-11-25 09:56:03 +01:00
2023-09-13 08:13:30 +02:00
The container images are also published to these registries:
- [Docker Hub ](https://hub.docker.com/r/ocram85/arkanum )
- Pull Endpoint: `ocram85/arkanum`
- [GitHub Container Registry ](https://github.com/OCram85/arkanum/pkgs/container/arkanum )
- Pull Endpoint: `ghcr.io/ocram85/arkanum`
2024-07-19 08:14:50 +02:00
- [Codeberg Packages ](https://codeberg.org/arkanum/-/packages/container/arkanum/next )
- Pull Endpoint: `codeberg.org/arkanum/arkanum`
2023-09-13 08:13:30 +02:00
2022-11-25 09:56:03 +01:00
### 2.a Run as Docker Swarm Stack
This example shows how to run arkanum as an additional swarm stack.
Therefore you need
- an already running docker swarm cluster,
- a running traefik instance handling the http and https routes,
- configured to expose services in the a ingress overlay network called `traefik-public` .
> ❗ **Warning:** Make sure to secure the access to arkanum with proper **authentication method** and use
> a trusted + **secure https connection**.
```yaml
2024-05-22 10:07:32 +02:00
version: '3.8'
2022-11-25 09:56:03 +01:00
services:
arkanum:
2024-05-22 10:07:32 +02:00
image: gitea.ocram85.com/arkanum/arkanum:1
2022-11-25 09:56:03 +01:00
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:
2024-05-22 10:07:32 +02:00
- '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'
2022-11-25 09:56:03 +01:00
volumes:
# store workspace and use config in volume.
- codedata:/config
2023-07-20 09:44:31 +02:00
# mount docker socket to manage host docker
- /var/run/docker.sock:/var/run/docker.sock
2022-11-25 09:56:03 +01:00
# no need to expose the port. traefik acts as reverse proxy and handles the https access.
#ports:
# - 8443:8443
networks:
- arkanum-sphere
- traefik-public
volumes:
codedata:
networks:
arkanum-sphere:
traefik-public:
external: true
```
> 💡 NOTE: For advanced config with additional environment variables see [linuxserver/docker-code-server](https://github.com/linuxserver/docker-code-server) help.
2024-05-22 10:07:32 +02:00
2022-11-25 09:56:03 +01:00
### 2.b Use Docker-Compose
This is a basic example for a `docker-compose` file from the [linuxserver/docker-code-server ](https://github.com/linuxserver/docker-code-server ) project.
See their [docs ](https://github.com/linuxserver/docker-code-server#parameters ) about a detailed help for advanced config parameters.
```yaml
---
2024-05-22 10:07:32 +02:00
version: '3.8'
2022-11-25 09:56:03 +01:00
services:
arkanum:
2024-05-22 10:07:32 +02:00
image: gitea.ocram85.com/arkanum/arkanum:1
2022-11-25 09:56:03 +01:00
container_name: code-server
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/London
- PASSWORD=password #optional
- HASHED_PASSWORD= #optional
- SUDO_PASSWORD=password #optional
- SUDO_PASSWORD_HASH= #optional
- PROXY_DOMAIN=code-server.my.domain #optional
- DEFAULT_WORKSPACE=/config/workspace #optional
volumes:
- /path/to/appdata/config:/config
ports:
- 8443:8443
restart: unless-stopped
```
### 3. 🦶 First Steps
After summon Arkanum your first steps should be to set your username and email in the git config:
```bash
2023-09-15 09:34:06 +02:00
arkanum git setup "my-name" "my-email"
2022-11-25 09:56:03 +01:00
```
2022-09-29 15:47:57 +02:00
2022-11-25 09:56:03 +01:00
And that's it. Now you're ready use arkanum as your daily remote code editor. 😄
## 📖 Content
< p align = "center" >
2024-05-22 10:07:32 +02:00
< a href = "https://gitea.ocram85.com/arkanum/arkanum/" >
2022-11-25 09:56:03 +01:00
< img
2024-05-22 10:07:32 +02:00
src="https://gitea.ocram85.com/arkanum/arkanum/raw/branch/master/assets/screen1.png"
2022-11-25 09:56:03 +01:00
alt="Screenshot1"
>
< / a >
< / p >
2022-11-09 15:31:07 +01:00
### 🚀 Starship prompt
2022-11-25 09:56:03 +01:00
We added the [Starship ](starship.rs ) prompt is as default in the integrated terminal. The default config uses Emojis and FiraCode icons.
2022-11-09 15:31:07 +01:00
### 🔱 git config
2022-11-25 09:56:03 +01:00
Added 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-25 09:56:03 +01:00
2022-11-09 15:31:07 +01:00
> 💡 See [gitconfig-system](./gitconfig-system) for details.
2022-11-25 09:56:03 +01:00
### 🧙 `arkanum` helper
2022-11-09 15:31:07 +01:00
2022-11-25 09:56:03 +01:00
Added `arkanum` to help installing common runtimes in container.
2022-11-09 15:31:07 +01:00
This helps reducing the image size.
```
2023-08-03 09:51:02 +02:00
🧙 arkanum ✨🌌☄️💥 is used to install optional tools for developing in a
2024-11-21 15:44:11 +01:00
code-server container environment.
2022-11-17 09:55:16 +01:00
2023-08-03 09:51:02 +02:00
Syntax: arkanum < flags > COMMAND OPTION ARGUMENT
COMMAND
config The config command is used to modify arkanum itself.
git The git command is a wrapper for git helpers.
install The install command is used to add different tools
help Shows this help text.
OPTION
config:
disable-motd Disables hint in new bash terminal.
2024-11-21 15:44:11 +01:00
install-extensions Installs predefined recommended extensions.
2023-08-03 09:51:02 +02:00
reset-codesettings Sets VS Code user setting with basic (Fira Code).
git:
setup Takes two arguments to setup the git client:
1) Username
2) Email address
install:
docker-cli Installs the latest docker-cli.
dotnet Installs latest LTS dotnet core sdk + runtime.
2024-11-21 15:44:11 +01:00
gitea Installs gitea tools like changelog and tea.
golang Installs golang 1.21.5.
2023-12-18 18:37:26 +01:00
bun Installs latest bun version.
2023-08-03 09:51:02 +02:00
nodejs Installs latest NodeJs LTS version using Volta.
volta Installs Volta as NodeJS version manager.
powershell Installs latest PowerShell LTS version.
2024-07-17 14:01:20 +02:00
lazygit Installs latest Lazygit binary.
2023-08-03 09:51:02 +02:00
2024-11-21 15:44:11 +01:00
session:
save Adds items from the install command to the session config.
restore Restores the saved session.
reset Resets the session config.
show Show currently defined session content.
2023-08-03 09:51:02 +02:00
Example 1: arkanum git setup "my-name" "my-email"
Example 2: arkanum install golang
Example 3: arkanum config disable-motd
2024-11-21 15:44:11 +01:00
Example 4: arkanum session save lazygit powershell gitea
2022-11-09 15:31:07 +01:00
```
2024-05-22 10:07:32 +02: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.
2022-11-25 09:56:03 +01:00
### 🦸 VSCode default settings
2022-11-22 11:55:50 +01:00
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.
2024-05-22 10:07:32 +02:00
- Use _One Dark Pro Darker_ theme
- Use _vscode-icons_ icon set
2022-11-25 09:56:03 +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-25 09:56:03 +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
2024-05-22 10:07:32 +02:00
- Enables _auto save_ and _format on save_ .
2022-11-22 11:55:50 +01:00
- Disables auto update for extension.
2022-11-25 09:56:03 +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-25 09:56:03 +01:00
## 💣 Known Issues
2023-07-19 09:34:25 +02:00
### Starship.rs
Starship detects workspaces as active python projects. It always appends the prompt
fragment `via 🐍 (lsiopy)` . For now I disabled the python module in starship.
2022-11-25 09:56:03 +01:00
### 🐛 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
2023-09-13 08:13:30 +02:00
arkanum config install-extensions
2022-11-25 09:56:03 +01:00
# Optional: reset the vscode user setting
2023-09-13 08:13:30 +02:00
arkanum config reset-codesettings
2022-11-25 09:56:03 +01:00
# Reload with command F1 + Developer: Reload Window
```
2024-05-22 10:07:32 +02:00
2022-11-25 09:56:03 +01:00
## 😡 We're Using GitHub Under Protest
This project is currently **mirrored** to GitHub. This is not ideal; GitHub is a
proprietary, trade-secret system that is not Free and Open Source Software
(FOSS). We are deeply concerned about using a proprietary system like GitHub
to develop our FOSS project. We have an
2024-05-22 10:07:32 +02:00
[open Gitea repository ](https://gitea.ocram85.com/arkanum/arkanum/issues ) where the
2022-11-25 09:56:03 +01:00
project contributors are actively discussing how we can move away from GitHub
in the long term. We urge you to read about the
[Give up GitHub ](https://GiveUpGitHub.org ) campaign from
[the Software Freedom Conservancy ](https://sfconservancy.org ) to understand
some of the reasons why GitHub is not a good place to host FOSS projects.
If you are a contributor who personally has already quit using GitHub, please
2024-05-22 10:07:32 +02:00
[check this resource ](https://gitea.ocram85.com/arkanum/arkanum ) for how to send us contributions without
2022-11-25 09:56:03 +01:00
using GitHub directly.
Any use of this project's code by GitHub Copilot, past or present, is done
2024-05-22 10:07:32 +02:00
without our permission. We do not consent to GitHub's use of this project's
2022-11-25 09:56:03 +01:00
code in Copilot.

## 🙏 Credits
2022-11-09 15:31:07 +01:00
2022-11-25 09:56:03 +01:00
Akranum is based on the following projects and wouldn't be possible without them:
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]`
2024-05-22 10:07:32 +02:00
- [linuxserver/docker-code-server ](https://github.com/linuxserver/docker-code-server ) - docker image based for _coder/code-server_ . `[GPL-3.0]`
2022-11-22 11:55:50 +01:00
- 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)

2024-05-22 10:07:32 +02:00
```text
2022-11-21 20:00:59 +01:00
Arkanum - Code-Server container optimized for daily use.
2022-11-25 09:56:03 +01:00
Copyright (C) 2022 "OCram85 < me @ocram85 .com > "
2022-11-21 20:00:59 +01:00
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
```