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