Skip to content

Iucasmaia/webtop-multi-session-manager

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 

Repository files navigation

Webtop Multi-Session Manager

Created by: Lucas Maia (github.com/iucasmaia)

An interactive Bash script for creating and managing multiple, isolated instances of linuxserver/webtop Docker containers on a single host.




English Documentation

An interactive Bash script for creating, managing, and deleting multiple, isolated instances of linuxserver/webtop (KDE) Docker containers. This tool is perfect for providing individual, browser-based remote desktop environments for multiple users on a single host.

Features

  • Interactive Menu: A simple, color-coded, menu-driven interface.
  • Automatic Port Allocation: Intelligently finds and assigns the next available pair of ports, preventing conflicts.
  • Flexible User & Permission Management:
    • Automatically creates system users on the host to manage file permissions.
    • Allows assigning session files to a single, existing user for centralized management.
    • Separates the Webtop login user from the underlying file system owner (PUID/PGID).
  • Full Lifecycle Management: Add, list, pause, unpause, view logs, change ownership, change passwords, and delete sessions with ease.
  • Data Isolation: Each session has its own dedicated configuration directory.
  • Robust Error Handling: Provides clear feedback on success or failure and includes graceful cancellation (Ctrl+C).

Prerequisites

Before running this script, ensure you have the following installed on your Linux host:

  1. Root Access: The script must be run as root to manage users and Docker.
  2. Docker: The Docker engine must be installed and running.
  3. Docker Compose: The Docker Compose plugin is required.
  4. ss command: Part of the iproute2 package, which is standard on most modern Linux distributions.

Installation and Setup

  1. Download the script: Save the script code as webtop-manager.sh (or any other name you prefer).

  2. Make it executable:

    chmod +x webtop-manager.sh
  3. First Run (Initial Setup): The first time you run the script, it will perform a one-time setup:

    • It creates the base directory /root/webtop.
    • It creates a non-login system user named webtop_user. This user can be used as a default owner for all session files if you prefer centralized permission management.

Usage

Simply run the script as root:

sudo ./webtop-manager.sh

You will be greeted by the main menu, where you can select an option.


Menu Options Explained

1. Add New Session

This option guides you through creating a new, isolated Webtop environment.

Process:

  1. Session Name: This will be the username inside the Webtop environment (e.g., john_doe).
  2. Password: The password for the Webtop user.
  3. Permission Management: This is a key step. You have two choices for who owns the session's files on the host machine:
    • [C]reate (Default): Creates a new system user on the host with the same name as the session (john_doe). This is great for strict isolation.
    • [E]xisting: Allows you to specify an existing host user (like the default webtop_user or any other) to own the files. This is useful for centralizing data management.

2. List All Sessions

Displays a clean, formatted table of all created Webtop sessions, including their port numbers and current status (e.g., running, paused, exited).

3. Pause Session

Temporarily suspends a running container, freezing its state and freeing up CPU resources.

4. Unpause Session

Resumes a paused container, making it active again.

5. View Session Logs

Streams the live logs (docker logs -f) for a specific session's container. This is essential for troubleshooting. Press Ctrl+C to stop viewing the logs and return to the script.

6. Change Session Owner (PUID/PGID)

A powerful feature to change the underlying file ownership of an existing session. The script updates the docker-compose.yml, changes file permissions, and gracefully restarts the container.

7. Change Session Password

Securely updates the login password for a Webtop session.

Process:

  1. Select the session to modify.
  2. Enter the new password (it will be hidden).
  3. The script will:
    • Update the PASSWORD environment variable in the docker-compose.yml file.
    • Recreate the container to apply the new password. The session's data is preserved.

8. Delete Session

Completely removes a Webtop session.

Process:

  1. The script stops and removes the Docker container and its associated network.
  2. CRITICAL: It asks for confirmation: Also delete the associated host user and all files in /root/webtop/session_name? (y/N).
    • y: This is a destructive action. It will permanently delete the session's configuration directory and remove the associated system user from the host.
    • N (Default): Only the container is removed. The configuration files and the host user (if created) are kept.

9. Exit

Exits the manager script.



Documentação em Português (Brasil)

Um script Bash interativo para criar, gerenciar e excluir múltiplas instâncias isoladas de contêineres Docker linuxserver/webtop (KDE). Esta ferramenta é perfeita para fornecer ambientes de desktop remoto individuais, baseados em navegador, para múltiplos usuários em um único servidor.

Funcionalidades

  • Menu Interativo: Uma interface simples, com cores e orientada por menus.
  • Alocação Automática de Portas: Encontra e atribui de forma inteligente o próximo par de portas disponível, prevenindo conflitos.
  • Gerenciamento Flexível de Usuários e Permissões:
    • Cria automaticamente usuários de sistema no servidor para gerenciar as permissões dos arquivos.
    • Permite atribuir os arquivos de uma sessão a um único usuário existente para um gerenciamento centralizado.
    • Separa o usuário de login do Webtop do proprietário dos arquivos no sistema (PUID/PGID).
  • Gerenciamento de Ciclo de Vida Completo: Adicione, liste, pause, retome, veja logs, altere o proprietário, altere senhas e exclua sessões com facilidade.
  • Isolamento de Dados: Cada sessão possui seu próprio diretório de configuração dedicado.
  • Tratamento Robusto de Erros: Fornece feedback claro sobre sucesso ou falha e inclui cancelamento seguro (Ctrl+C).

Pré-requisitos

Antes de executar o script, certifique-se de que os seguintes itens estão instalados em seu servidor Linux:

  1. Acesso Root: O script deve ser executado como root para gerenciar usuários e o Docker.
  2. Docker: O motor do Docker deve estar instalado e em execução.
  3. Docker Compose: O plugin do Docker Compose é necessário.
  4. Comando ss: Parte do pacote iproute2, que é padrão na maioria das distribuições Linux modernas.

