Script otomatis untuk setup development environment lengkap dengan tmux, zsh, ranger, Docker, dan berbagai CLI tools.
- ✅ Membuat user development tanpa password (lebih aman, bisa set password nanti)
- ✅ Install dan konfigurasi Zsh dengan Oh My Zsh
- ✅ Install tmux dengan konfigurasi optimal
- ✅ Install ranger file manager dengan preview dependencies
- ✅ Install Docker dan Docker Compose dengan non-root access
- ✅ Install Go programming language dengan workspace directories
- ✅ Install Sops untuk secrets management
- ✅ Install CLI tools: fzf, ripgrep, ncdu, htop, neofetch, bat
- ✅ Konfigurasi otomatis dengan aliases dan plugins
- ✅ Error handling yang robust (satu kegagalan tidak menghentikan instalasi)
- Debian/Ubuntu-based Linux distribution
- Root privileges (jalankan dengan sudo)
- Internet connection
Sebelum menjalankan script, edit setup-shell.sh dan update konfigurasi SSH key:
# Edit file setup-shell.sh
nano setup-shell.sh
# Cari dan update baris berikut:
SSH_PUBLIC_KEY_URL="https://github.com/YOUR_GITHUB_USERNAME.keys"
# Ganti YOUR_GITHUB_USERNAME dengan username GitHub Anda
# Contoh: SSH_PUBLIC_KEY_URL="https://github.com/pandudpn.keys"
# Atau gunakan raw URL dari repository Anda:
# SSH_PUBLIC_KEY_URL="https://raw.githubusercontent.com/username/dotfiles/main/id_ed25519.pub"
# Jika tidak ingin setup SSH key, set:
SETUP_SSH_KEY="false"Kemudian jalankan script:
sudo ./setup-shell.shScript akan:
- Meminta username (default: deploy)
- Membuat user tanpa password
- Install semua packages dan tools
- Konfigurasi environment
- Download dan setup SSH public key dari GitHub
- Set zsh sebagai default shell
Jika Anda perlu reset password atau disable password untuk user yang sudah ada:
# Set password baru
sudo ./reset-user-password.sh <username>
# Atau disable password (recommended)
sudo ./reset-user-password.sh <username> --disableContoh:
# Disable password untuk user 'deploy'
sudo ./reset-user-password.sh deploy --disable
# Set password baru untuk user 'deploy'
sudo ./reset-user-password.sh deployJika Anda perlu menghapus user beserta semua file dan konfigurasinya:
# Delete user dengan konfirmasi
sudo ./delete-user.sh <username>
# Delete user tanpa konfirmasi (force)
sudo ./delete-user.sh <username> --forceContoh:
# Delete user 'deploy' dengan konfirmasi
sudo ./delete-user.sh deploy
# Delete user 'deploy' tanpa konfirmasi
sudo ./delete-user.sh deploy --forceFitur delete-user.sh:
- ✅ Konfirmasi ganda untuk keamanan (kecuali pakai --force)
- ✅ Menampilkan informasi user sebelum delete
- ✅ Terminate semua proses user secara otomatis
- ✅ Hapus home directory dan semua file
- ✅ Cleanup file temporary dan cron jobs
- ✅ Proteksi: tidak bisa delete system user (UID < 1000)
- ✅ Proteksi: tidak bisa delete user yang sedang login
-
(Opsional) Set password jika diperlukan:
sudo passwd <username>
-
Logout dan login kembali agar perubahan group (docker, sudo) berlaku
-
Switch ke user baru:
su - <username>
-
Mulai gunakan environment Anda!
Script ini membuat user tanpa password secara default karena:
- ✅ Lebih aman dari masalah special characters
- ✅ Bisa switch dari root tanpa password:
su - username - ✅ Bisa set password nanti jika diperlukan
- ✅ Sudah ada di sudo group untuk administrative tasks
Jika Anda ingin set password nanti, gunakan:
sudo passwd <username>Script ini otomatis download dan setup SSH public key dari GitHub untuk user baru:
-
GitHub Keys Endpoint (Recommended):
SSH_PUBLIC_KEY_URL="https://github.com/username.keys"GitHub menyediakan endpoint ini yang berisi semua public keys dari akun Anda.
-
Raw File dari Repository:
SSH_PUBLIC_KEY_URL="https://raw.githubusercontent.com/username/dotfiles/main/id_ed25519.pub"Jika Anda menyimpan public key di repository.
- ✅ Download otomatis dari URL yang dikonfigurasi
- ✅ Validasi format SSH key
- ✅ Backup authorized_keys yang sudah ada
- ✅ Set permissions yang benar (700 untuk .ssh, 600 untuk authorized_keys)
- ✅ Menampilkan fingerprint key yang terinstall
- ✅ Support multiple keys (jika GitHub endpoint memiliki beberapa keys)
Jika tidak ingin setup SSH key, edit script dan set:
SETUP_SSH_KEY="false"Sebelum menjalankan setup, Anda bisa test apakah URL SSH key Anda valid:
./test-ssh-key-url.sh "https://github.com/username.keys"Script ini akan:
- ✅ Cek apakah URL accessible
- ✅ Validasi format SSH key
- ✅ Tampilkan jumlah keys yang ditemukan
- ✅ Tampilkan fingerprint setiap key
Gunakan script reset password:
sudo ./reset-user-password.sh <username> --disableKemudian switch ke user:
su - <username>Jika Anda sudah punya user lama dan update manual .zshrc, pastikan plugins tersebut tidak ada di array plugins=() karena mereka di-source secara manual di bagian bawah file.
Edit .zshrc dan pastikan:
plugins=(
git
docker
sudo
history
colored-man-pages
command-not-found
# JANGAN tambahkan zsh-autosuggestions dan zsh-syntax-highlighting di sini
)Plugins tersebut sudah di-source di bagian bawah file dengan:
source ~/.zsh/zsh-autosuggestions/zsh-autosuggestions.zsh
source ~/.zsh/zsh-syntax-highlighting/zsh-syntax-highlighting.zshLogout dan login kembali agar perubahan docker group berlaku, atau jalankan:
newgrp dockerScript membuat file-file berikut:
~/.zshrc- Konfigurasi Zsh dengan plugins dan aliases~/.tmux.conf- Konfigurasi tmux~/.config/ranger/- Konfigurasi ranger~/.oh-my-zsh/- Oh My Zsh framework~/.zsh/- Zsh plugins (autosuggestions, syntax-highlighting)~/.ssh/authorized_keys- SSH public keys (jika SETUP_SSH_KEY=true)
Repository ini menyediakan beberapa helper scripts:
Script utama untuk setup environment lengkap.
Reset atau disable password untuk user.
sudo ./reset-user-password.sh <username> # Set password baru
sudo ./reset-user-password.sh <username> --disable # Disable passwordHapus user beserta semua file dan konfigurasi.
sudo ./delete-user.sh <username> # Dengan konfirmasi
sudo ./delete-user.sh <username> --force # Tanpa konfirmasiTest validitas SSH key URL sebelum menjalankan setup.
./test-ssh-key-url.sh "https://github.com/username.keys"Contoh konfigurasi yang bisa di-copy ke setup-shell.sh.
Customize zsh theme dan tampilan terminal.
./customize-theme.sh # Interactive mode
./customize-theme.sh agnoster # Apply specific theme
./customize-theme.sh random # Random theme on each startup
./customize-theme.sh --list # Show available themesScript ini menggunakan theme agnoster secara default (powerline-style dengan git info). Anda bisa mengubahnya dengan:
./customize-theme.shTheme Populer:
robbyrussell- Simple dan cepat (Oh My Zsh default)agnoster- Powerline-style dengan git info (script default)af-magic- Colorful dengan git statusbira- Two-line prompt dengan waktuys- Git-focused dengan exit codesrandom- Random theme setiap startup
Quick Change:
./customize-theme.sh agnoster # Apply agnoster theme
./customize-theme.sh random # Random theme
./customize-theme.sh --list # Lihat semua themeScript sudah include banyak aliases berguna:
Navigation:
ll,la,l- List files dengan berbagai opsi..,...,....- Navigate up directoriesc- Clear screen
Docker:
dps,dpsa- Docker ps / ps -adi- Docker imagesdex- Docker exec -itdlog- Docker logs -f
Sops:
sops-edit- Edit encrypted filesops-view- Decrypt and view filesops-encrypt- Encrypt file
Git:
gs,ga,gc- Git status/add/commitgp,gl- Git push/pullglog- Git log (pretty format)
System:
update- Update system packagesinstall- Install packagememinfo- Memory infodiskinfo- Disk usage
Ketik help-aliases di terminal untuk melihat semua aliases.
Neofetch config sudah di-customize untuk tampilan optimal. File config ada di:
~/.config/neofetch/config.conf
Edit file tersebut untuk customize informasi yang ditampilkan.
Script ini dilengkapi dengan 80+ property-based tests menggunakan Bats:
# Jalankan semua tests
bats tests/
# Jalankan test spesifik
bats tests/property_user_creation.batsMIT License