diff --git a/.github/workflows/pr-title-check.yml b/.github/workflows/pr-title-check.yml index 9bbc7d7..61dd6c1 100644 --- a/.github/workflows/pr-title-check.yml +++ b/.github/workflows/pr-title-check.yml @@ -19,7 +19,7 @@ jobs: run: | echo "Checking PR title: $PR_TITLE" - if [[ "$PR_TITLE" =~ ^\[(CHORE|REFACTOR|DOCUMENT|FEATURE|GENESIS|BUG|DUPLICATE)\]\ ]]; then + if [[ "$PR_TITLE" =~ ^\[(CHORE|REFACTOR|DOCUMENT|FEATURE|GENESIS|BUG|DUPLICATE|BOT)\]\ ]]; then echo "PR title format is valid." exit 0 fi @@ -33,4 +33,5 @@ jobs: echo " [GENESIS] ..." echo " [BUG] ..." echo " [DUPLICATE] ..." + echo " [BOT] ..." exit 1 \ No newline at end of file diff --git a/.gitignore b/.gitignore index c67f558..eaa4485 100644 --- a/.gitignore +++ b/.gitignore @@ -5,10 +5,10 @@ linuxusctl debug/ # Data file directory likely authentication info, user data, etc. -data/ +/data # User volumes for services, e.g., home directories, shared directories, etc. -volumes/ +/volumes # Logs and temporary files. logs/ @@ -16,4 +16,10 @@ tmp/ temp/ *.log *.tmp -*.temp \ No newline at end of file +*.temp + +# Deployment settings may contain local secrets; defaults live in the source tree. +/.env + +# Python migration helper/test bytecode. +__pycache__/ diff --git a/README.md b/README.md index 734f6f1..f1e3a67 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # LINUXUS -

+

Linuxus, a Docker-based service that provides Ubuntu shell environments via a web browser for Linux education

--- @@ -13,13 +13,14 @@ Linuxus enables instructors to provide per-user Linux environments without requi 🌐 Web-based shell access (no SSH required) 📁 Per-user persistent storage 🔒 Resource and permission control -⚙️ Fully configurable via YAML +📦 Single binary deployment with embedded defaults and system-wide storage
+⚙️ Configure via `.env`, generated by `linuxusctl init`
--- ## 🚀 Usage -Refer to the [Usage documentation](./doc/USAGE.md) for instructions on how to use this program. +Refer to the [Usage documentation](./docs/USAGE.md) for installation and the [Operations guide](./docs/OPERATIONS.md) for diagnostics, recovery, accounts, backups, classroom templates, and the admin interface. --- @@ -50,6 +51,6 @@ Please refer to [SECURITY.md](./SECURITY.md) for responsible disclosure instruct --- -## 🚧 Upcoming Features +## Operations -Nothing TODO. \ No newline at end of file +Operational diagnostics, systemd recovery, account management, backups and restores, resource limits, classroom templates, and an administrator interface are available. See [Operations](./docs/OPERATIONS.md). diff --git a/cfg/config.yml b/cfg/config.yml deleted file mode 100644 index 87b3922..0000000 --- a/cfg/config.yml +++ /dev/null @@ -1,81 +0,0 @@ -user_service: - container: - name_prefix: linuxus_user_ - network_name_prefix: linuxus_user_net_ - base_subnet_16: "10.10.0.0" - runtime: - uid: 1000 - gid: 1000 - linux_username: user - linux_hostname: linuxus - timezone: Asia/Seoul - limits: - user: - cpu: 1.5 - memory: 512M - pid: 128 - ulimits: - nofile: - soft: 1024 - hard: 2048 - disk: 512M - # network_bandwidth: 10mbit - # session_timeout: 3600 - admin: - cpu: 1.5 - memory: 512M - pid: 128 - ulimits: - nofile: - soft: 1024 - hard: 2048 - disk: 512M - # network_bandwidth: 10mbit - # session_timeout: 3600 - -auth_service: - container: - name: linuxus_auth - external_port: 8080 - runtime: - timezone: Asia/Seoul - service_url: - login: login - logout: logout - service: service - terminal: terminal - signup: signup - mounts: - host_auth_list_path: data/AUTH_LIST - container_auth_list_path: /data/AUTH_LIST - security: - session_secret: change-this-secret-before-production - trusted_proxies: "" - allow_signup: true - -manager_service: - container: - name: linuxus_manager - network: linuxus_manager_net - subnet: "10.11.0.0/24" - homes_dir: /vol/homes - share_dir: /vol/share - readonly_dir: /vol/readonly - user_management: - cleanup_timeout: 5m - auth_service: - connection_timeout: 30s - security: - session_secret: change-this-secret-before-production - admin_id: alpha - -volumes: - host: - volumes: volumes - homes: volumes/homes - share: volumes/share - readonly: volumes/readonly - container: - share: /home/share - readonly: /home/readonly - disk_limit: 1G \ No newline at end of file diff --git a/doc/USAGE.md b/doc/USAGE.md deleted file mode 100644 index 93e2ea2..0000000 --- a/doc/USAGE.md +++ /dev/null @@ -1,202 +0,0 @@ -# 🚀 Usage - -## 0. Clone Repository - -```bash -git clone https://github.com/elecbug/linuxus -cd linuxus -``` - ---- - -## 1. Install Dependencies - -### Go - -```bash -sudo snap install go --classic -``` - -### Docker - -```bash -sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -``` - ---- - -## 2. Build Controller - -Build the control CLI: - -```bash -./shell/build_ctl.sh -``` - -Generated executable: - -```bash -./linuxusctl help -``` - -For a more convenient CLI experience, enable bash completion support. - -Run the following command: - -```bash -source ./shell/linuxus-completion.bash -``` - -After enabling completion, you can use `TAB` to automatically complete commands and options. - ---- - -## 3. Run Service - -> [!IMPORTANT] -> `linuxusctl` is a project-local control binary. -> Do not move `linuxusctl` outside the Linuxus project root. -> It depends on `./src`, `./cfg`, and `./volume` relative to the project root. - -### 3.1 Start / Manage Services - -```bash -./linuxusctl