Instalação e Configuração

  1. Baixe o script: Salve o código do script como webtop-manager.sh (ou qualquer outro nome de sua preferência).

  2. Torne-o executável:

    chmod +x webtop-manager.sh
  3. Primeira Execução (Configuração Inicial): Na primeira vez que você executar o script, ele realizará uma configuração única:

    • Criará o diretório base /root/webtop.
    • Criará um usuário de sistema sem login chamado webtop_user. Este usuário pode ser usado como proprietário padrão para todos os arquivos de sessão, caso você prefira um gerenciamento de permissões centralizado.

Como Usar

Simplesmente execute o script como root:

sudo ./webtop-manager.sh

Você será recebido pelo menu principal, onde poderá selecionar uma opção.


Detalhamento das Opções do Menu

1. Add new session (Adicionar nova sessão)

Esta opção guia você na criação de um novo ambiente Webtop isolado.

Processo:

  1. Nome da Sessão: Este será o nome de usuário dentro do ambiente Webtop (ex: joao_silva).
  2. Senha: A senha para o usuário do Webtop.
  3. Gerenciamento de Permissões: Você tem duas escolhas para definir quem será o dono dos arquivos da sessão no servidor:
    • [C]reate (Padrão): Cria um novo usuário de sistema no servidor com o mesmo nome da sessão (joao_silva).
    • [E]xisting: Permite que você especifique um usuário existente no servidor (como o padrão webtop_user) para ser o dono dos arquivos.

2. List all sessions (Listar todas as sessões)

Exibe uma tabela formatada de todas as sessões Webtop, incluindo suas portas e status atual (ex: running, paused, exited).

3. Pause session (Pausar sessão)

Suspende temporariamente um contêiner em execução, congelando seu estado e liberando recursos de CPU.

4. Unpause session (Retomar sessão)

Retoma um contêiner que estava pausado, tornando-o ativo novamente.

5. View session logs (Ver logs da sessão)

Exibe os logs ao vivo (docker logs -f) do contêiner de uma sessão. Essencial para diagnosticar problemas. Pressione Ctrl+C para parar de ver os logs.

6. Change session owner (Alterar proprietário da sessão)

Uma funcionalidade poderosa para alterar a propriedade dos arquivos de uma sessão. O script atualiza o docker-compose.yml, altera as permissões dos arquivos e reinicia o contêiner.

7. Change session password (Alterar senha da sessão)

Atualiza de forma segura a senha de login de uma sessão Webtop.

Processo:

  1. Selecione a sessão a ser modificada.
  2. Digite a nova senha (ela ficará oculta).
  3. O script irá:
    • Atualizar a variável de ambiente PASSWORD no arquivo docker-compose.yml.
    • Recriar o contêiner para aplicar a nova senha. Os dados da sessão são preservados.

8. Delete session (Excluir sessão)

Remove completamente uma sessão Webtop.

Processo:

  1. O script para e remove o contêiner Docker.
  2. CRÍTICO: Ele pede uma confirmação: Also delete the associated host user and all files in /root/webtop/session_name? (y/N).
    • y: Ação destrutiva. Excluirá permanentemente o diretório de configuração da sessão e removerá o usuário de sistema associado do servidor.
    • N (Padrão): Apenas o contêiner é removido. Os arquivos de configuração e o usuário do servidor (se criado) são mantidos.

9. Exit (Sair)

Encerra o script gerenciador.# Webtop Multi-Session Manager

Created by: Lucas Maia (github.com/iucasmaia)

An interactive Bash script for creating and managing multiple, isolated instances of linuxserver/webtop Docker containers on a single host.




English Documentation

An interactive Bash script for creating, managing, and deleting multiple, isolated instances of linuxserver/webtop (KDE) Docker containers. This tool is perfect for providing individual, browser-based remote desktop environments for multiple users on a single host.

Features

  • Interactive Menu: A simple, color-coded, menu-driven interface.
  • Automatic Port Allocation: Intelligently finds and assigns the next available pair of ports, preventing conflicts.
  • Flexible User & Permission Management:
    • Automatically creates system users on the host to manage file permissions.
    • Allows assigning session files to a single, existing user for centralized management.
    • Separates the Webtop login user from the underlying file system owner (PUID/PGID).
  • Full Lifecycle Management: Add, list, pause, unpause, view logs, change ownership, change passwords, and delete sessions with ease.
  • Data Isolation: Each session has its own dedicated configuration directory.
  • Robust Error Handling: Provides clear feedback on success or failure and includes graceful cancellation (Ctrl+C).

Prerequisites

Before running this script, ensure you have the following installed on your Linux host:

  1. Root Access: The script must be run as root to manage users and Docker.
  2. Docker: The Docker engine must be installed and running.
  3. Docker Compose: The Docker Compose plugin is required.
  4. ss command: Part of the iproute2 package, which is standard on most modern Linux distributions.

Installation and Setup

  1. Download the script: Save the script code as webtop-manager.sh (or any other name you prefer).

  2. Make it executable:

    chmod +x webtop-manager.sh
  3. First Run (Initial Setup): The first time you run the script, it will perform a one-time setup:

    • It creates the base directory /root/webtop.
    • It creates a non-login system user named webtop_user. This user can be used as a default owner for all session files if you prefer centralized permission management.

Usage

Simply run the script as root:

sudo ./webtop-manager.sh

You will be greeted by the main menu, where you can select an option.


Menu Options Explained

1. Add New Session

This option guides you through creating a new, isolated Webtop environment.

