{"id":48464170,"url":"https://github.com/elecbug/linuxus","last_synced_at":"2026-04-18T08:01:42.285Z","repository":{"id":348623652,"uuid":"1199027667","full_name":"elecbug/linuxus","owner":"elecbug","description":"Linuxus, a Docker-based service that provides Ubuntu shell environments via a web browser for Linux education","archived":false,"fork":false,"pushed_at":"2026-04-13T06:44:23.000Z","size":877,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-04-13T08:29:52.635Z","etag":null,"topics":["bash","docker","linux","shell","webapp"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/elecbug.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-02T01:47:03.000Z","updated_at":"2026-04-13T06:42:27.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/elecbug/linuxus","commit_stats":null,"previous_names":["elecbug/linuxus"],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/elecbug/linuxus","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elecbug%2Flinuxus","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elecbug%2Flinuxus/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elecbug%2Flinuxus/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elecbug%2Flinuxus/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/elecbug","download_url":"https://codeload.github.com/elecbug/linuxus/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elecbug%2Flinuxus/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31961348,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T00:39:45.007Z","status":"online","status_checked_at":"2026-04-18T02:00:07.018Z","response_time":103,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bash","docker","linux","shell","webapp"],"created_at":"2026-04-07T04:01:57.001Z","updated_at":"2026-04-18T08:01:42.217Z","avatar_url":"https://github.com/elecbug.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# LINUXUS\n\n\u003e Linuxus, a Docker-based service that provides Ubuntu shell environments via a web browser for Linux education\n\n## 🌐 Actual Service\n\n\u003e ![LOGIN](./doc/fig/01-login.png)\n\u003e \n\n\u003e ![SHELL](./doc/fig/02-in_service.png)\n\u003e\n\n## 🚀 Usage\n\n0. Clone repository:\n\n   ```bash\n   git clone https://github.com/elecbug/linuxus\n   cd linuxus\n   ```\n\n1. If required packages (Go, Docker, etc.) are not installed, run the following:\n\n   ```bash\n   # Install Go package\n   sudo snap install go --classic\n   ```\n\n   ```bash\n   # Install Docker packages\n   ./util/docker_reinstall.sh\n   ```\n\n2. Build the hash generator:\n\n   ```bash\n   ./util/make_hash/build.sh\n   ```\n\n   This will generate the following executable:\n\n   ```bash\n   ls util/make_hash.out\n   ```\n\n3. Add the authentication file:\n\n   ```bash\n   mkdir -p src/data\n   touch src/data/AUTH_LIST\n   ```\n\n4. Create user accounts by appending credentials using:\n\n   ```bash\n   ./util/make_hash.out \u003cID\u003e \u003cPASSWORD\u003e \u003e\u003e src/data/AUTH_LIST\n   ```\n\n   You can change the **ADMIN account ID** by modifying the `ADMIN_USER_ID` value in the `src/config.env` file.\n   The default value is `alpha`.\n\n   ```bash\n   ...\n   ADMIN_USER_ID=alpha\n   ...\n   ```\n\n5. Start the services (containers) for each user:\n\n   ```bash\n   ./util/simple_build_and_run.sh \u003cOPTION\u003e\n   ```\n\n   **⚙️ Options**\n\n    You can pass the following options to control container behavior:\n\n    * **`--clear`**\n    Reset all user directories (volumes).\n\n    * **`--restart`**\n    Build compose and restart all user containers.\n\n    * **`--down`**\n    Stop all user containers.\n\n    * **`--up`**\n    Build compose and start all user containers. (`--down` not included)\n\n6. After running the service, a `src/volumes` directory will be created automatically.\n\n   Inside this directory:\n\n   * User directories are located under the `homes` folder.\n   * A shared directory (`share`) will be created.\n   * A read-only directory (`readonly`) will be created.\n\n   **Directory Structure**\n\n   ```\n   src/volumes/\n   ├── homes/\n   │   ├── \u003cUSER1\u003e/\n   │   ├── \u003cUSER2\u003e/\n   │   └── ...\n   ├── share/\n   └── readonly/\n   ```\n\n   **Directory Permissions**\n\n   * **User directories (`homes/\u003cUSER\u003e`)**\n\n     * Accessible only by the corresponding user.\n     * Mounted to `/home/\u003cUSER\u003e` inside each container.\n\n   * **`share` directory**\n\n     * Accessible by all users.\n     * Read, write, and execute permissions are allowed.\n     * Mounted to `/home/share` inside each container.\n\n   * **`readonly` directory**\n\n     * Read and execute permissions for all users.\n     * **Write access is restricted to the admin account only**.\n     * Mounted to `/home/readonly` inside each container.\n\n## 📄 License\n\nThis project is licensed under the [**MIT License**](./LICENSE).\n\n## 🌱 Open Source \u0026 Contributions\n\nThis project is open source, and contributions are always welcome.\n\n* Feel free to open issues for bugs, questions, or suggestions.\n* Pull requests (PRs) are highly encouraged.\n* Any form of contribution — code, documentation, or ideas — is appreciated.\n\n## 🚧 Upcoming Features\n\nWe are currently working on adding a **sign-up feature that can be used during runtime**.\n\nThis feature is under development and will be available in a future update.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felecbug%2Flinuxus","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Felecbug%2Flinuxus","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felecbug%2Flinuxus/lists"}