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.
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.
- 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
).
Before running this script, ensure you have the following installed on your Linux host:
- Root Access: The script must be run as
root
to manage users and Docker. - Docker: The Docker engine must be installed and running.
- Docker Compose: The Docker Compose plugin is required.
ss
command: Part of theiproute2
package, which is standard on most modern Linux distributions.
-
Download the script: Save the script code as
webtop-manager.sh
(or any other name you prefer). -
Make it executable:
chmod +x webtop-manager.sh
-
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.
- It creates the base directory
Simply run the script as root:
sudo ./webtop-manager.sh
You will be greeted by the main menu, where you can select an option.
This option guides you through creating a new, isolated Webtop environment.
Process:
- Session Name: This will be the username inside the Webtop environment (e.g.,
john_doe
). - Password: The password for the Webtop user.
- 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 defaultwebtop_user
or any other) to own the files. This is useful for centralizing data management.
Displays a clean, formatted table of all created Webtop sessions, including their port numbers and current status (e.g., running
, paused
, exited
).
Temporarily suspends a running container, freezing its state and freeing up CPU resources.
Resumes a paused container, making it active again.
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.
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.
Securely updates the login password for a Webtop session.
Process:
- Select the session to modify.
- Enter the new password (it will be hidden).
- The script will:
- Update the
PASSWORD
environment variable in thedocker-compose.yml
file. - Recreate the container to apply the new password. The session's data is preserved.
- Update the
Completely removes a Webtop session.
Process:
- The script stops and removes the Docker container and its associated network.
- 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.
Exits the manager script.
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.
- 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
).
Antes de executar o script, certifique-se de que os seguintes itens estão instalados em seu servidor Linux:
- Acesso Root: O script deve ser executado como
root
para gerenciar usuários e o Docker. - Docker: O motor do Docker deve estar instalado e em execução.
- Docker Compose: O plugin do Docker Compose é necessário.
- Comando
ss
: Parte do pacoteiproute2
, que é padrão na maioria das distribuições Linux modernas.
-
Baixe o script: Salve o código do script como
webtop-manager.sh
(ou qualquer outro nome de sua preferência). -
Torne-o executável:
chmod +x webtop-manager.sh
-
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.
- Criará o diretório base
Simplesmente execute o script como root:
sudo ./webtop-manager.sh
Você será recebido pelo menu principal, onde poderá selecionar uma opção.
Esta opção guia você na criação de um novo ambiente Webtop isolado.
Processo:
- Nome da Sessão: Este será o nome de usuário dentro do ambiente Webtop (ex:
joao_silva
). - Senha: A senha para o usuário do Webtop.
- 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ãowebtop_user
) para ser o dono dos arquivos.
Exibe uma tabela formatada de todas as sessões Webtop, incluindo suas portas e status atual (ex: running
, paused
, exited
).
Suspende temporariamente um contêiner em execução, congelando seu estado e liberando recursos de CPU.
Retoma um contêiner que estava pausado, tornando-o ativo novamente.
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.
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.
Atualiza de forma segura a senha de login de uma sessão Webtop.
Processo:
- Selecione a sessão a ser modificada.
- Digite a nova senha (ela ficará oculta).
- O script irá:
- Atualizar a variável de ambiente
PASSWORD
no arquivodocker-compose.yml
. - Recriar o contêiner para aplicar a nova senha. Os dados da sessão são preservados.
- Atualizar a variável de ambiente
Remove completamente uma sessão Webtop.
Processo:
- O script para e remove o contêiner Docker.
- 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.
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.
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.
- 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
).
Before running this script, ensure you have the following installed on your Linux host:
- Root Access: The script must be run as
root
to manage users and Docker. - Docker: The Docker engine must be installed and running.
- Docker Compose: The Docker Compose plugin is required.
ss
command: Part of theiproute2
package, which is standard on most modern Linux distributions.
-
Download the script: Save the script code as
webtop-manager.sh
(or any other name you prefer). -
Make it executable:
chmod +x webtop-manager.sh
-
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.
- It creates the base directory
Simply run the script as root:
sudo ./webtop-manager.sh
You will be greeted by the main menu, where you can select an option.
This option guides you through creating a new, isolated Webtop environment.
Process:
- Session Name: This will be the username inside the Webtop environment (e.g.,
john_doe
). - Password: The password for the Webtop user.
- 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 defaultwebtop_user
or any other) to own the files. This is useful for centralizing data management.
Displays a clean, formatted table of all created Webtop sessions, including their port numbers and current status (e.g., running
, paused
, exited
).
Temporarily suspends a running container, freezing its state and freeing up CPU resources.
Resumes a paused container, making it active again.
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.
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.
Securely updates the login password for a Webtop session.
Process:
- Select the session to modify.
- Enter the new password (it will be hidden).
- The script will:
- Update the
PASSWORD
environment variable in thedocker-compose.yml
file. - Recreate the container to apply the new password. The session's data is preserved.
- Update the
Completely removes a Webtop session.
Process:
- The script stops and removes the Docker container and its associated network.
- 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.
Exits the manager script.
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.
- 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
).
Antes de executar o script, certifique-se de que os seguintes itens estão instalados em seu servidor Linux:
- Acesso Root: O script deve ser executado como
root
para gerenciar usuários e o Docker. - Docker: O motor do Docker deve estar instalado e em execução.
- Docker Compose: O plugin do Docker Compose é necessário.
- Comando
ss
: Parte do pacoteiproute2
, que é padrão na maioria das distribuições Linux modernas.
-
Baixe o script: Salve o código do script como
webtop-manager.sh
(ou qualquer outro nome de sua preferência). -
Torne-o executável:
chmod +x webtop-manager.sh
-
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.
- Criará o diretório base
Simplesmente execute o script como root:
sudo ./webtop-manager.sh
Você será recebido pelo menu principal, onde poderá selecionar uma opção.
Esta opção guia você na criação de um novo ambiente Webtop isolado.
Processo:
- Nome da Sessão: Este será o nome de usuário dentro do ambiente Webtop (ex:
joao_silva
). - Senha: A senha para o usuário do Webtop.
- 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ãowebtop_user
) para ser o dono dos arquivos.
Exibe uma tabela formatada de todas as sessões Webtop, incluindo suas portas e status atual (ex: running
, paused
, exited
).
Suspende temporariamente um contêiner em execução, congelando seu estado e liberando recursos de CPU.
Retoma um contêiner que estava pausado, tornando-o ativo novamente.
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.
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.
Atualiza de forma segura a senha de login de uma sessão Webtop.
Processo:
- Selecione a sessão a ser modificada.
- Digite a nova senha (ela ficará oculta).
- O script irá:
- Atualizar a variável de ambiente
PASSWORD
no arquivodocker-compose.yml
. - Recriar o contêiner para aplicar a nova senha. Os dados da sessão são preservados.
- Atualizar a variável de ambiente
Remove completamente uma sessão Webtop.
Processo:
- O script para e remove o contêiner Docker.
- 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.
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.
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.
- 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
).
Before running this script, ensure you have the following installed on your Linux host:
- Root Access: The script must be run as
root
to manage users and Docker. - Docker: The Docker engine must be installed and running.
- Docker Compose: The Docker Compose plugin is required.
ss
command: Part of theiproute2
package, which is standard on most modern Linux distributions.
-
Download the script: Save the script code as
webtop-manager.sh
(or any other name you prefer). -
Make it executable:
chmod +x webtop-manager.sh
-
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.
- It creates the base directory
Simply run the script as root:
sudo ./webtop-manager.sh
You will be greeted by the main menu, where you can select an option.
This option guides you through creating a new, isolated Webtop environment.
Process:
- Session Name: This will be the username inside the Webtop environment (e.g.,
john_doe
). - Password: The password for the Webtop user.
- 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 defaultwebtop_user
or any other) to own the files. This is useful for centralizing data management.
Displays a clean, formatted table of all created Webtop sessions, including their port numbers and current status (e.g., running
, paused
, exited
).
Temporarily suspends a running container, freezing its state and freeing up CPU resources.
Resumes a paused container, making it active again.
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.
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.
Securely updates the login password for a Webtop session.
Process:
- Select the session to modify.
- Enter the new password (it will be hidden).
- The script will:
- Update the
PASSWORD
environment variable in thedocker-compose.yml
file. - Recreate the container to apply the new password. The session's data is preserved.
- Update the
Completely removes a Webtop session.
Process:
- The script stops and removes the Docker container and its associated network.
- 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.
Exits the manager script.
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.
- 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
).
Antes de executar o script, certifique-se de que os seguintes itens estão instalados em seu servidor Linux:
- Acesso Root: O script deve ser executado como
root
para gerenciar usuários e o Docker. - Docker: O motor do Docker deve estar instalado e em execução.
- Docker Compose: O plugin do Docker Compose é necessário.
- Comando
ss
: Parte do pacoteiproute2
, que é padrão na maioria das distribuições Linux modernas.
-
Baixe o script: Salve o código do script como
webtop-manager.sh
(ou qualquer outro nome de sua preferência). -
Torne-o executável:
chmod +x webtop-manager.sh
-
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.
- Criará o diretório base
Simplesmente execute o script como root:
sudo ./webtop-manager.sh
Você será recebido pelo menu principal, onde poderá selecionar uma opção.
Esta opção guia você na criação de um novo ambiente Webtop isolado.
Processo:
- Nome da Sessão: Este será o nome de usuário dentro do ambiente Webtop (ex:
joao_silva
). - Senha: A senha para o usuário do Webtop.
- 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ãowebtop_user
) para ser o dono dos arquivos.
Exibe uma tabela formatada de todas as sessões Webtop, incluindo suas portas e status atual (ex: running
, paused
, exited
).
Suspende temporariamente um contêiner em execução, congelando seu estado e liberando recursos de CPU.
Retoma um contêiner que estava pausado, tornando-o ativo novamente.
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.
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.
Atualiza de forma segura a senha de login de uma sessão Webtop.
Processo:
- Selecione a sessão a ser modificada.
- Digite a nova senha (ela ficará oculta).
- O script irá:
- Atualizar a variável de ambiente
PASSWORD
no arquivodocker-compose.yml
. - Recriar o contêiner para aplicar a nova senha. Os dados da sessão são preservados.
- Atualizar a variável de ambiente
Remove completamente uma sessão Webtop.
Processo:
- O script para e remove o contêiner Docker.
- 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.
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.
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.
- 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
).
Before running this script, ensure you have the following installed on your Linux host:
- Root Access: The script must be run as
root
to manage users and Docker. - Docker: The Docker engine must be installed and running.
- Docker Compose: The Docker Compose plugin is required.
ss
command: Part of theiproute2
package, which is standard on most modern Linux distributions.
-
Download the script: Save the script code as
webtop-manager.sh
(or any other name you prefer). -
Make it executable:
chmod +x webtop-manager.sh
-
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.
- It creates the base directory
Simply run the script as root:
sudo ./webtop-manager.sh
You will be greeted by the main menu, where you can select an option.
This option guides you through creating a new, isolated Webtop environment.
Process:
- Session Name: This will be the username inside the Webtop environment (e.g.,
john_doe
). - Password: The password for the Webtop user.
- 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 defaultwebtop_user
or any other) to own the files. This is useful for centralizing data management.
Displays a clean, formatted table of all created Webtop sessions, including their port numbers and current status (e.g., running
, paused
, exited
).
Temporarily suspends a running container, freezing its state and freeing up CPU resources.
Resumes a paused container, making it active again.
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.
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.
Securely updates the login password for a Webtop session.
Process:
- Select the session to modify.
- Enter the new password (it will be hidden).
- The script will:
- Update the
PASSWORD
environment variable in thedocker-compose.yml
file. - Recreate the container to apply the new password. The session's data is preserved.
- Update the
Completely removes a Webtop session.
Process:
- The script stops and removes the Docker container and its associated network.
- 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.
Exits the manager script.
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.
- 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
).
Antes de executar o script, certifique-se de que os seguintes itens estão instalados em seu servidor Linux:
- Acesso Root: O script deve ser executado como
root
para gerenciar usuários e o Docker. - Docker: O motor do Docker deve estar instalado e em execução.
- Docker Compose: O plugin do Docker Compose é necessário.
- Comando
ss
: Parte do pacoteiproute2
, que é padrão na maioria das distribuições Linux modernas.
-
Baixe o script: Salve o código do script como
webtop-manager.sh
(ou qualquer outro nome de sua preferência). -
Torne-o executável:
chmod +x webtop-manager.sh
-
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.
- Criará o diretório base
Simplesmente execute o script como root:
sudo ./webtop-manager.sh
Você será recebido pelo menu principal, onde poderá selecionar uma opção.
Esta opção guia você na criação de um novo ambiente Webtop isolado.
Processo:
- Nome da Sessão: Este será o nome de usuário dentro do ambiente Webtop (ex:
joao_silva
). - Senha: A senha para o usuário do Webtop.
- 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ãowebtop_user
) para ser o dono dos arquivos.
Exibe uma tabela formatada de todas as sessões Webtop, incluindo suas portas e status atual (ex: running
, paused
, exited
).
Suspende temporariamente um contêiner em execução, congelando seu estado e liberando recursos de CPU.
Retoma um contêiner que estava pausado, tornando-o ativo novamente.
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.
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.
Atualiza de forma segura a senha de login de uma sessão Webtop.
Processo:
- Selecione a sessão a ser modificada.
- Digite a nova senha (ela ficará oculta).
- O script irá:
- Atualizar a variável de ambiente
PASSWORD
no arquivodocker-compose.yml
. - Recriar o contêiner para aplicar a nova senha. Os dados da sessão são preservados.
- Atualizar a variável de ambiente
Remove completamente uma sessão Webtop.
Processo:
- O script para e remove o contêiner Docker.
- 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.
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.
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.
- 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
).
Before running this script, ensure you have the following installed on your Linux host:
- Root Access: The script must be run as
root
to manage users and Docker. - Docker: The Docker engine must be installed and running.
- Docker Compose: The Docker Compose plugin is required.
ss
command: Part of theiproute2
package, which is standard on most modern Linux distributions.
-
Download the script: Save the script code as
webtop-manager.sh
(or any other name you prefer). -
Make it executable:
chmod +x webtop-manager.sh
-
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.
- It creates the base directory
Simply run the script as root:
sudo ./webtop-manager.sh
You will be greeted by the main menu, where you can select an option.
This option guides you through creating a new, isolated Webtop environment.
Process:
- Session Name: This will be the username inside the Webtop environment (e.g.,
john_doe
). - Password: The password for the Webtop user.
- 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 defaultwebtop_user
or any other) to own the files. This is useful for centralizing data management.
Displays a clean, formatted table of all created Webtop sessions, including their port numbers and current status (e.g., running
, paused
, exited
).
Temporarily suspends a running container, freezing its state and freeing up CPU resources.
Resumes a paused container, making it active again.
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.
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.
Securely updates the login password for a Webtop session.
Process:
- Select the session to modify.
- Enter the new password (it will be hidden).
- The script will:
- Update the
PASSWORD
environment variable in thedocker-compose.yml
file. - Recreate the container to apply the new password. The session's data is preserved.
- Update the
Completely removes a Webtop session.
Process:
- The script stops and removes the Docker container and its associated network.
- 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.
Exits the manager script.
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.
- 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
).
Antes de executar o script, certifique-se de que os seguintes itens estão instalados em seu servidor Linux:
- Acesso Root: O script deve ser executado como
root
para gerenciar usuários e o Docker. - Docker: O motor do Docker deve estar instalado e em execução.
- Docker Compose: O plugin do Docker Compose é necessário.
- Comando
ss
: Parte do pacoteiproute2
, que é padrão na maioria das distribuições Linux modernas.
-
Baixe o script: Salve o código do script como
webtop-manager.sh
(ou qualquer outro nome de sua preferência). -
Torne-o executável:
chmod +x webtop-manager.sh
-
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.
- Criará o diretório base
Simplesmente execute o script como root:
sudo ./webtop-manager.sh
Você será recebido pelo menu principal, onde poderá selecionar uma opção.
Esta opção guia você na criação de um novo ambiente Webtop isolado.
Processo:
- Nome da Sessão: Este será o nome de usuário dentro do ambiente Webtop (ex:
joao_silva
). - Senha: A senha para o usuário do Webtop.
- 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ãowebtop_user
) para ser o dono dos arquivos.
Exibe uma tabela formatada de todas as sessões Webtop, incluindo suas portas e status atual (ex: running
, paused
, exited
).
Suspende temporariamente um contêiner em execução, congelando seu estado e liberando recursos de CPU.
Retoma um contêiner que estava pausado, tornando-o ativo novamente.
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.
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.
Atualiza de forma segura a senha de login de uma sessão Webtop.
Processo:
- Selecione a sessão a ser modificada.
- Digite a nova senha (ela ficará oculta).
- O script irá:
- Atualizar a variável de ambiente
PASSWORD
no arquivodocker-compose.yml
. - Recriar o contêiner para aplicar a nova senha. Os dados da sessão são preservados.
- Atualizar a variável de ambiente
Remove completamente uma sessão Webtop.
Processo:
- O script para e remove o contêiner Docker.
- 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.
Encerra o script gerenciador.