Process:

  1. Session Name: This will be the username inside the Webtop environment (e.g., john_doe).
  2. Password: The password for the Webtop user.
  3. Permission Management: This is a key step. You have two choices for who owns the session's files on the host machine:
    • [C]reate (Default): Creates a new system user on the host with the same name as the session (john_doe). This is great for strict isolation.
    • [E]xisting: Allows you to specify an existing host user (like the default webtop_user or any other) to own the files. This is useful for centralizing data management.

2. List All Sessions

Displays a clean, formatted table of all created Webtop sessions, including their port numbers and current status (e.g., running, paused, exited).

3. Pause Session

Temporarily suspends a running container, freezing its state and freeing up CPU resources.

4. Unpause Session

Resumes a paused container, making it active again.

5. View Session Logs

Streams the live logs (docker logs -f) for a specific session's container. This is essential for troubleshooting. Press Ctrl+C to stop viewing the logs and return to the script.

6. Change Session Owner (PUID/PGID)

A powerful feature to change the underlying file ownership of an existing session. The script updates the docker-compose.yml, changes file permissions, and gracefully restarts the container.

7. Change Session Password

Securely updates the login password for a Webtop session.

Process:

  1. Select the session to modify.
  2. Enter the new password (it will be hidden).
  3. The script will:
    • Update the PASSWORD environment variable in the docker-compose.yml file.
    • Recreate the container to apply the new password. The session's data is preserved.

8. Delete Session

Completely removes a Webtop session.

Process:

  1. The script stops and removes the Docker container and its associated network.
  2. CRITICAL: It asks for confirmation: Also delete the associated host user and all files in /root/webtop/session_name? (y/N).
    • y: This is a destructive action. It will permanently delete the session's configuration directory and remove the associated system user from the host.
    • N (Default): Only the container is removed. The configuration files and the host user (if created) are kept.

9. Exit

Exits the manager script.



Documentação em Português (Brasil)

Um script Bash interativo para criar, gerenciar e excluir múltiplas instâncias isoladas de contêineres Docker linuxserver/webtop (KDE). Esta ferramenta é perfeita para fornecer ambientes de desktop remoto individuais, baseados em navegador, para múltiplos usuários em um único servidor.

Funcionalidades

  • Menu Interativo: Uma interface simples, com cores e orientada por menus.
  • Alocação Automática de Portas: Encontra e atribui de forma inteligente o próximo par de portas disponível, prevenindo conflitos.
  • Gerenciamento Flexível de Usuários e Permissões:
    • Cria automaticamente usuários de sistema no servidor para gerenciar as permissões dos arquivos.
    • Permite atribuir os arquivos de uma sessão a um único usuário existente para um gerenciamento centralizado.
    • Separa o usuário de login do Webtop do proprietário dos arquivos no sistema (PUID/PGID).
  • Gerenciamento de Ciclo de Vida Completo: Adicione, liste, pause, retome, veja logs, altere o proprietário, altere senhas e exclua sessões com facilidade.
  • Isolamento de Dados: Cada sessão possui seu próprio diretório de configuração dedicado.
  • Tratamento Robusto de Erros: Fornece feedback claro sobre sucesso ou falha e inclui cancelamento seguro (Ctrl+C).

Pré-requisitos

Antes de executar o script, certifique-se de que os seguintes itens estão instalados em seu servidor Linux:

  1. Acesso Root: O script deve ser executado como root para gerenciar usuários e o Docker.
  2. Docker: O motor do Docker deve estar instalado e em execução.
  3. Docker Compose: O plugin do Docker Compose é necessário.
  4. Comando ss: Parte do pacote iproute2, que é padrão na maioria das distribuições Linux modernas.

Instalação e Configuração

  1. Baixe o script: Salve o código do script como webtop-manager.sh (ou qualquer outro nome de sua preferência).

  2. Torne-o executável:

    chmod +x webtop-manager.sh
  3. Primeira Execução (Configuração Inicial): Na primeira vez que você executar o script, ele realizará uma configuração única:

    • Criará o diretório base /root/webtop.
    • Criará um usuário de sistema sem login chamado webtop_user. Este usuário pode ser usado como proprietário padrão para todos os arquivos de sessão, caso você prefira um gerenciamento de permissões centralizado.

Como Usar

Simplesmente execute o script como root:

sudo ./webtop-manager.sh

Você será recebido pelo menu principal, onde poderá selecionar uma opção.


Detalhamento das Opções do Menu

1. Add new session (Adicionar nova sessão)

Esta opção guia você na criação de um novo ambiente Webtop isolado.

Processo:

  1. Nome da Sessão: Este será o nome de usuário dentro do ambiente Webtop (ex: joao_silva).
  2. Senha: A senha para o usuário do Webtop.
  3. Gerenciamento de Permissões: Você tem duas escolhas para definir quem será o dono dos arquivos da sessão no servidor:
    • [C]reate (Padrão): Cria um novo usuário de sistema no servidor com o mesmo nome da sessão (joao_silva).
    • [E]xisting: Permite que você especifique um usuário existente no servidor (como o padrão webtop_user) para ser o dono dos arquivos.

2. List all sessions (Listar todas as sessões)

Exibe uma tabela formatada de todas as sessões Webtop, incluindo suas portas e status atual (ex: running, paused, exited).

3. Pause session (Pausar sessão)

Suspende temporariamente um contêiner em execução, congelando seu estado e liberando recursos de CPU.

4. Unpause session (Retomar sessão)

Retoma um contêiner que estava pausado, tornando-o ativo novamente.

5. View session logs (Ver logs da sessão)

Exibe os logs ao vivo (docker logs -f) do contêiner de uma sessão. Essencial para diagnosticar problemas. Pressione Ctrl+C para parar de ver os logs.

6. Change session owner (Alterar proprietário da sessão)

