Una guía paso a paso para separar tus proyectos de trabajo de tu vida personal, sin mezclar credenciales, tokens ni archivos.
¿Te ha pasado esto?
- ✉️ Hiciste un commit con tu email personal en un proyecto de trabajo
- 🔑 Usaste el token de GitHub de trabajo en un proyecto personal
- 📁 Teams o Slack pueden ver todos tus archivos personales
- 🔄 Constantemente cambias credenciales de git manualmente
- 😰 Miedo de compartir pantalla y que vean carpetas personales
La solución: Un entorno de trabajo completamente aislado donde:
- Git usa credenciales de trabajo automáticamente
- Variables de entorno (tokens, API keys) se cargan automáticamente
- Aplicaciones como Teams/Slack solo ven archivos de trabajo
- Todo esto sin tocar tu configuración personal
┌─────────────────────────────────────┐
│ ~/proyectos/ │
│ ├── mi-blog/ │
│ ├── juego-personal/ │
│ └── experimentos/ │
│ │
│ 📧 Git: [email protected] │
│ 🔑 Tokens: personales │
│ 🚫 Teams/Slack: NO tienen acceso │
└─────────────────────────────────────┘
┌─────────────────────────────────────┐
│ ~/trabajo/ │
│ ├── proyecto-empresa-1/ │
│ ├── proyecto-empresa-2/ │
│ └── documentos-trabajo/ │
│ │
│ 📧 Git: [email protected] │
│ 🔑 Tokens: de trabajo │
│ ✅ Teams/Slack: solo ven esto │
└─────────────────────────────────────┘
- Configurar Git Condicional
- Variables de Entorno Automáticas con direnv
- Aislar Aplicaciones con Flatpak
- Verificación y Uso Diario
Git puede usar diferentes configuraciones según el directorio donde estés trabajando.
1.1 Crear el directorio de trabajo:
mkdir ~/trabajo1.2 Crear archivo de configuración de trabajo:
nano ~/trabajo/.gitconfig-trabajoContenido:
[user]
name = Tu Nombre
email = [email protected]
# Opcional: credenciales separadas
[credential]
helper = store --file ~/.git-credentials-trabajo1.3 Configurar Git global para usar conditional includes:
nano ~/.gitconfigAñade al final:
# Tu configuración personal (ya existente)
[user]
name = Tu Nombre Personal
email = [email protected]
# Configuración condicional para trabajo
[includeIf "gitdir:~/trabajo/"]
path = ~/trabajo/.gitconfig-trabajo# En tu directorio personal
cd ~/proyectos
git config user.email
# Output: [email protected]
# En tu directorio de trabajo
cd ~/trabajo
git config user.email
# Output: [email protected]Git detecta automáticamente cuando estás en un subdirectorio de ~/trabajo y carga la configuración específica. Al salir, vuelve a tu configuración personal.
Una herramienta que carga/descarga variables de entorno automáticamente al entrar/salir de un directorio.
Perfecto para:
- Tokens de GitHub, GitLab, AWS
- API Keys
- Configuraciones específicas de proyectos
2.1 Instalar direnv:
# Arch Linux
sudo pacman -S direnv
# Ubuntu/Debian
sudo apt install direnv
# macOS
brew install direnv2.2 Configurar tu shell:
Para zsh (añade a ~/.zshrc):
echo 'eval "$(direnv hook zsh)"' >> ~/.zshrc
source ~/.zshrcPara bash (añade a ~/.bashrc):
echo 'eval "$(direnv hook bash)"' >> ~/.bashrc
source ~/.bashrc2.3 Crear archivo de variables de trabajo:
nano ~/trabajo/.envrcContenido de ejemplo:
# Tokens de trabajo
export GITHUB_TOKEN="ghp_tu_token_de_trabajo"
export AWS_ACCESS_KEY_ID="tu_access_key"
export AWS_SECRET_ACCESS_KEY="tu_secret_key"
export NPM_TOKEN="npm_tu_token"
# Configuraciones
export ENVIRONMENT="production"
export API_URL="https://api.empresa.com"
echo "✓ Entorno de trabajo cargado"2.4 Autorizar el directorio (solo la primera vez):
cd ~/trabajo
direnv allow# Fuera del directorio trabajo
cd ~
echo $GITHUB_TOKEN
# Output: (vacío o tu token personal)
# Dentro del directorio trabajo
cd ~/trabajo
# Output: ✓ Entorno de trabajo cargado
echo $GITHUB_TOKEN
# Output: ghp_tu_token_de_trabajo
# Al salir
cd ~
echo $GITHUB_TOKEN
# Output: (vacío otra vez)IMPORTANTE: Añade .envrc a .gitignore para no commitear secretos:
# Crear .gitignore en ~/trabajo
echo ".envrc" >> ~/trabajo/.gitignore
echo ".env" >> ~/trabajo/.gitignore
echo "*.key" >> ~/trabajo/.gitignore- 🤖 Automático - no necesitas recordar cargar variables
- 🧹 Se limpia solo - al salir del directorio, las variables desaparecen
- 🔐 Seguro - las variables solo existen cuando las necesitas
Aplicaciones como Teams, Slack o Discord tienen acceso a TODOS tus archivos por defecto. Esto significa:
- Pueden indexar y buscar en tu carpeta personal
- Podrías compartir accidentalmente archivos personales
- No hay separación clara entre trabajo y personal
Flatpak ejecuta aplicaciones en un sandbox (contenedor) donde puedes controlar exactamente qué pueden ver.
3.1 Instalar Flatpak:
# Arch Linux
sudo pacman -S flatpak
sudo flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
# Ubuntu 22.04+
sudo apt install flatpak
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
# Fedora (ya viene instalado)
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepoReinicia tu sesión para que Flatpak funcione correctamente.
3.2 Instalar Flatseal (gestor de permisos con interfaz gráfica):
flatpak install flathub com.github.tchx84.Flatseal3.3 Instalar aplicaciones de trabajo:
# Microsoft Teams
flatpak install flathub com.microsoft.Teams
# Slack
flatpak install flathub com.slack.Slack
# Discord (si usas para trabajo)
flatpak install flathub com.discordapp.Discord
# Zoom
flatpak install flathub us.zoom.Zoom3.4 Configurar permisos (CRUCIAL):
Para cada aplicación, ejecuta estos comandos:
# Ejemplo con Teams
flatpak override --user com.microsoft.Teams --nofilesystem=home
flatpak override --user com.microsoft.Teams --filesystem=~/trabajo
# Ejemplo con Slack
flatpak override --user com.slack.Slack --nofilesystem=home
flatpak override --user com.slack.Slack --filesystem=~/trabajoExplicación:
--nofilesystem=home→ Bloquea acceso a tu carpeta personal completa--filesystem=~/trabajo→ Da acceso SOLO a la carpeta trabajo
Opción 1: Terminal
flatpak override --user --show com.microsoft.TeamsDeberías ver algo como:
[Context]
filesystems=!home;~/trabajo
Opción 2: Interfaz gráfica (Flatseal)
flatpak run com.github.tchx84.Flatseal- Selecciona la aplicación (Teams, Slack, etc.)
- Ve a la pestaña "Filesystem"
- Verifica:
- ❌ "All user files" desactivado
- ✅
~/trabajoen la lista de accesos permitidos
Desde el menú de aplicaciones: Busca "Teams", "Slack", etc. y ábrelas normalmente.
Desde terminal:
flatpak run com.microsoft.Teams
flatpak run com.slack.Slack- ✅ Teams/Slack solo ven archivos en
~/trabajo - ❌ No pueden acceder a
~/proyectos,~/Documentos,~/Descargas - 🔒 Cuando compartes archivos, solo puedes elegir de
~/trabajo - 🛡️ Tus proyectos personales están completamente protegidos
Crea un script para facilitar la instalación de más apps:
nano ~/instalar-app-trabajo.shContenido:
#!/bin/bash
# Instala una app Flatpak con acceso solo a ~/trabajo
if [ -z "$1" ]; then
echo "Uso: $0 <app-id>"
echo "Ejemplo: $0 com.discordapp.Discord"
exit 1
fi
APP_ID=$1
echo "📦 Instalando $APP_ID..."
flatpak install flathub "$APP_ID"
echo "🔒 Configurando permisos..."
flatpak override --user "$APP_ID" --nofilesystem=home
flatpak override --user "$APP_ID" --filesystem=~/trabajo
echo "✅ Listo! Ejecuta con: flatpak run $APP_ID"Dar permisos:
chmod +x ~/instalar-app-trabajo.shUsar:
./instalar-app-trabajo.sh com.discordapp.DiscordCrea un script para verificar toda tu configuración:
nano ~/trabajo/verificar-todo.shContenido:
#!/bin/bash
echo "🔍 Verificando configuración de trabajo..."
echo ""
# Verificar Git
echo "📧 Git en ~/trabajo:"
cd ~/trabajo
git config user.email
echo ""
echo "📧 Git en ~:"
cd ~
git config user.email
echo ""
# Verificar direnv
echo "🔧 direnv:"
if command -v direnv &> /dev/null; then
echo "✓ direnv instalado"
else
echo "❌ direnv no instalado"
fi
echo ""
# Verificar Flatpak
echo "📦 Aplicaciones Flatpak aisladas:"
flatpak list --app | grep -E "(Teams|Slack|Discord)" || echo "Ninguna instalada"
echo ""
# Verificar permisos
echo "🔒 Permisos de Teams:"
flatpak override --user --show com.microsoft.Teams 2>/dev/null | grep filesystems || echo "Teams no instalado"
echo ""
echo "✅ Verificación completa"Dar permisos y ejecutar:
chmod +x ~/trabajo/verificar-todo.sh
cd ~/trabajo
./verificar-todo.shTu sistema debería quedar así:
~/
├── proyectos/ # Proyectos personales
│ ├── mi-blog/
│ ├── experimentos/
│ └── .git (usa: [email protected])
│
└── trabajo/ # Proyectos de trabajo
├── .envrc # Variables de entorno (NO commitear)
├── .gitconfig-trabajo # Config git de trabajo
├── .gitignore # Ignorar secretos
├── verificar-todo.sh # Script de verificación
├── proyecto-empresa-1/
├── proyecto-empresa-2/
└── .git (usa: [email protected])
Aplicaciones:
├── Teams (Flatpak) → Solo ve ~/trabajo
├── Slack (Flatpak) → Solo ve ~/trabajo
└── Editor/Terminal → Ve todo (normal)
Trabajar en un proyecto de trabajo:
cd ~/trabajo
# direnv carga variables automáticamente
# Git usa email de trabajo automáticamente
git clone [email protected]:empresa/proyecto.git
cd proyecto
git commit -m "feat: nueva funcionalidad"
# Commit usará [email protected]Trabajar en un proyecto personal:
cd ~/proyectos/mi-blog
# Variables de trabajo NO están cargadas
# Git usa tu email personal
git commit -m "post: nuevo artículo"
# Commit usará [email protected]Compartir archivo en Teams:
- Abre Teams (Flatpak)
- Solo verás archivos de
~/trabajo - Imposible compartir accidentalmente archivos personales
| Método Manual | Este Sistema |
|---|---|
git config user.email "[email protected]" cada vez |
✅ Automático según carpeta |
export TOKEN="xyz" en cada sesión |
✅ Se carga/descarga solo |
| Aplicaciones ven todo tu sistema | ✅ Aislamiento real |
| Olvidas cambiar y cometes errores | ✅ Imposible equivocarse |
| Tokens en historial de bash | ✅ Tokens en archivos protegidos |
No. Una vez configurado:
- Git cambia automáticamente
- Variables se cargan automáticamente
- Aplicaciones ya están configuradas
- Cero mantenimiento diario
Sí. Esta guía funciona en:
- ✅ Arch, Manjaro, EndeavourOS
- ✅ Ubuntu, Debian, Linux Mint
- ✅ Fedora, RHEL, CentOS
- ✅ openSUSE
- ✅ Cualquier distribución con Flatpak
Solo cambian los comandos de instalación (pacman vs apt vs dnf).
Verificar:
cd ~/trabajo
git config --show-origin user.emailDebería mostrar: file:/home/tu-usuario/trabajo/.gitconfig-trabajo
Si no funciona:
- Verifica que
~/.gitconfigtiene el[includeIf] - Asegúrate de que la ruta es exacta:
gitdir:~/trabajo/ - El
.gitconfig-trabajodebe estar en~/trabajo/
Verificar:
cd ~/trabajo
direnv statusSi dice "not allowed":
direnv allowSi no está instalado el hook:
# Añade a ~/.zshrc o ~/.bashrc
eval "$(direnv hook zsh)" # para zsh
eval "$(direnv hook bash)" # para bash
# Recarga
source ~/.zshrcCausa: Los archivos NO están en ~/trabajo
Solución:
- Mueve los archivos a
~/trabajo - O temporalmente da más permisos:
flatpak override --user com.microsoft.Teams --filesystem=~/Descargas - Recuerda quitar el permiso después:
flatpak override --user com.microsoft.Teams --nofilesystem=~/Descargas
flatpak run --verbose com.microsoft.Teams1. Usar gestor de secretos profesional:
# pass (password-store)
sudo pacman -S pass
# Usar en .envrc
export GITHUB_TOKEN=$(pass show trabajo/github-token)2. Diferentes configuraciones SSH:
# ~/.ssh/config
Host github.com-trabajo
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_trabajo
Host github.com-personal
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_personal3. Navegadores separados:
# Firefox de trabajo (Flatpak)
flatpak install flathub org.mozilla.firefox
flatpak override --user org.mozilla.firefox --nofilesystem=home
flatpak override --user org.mozilla.firefox --filesystem=~/trabajo
# Chromium personal (nativo)
sudo pacman -S chromium4. Múltiples entornos:
~/trabajo-empresa-a/ # Cliente A
~/trabajo-empresa-b/ # Cliente B
~/freelance/ # Proyectos freelance
~/proyectos/ # PersonalCada uno con su propio .gitconfig, .envrc y apps aisladas.
Usa este checklist para verificar que todo está configurado:
- Directorio
~/trabajocreado -
~/trabajo/.gitconfig-trabajocon email de trabajo -
~/.gitconfigtiene[includeIf "gitdir:~/trabajo/"] - Git cambia de email según carpeta (verificado)
- direnv instalado
- Hook de direnv en
~/.zshrco~/.bashrc -
~/trabajo/.envrccreado con tokens -
~/trabajo/.envrcautorizado condirenv allow -
.envrcañadido a.gitignore - Variables se cargan/descargan automáticamente (verificado)
- Flatpak instalado y Flathub añadido
- Teams/Slack instalados vía Flatpak
- Permisos configurados: sin acceso a home, solo a
~/trabajo - Flatseal instalado para gestión visual
- Aplicaciones solo ven
~/trabajo(verificado)
¿Esta guía te ayudó? ¿Tienes sugerencias?
Comparte esta guía con otros desarrolladores que necesiten separar trabajo y personal en Linux.
Última actualización: 2026-01-02 Licencia: CC0 - Dominio Público Compatibilidad: Todas las distribuciones Linux con systemd y Flatpak
💡 Tip Pro: Una vez que tengas esto configurado, nunca más volverás a commitear con el email equivocado o a exponer tokens personales en proyectos de trabajo. Es configuración de 30 minutos para paz mental permanente.