# Ubuntu System Setup Guide This guide will help you set up a basic development environment on Ubuntu with the following tools: - Update and upgrade the system - Install **nvm** (Node Version Manager) - Install **Node.js 20** - Install **Git** - Install **NGINX** - Install **mysql-server** - Install **phpmyadmin** - Install **php** latest version with php-fpm ## Prerequisites - Ubuntu (any version) - A terminal or SSH access to the system --- ## 1. Update and Upgrade the System Start by updating and upgrading your Ubuntu packages to make sure you have the latest versions and security patches. ```bash sudo apt update && sudo apt upgrade -y ``` This will: Update the local package index (apt update) Upgrade all the installed packages to the latest version (apt upgrade) ## 2. Install NVM (Node Version Manager) Next, we'll install nvm (Node Version Manager) to manage multiple versions of Node.js. Install NVM ```bash curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash ``` Once the installation is complete, you’ll need to restart your terminal or source your profile: ```bash source ~/.bashrc # Or use ~/.zshrc or ~/.profile based on your shell ``` Verify the Installation You can verify that nvm is installed successfully by running: ```bash command -v nvm ``` If the installation was successful, it should return nvm. ## 3. Install Node.js Version 20 Now that nvm is installed, you can use it to install Node.js version 20: ```bash nvm install 20 ``` ### Set Node.js 20 as Default Version To set Node.js version 20 as the default version for your terminal sessions, run: ```bash nvm use 20 nvm alias default 20 ``` You can verify the installed version of Node.js by running: ```bash node -v ``` ## 4. Install Git Git is essential for version control. To install Git, run the following: ``` sudo apt install git -y ``` ### Verify the Installation To check if Git is installed correctly, run: ```bash git --version ``` 5. Install NGINX Finally, install NGINX, a popular web server. Install NGINX ``` sudo apt install nginx -y sudo systemctl start nginx sudo systemctl enable nginx ``` ## 5.Install MySQL Server ```bash sudo apt install mysql-server -y ``` Secure the MySQL installation: ```bash sudo mysql_secure_installation ``` Follow the prompts to set a root password and secure the database. --- ## 6. Install PHP 8.3 or Latest Version Add the repository and install PHP: ```bash sudo add-apt-repository ppa:ondrej/php -y sudo apt update sudo apt install php8.3 php8.3-fpm php8.3-cli php8.3-mysql php8.3-curl php8.3-xml php8.3-mbstring php8.3-zip php8.3-bcmath php8.3-gd php8.3-intl php8.3-readline -y ``` Restart PHP-FPM: ```bash sudo systemctl restart php8.3-fpm ``` --- ## 7. Install phpMyAdmin ```bash sudo apt install phpmyadmin -y ``` During the installation, select **NGINX** and configure the database for phpMyAdmin. Create a symbolic link for phpMyAdmin in the NGINX web directory: ```bash sudo ln -s /usr/share/phpmyadmin /var/www/html/phpmyadmin ``` Restart NGINX: ```bash sudo systemctl restart nginx ``` --- ## 8. Create a User for phpMyAdmin and Grant Privileges Log in to MySQL: ```bash sudo mysql -u root -p ``` Create a new user: ```sql CREATE USER 'phpmyadmin_user'@'localhost' IDENTIFIED BY 'secure_password'; ``` Grant privileges: ```sql GRANT ALL PRIVILEGES ON *.* TO 'phpmyadmin_user'@'localhost' WITH GRANT OPTION; FLUSH PRIVILEGES; EXIT; ``` --- ## 9. Configure Firewall (UFW) Allow necessary ports: ```bash sudo ufw allow 22/tcp # SSH sudo ufw allow 80/tcp # HTTP sudo ufw allow 443/tcp # HTTPS sudo ufw enable ``` --- ## 10. Install and Configure Code Server ### **Step 1: Install Code Server** ```bash curl -fsSL https://code-server.dev/install.sh | sh ``` ### **Step 2: Configure Code Server for the Current User** ```bash mkdir -p ~/.config/code-server nano ~/.config/code-server/config.yaml ``` Add the following configuration: ```yaml bind-addr: 127.0.0.1:8080 auth: password password: "your_secure_password" cert: false ``` Save and exit (`CTRL+X`, `Y`, `ENTER`). Start Code Server: ```bash code-server ``` To run it as a service: ```bash sudo systemctl enable --now code-server@$USER ``` --- ## 11. Install Certbot and Secure Domain with Let's Encrypt ```bash sudo apt install certbot python3-certbot-nginx -y ``` Obtain an SSL certificate: ```bash sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com ``` Verify auto-renewal: ```bash sudo certbot renew --dry-run ``` --- ## 12. Install NVM and Node.js 20 ### **Step 1: Install NVM** ```bash curl -fsSL https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash ``` Reload shell configuration: ```bash source ~/.bashrc # For Bash users source ~/.zshrc # For Zsh users ``` Verify NVM installation: ```bash nvm --version ``` ### **Step 2: Install Node.js 20** ```bash nvm install 20 ``` Set Node.js 20 as the default version: ```bash nvm use 20 nvm alias default 20 ``` Verify Node.js installation: ```bash node -v npm -v ``` --- ## **Done! 🎉** Your Ubuntu system is now **updated, secured, and configured with a sudo user, MySQL, NGINX, PHP 8.3, phpMyAdmin, UFW firewall, Code Server, SSL with Let's Encrypt, NVM, and Node.js 20.**