Uma funcionalidade poderosa para alterar a propriedade dos arquivos de uma sessão. O script atualiza o docker-compose.yml, altera as permissões dos arquivos e reinicia o contêiner.

7. Change session password (Alterar senha da sessão)

Atualiza de forma segura a senha de login de uma sessão Webtop.

Processo:

  1. Selecione a sessão a ser modificada.
  2. Digite a nova senha (ela ficará oculta).
  3. O script irá:
    • Atualizar a variável de ambiente PASSWORD no arquivo docker-compose.yml.
    • Recriar o contêiner para aplicar a nova senha. Os dados da sessão são preservados.

8. Delete session (Excluir sessão)

Remove completamente uma sessão Webtop.

Processo:

  1. O script para e remove o contêiner Docker.
  2. CRÍTICO: Ele pede uma confirmação: Also delete the associated host user and all files in /root/webtop/session_name? (y/N).
    • y: Ação destrutiva. Excluirá permanentemente o diretório de configuração da sessão e removerá o usuário de sistema associado do servidor.
    • N (Padrão): Apenas o contêiner é removido. Os arquivos de configuração e o usuário do servidor (se criado) são mantidos.

9. Exit (Sair)

Encerra o script gerenciador.k# Webtop Multi-Session Manager

Created by: Lucas Maia (github.com/iucasmaia)

An interactive Bash script for creating and managing multiple, isolated instances of linuxserver/webtop Docker containers on a single host.




English Documentation

An interactive Bash script for creating, managing, and deleting multiple, isolated instances of linuxserver/webtop (KDE) Docker containers. This tool is perfect for providing individual, browser-based remote desktop environments for multiple users on a single host.

Features

  • Interactive Menu: A simple, color-coded, menu-driven interface.
  • Automatic Port Allocation: Intelligently finds and assigns the next available pair of ports, preventing conflicts.
  • Flexible User & Permission Management:
    • Automatically creates system users on the host to manage file permissions.
    • Allows assigning session files to a single, existing user for centralized management.
    • Separates the Webtop login user from the underlying file system owner (PUID/PGID).
  • Full Lifecycle Management: Add, list, pause, unpause, view logs, change ownership, change passwords, and delete sessions with ease.
  • Data Isolation: Each session has its own dedicated configuration directory.
  • Robust Error Handling: Provides clear feedback on success or failure and includes graceful cancellation (Ctrl+C).

Prerequisites

Before running this script, ensure you have the following installed on your Linux host:

  1. Root Access: The script must be run as root to manage users and Docker.
  2. Docker: The Docker engine must be installed and running.
  3. Docker Compose: The Docker Compose plugin is required.
  4. ss command: Part of the iproute2 package, which is standard on most modern Linux distributions.

Installation and Setup

  1. Download the script: Save the script code as webtop-manager.sh (or any other name you prefer).

  2. Make it executable:

    chmod +x webtop-manager.sh
  3. First Run (Initial Setup): The first time you run the script, it will perform a one-time setup:

    • It creates the base directory /root/webtop.
    • It creates a non-login system user named webtop_user. This user can be used as a default owner for all session files if you prefer centralized permission management.

Usage

Simply run the script as root:

sudo ./webtop-manager.sh

You will be greeted by the main menu, where you can select an option.


Menu Options Explained

1. Add New Session

This option guides you through creating a new, isolated Webtop environment.

Process:

  1. Session Name: This will be the username inside the Webtop environment (e.g., john_doe).
  2. Password: The password for the Webtop user.
  3. Permission Management: This is a key step. You have two choices for who owns the session's files on the host machine:
    • [C]reate (Default): Creates a new system user on the host with the same name as the session (john_doe). This is great for strict isolation.
    • [E]xisting: Allows you to specify an existing host user (like the default webtop_user or any other) to own the files. This is useful for centralizing data management.

2. List All Sessions

Displays a clean, formatted table of all created Webtop sessions, including their port numbers and current status (e.g., running, paused, exited).

3. Pause Session

Temporarily suspends a running container, freezing its state and freeing up CPU resources.

4. Unpause Session

Resumes a paused container, making it active again.

5. View Session Logs

Streams the live logs (docker logs -f) for a specific session's container. This is essential for troubleshooting. Press Ctrl+C to stop viewing the logs and return to the script.

6. Change Session Owner (PUID/PGID)

A powerful feature to change the underlying file ownership of an existing session. The script updates the docker-compose.yml, changes file permissions, and gracefully restarts the container.

7. Change Session Password

Securely updates the login password for a Webtop session.

Process:

  1. Select the session to modify.
  2. Enter the new password (it will be hidden).
  3. The script will:
    • Update the PASSWORD environment variable in the docker-compose.yml file.
    • Recreate the container to apply the new password. The session's data is preserved.

8. Delete Session

Completely removes a Webtop session.

Process:

  1. The script stops and removes the Docker container and its associated network.
  2. CRITICAL: It asks for confirmation: Also delete the associated host user and all files in /root/webtop/session_name? (y/N).
    • y: This is a destructive action. It will permanently delete the session's configuration directory and remove the associated system user from the host.
    • N (Default): Only the container is removed. The configuration files and the host user (if created) are kept.

9. Exit

Exits the manager script.



Documentação em Português (Brasil)

Um script Bash interativo para criar, gerenciar e excluir múltiplas instâncias isoladas de contêineres Docker linuxserver/webtop (KDE). Esta ferramenta é perfeita para fornecer ambientes de desktop remoto individuais, baseados em navegador, para múltiplos usuários em um único servidor.

Funcionalidades

  • Menu Interativo: Uma interface simples, com cores e orientada por menus.
  • Alocação Automática de Portas: Encontra e atribui de forma inteligente o próximo par de portas disponível, prevenindo conflitos.
  • Gerenciamento Flexível de Usuários e Permissões:
    • Cria automaticamente usuários de sistema no servidor para gerenciar as permissões dos arquivos.
    • Permite atribuir os arquivos de uma sessão a um único usuário existente para um gerenciamento centralizado.
    • Separa o usuário de login do Webtop do proprietário dos arquivos no sistema (PUID/PGID).
  • Gerenciamento de Ciclo de Vida Completo: Adicione, liste, pause, retome, veja logs, altere o proprietário, altere senhas e exclua sessões com facilidade.
  • Isolamento de Dados: Cada sessão possui seu próprio diretório de configuração dedicado.
  • Tratamento Robusto de Erros: Fornece feedback claro sobre sucesso ou falha e inclui cancelamento seguro (Ctrl+C).

Pré-requisitos

Antes de executar o script, certifique-se de que os seguintes itens estão instalados em seu servidor Linux:

  1. Acesso Root: O script deve ser executado como root para gerenciar usuários e o Docker.
  2. Docker: O motor do Docker deve estar instalado e em execução.
  3. Docker Compose: O plugin do Docker Compose é necessário.
  4. Comando ss: Parte do pacote iproute2, que é padrão na maioria das distribuições Linux modernas.

Instalação e Configuração

  1. Baixe o script: Salve o código do script como webtop-manager.sh (ou qualquer outro nome de sua preferência).

  2. Torne-o executável:

    chmod +x webtop-manager.sh
  3. Primeira Execução (Configuração Inicial): Na primeira vez que você executar o script, ele realizará uma configuração única:

    • Criará o diretório base /root/webtop.
    • Criará um usuário de sistema sem login chamado webtop_user. Este usuário pode ser usado como proprietário padrão para todos os arquivos de sessão, caso você prefira um gerenciamento de permissões centralizado.

Como Usar

Simplesmente execute o script como root:

sudo ./webtop-manager.sh

Você será recebido pelo menu principal, onde poderá selecionar uma opção.


Detalhamento das Opções do Menu

1. Add new session (Adicionar nova sessão)

Esta opção guia você na criação de um novo ambiente Webtop isolado.

Processo:

  1. Nome da Sessão: Este será o nome de usuário dentro do ambiente Webtop (ex: joao_silva).
  2. Senha: A senha para o usuário do Webtop.
  3. Gerenciamento de Permissões: Você tem duas escolhas para definir quem será o dono dos arquivos da sessão no servidor:
    • [C]reate (Padrão): Cria um novo usuário de sistema no servidor com o mesmo nome da sessão (joao_silva).
    • [E]xisting: Permite que você especifique um usuário existente no servidor (como o padrão webtop_user) para ser o dono dos arquivos.

2. List all sessions (Listar todas as sessões)

Exibe uma tabela formatada de todas as sessões Webtop, incluindo suas portas e status atual (ex: running, paused, exited).

3. Pause session (Pausar sessão)

Suspende temporariamente um contêiner em execução, congelando seu estado e liberando recursos de CPU.

4. Unpause session (Retomar sessão)

Retoma um contêiner que estava pausado, tornando-o ativo novamente.

5. View session logs (Ver logs da sessão)

Exibe os logs ao vivo (docker logs -f) do contêiner de uma sessão. Essencial para diagnosticar problemas. Pressione Ctrl+C para parar de ver os logs.

6. Change session owner (Alterar proprietário da sessão)

Uma funcionalidade poderosa para alterar a propriedade dos arquivos de uma sessão. O script atualiza o docker-compose.yml, altera as permissões dos arquivos e reinicia o contêiner.

7. Change session password (Alterar senha da sessão)

Atualiza de forma segura a senha de login de uma sessão Webtop.

Processo:

  1. Selecione a sessão a ser modificada.
  2. Digite a nova senha (ela ficará oculta).
  3. O script irá:
    • Atualizar a variável de ambiente PASSWORD no arquivo docker-compose.yml.
    • Recriar o contêiner para aplicar a nova senha. Os dados da sessão são preservados.

8. Delete session (Excluir sessão)

Remove completamente uma sessão Webtop.

Processo:

  1. O script para e remove o contêiner Docker.
  2. CRÍTICO: Ele pede uma confirmação: Also delete the associated host user and all files in /root/webtop/session_name? (y/N).
    • y: Ação destrutiva. Excluirá permanentemente o diretório de configuração da sessão e removerá o usuário de sistema associado do servidor.
    • N (Padrão): Apenas o contêiner é removido. Os arquivos de configuração e o usuário do servidor (se criado) são mantidos.

9. Exit (Sair)

Encerra o script gerenciador.# Webtop Multi-Session Manager

Created by: Lucas Maia (github.com/iucasmaia)

An interactive Bash script for creating and managing multiple, isolated instances of linuxserver/webtop Docker containers on a single host.




English Documentation

An interactive Bash script for creating, managing, and deleting multiple, isolated instances of linuxserver/webtop (KDE) Docker containers. This tool is perfect for providing individual, browser-based remote desktop environments for multiple users on a single host.

Features

  • Interactive Menu: A simple, color-coded, menu-driven interface.
  • Automatic Port Allocation: Intelligently finds and assigns the next available pair of ports, preventing conflicts.
  • Flexible User & Permission Management:
    • Automatically creates system users on the host to manage file permissions.
    • Allows assigning session files to a single, existing user for centralized management.
    • Separates the Webtop login user from the underlying file system owner (PUID/PGID).
  • Full Lifecycle Management: Add, list, pause, unpause, view logs, change ownership, change passwords, and delete sessions with ease.
  • Data Isolation: Each session has its own dedicated configuration directory.
  • Robust Error Handling: Provides clear feedback on success or failure and includes graceful cancellation (Ctrl+C).

Prerequisites

Before running this script, ensure you have the following installed on your Linux host:

  1. Root Access: The script must be run as root to manage users and Docker.
  2. Docker: The Docker engine must be installed and running.
  3. Docker Compose: The Docker Compose plugin is required.
  4. ss command: Part of the iproute2 package, which is standard on most modern Linux distributions.

Installation and Setup

  1. Download the script: Save the script code as webtop-manager.sh (or any other name you prefer).

  2. Make it executable:

    chmod +x webtop-manager.sh
  3. First Run (Initial Setup): The first time you run the script, it will perform a one-time setup:

    • It creates the base directory /root/webtop.
    • It creates a non-login system user named webtop_user. This user can be used as a default owner for all session files if you prefer centralized permission management.

Usage

Simply run the script as root:

sudo ./webtop-manager.sh

You will be greeted by the main menu, where you can select an option.


Menu Options Explained

1. Add New Session

This option guides you through creating a new, isolated Webtop environment.

Process:

  1. Session Name: This will be the username inside the Webtop environment (e.g., john_doe).
  2. Password: The password for the Webtop user.
  3. Permission Management: This is a key step. You have two choices for who owns the session's files on the host machine:
    • [C]reate (Default): Creates a new system user on the host with the same name as the session (john_doe). This is great for strict isolation.
    • [E]xisting: Allows you to specify an existing host user (like the default webtop_user or any other) to own the files. This is useful for centralizing data management.

2. List All Sessions

Displays a clean, formatted table of all created Webtop sessions, including their port numbers and current status (e.g., running, paused, exited).

3. Pause Session

Temporarily suspends a running container, freezing its state and freeing up CPU resources.

4. Unpause Session

Resumes a paused container, making it active again.

5. View Session Logs

Streams the live logs (docker logs -f) for a specific session's container. This is essential for troubleshooting. Press Ctrl+C to stop viewing the logs and return to the script.

6. Change Session Owner (PUID/PGID)

A powerful feature to change the underlying file ownership of an existing session. The script updates the docker-compose.yml, changes file permissions, and gracefully restarts the container.

7. Change Session Password

Securely updates the login password for a Webtop session.

Process:

  1. Select the session to modify.
  2. Enter the new password (it will be hidden).
  3. The script will:
    • Update the PASSWORD environment variable in the docker-compose.yml file.
    • Recreate the container to apply the new password. The session's data is preserved.

8. Delete Session

Completely removes a Webtop session.

Process:

  1. The script stops and removes the Docker container and its associated network.
  2. CRITICAL: It asks for confirmation: Also delete the associated host user and all files in /root/webtop/session_name? (y/N).
    • y: This is a destructive action. It will permanently delete the session's configuration directory and remove the associated system user from the host.
    • N (Default): Only the container is removed. The configuration files and the host user (if created) are kept.

9. Exit

Exits the manager script.



Documentação em Português (Brasil)

Um script Bash interativo para criar, gerenciar e excluir múltiplas instâncias isoladas de contêineres Docker linuxserver/webtop (KDE). Esta ferramenta é perfeita para fornecer ambientes de desktop remoto individuais, baseados em navegador, para múltiplos usuários em um único servidor.

Funcionalidades

  • Menu Interativo: Uma interface simples, com cores e orientada por menus.
  • Alocação Automática de Portas: Encontra e atribui de forma inteligente o próximo par de portas disponível, prevenindo conflitos.
  • Gerenciamento Flexível de Usuários e Permissões:
    • Cria automaticamente usuários de sistema no servidor para gerenciar as permissões dos arquivos.
    • Permite atribuir os arquivos de uma sessão a um único usuário existente para um gerenciamento centralizado.
    • Separa o usuário de login do Webtop do proprietário dos arquivos no sistema (PUID/PGID).
  • Gerenciamento de Ciclo de Vida Completo: Adicione, liste, pause, retome, veja logs, altere o proprietário, altere senhas e exclua sessões com facilidade.
  • Isolamento de Dados: Cada sessão possui seu próprio diretório de configuração dedicado.
  • Tratamento Robusto de Erros: Fornece feedback claro sobre sucesso ou falha e inclui cancelamento seguro (Ctrl+C).

Pré-requisitos

Antes de executar o script, certifique-se de que os seguintes itens estão instalados em seu servidor Linux:

  1. Acesso Root: O script deve ser executado como root para gerenciar usuários e o Docker.
  2. Docker: O motor do Docker deve estar instalado e em execução.
  3. Docker Compose: O plugin do Docker Compose é necessário.
  4. Comando ss: Parte do pacote iproute2, que é padrão na maioria das distribuições Linux modernas.

Instalação e Configuração

  1. Baixe o script: Salve o código do script como webtop-manager.sh (ou qualquer outro nome de sua preferência).

  2. Torne-o executável:

    chmod +x webtop-manager.sh
  3. Primeira Execução (Configuração Inicial): Na primeira vez que você executar o script, ele realizará uma configuração única:

    • Criará o diretório base /root/webtop.
    • Criará um usuário de sistema sem login chamado webtop_user. Este usuário pode ser usado como proprietário padrão para todos os arquivos de sessão, caso você prefira um gerenciamento de permissões centralizado.

Como Usar

Simplesmente execute o script como root:

sudo ./webtop-manager.sh

Você será recebido pelo menu principal, onde poderá selecionar uma opção.


Detalhamento das Opções do Menu

1. Add new session (Adicionar nova sessão)

Esta opção guia você na criação de um novo ambiente Webtop isolado.

Processo:

  1. Nome da Sessão: Este será o nome de usuário dentro do ambiente Webtop (ex: joao_silva).
  2. Senha: A senha para o usuário do Webtop.
  3. Gerenciamento de Permissões: Você tem duas escolhas para definir quem será o dono dos arquivos da sessão no servidor:
    • [C]reate (Padrão): Cria um novo usuário de sistema no servidor com o mesmo nome da sessão (joao_silva).
    • [E]xisting: Permite que você especifique um usuário existente no servidor (como o padrão webtop_user) para ser o dono dos arquivos.

2. List all sessions (Listar todas as sessões)

Exibe uma tabela formatada de todas as sessões Webtop, incluindo suas portas e status atual (ex: running, paused, exited).

3. Pause session (Pausar sessão)

Suspende temporariamente um contêiner em execução, congelando seu estado e liberando recursos de CPU.

4. Unpause session (Retomar sessão)

Retoma um contêiner que estava pausado, tornando-o ativo novamente.

5. View session logs (Ver logs da sessão)

Exibe os logs ao vivo (docker logs -f) do contêiner de uma sessão. Essencial para diagnosticar problemas. Pressione Ctrl+C para parar de ver os logs.

6. Change session owner (Alterar proprietário da sessão)

Uma funcionalidade poderosa para alterar a propriedade dos arquivos de uma sessão. O script atualiza o docker-compose.yml, altera as permissões dos arquivos e reinicia o contêiner.

7. Change session password (Alterar senha da sessão)

Atualiza de forma segura a senha de login de uma sessão Webtop.

Processo:

  1. Selecione a sessão a ser modificada.
  2. Digite a nova senha (ela ficará oculta).
  3. O script irá:
    • Atualizar a variável de ambiente PASSWORD no arquivo docker-compose.yml.
    • Recriar o contêiner para aplicar a nova senha. Os dados da sessão são preservados.

8. Delete session (Excluir sessão)

Remove completamente uma sessão Webtop.

Processo:

  1. O script para e remove o contêiner Docker.
  2. CRÍTICO: Ele pede uma confirmação: Also delete the associated host user and all files in /root/webtop/session_name? (y/N).
    • y: Ação destrutiva. Excluirá permanentemente o diretório de configuração da sessão e removerá o usuário de sistema associado do servidor.
    • N (Padrão): Apenas o contêiner é removido. Os arquivos de configuração e o usuário do servidor (se criado) são mantidos.

9. Exit (Sair)

Encerra o script gerenciador.# Webtop Multi-Session Manager

Created by: Lucas Maia (github.com/iucasmaia)

An interactive Bash script for creating and managing multiple, isolated instances of linuxserver/webtop Docker containers on a single host.




English Documentation

An interactive Bash script for creating, managing, and deleting multiple, isolated instances of linuxserver/webtop (KDE) Docker containers. This tool is perfect for providing individual, browser-based remote desktop environments for multiple users on a single host.

Features

  • Interactive Menu: A simple, color-coded, menu-driven interface.
  • Automatic Port Allocation: Intelligently finds and assigns the next available pair of ports, preventing conflicts.
  • Flexible User & Permission Management:
    • Automatically creates system users on the host to manage file permissions.
    • Allows assigning session files to a single, existing user for centralized management.
    • Separates the Webtop login user from the underlying file system owner (PUID/PGID).
  • Full Lifecycle Management: Add, list, pause, unpause, view logs, change ownership, change passwords, and delete sessions with ease.
  • Data Isolation: Each session has its own dedicated configuration directory.
  • Robust Error Handling: Provides clear feedback on success or failure and includes graceful cancellation (Ctrl+C).

Prerequisites

Before running this script, ensure you have the following installed on your Linux host:

  1. Root Access: The script must be run as root to manage users and Docker.
  2. Docker: The Docker engine must be installed and running.
  3. Docker Compose: The Docker Compose plugin is required.
  4. ss command: Part of the iproute2 package, which is standard on most modern Linux distributions.

Installation and Setup

  1. Download the script: Save the script code as webtop-manager.sh (or any other name you prefer).

  2. Make it executable:

    chmod +x webtop-manager.sh
  3. First Run (Initial Setup): The first time you run the script, it will perform a one-time setup:

    • It creates the base directory /root/webtop.
    • It creates a non-login system user named webtop_user. This user can be used as a default owner for all session files if you prefer centralized permission management.

Usage

Simply run the script as root:

sudo ./webtop-manager.sh

You will be greeted by the main menu, where you can select an option.


Menu Options Explained

1. Add New Session

This option guides you through creating a new, isolated Webtop environment.

Process:

  1. Session Name: This will be the username inside the Webtop environment (e.g., john_doe).
  2. Password: The password for the Webtop user.
  3. Permission Management: This is a key step. You have two choices for who owns the session's files on the host machine:
    • [C]reate (Default): Creates a new system user on the host with the same name as the session (john_doe). This is great for strict isolation.
    • [E]xisting: Allows you to specify an existing host user (like the default webtop_user or any other) to own the files. This is useful for centralizing data management.

2. List All Sessions

Displays a clean, formatted table of all created Webtop sessions, including their port numbers and current status (e.g., running, paused, exited).

3. Pause Session

Temporarily suspends a running container, freezing its state and freeing up CPU resources.

4. Unpause Session

Resumes a paused container, making it active again.

5. View Session Logs

Streams the live logs (docker logs -f) for a specific session's container. This is essential for troubleshooting. Press Ctrl+C to stop viewing the logs and return to the script.

6. Change Session Owner (PUID/PGID)

A powerful feature to change the underlying file ownership of an existing session. The script updates the docker-compose.yml, changes file permissions, and gracefully restarts the container.

7. Change Session Password

Securely updates the login password for a Webtop session.

Process:

  1. Select the session to modify.
  2. Enter the new password (it will be hidden).
  3. The script will:
    • Update the PASSWORD environment variable in the docker-compose.yml file.
    • Recreate the container to apply the new password. The session's data is preserved.

8. Delete Session

Completely removes a Webtop session.

Process:

  1. The script stops and removes the Docker container and its associated network.
  2. CRITICAL: It asks for confirmation: Also delete the associated host user and all files in /root/webtop/session_name? (y/N).
    • y: This is a destructive action. It will permanently delete the session's configuration directory and remove the associated system user from the host.
    • N (Default): Only the container is removed. The configuration files and the host user (if created) are kept.

9. Exit

Exits the manager script.



Documentação em Português (Brasil)

Um script Bash interativo para criar, gerenciar e excluir múltiplas instâncias isoladas de contêineres Docker linuxserver/webtop (KDE). Esta ferramenta é perfeita para fornecer ambientes de desktop remoto individuais, baseados em navegador, para múltiplos usuários em um único servidor.

Funcionalidades

  • Menu Interativo: Uma interface simples, com cores e orientada por menus.
  • Alocação Automática de Portas: Encontra e atribui de forma inteligente o próximo par de portas disponível, prevenindo conflitos.
  • Gerenciamento Flexível de Usuários e Permissões:
    • Cria automaticamente usuários de sistema no servidor para gerenciar as permissões dos arquivos.
    • Permite atribuir os arquivos de uma sessão a um único usuário existente para um gerenciamento centralizado.
    • Separa o usuário de login do Webtop do proprietário dos arquivos no sistema (PUID/PGID).
  • Gerenciamento de Ciclo de Vida Completo: Adicione, liste, pause, retome, veja logs, altere o proprietário, altere senhas e exclua sessões com facilidade.
  • Isolamento de Dados: Cada sessão possui seu próprio diretório de configuração dedicado.
  • Tratamento Robusto de Erros: Fornece feedback claro sobre sucesso ou falha e inclui cancelamento seguro (Ctrl+C).

Pré-requisitos

Antes de executar o script, certifique-se de que os seguintes itens estão instalados em seu servidor Linux:

  1. Acesso Root: O script deve ser executado como root para gerenciar usuários e o Docker.
  2. Docker: O motor do Docker deve estar instalado e em execução.
  3. Docker Compose: O plugin do Docker Compose é necessário.
  4. Comando ss: Parte do pacote iproute2, que é padrão na maioria das distribuições Linux modernas.

Instalação e Configuração

  1. Baixe o script: Salve o código do script como webtop-manager.sh (ou qualquer outro nome de sua preferência).

  2. Torne-o executável:

    chmod +x webtop-manager.sh
  3. Primeira Execução (Configuração Inicial): Na primeira vez que você executar o script, ele realizará uma configuração única:

    • Criará o diretório base /root/webtop.
    • Criará um usuário de sistema sem login chamado webtop_user. Este usuário pode ser usado como proprietário padrão para todos os arquivos de sessão, caso você prefira um gerenciamento de permissões centralizado.

Como Usar

Simplesmente execute o script como root:

sudo ./webtop-manager.sh

Você será recebido pelo menu principal, onde poderá selecionar uma opção.


Detalhamento das Opções do Menu

1. Add new session (Adicionar nova sessão)

Esta opção guia você na criação de um novo ambiente Webtop isolado.

Processo:

  1. Nome da Sessão: Este será o nome de usuário dentro do ambiente Webtop (ex: joao_silva).
  2. Senha: A senha para o usuário do Webtop.
  3. Gerenciamento de Permissões: Você tem duas escolhas para definir quem será o dono dos arquivos da sessão no servidor:
    • [C]reate (Padrão): Cria um novo usuário de sistema no servidor com o mesmo nome da sessão (joao_silva).
    • [E]xisting: Permite que você especifique um usuário existente no servidor (como o padrão webtop_user) para ser o dono dos arquivos.

2. List all sessions (Listar todas as sessões)

Exibe uma tabela formatada de todas as sessões Webtop, incluindo suas portas e status atual (ex: running, paused, exited).

3. Pause session (Pausar sessão)

Suspende temporariamente um contêiner em execução, congelando seu estado e liberando recursos de CPU.

4. Unpause session (Retomar sessão)

Retoma um contêiner que estava pausado, tornando-o ativo novamente.

5. View session logs (Ver logs da sessão)

Exibe os logs ao vivo (docker logs -f) do contêiner de uma sessão. Essencial para diagnosticar problemas. Pressione Ctrl+C para parar de ver os logs.

6. Change session owner (Alterar proprietário da sessão)

Uma funcionalidade poderosa para alterar a propriedade dos arquivos de uma sessão. O script atualiza o docker-compose.yml, altera as permissões dos arquivos e reinicia o contêiner.

7. Change session password (Alterar senha da sessão)

Atualiza de forma segura a senha de login de uma sessão Webtop.

Processo:

  1. Selecione a sessão a ser modificada.
  2. Digite a nova senha (ela ficará oculta).
  3. O script irá:
    • Atualizar a variável de ambiente PASSWORD no arquivo docker-compose.yml.
    • Recriar o contêiner para aplicar a nova senha. Os dados da sessão são preservados.

8. Delete session (Excluir sessão)

Remove completamente uma sessão Webtop.

Processo:

  1. O script para e remove o contêiner Docker.
  2. CRÍTICO: Ele pede uma confirmação: Also delete the associated host user and all files in /root/webtop/session_name? (y/N).
    • y: Ação destrutiva. Excluirá permanentemente o diretório de configuração da sessão e removerá o usuário de sistema associado do servidor.
    • N (Padrão): Apenas o contêiner é removido. Os arquivos de configuração e o usuário do servidor (se criado) são mantidos.

9. Exit (Sair)

Encerra o script gerenciador.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages